1 認(rèn)識 Linux 文件系統(tǒng)
Linux 最傳統(tǒng)的磁盤文件系統(tǒng)使用的是 ext2
1.1 磁盤組成與分區(qū)
- 磁盤組成
- 圓形的碟片(記錄數(shù)據(jù))
- 機(jī)械手臂贷洲,可擦寫碟片上的數(shù)據(jù)
- 主軸馬達(dá)晋柱,可以轉(zhuǎn)動碟片,讓機(jī)械手臂上的磁頭在碟片上讀寫數(shù)據(jù)
1.2 文件系統(tǒng)特性
- 文件除了文件實(shí)際內(nèi)容俩块,還有屬性浓领。文件系統(tǒng)會將文件數(shù)據(jù)和屬性分別存放在不同的區(qū)塊联贩,權(quán)限和屬性放置在 inode 中捎拯,實(shí)際數(shù)據(jù)放置到區(qū)塊中。
- 超級區(qū)塊:記錄此文件系統(tǒng)的整體信息署照,包括 inode 與數(shù)據(jù)區(qū)塊的總量、使用量建芙、剩余量以及文件系統(tǒng)的格式相關(guān)信息禁荸。
- Inode:記錄文件的屬性阀湿,一個(gè)文件占一個(gè) inode陷嘴,同時(shí)記錄此文件數(shù)據(jù)所在的區(qū)塊號碼间坐。
- 數(shù)據(jù)區(qū)塊:實(shí)際文件內(nèi)容灾挨,文件太大,會占用多個(gè)區(qū)塊竹宋。
根據(jù)數(shù)據(jù)存取分為兩種文件系統(tǒng):
索引式文件系統(tǒng)(indexed allocation)
每個(gè) inode與block都有編號劳澄,而每個(gè)文件都會占用一個(gè)inode,inode 內(nèi)則有文件數(shù)據(jù)放置的block號碼逝撬。
如下圖所示浴骂,文件系統(tǒng)先格式化出inode與block的區(qū)塊,假設(shè)某一個(gè)文件的屬性與權(quán)限數(shù)據(jù)是放置到inode4號宪潮,而這個(gè)inode記錄了文件數(shù)據(jù)的實(shí)際放置點(diǎn)為2溯警、7、13狡相、15這四個(gè)block號碼梯轻,操作系統(tǒng)就能夠據(jù)此來排列磁盤的讀取順序喳挑,可以一次性將四個(gè)block內(nèi)容讀出來伊诵。那么數(shù)據(jù)的讀取就如同下圖中的箭頭所指定的模樣了曹宴。這種數(shù)據(jù)存取的方法我們稱為索引式文件系統(tǒng)。
FAT文件系統(tǒng)
U盤使用的文件系統(tǒng)一般為FAT格式版扩。FAT文件系統(tǒng)并沒有inode,所以沒有辦法將這個(gè)文件的所有block在一開始就讀取出來宴偿。每個(gè)block號碼都記錄在前一個(gè)block當(dāng)中窄刘,他的讀取方式如下圖所示:
假設(shè)文件的數(shù)據(jù)依序?qū)懭?->7->4->15號這四個(gè)block號碼中活翩,但這個(gè)文件系統(tǒng)沒有辦法一口氣就知道四個(gè)block的號碼材泄,他得要一個(gè)一個(gè)的block讀出后,才會知道下一個(gè)block在何處旦事。
1.3 Linux的ext2文件系統(tǒng)
文件系統(tǒng)一開始就將inode和數(shù)據(jù)區(qū)塊規(guī)劃好了姐浮,除非重新格式化,否則inode與數(shù)據(jù)區(qū)塊規(guī)定后就不在變動蛋逾。
ext2文件系統(tǒng)格式化的時(shí)候區(qū)分多個(gè)區(qū)塊群組换怖,每個(gè)區(qū)塊群組都有獨(dú)立的數(shù)據(jù)區(qū)塊条摸、inode钉蒲、超級區(qū)塊系統(tǒng)踏枣,比較好管理茵瀑。
1.3.1 data block(數(shù)據(jù)區(qū)塊)
用來放置文件數(shù)據(jù)竞帽,在ext2文件系統(tǒng)中所支持的區(qū)塊有1K 2K 4K 三種屹篓。
限制
- block的大小與數(shù)量在格式化完就不能夠再改變了(除非重新格式化);
- 每個(gè)block內(nèi)最多只能夠放置一個(gè)文件的數(shù)據(jù);
- 如果文件大于block的大小,則一個(gè)文件會占用多個(gè)block數(shù)量;
- 若文件小于block谍肤,則該 block的剩余容量就不能夠再被使用了(磁盤空間會浪費(fèi))。
1.3.2 inode table
記錄內(nèi)容
- 該文件的存取模式(read/write/excute)
- 該文件的擁有者與群組(owner/group)
- 該文件的容量
- 該文件創(chuàng)建或狀態(tài)改變的時(shí)間(ctime)
- 最近一次的讀取時(shí)間(atime)
- 最近修改的時(shí)間(mtime)
- 定義文件特性的旗標(biāo)(flag),如 SetUID...
- 該文件真正內(nèi)容的指向 (pointer)
特點(diǎn)
每個(gè) inode 固定 128B乳附,每個(gè)文件只占用一個(gè) inode ,文件系統(tǒng)能夠建立的文件數(shù)量和 inode 數(shù)量有關(guān)举农,系統(tǒng)讀取文件先找到 inode颁糟,分析 inode 的權(quán)限和用戶是否符合,符合才讀取內(nèi)容婚脱。
1.3.2 Superblock(超級區(qū)塊)
沒有超級區(qū)塊错森,就沒有這個(gè)文件系統(tǒng)涩维,文件系統(tǒng)的基本新都存儲在這。
記錄內(nèi)容
- 數(shù)據(jù)區(qū)塊月inode的總量
- 未使用與已使用inode與數(shù)據(jù)區(qū)塊數(shù)量
- 數(shù)據(jù)區(qū)塊與inode大小
- 文件系統(tǒng)的掛載時(shí)間垄分、最近一次寫入數(shù)據(jù)的時(shí)間、最近一次檢驗(yàn)磁盤的時(shí)間等文件系統(tǒng)相關(guān)信息豺瘤。
- 一個(gè)有效位數(shù)值坐求,若此文件系統(tǒng)已被掛載桥嗤,有效位為0泛领,若未被掛載,有效位為1锡宋。
2 文件系統(tǒng)簡單操作
2.1 磁盤與目錄的容量
df
列出文件系統(tǒng)的整體磁盤使用量
df [-ahikHTm] [目錄或文件名]
選項(xiàng)與參數(shù):
-a:列出所有的文件系統(tǒng),包括系統(tǒng)特有的/proc等文件系統(tǒng);
-k:以KBytes的容量顯示各文件系統(tǒng);
-m:以MBytes的容量顯示各文件系統(tǒng);
-h:以人們較易閱讀的GBytes鸵鸥,MBytes,KBytes等格式自行顯示;
-H:以M=1000K取代M=1024K的進(jìn)位方式;
-T:連同該partition的filesystem名稱(例如xfs)也列出;
-i:不用磁盤容量,而以inode的數(shù)量來顯示
字段含義:
- 文件系統(tǒng):代表該文件系統(tǒng)是在哪個(gè)partition,所以列出設(shè)備名稱;
- 1k-塊:說明下面的數(shù)字單位是1KB,可利用-h或-m來改變?nèi)萘?
- 已用:使用掉的磁盤空間
- 可用:剩下的磁盤空間大小;
- 已用%:磁盤的使用率辰晕,如果使用率高達(dá)90%以上時(shí),需要注意窘问;
- 掛載點(diǎn):磁盤掛載的目錄
du
評估文件系統(tǒng)的磁盤使用量(常用在推估目錄所占容量)
du [-ahskm] 文件或目錄名稱
選項(xiàng)與參數(shù):
-a:列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計(jì)目錄下面的文件量而已故黑。
-h:以人們較易讀的容量格式(G/M)顯示;
-s:列出總量而已,而不列出每個(gè)各別的目錄占用容量;
-S:不包括子目錄下的總計(jì),與-s有點(diǎn)差別概疆。
-k:以KBytes列出容量顯示;
-m:以MBytes列出容量顯示;
df和du的區(qū)別
參考Linux du命令和df命令區(qū)別
摘自《鳥哥的Linux私房菜》概耻,更多精彩參考 http://cn.linux.vbird.org/
參考 https://blog.csdn.net/wisgood/article/details/17316663