(1)EXT3文件系統(tǒng):ext3(第三級擴展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é)點(Inodes),,其實linux文件系統(tǒng)有兩層結(jié)構(gòu),,邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。也就是inode和block,。
每個文件都有一個inode, 記錄文件屬性:權(quán)限,,時間還有最重要的block號碼,而block是實際存放文件內(nèi)容的地方,。
但文件名不在這里,。在哪?在目錄的block里面,。
目錄也有一個唯一的inode,記錄內(nèi)容與文件inode大體相似,。
block是記錄該目錄下文件名,子目錄名與它們的inode信息的地方,。
所以我們在找文件時,,比如/etc/issue,先讀/目錄的inode,,找到/的內(nèi)容block,再從中找出etc/的inode,
然后讀etc/的block,找出issue的inode,,再讀issue的block,得出內(nèi)容。當然前提是所有權(quán)限支持,。
這也是為什么新建文件,,刪文件時要目錄權(quán)限配合的原因。
因為文件本身不記錄文件名,,文件名記錄在其父目錄的block中,。
那/目錄的inode記錄在哪里?這是雞生蛋,,蛋生雞的問題,。解決循環(huán)要有外力介入。
先有雞還是先有蛋,?先有雞,,因為雞是恐龍進化來的??铸埾碌埃钱吘共皇请u蛋.....
所以還是先有雞,,后有雞蛋,。這也解決了沒有雞蛋,雞是從哪里來的問題,。
根目錄的inode是掛載時候記錄的,,因此有了/的inode,找文件就是一路順藤摸瓜
對于Inode我們需要了解以下幾點
1 Inode(index node )索引節(jié)點
2 首先我們要清楚地是:一個文件其實是由兩部分組成:節(jié)點表和數(shù)據(jù)區(qū),。Inodes table (節(jié)點表)包含了ext2和ext3文件系統(tǒng)的所有屬性,。節(jié)點表里面主要存放文件的類型,權(quán)限,,UID,,GID,link count,,大小和時間戳,,數(shù)據(jù)存放在磁盤的什么位置。數(shù)據(jù)區(qū)里面就是存放真正的數(shù)據(jù),。
3 一個inodes(節(jié)點號)的大小大概為128B,,一個文件至少要占有1個inodes。通過tune2fs
-l /dev/sda7 可以查看這個分區(qū)的inode size,,inode count,,block count。
我們知道,,計算機在識別一個用戶是通過UID來識別的,,識別一個進程是通過進程號來識別的,那么,同樣,,計算機識別一個文件是通過一個inode number來識別文件的,。而文件名只是給人的識別的。
查看每個硬盤分區(qū)的inode總數(shù)和已經(jīng)使用的數(shù)量,,可以使用df命令,。
df -i
查看每個inode節(jié)點的大小,可以用如下命令:
sudo dumpe2fs -h /dev/hda | grep "Inode size"
由于每個文件都必須有一個inode,,因此有可能發(fā)生inode已經(jīng)用光,,但是硬盤還未存滿的情況。
4 查看節(jié)點號的方法:#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
前面的一串數(shù)字就是文件的節(jié)點號,,
其實我們的節(jié)點號是在分區(qū)創(chuàng)建的時候就已經(jīng)分配好了的,。
5 下面我們來學(xué)習(xí)復(fù)制,剪切,,刪除對文件inode的影響
(1)復(fù)制對文件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 可以看到,,這個文件的節(jié)點號是6030,現(xiàn)在我們將它復(fù)制到另外一個分區(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
將這個文件復(fù)制到/var分區(qū)下面后,,這個文件的inode number就改變了,。
當一個文件從一個分區(qū)復(fù)制到另外一個分區(qū)的時候,系統(tǒng)就分配了另外一個inode給這個文件,。
b 那么在同一個分區(qū)復(fù)制文件節(jié)點號會有什么改變呢
[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
可以看到,,剛才這個文件的節(jié)點號是6030,現(xiàn)在就變成了22091了,。
在同一個分區(qū)里面復(fù)制文件,,這個文件的節(jié)點號也是會發(fā)生改變的。因為在這個分區(qū)有兩份相同的文件,,只是文件的內(nèi)容相同,,但是文件的inode屬性卻是不一樣的。
2. 剪切對文件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
可以看到,,這個文件的節(jié)點號是6030,,現(xiàn)在我們將這個文件在同個分區(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
可以看到,,這個文件節(jié)點號是沒有改變的,。
當在同一個分區(qū)里面移到文件,文件的節(jié)點號沒有發(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
可以看到,,這個文件的節(jié)點號是肯定會變的。
3 刪除對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這個文件給刪除了,,其實我們只是將file這個文件的節(jié)點表給刪除了,,其實我們的數(shù)據(jù)都還在,。這也就是為什么當我們刪除一個文件,這個文件還可以被找回來的原因,。當然如果我們在到這個分區(qū)里面寫入數(shù)據(jù),,那么原來的數(shù)據(jù)就會被覆蓋。
[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)在我們又新建了一個文件file1,,這個文件的節(jié)點號也是6030,,它就已經(jīng)覆蓋了以前的數(shù)據(jù)的節(jié)點號。那么以前的數(shù)據(jù)就找不回來了,。
4 總結(jié)
復(fù)制:在同一個分區(qū),,節(jié)點號改變。
在不同的分區(qū),,節(jié)點號改變,。
剪切:在同一個分區(qū),節(jié)點號不變,。
在不同的分區(qū),,節(jié)點號改變。
刪除:只是刪除了文件的節(jié)點表,,數(shù)據(jù)沒有被真正刪除,,只有當往這個分區(qū)在寫入數(shù)據(jù)的時候,才會覆蓋原來的數(shù)據(jù),。