(1)EXT3文件系統(tǒng):ext3(第三級(jí)擴(kuò)展Linux文件系統(tǒng),,third extended Linux filesystem),。跟EXT2文件不同之處就是增加了日志功能。
(2)EXT2和MSDOS:一般用于軟盤
(3)ISO9660:光盤的文件系統(tǒng)
(4)GFS和GFS2:主要用于集群服務(wù)器的文件系統(tǒng)(SAN)
關(guān)于 Linux文件系統(tǒng)的節(jié)點(diǎn)(Inodes),,其實(shí)linux文件系統(tǒng)有兩層結(jié)構(gòu),,邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。也就是inode和block,。
每個(gè)文件都有一個(gè)inode, 記錄文件屬性:權(quán)限,,時(shí)間還有最重要的block號(hào)碼,而block是實(shí)際存放文件內(nèi)容的地方,。
但文件名不在這里,。在哪?在目錄的block里面,。
目錄也有一個(gè)唯一的inode,記錄內(nèi)容與文件inode大體相似,。
block是記錄該目錄下文件名,子目錄名與它們的inode信息的地方,。
所以我們?cè)谡椅募r(shí),,比如/etc/issue,先讀/目錄的inode,,找到/的內(nèi)容block,再從中找出etc/的inode,
然后讀etc/的block,找出issue的inode,,再讀issue的block,得出內(nèi)容,。當(dāng)然前提是所有權(quán)限支持,。
這也是為什么新建文件,刪文件時(shí)要目錄權(quán)限配合的原因,。
因?yàn)槲募旧聿挥涗浳募?,文件名記錄在其父目錄的block中。
那/目錄的inode記錄在哪里,?這是雞生蛋,,蛋生雞的問題。解決循環(huán)要有外力介入,。
先有雞還是先有蛋,?先有雞,因?yàn)殡u是恐龍進(jìn)化來的,??铸埾碌?,但那畢竟不是雞蛋.....
所以還是先有雞,后有雞蛋,。這也解決了沒有雞蛋,,雞是從哪里來的問題。
根目錄的inode是掛載時(shí)候記錄的,,因此有了/的inode,,找文件就是一路順藤摸瓜
對(duì)于Inode我們需要了解以下幾點(diǎn)
1 Inode(index node )索引節(jié)點(diǎn)
2 首先我們要清楚地是:一個(gè)文件其實(shí)是由兩部分組成:節(jié)點(diǎn)表和數(shù)據(jù)區(qū)。Inodes table (節(jié)點(diǎn)表)包含了ext2和ext3文件系統(tǒng)的所有屬性,。節(jié)點(diǎn)表里面主要存放文件的類型,,權(quán)限,UID,,GID,,link count,大小和時(shí)間戳,,數(shù)據(jù)存放在磁盤的什么位置,。數(shù)據(jù)區(qū)里面就是存放真正的數(shù)據(jù)。
3 一個(gè)inodes(節(jié)點(diǎn)號(hào))的大小大概為128B,,一個(gè)文件至少要占有1個(gè)inodes,。通過tune2fs
-l /dev/sda7 可以查看這個(gè)分區(qū)的inode size,inode count,,block count,。
我們知道,計(jì)算機(jī)在識(shí)別一個(gè)用戶是通過UID來識(shí)別的,,識(shí)別一個(gè)進(jìn)程是通過進(jìn)程號(hào)來識(shí)別的,,那么,同樣,,計(jì)算機(jī)識(shí)別一個(gè)文件是通過一個(gè)inode number來識(shí)別文件的,。而文件名只是給人的識(shí)別的。
查看每個(gè)硬盤分區(qū)的inode總數(shù)和已經(jīng)使用的數(shù)量,,可以使用df命令,。
df -i
查看每個(gè)inode節(jié)點(diǎn)的大小,可以用如下命令:
sudo dumpe2fs -h /dev/hda | grep "Inode size"
由于每個(gè)文件都必須有一個(gè)inode,,因此有可能發(fā)生inode已經(jīng)用光,,但是硬盤還未存滿的情況。
4 查看節(jié)點(diǎn)號(hào)的方法:#ls -li
[root@localhost ~]# ls -li
total 56
533587 -rw------- 1 root root
1050
Mar
6 02:15 anaconda-ks.cfg
919063 drwxr-xr-x 2 root root 4096
Mar
6 02:43 Desktop
524290 -rw-r--r-- 1 root root
29302
Mar
6 02:15 install.log
524291 -rw-r--r-- 1 root root
3738
Mar
6 02:15 install.log.syslog
前面的一串?dāng)?shù)字就是文件的節(jié)點(diǎn)號(hào),,
其實(shí)我們的節(jié)點(diǎn)號(hào)是在分區(qū)創(chuàng)建的時(shí)候就已經(jīng)分配好了的,。
5 下面我們來學(xué)習(xí)復(fù)制,剪切,,刪除對(duì)文件inode的影響
(1)復(fù)制對(duì)文件inode的影響
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls -li file
6030 -rw-r--r-- 1 root root 0 Mar
6 13:26 file
a 可以看到,,這個(gè)文件的節(jié)點(diǎn)號(hào)是6030,,現(xiàn)在我們將它復(fù)制到另外一個(gè)分區(qū)
[root@localhost boot]# cp file /var/
[root@localhost boot]# cd /var/
[root@localhost var]# ls -li file
2115361 -rw-r--r-- 1 root root 0 Mar
6 13:27 file
將這個(gè)文件復(fù)制到/var分區(qū)下面后,這個(gè)文件的inode number就改變了,。
當(dāng)一個(gè)文件從一個(gè)分區(qū)復(fù)制到另外一個(gè)分區(qū)的時(shí)候,系統(tǒng)就分配了另外一個(gè)inode給這個(gè)文件,。
b 那么在同一個(gè)分區(qū)復(fù)制文件節(jié)點(diǎn)號(hào)會(huì)有什么改變呢
[root@localhost boot]# ls -li file
6030 -rw-r--r-- 1 root root 0 Mar
6 13:26 file
[root@localhost boot]# cp file /boot/grub/
[root@localhost boot]# cd grub/
[root@localhost grub]# ls -li file
22091 -rw-r--r-- 1 root root 0 Mar
6 13:29 file
可以看到,,剛才這個(gè)文件的節(jié)點(diǎn)號(hào)是6030,現(xiàn)在就變成了22091了,。
在同一個(gè)分區(qū)里面復(fù)制文件,,這個(gè)文件的節(jié)點(diǎn)號(hào)也是會(huì)發(fā)生改變的。因?yàn)樵谶@個(gè)分區(qū)有兩份相同的文件,,只是文件的內(nèi)容相同,,但是文件的inode屬性卻是不一樣的。
2. 剪切對(duì)文件inode的影響
a 同一分區(qū)的剪切
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls -li file
6030 -rw-r--r-- 1 root root 0 Mar
6 13:26 file
可以看到,,這個(gè)文件的節(jié)點(diǎn)號(hào)是6030,,現(xiàn)在我們將這個(gè)文件在同個(gè)分區(qū)里剪切一份。
[root@localhost boot]# mv file /boot/test/
[root@localhost test]# ls -li file
6030 -rw-r--r-- 1 root root 0 Mar
6 13:26 file
可以看到,,這個(gè)文件節(jié)點(diǎn)號(hào)是沒有改變的,。
當(dāng)在同一個(gè)分區(qū)里面移到文件,文件的節(jié)點(diǎn)號(hào)沒有發(fā)生改變,。
b 不同的分區(qū)剪切
[root@localhost ~]# cd /boot/test/
[root@localhost test]# ls -li file
6030 -rw-r--r-- 1 root
[root@localhost test]# mv /boot/test/file /var/ftp/pub/
[root@localhost test]# cd /var/ftp/pub/
[root@localhost pub]# ls -li file
325584 -rw-r--r-- 1 root root 0 Mar
6 13:26 file
可以看到,,這個(gè)文件的節(jié)點(diǎn)號(hào)是肯定會(huì)變的。
3 刪除對(duì)inode的影響
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls -li file
6030 -rw-r--r-- 1 root root 0 Mar
6 13:44 file
[root@localhost boot]# rm -rf file
現(xiàn)在我們把file這個(gè)文件給刪除了,,其實(shí)我們只是將file這個(gè)文件的節(jié)點(diǎn)表給刪除了,,其實(shí)我們的數(shù)據(jù)都還在。這也就是為什么當(dāng)我們刪除一個(gè)文件,,這個(gè)文件還可以被找回來的原因,。當(dāng)然如果我們?cè)诘竭@個(gè)分區(qū)里面寫入數(shù)據(jù),那么原來的數(shù)據(jù)就會(huì)被覆蓋,。
[root@localhost boot]# touch file1
[root@localhost boot]# ls -li file1
6030 -rw-r--r-- 1 root root 0 Mar
6 13:49 file1
現(xiàn)在我們又新建了一個(gè)文件file1,,這個(gè)文件的節(jié)點(diǎn)號(hào)也是6030,它就已經(jīng)覆蓋了以前的數(shù)據(jù)的節(jié)點(diǎn)號(hào),。那么以前的數(shù)據(jù)就找不回來了,。
4 總結(jié)
復(fù)制:在同一個(gè)分區(qū),節(jié)點(diǎn)號(hào)改變,。
在不同的分區(qū),,節(jié)點(diǎn)號(hào)改變。
剪切:在同一個(gè)分區(qū),,節(jié)點(diǎn)號(hào)不變,。
在不同的分區(qū),,節(jié)點(diǎn)號(hào)改變。
刪除:只是刪除了文件的節(jié)點(diǎn)表,,數(shù)據(jù)沒有被真正刪除,,只有當(dāng)往這個(gè)分區(qū)在寫入數(shù)據(jù)的時(shí)候,才會(huì)覆蓋原來的數(shù)據(jù),。