linux下文件操做inode,block的變化

   在「淺談linux性能調優之三:分區格式化以前的考慮」
           http://my.oschina.net/sharelinux/blog/143522    一文中我說了inode與block的關係,如今說一下linux下文件操做底層inode與block發生了什麼變化:

1.建立好文件系統並掛載:inode,block信息以下:
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      11   28101    1% /test5
/dev/sdb6              28112      11   28101    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5663     97555   6% /test5
/dev/sdb6               108865      5663     97581   6% /test6
2.在/test5下建立一個testfile文件:後信息以下:
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      11   28101    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5663     97581   6% /test6
結論:建立一個文件時,佔用一個inode,至少一個block
3.從/test5複製文件testfile到/test6/testfile.cp
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      13   28099    1% /test5
/dev/sdb6              28112      12   28100    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
結論:複製應該等於創建的過程
4.移動/test5/testfile到/test6/
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      13   28099    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
結論:/test5 inode減小一個, /test6 inode增長一個,/test5 block應該不變,/test6應該減小一個 可能由於文件大小
5.在/test6下刪除testfile
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      12   28100    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
結論:刪除文件時,只刪除inode節點,不銷燬block塊中的數據,同時這也是數據恢復的基礎


硬連接
---------------------------------
    剛纔說過,當系統要讀取某個文件時,它會先讀inode table,而後根據inode的信息到數據區域將數據取出備用。硬連接就是再創建一個inode連接到文件放置的Block塊。也就是說,進行硬連接時,實際上您的文件內容不會改變,只是原來的inode與後來添加的inode都可指定到該文件存放的地點,所以,讀取兩個inode的結果都是讀取同一個文件的內容。不過,這樣一來就有個問題,由於inode會連接到Block塊,而"目錄"自己僅消耗inode,這樣,硬連接就不能連接目錄。因此,硬連接有兩個最大的限制:
    (1) 不能跨文件系統,由於不一樣的文件系統有不一樣的inode table;
    (2) 不能連接目錄。


軟連接(符號連接)
---------------------------------
    相對於硬連接,符號連接比較好理解,基本上,它是再創建一個獨立文件,而這個文件會讓數據讀取操做指向它連接的那個文件。因爲只是利用文件做爲指向的動做,因此,當源文件被刪除,符號連接的文件就打不開了,屏幕會顯式"沒法開啓某文件"。
    所以,硬連接比較安全,由於即某一個inode被刪除,只要還有一個inode,該文件就能被找到。


node

相關文章
相關標籤/搜索