Linux 文件系統(tǒng)
文件系統(tǒng)
Linux 使用了樹形文件存儲結構青自,在磁盤上存儲文件的時候统屈,使用的則是目錄加文件的形式。但實際上撑毛,對于磁盤等各種存儲設備來說书聚,無論是什么數(shù)據(jù),都只有0和1的概念藻雌。但是對用于而言雌续,0和1毫無意義。這時候就需要一種類似于"翻譯"的機制存在于用戶和磁盤之間(我的理解就是將0和1轉換成為我們看到的文件的形式)胯杭。
在Linux中采用的是文件系統(tǒng)+虛擬文件系統(tǒng)(virtual File System,VFS)的解決方案驯杜。
什么是文件系統(tǒng)
文件系統(tǒng)是操作系統(tǒng)用于明確磁盤或分區(qū)上相關文件的方法和數(shù)據(jù)結構。
我的理解是:
將邏輯上的屬于寫入物理的設備做个,然后以用戶能夠理解的方式展現(xiàn)于屏幕上的方法鸽心。
在使用前,都需要針對磁盤做初始化操作叁温,并將記錄的數(shù)據(jù)結構寫入磁盤再悼,這種操作就是建立文件系統(tǒng),在有些操作系統(tǒng)中稱之為格式化膝但。
Linux 支持多種不同的文件系統(tǒng)冲九,但大多數(shù)Linux系統(tǒng)都具有類似的通用結構,包括如下結構:
- 超級塊(superblock)
- i 節(jié)點(inode)-
- 數(shù)據(jù)塊(data block)
- 目錄塊(directory block)
塊 | 作用 |
---|---|
超級塊 | 包含文件系統(tǒng)的總體信息跟束,是文件系統(tǒng)的核心莺奸,所以在磁盤中會有多個超級塊,以防止由于磁盤出現(xiàn)壞塊導致全部文件無法使用 |
i 節(jié)點 | 存儲所有與文件有關的元數(shù)據(jù)冀宴,也就是文件所有者灭贷、權限等屬性數(shù)據(jù)以及指向的數(shù)據(jù)塊,但是不包括文件名和文件內容 |
數(shù)據(jù)塊 | 是真實存放文件數(shù)據(jù)的部分略贮,一個數(shù)據(jù)塊默認情況下是 4KB |
目錄塊 | 包括文件名和文件在目錄中的位置甚疟,并包括文件的 i 節(jié)點數(shù)據(jù) |
ext2 文件系統(tǒng)簡介
在 Ext2 出現(xiàn)之前,Linux 采用的是 minix 逃延。
但是它存在局限性览妖,比如文件名最長僅支持14個字符,文件最大為64MB等揽祥。
Ext2 的原理:
采取的方法是將文件數(shù)據(jù)存放在數(shù)據(jù)塊中讽膏,這些數(shù)據(jù)塊的大小可以在創(chuàng)建文件系統(tǒng)的時候指定。對于存放的每個文件和莫露露拄丰,都會有一個 inode 指定府树,文件系統(tǒng)中所有的 inode 都是使用 inode 表來進行記錄的俐末。一定數(shù)量的塊就會被組成一個塊組。
在Ext2文件系統(tǒng)中奄侠,整個分區(qū)的文件系統(tǒng)信息被存放在超級塊中卓箫,考慮到超級塊的重要性,因此在每個塊組的開頭中都有相同的備份垄潮。
Ext2 的優(yōu)缺點
優(yōu)點:
Ext2 有著極好的存儲性能丽柿,所以曾一度成為 Linux 中的標準文件系統(tǒng)。
缺點:
不支持日志功能魂挂,這很容易造成一些情況下丟失數(shù)據(jù)甫题。
ext3文件系統(tǒng)簡介
為了彌補ext2文件系統(tǒng)的不足,有日志功能的ext3文件系統(tǒng)應運而生了涂召。它直接從ext2文件系統(tǒng)發(fā)展而來坠非,所以完全兼容ext2文件系統(tǒng),而且支持從ext2非常簡單地(只需要兩條命令)轉換為ext3,這種特性讓更多的老用戶轉為使用 ext3 文件系統(tǒng)果正。
為什么需要日志文件系統(tǒng)炎码。
因為在寫入數(shù)據(jù)之前,會先寫入日志秋泳。在出現(xiàn)問題的時候潦闲,可以追溯原因。而Ext2修復文件系統(tǒng)時迫皱,需要遍歷整個文件系統(tǒng)歉闰。因此相比后者,前者節(jié)省了大量的時間卓起。且對系統(tǒng)做了優(yōu)化和敬,在性能上不會比 ext2 低。
磁盤分區(qū)戏阅、創(chuàng)建文件系統(tǒng)昼弟、掛載
磁盤使用前需要對其進行分割,這種行為被稱為“分區(qū)”奕筐。
磁盤的分區(qū)分為兩類舱痘,即主分區(qū)和擴展分區(qū)。
受限于磁盤分區(qū)表的大小(MBR大小為512字節(jié)离赫,其中分區(qū)表占64字節(jié))芭逝,由于每個分區(qū)信息使用16字節(jié),所以一塊磁盤最多只能創(chuàng)建4個主分區(qū)笆怠,為了能夠支持更多分區(qū)铝耻,可以使用擴展分區(qū)(在擴展分區(qū)中可以劃分更多邏輯分區(qū))誊爹,但是即使如此蹬刷,分區(qū)還是要受主分區(qū)+擴展分區(qū)最多不能超過4個的限制瓢捉。
在完成磁盤分區(qū)后,需要進行創(chuàng)建文件系統(tǒng)的操作办成,最后將該分區(qū)掛載到系統(tǒng)中的某個掛載點才可以使用。
創(chuàng)建文件系統(tǒng)
fdisk -l // 查看磁盤
fdisk /dev/sdb // 分區(qū)
mkfs -t ext3 /dev/sdb1 // 格式化,創(chuàng)建文件系統(tǒng)
磁盤掛載
mkdir newDisk // 新建一個目錄
mount DEVICE MOUNT_POINT // 掛載設備作瞄,掛載點為一個目錄
mount // 默認為顯示所有掛載
設置啟動自動掛載
之前的掛載只是暫時的途凫,需要配置 /etc/fstab 使得系統(tǒng)在重啟后自動掛載
這樣,以后系統(tǒng)重啟時而克,設備就會自動掛載了靶壮。
磁盤檢驗
umount /dev/sdb1 // 取消掛載
或者
umount /root/newDisk
當磁盤出現(xiàn)邏輯錯誤的時候,可以使用 fsck 命令來修復
fsck -t ext3 /dev/sdb1
如果系統(tǒng)的根文件出現(xiàn)問題需要修復员萍,則需要重啟計算機腾降,當系統(tǒng)在重啟時檢測到根文件出現(xiàn)問題,會提示用戶輸入root密碼進入單用戶模式碎绎,這樣就可以使用 fsck 來修復根目錄了螃壤。
與 fsck 不同,badblocks 主要是用來檢測磁盤的物理壞道的筋帖,使用這個命令其實更多的只是確認磁盤是否有壞道奸晴,所以平時使用的較少,往往只是在懷疑磁盤有壞道的時候才會使用日麸。
badblocks -v /dev/sdb1
Linux 邏輯卷
當磁盤不夠用的時候寄啼,需要使用邏輯卷來補充磁盤容積。
什么是邏輯卷
卷 | 含義 |
---|---|
物理卷 | 物理磁盤分區(qū)代箭,例如 /dev/sdb1 |
卷組 | 物理卷的集合 |
邏輯卷 | 從物理卷中劃分出來的一塊邏輯磁盤 |
創(chuàng)建邏輯卷
TODO 這里將要寫入如何創(chuàng)建邏輯卷
硬鏈接和軟鏈接
TODO 這里將要寫入關于硬鏈接和軟鏈接