《LINUX實戰(zhàn):Linux文件系統(tǒng)結(jié)構》要點:
本文介紹了LINUX實戰(zhàn):Linux文件系統(tǒng)結(jié)構,希望對您有用。如果有疑問,可以聯(lián)系我們。
磁盤是由若干扇區(qū)組成,每個扇區(qū)有512B(將磁盤存儲區(qū)扇區(qū)化是為了更好的管理磁盤).又由若干個扇區(qū)組成一個塊(ext2默認是由8個扇區(qū)組成一個塊,即4kb,這里為了簡化說明,就把2個扇區(qū)組成一個塊,即1kb).由圖知,將磁盤分成若干個分區(qū),每個分區(qū)由若干個塊組成.
將數(shù)據(jù)指針數(shù)組命名為data數(shù)組.文件系統(tǒng)中,將data[12]進行一級間接尋址.即:將data[12] 指針指向的數(shù)據(jù)塊,轉(zhuǎn)化為一個更大的指針數(shù)組,長度為1024/4=256.在將這個更大的指針數(shù)組的分別數(shù)指向256個數(shù)據(jù)塊;data[13]進行二級間接尋址,data[14] 進行三級間接尋址.都和一級間接尋址同理.
數(shù)據(jù)塊中存儲的是一條一條的記錄項,每條記錄項都由文件名、indoe編號、記錄長度(該記錄項首地址到下一條記錄項的首地址的長度).每一個記錄項便是該目錄下“l(fā)s -a”的結(jié)果.
由圖可以看出,每個inode節(jié)點可以對應多個數(shù)據(jù)塊,和上文在分析inode節(jié)點的內(nèi)容一致.然后,若干個目錄塊中的記錄項指向每個inode節(jié)點,通過inode節(jié)點中鏈接數(shù)這個數(shù)據(jù)成員來標識指向其的記錄項個數(shù),這便是硬鏈接.當然,這些目錄塊都是目錄文件的數(shù)據(jù)塊;
由上圖知,inode節(jié)點在文件系統(tǒng)中被維護成了結(jié)構體數(shù)組,inode編號為數(shù)組的下標;2549號i節(jié)點是1267號i節(jié)點的子目錄,因為1267號i節(jié)點的數(shù)據(jù)塊中有2549號i節(jié)點的記錄項;“.”目錄文件和 “..”目錄文件都是硬鏈接.
從以上分析能夠得出結(jié)論:所有的目錄塊都是不同目錄文件的數(shù)據(jù)塊.
執(zhí)行命令:mkdir /home/aaron/a.c
(1)通過塊位圖區(qū)找到空閑的數(shù)據(jù)塊,存放a.c中的內(nèi)容
(2)通過inode位圖區(qū)找到空閑的inode節(jié)點塊,生成相應的inode節(jié)點
(3)在aaron目錄文件的數(shù)據(jù)塊中添加一條a.c的記錄項
執(zhí)行命令:vim /home/aaron/a.c
(1)找到inode編號為2的inode節(jié)點,
(2)遍歷根目錄文件的數(shù)據(jù)塊中的記錄項,匹配aaron記錄項,獲取其inode編號
(3)通過aaron目錄文件的inode編號,找到aaron文件對應的數(shù)據(jù)塊
(4)遍歷aaron文件的數(shù)據(jù)塊中的記錄項,匹配a.c記錄項.同理,找到對應的a.c的數(shù)據(jù)塊.用vim打開相應文件
本文永久更新鏈接地址:
更多LINUX教程,盡在維易PHP學院專欄。歡迎交流《LINUX實戰(zhàn):Linux文件系統(tǒng)結(jié)構》!
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/7682.html