Linux磁盤管理(block與inode)
1 硬盤block與inode詳解
1.1 Sector(扇區)與Block(塊)
1) 硬盤的最小存儲單位:sector(扇區),每個扇區儲存512字節;操作系統會一次性連續讀取多個扇區,即一次性讀取多個扇區稱為一個block(塊)
2) 文件存取的最小單位:block(塊),由多個扇區組成;block的大小常見的有1KB、2KB、4KB,在linux中常見設置為4KB,即連續8個扇區組成一個block;/boot分區的block一般為1KB
3) 查看block的方法:
ext3與ext4格式化文件系統:
dumpe2fs /dev/sda1 | grep "Block size"
tune2fs -l /dev/sda1 | grep "Block size"
stat /boot/ | grep "IO Block"
xfs格式化文件系統:
xfs_info /dev/sda1
stat /boot/ | grep "IO Block"
4) 每個block只能存放一個文件,如果文件的大小比block大,會申請更多的block;如果文件的大小比block小,仍會占用一個block,剩余的空間會浪費
例:有1萬個文件,大小為10B,block為4KB
理論上占用空間大小:10000 * 10B=97.656MB
實際上占用空間大小:10000 * 4KB = 40GB
1.2 硬盤block與inode詳解
1.2.1 superblock、inode與block
操作系統對於文件數據的存放包括兩個部分:1文件內容、2權限及文件屬性
在硬盤分區中,還有一個超級區塊(superblock)
1) superblock:記錄文件系統的整體信息,包括inode與block的總量、使用大小、剩余大小以及文件系統的格式與相關信息等
2) inode:記錄文件的屬性、權限,同時會記錄該文件的數據所在的block編號
3) block:存儲文件的內容
1.2.2 inode與block
每個inode與block都有編號,而每個文件都會占用一個inode,inode內則有文件數據放置的block號碼;能夠找到文件的inode就可以找到該文件所放置數據的block號碼,從而讀取文件內容
1)在格式化時可以指定默認的inode與block的大小;-b指定默認block值,-I指定默認inode值,例:mkfs.ext4 –b 4096 –I 256 /dev/sdb
2)查看inode的方法:
ext3與ext4格式化文件系統:
dumpe2fs /dev/sda1 | grep "Inode size"
tune2fs -l /dev/sda1 | grep "Inode size"
xfs格式化文件系統:
2 硬鏈接
硬鏈接:Linux系統多個文件名可以指向同一個inode,這意味著可以用不同的文件名訪問同樣的內容,對文件內容進行修改會影響到所有文件名;但刪除一個文件名不會影響另一個文件名的訪問。
硬鏈接不能跨分區鏈接,只能對文件生效,對目錄無效,鏈接後的文件不占用系統多余的空間
命令:ln test1.txt test2.txt #test1.txt為源文件,test2為目標文件
3 軟鏈接(符號鏈接)
軟鏈接文件的Inode號不同,可以跨分區鏈接,支持目錄同時也支持文件的鏈接;不管是刪除源文件還是重啟系統,該軟鏈接還存在,但文件內容會丟失,一旦新建源同名文件,軟鏈接文件恢復正常
命令:ln –s test1.txt test2.txt
Linux磁盤管理(block與inode)