歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux的文件系統及節點表(Inodes)

Linux的文件系統及節點表(Inodes)

日期:2017/2/28 16:22:33   编辑:Linux教程

一 Linux的文件系統

1 我們都知道當我們安裝Linux時會首先給系統分區,然後我們會把分區格式化成EXT3格式的文件系統。那麼在Linux系統中還有沒有其他的文件系統呢,下面我們就簡單的介紹一下Linux系統中常見的幾種文件系統。

(1)EXT3文件系統:ext3(第三級擴展Linux文件系統,third extended Linux filesystem)。跟EXT2文件不同之處就是增加了日志功能。

(2)EXT2和MSDOS:一般用於軟盤

(3)ISO9660:光盤的文件系統

(4)GFS和GFS2:主要用於集群服務器的文件系統(SAN)

二 Linux文件系統的節點(Inodes)

1 Inode(index node )索引節點

2 首先我們要清楚地是:一個文件其實是由兩部分組成:節點表和數據區。Inodes table (節點表)包含了ext2和ext3文件系統的所有屬性。節點表裡面主要存放文件的類型,權限,UID,GID,Link count,大小和時間戳,數據存放在磁盤的什麼位置。數據區裡面就是存放真正的數據。

3 一個inodes(節點號)的大小大概為128B,一個文件至少要占有1個inodes。通過tune2fs

-l /dev/sda7 可以查看這個分區的inode size,inode count,block count。

我們知道,計算機在識別一個用戶是通過UID來識別的,識別一個進程是通過進程號來識別的,那麼,同樣,計算機識別一個文件是通過一個inode number來識別文件的。而文件名只是給人的識別的。

4 查看節點號的方法:#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

前面的一串數字就是文件的節點號,

其實我們的節點號是在分區創建的時候就已經分配好了的。

5 下面我們來學習復制,剪切,刪除對文件inode的影響

(1)復制對文件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 可以看到,這個文件的節點號是6030,現在我們將它復制到另外一個分區

[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

將這個文件復制到/var分區下面後,這個文件的inode number就改變了。

當一個文件從一個分區復制到另外一個分區的時候,系統就分配了另外一個inode給這個文件。

b 那麼在同一個分區復制文件節點號會有什麼改變呢

[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

可以看到,剛才這個文件的節點號是6030,現在就變成了22091了。

在同一個分區裡面復制文件,這個文件的節點號也是會發生改變的。因為在這個分區有兩份相同的文件,只是文件的內容相同,但是文件的inode屬性卻是不一樣的。

2. 剪切對文件inode的影響

a 同一分區的剪切

[root@localhost ~]# cd /boot/

[root@localhost boot]# ls -li file

6030 -rw-r--r-- 1 root root 0 Mar

6 13:26 file

可以看到,這個文件的節點號是6030,現在我們將這個文件在同個分區裡剪切一份。

[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

可以看到,這個文件節點號是沒有改變的。

當在同一個分區裡面移到文件,文件的節點號沒有發生改變。

b 不同的分區剪切

[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

可以看到,這個文件的節點號是肯定會變的。

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

現在我們把file這個文件給刪除了,其實我們只是將file這個文件的節點表給刪除了,其實我們的數據都還在。這也就是為什麼當我們刪除一個文件,這個文件還可以被找回來的原因。當然如果我們在到這個分區裡面寫入數據,那麼原來的數據就會被覆蓋。

[root@localhost boot]# touch file1

[root@localhost boot]# ls -li file1

6030 -rw-r--r-- 1 root root 0 Mar

6 13:49 file1

現在我們又新建了一個文件file1,這個文件的節點號也是6030,它就已經覆蓋了以前的數據的節點號。那麼以前的數據就找不回來了。

4 總結

復制:在同一個分區,節點號改變。

在不同的分區,節點號改變。

剪切:在同一個分區,節點號不變。

在不同的分區,節點號改變。

刪除:只是刪除了文件的節點表,數據沒有被真正刪除,只有當往這個分區在寫入數據的時候,才會覆蓋原來的數據。

Copyright © Linux教程網 All Rights Reserved