溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux系統(tǒng)上的文件管理

發(fā)布時間:2020-07-05 08:53:14 來源:網(wǎng)絡(luò) 閱讀:339 作者:liu008qing 欄目:系統(tǒng)運(yùn)維

一、 inode、data block與super block

1. inode用于記錄文件的屬性與權(quán)限等信息;一個文件占用一個inode,同時inode還記錄了該文件的data block的位置。inode的大小有128、256字節(jié)兩種規(guī)格。

2. data? block:用于存儲文件的實(shí)際內(nèi)容。塊大小為1K、2K、4K字節(jié)三種規(guī)格。

3. super block: 記錄文件系統(tǒng)的整體信息,包括了inode與data block的總量、已使用量、剩余的旦、卷標(biāo)、文件系統(tǒng)格式等相關(guān)的信息。可以使用tune2fs -l? Partition_Name來查看。


注意:以ext2文件系統(tǒng)為例,對于128字節(jié)的inode,除了存儲文件的權(quán)限屬性等信息外,只能存12個4字節(jié)的文件指向的數(shù)據(jù)塊號碼。那對于一個大文件來呢,需要幾十上百萬個數(shù)據(jù)塊來存放文件內(nèi)容。這個怎么弄?其中inode除了12個直接的數(shù)據(jù)指向以外,還有一個間接、一個雙間接、一個三間接的記錄區(qū)。所謂間接的意思就是inode的直接指向會指向一個數(shù)據(jù)block,這個block不存數(shù)據(jù),而是存放的文件的數(shù)據(jù)塊的號碼。對于1K大小的數(shù)據(jù)塊,可以存儲256個指向。而256個數(shù)據(jù)區(qū)塊,可以存儲的文件大小為256KB;雙間接可以存儲64MB數(shù)據(jù),三間接可以存儲16G大小的文件;???? 對于2K和4K大小以及其他文件系統(tǒng),算法不相同。但都借用了數(shù)據(jù)區(qū)塊來存放數(shù)據(jù)區(qū)塊號。



二、 文件是如何存取的

每個文件系統(tǒng)在其內(nèi)部劃分了多個block group,而每個block group內(nèi)又包括了以下幾個內(nèi)容:

1. super block:?? inode與數(shù)據(jù)區(qū)塊的總量,剩余的數(shù)量,inode與數(shù)據(jù)區(qū)塊的大小,保留等信息。第一個塊組肯定有超級塊,后續(xù)的塊組,有的有,有的沒有。

2. 文件系統(tǒng)描述: 描述區(qū)塊群組的開始與結(jié)束的區(qū)塊,以及說明每個區(qū)段(超級區(qū)塊、對照表、inode對照表、數(shù)據(jù)區(qū)塊)分別介于哪一個區(qū)塊之間,這部分也能用dumpe2fs來查看。

3. block bitmap:用于記錄哪些block是空的,哪些是已經(jīng)使用的。

4. inode bitmap:? 用于記錄哪些inode是空的,哪些是已經(jīng)使用的。

5. inode table:? 用于存儲文件屬性以及該文件數(shù)據(jù)區(qū)塊號碼

6. data block: 用于存儲文件的實(shí)際內(nèi)容。


存取文件時,先檢查用戶對目錄是否有寫和執(zhí)行權(quán)限;接著系統(tǒng)通過inode bitmap查詢哪些inode表是空的,將新文件的屬性寫入空的inode表;根據(jù)block bitmap查找哪些data block是空的,是空的則可以將文件內(nèi)容寫入到這些block中;更新inode bitmap以及block bitmap,并更新超級塊的信息。


三、 系統(tǒng)如何通過路徑讀取文件內(nèi)容

舉例說明,查找/etc/passwd文件

1. 先查找/的inode號碼,/的inode里有記錄/對應(yīng)的data block;

2. 在/的data block中找到etc目錄對應(yīng)的inode

3.? 讀取etc目錄對應(yīng)的inode表中,找到etc目錄的數(shù)據(jù)塊

4. 在etc目錄的數(shù)據(jù)塊中,找到passwd文件的inode號碼

5. 讀取passwd文件的inode中數(shù)據(jù)塊指向,并將內(nèi)容讀取出來。


總結(jié): 從根目錄開始,先找inode,通過inode找到對應(yīng)的數(shù)據(jù)區(qū)塊;在數(shù)據(jù)區(qū)塊中,分兩種情況:1. 該文件是目錄,則數(shù)據(jù)區(qū)塊記錄了其下屬子目錄及文件的文件名以及對應(yīng)的inode; 2. 該文件是非目錄文件,則數(shù)據(jù)區(qū)域記錄了文件的內(nèi)容。?? 通過inode--->block--->inode--->block依次循環(huán)來讀取文件。在這個過程中,需要檢查用戶對目錄及文件的權(quán)限。



四、 硬鏈拉與軟鏈接

1. 硬鏈接是指向同一個inode的多個文件路徑; 目錄不支持硬鏈接,不能跨文件系統(tǒng),創(chuàng)建硬鏈接會增加inode計(jì)數(shù)。

2. 軟鏈接指向的是文件實(shí)際的訪問路徑,可以跨文件系統(tǒng),支持對目錄創(chuàng)建軟鏈接,刪除軟鏈接不會影響原文件。


五、 MBR

存儲設(shè)備的第一個扇區(qū),也就是最前面的512字節(jié),叫做入引導(dǎo)記錄


1. 主引導(dǎo)記錄的結(jié)構(gòu)

主引導(dǎo)記錄只有512字節(jié),放不了太多東西,它的主要作用是告訴計(jì)算機(jī)到硬盤的哪一個位置去找操作系統(tǒng)。

主引導(dǎo)記錄由以下3個部分組成:

A. 第1-446字節(jié):調(diào)用操作系統(tǒng)的機(jī)器碼

B. 第447-510字節(jié):分區(qū)表 (Partition? table)

C. 第511-512字節(jié):主引導(dǎo)記錄簽名(0X55和0XAA)


2. 分區(qū)表

硬盤分區(qū)有很多好處,考慮到每個區(qū)可以安裝不同的操作系統(tǒng),主引導(dǎo)記錄呢須知道 將控制權(quán)轉(zhuǎn)交給哪個區(qū)。

分區(qū)表的長度只有64字節(jié),里面又分成4項(xiàng),每項(xiàng)16字節(jié)。所以一個硬盤 最多只能分4個一級分區(qū),又叫作主分區(qū)。每組的記錄區(qū)主要記錄了該區(qū)段的起始與結(jié)束的柱面號碼。

每個主分區(qū)的16個字節(jié)由以下6部分組成:

A. 第1個字節(jié),如果為0X80,就表示該主分區(qū)是激活分區(qū),控制權(quán)要轉(zhuǎn)交給這個分區(qū)。4個主分區(qū)里面只能有一個分區(qū)是激活的。

B. 第2-4字節(jié):主分區(qū)第一個扇區(qū)的物理位置(柱面、磁頭、扇區(qū)號等)

C. 第5字節(jié):主分區(qū)類型

D. 第6-8字節(jié):主分區(qū)最后一個扇區(qū)的物理位置

E. 第9-12字節(jié):該主分區(qū)第一個扇區(qū)的邏輯地址

F. 第13-16字節(jié):主分區(qū)的扇區(qū)總數(shù)。


最后的4字節(jié)(主分區(qū)的扇區(qū)總數(shù))決定了這個主分區(qū)的長度,也就是說,一個主分區(qū)的扇區(qū)總數(shù)最多不超過2的32次方。

如果每個扇區(qū)為512字節(jié),則意味著單個分區(qū)最大不超過2TB。再考慮到扇區(qū)的邏輯地址也是32位,所以單個硬盤可利用的最大空間也不超過2TB。如果想再使用更大的硬盤,只有兩個方法:一是提高每個扇區(qū)的字節(jié)數(shù),二是增加扇區(qū)總數(shù)。


六、 文件名存儲在哪里,文件的屬性存儲在哪里

1. 目錄也是文件;

2. 文件的文件名存儲在目錄的數(shù)據(jù)塊中;

3. 文件的屬性,權(quán)限等信息存儲在inode中;

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI