Linux 硬連結和軟連結小結
每個linux儲存裝置的分割槽被格式化成檔案系統後,
一般生成兩個部分:
第一部分是inode;inode是用來儲存資料屬性資訊的;
第二部分是block;block是用來儲存實際資料的 例如照片 視訊;
inode具有指向檔案實體的功能,但是inode唯獨不包含檔名
檔名儲存在它上一級目錄的block中。
inode是有大小的
inode的大小在分割槽被格式化建立檔案系統之後就無法更改了,格式化之前可以指定inode的大小,不過一般工作環境沒這個需求
檢視:
dumpe2fs /dev/sda1|grep -i "inode size"
檢視檔案系統inode的總量和剩餘量和檢視檔案系統的block的總量和剩餘量
磁碟空間是否滿了(no space left on device) 由兩項引數決定
第一是inode是否滿了 第二是block是否滿了 任何一個滿了都無法存放檔案了
可以使用df -i 和 df -h 檢視
inode:
1.磁碟被分割槽格式化為檔案系統之後會生成inode和block
2.inode的作用是存放檔案的屬性資訊以及作為檔案的索引的功能(它指向檔案的實體)
3.inode是磁碟上的一塊儲存空間;
4.inode號相同的檔案互為硬連結檔案,可以認為是一個檔案的不同的入口
5.一個檔案被建立後至少要佔用一個inode和一個block
6.檢視檔案的inode資訊: ls -li 或者用stat 命令檢視
7.生成指定的inode大小
mkfs.ext4 -b 2048 -I 256 /dev/sdb
block:
1.磁碟讀取檔案資料是按block為單位讀取的
2.一個檔案可能要佔用多個block 每讀取一個block就會消耗一次磁碟I/O;
3.如果想要提升磁碟I/O效能,那麼就要使磁碟一次性讀取的資料儘量的多(block大小合理)
4.如果block的大小太大,存放小的檔案(遠小於block大小),就會造成空間浪費,如果block太小,會消耗磁碟I/O;
5.一般block大小為4K
6.mkfs.ext4 -b 2048 -I 256 /dev/sdb 可以設定block大小
開啟檔案的基本流程:
Linux下刪除檔案的原理:
linux的檔名是儲存在父目錄的block裡面的,並指向這個檔案的inode節點,這個檔案的inode節點
再標記指向存放這個檔案的block的資料快,我們刪除一個檔案,實際上並不清除inode節點和block
的資料,只是在這檔案的父目錄裡面的block中,刪除這檔案的名字,從而使得這檔名消失,並且無法指向這個檔案
的inode節點,當沒有檔名指向這inode節點的時候,會同時釋放inode節點和存放這個檔案的資料塊,並且更新
inode map和block map今後讓這些位置可以放置其他檔案資料
每個檔案都有2個link計數器:i_count 和 i_nlink。
i_count的意義是當前檔案使用者(或被程序呼叫)的數量,
i_nlink 的意義是硬連結的數量;
當一個檔案被某一個程序引用時,對應i_count數就會增加;當建立檔案的硬連結的時候,對應i_nlink數就會增加。