8.1 認(rèn)識(shí) ET2文件系統(tǒng)
8.1.1硬盤組成與分區(qū)的復(fù)習(xí)
- 磁盤的物理組成 (3個(gè)物理組成 3個(gè)盤片組成 兩種磁盤文件名)
Review p#12 - 分區(qū)(5 個(gè)點(diǎn))
Review p#67
8.1.2 文件系統(tǒng)特性
Linux ->Ext2
Windows -> NTFS使用LVM (Logical Volume Manager)和 軟磁盤陣列 Softdisk RAID 將一個(gè)分區(qū)格式化為多個(gè)文件系統(tǒng)垒手, 也能將多個(gè)分區(qū)合成一個(gè)文件系統(tǒng)狰域。
Review RAID 和 LVM-
文件系統(tǒng)如何運(yùn)行?
Inode
文件權(quán)限和屬性放 inode
一個(gè)文件占用一個(gè)inode宏榕,同時(shí)記錄此文件的數(shù)據(jù)所在的block號(hào)碼Block
而文件實(shí)際數(shù)據(jù)放data block 塊中
若文件太大,會(huì)占用多個(gè)blockSuperblock
用于存放整體信息蒙秒,包括inode和block的總量、使用量琴许、剩余量税肪、以及文件系統(tǒng)的格式。
索引式文件系統(tǒng) indexed allocation
根據(jù)inode查找所有block讀取
-FAT U盤
沒(méi)有inode存在榜田,只能先將上一個(gè)block讀取出來(lái)才知道下一個(gè)block號(hào)碼益兄。
- 碎片整理 (對(duì)于FAT文件系統(tǒng)經(jīng)常使用)
將同一個(gè)文件所屬的的block再匯合到一起,提高讀取速度箭券。
8.1.3 Linux的 Ext2 文件系統(tǒng)
- 為什么硬盤只有一個(gè)MBR卻可以安裝雙系統(tǒng) ?
- Ext2 文件系統(tǒng)為了便于管理 固定的 inode 和block 區(qū)分出 多個(gè)塊組(block group)净捅,每個(gè) 塊組 都擁有自己獨(dú)立的inode block superblock 系統(tǒng)。
- 在整體的規(guī)劃中辩块,文件系統(tǒng)在最前面有一個(gè) 啟動(dòng)扇區(qū) BootSector 用于安裝引導(dǎo)裝載文件蛔六,不用覆蓋硬盤唯一個(gè)MBR
BootSection 在文件系統(tǒng)的 最前端
data block (數(shù)據(jù)塊)
三種size 1KB 2KB 4KB
對(duì)應(yīng)最大單一文件限制 16GB 256GB 2TB
對(duì)應(yīng)對(duì)大文件系統(tǒng)總?cè)萘?2TB 8TB 16TB原則上 block 的數(shù)量和大小在格式化完成后就固定了, 除非重新格式化
每個(gè)block 最多放一個(gè)文件的數(shù)據(jù)
如果文件大于block大小废亭,則一個(gè)文件會(huì)占用多個(gè)block
若小于 block 大小国章,則剩余空間也不能被使用
產(chǎn)生兩個(gè)問(wèn)題
如果采用了較大size的block,會(huì)造成資源的浪費(fèi)
如果采用較小的豆村,會(huì)使讀寫速度變慢
估計(jì)文件的大小選擇block的size
inodetable(inode 表格)
1.inode 記錄了哪些文件數(shù)據(jù)液兽?
rwx;owner/group;size;ctime/atime/mtime;SetID;pointer
2.inode的其他特點(diǎn)
inode 固定大小為128bytes
每個(gè)文件只能占用一個(gè)inode
文件系統(tǒng)能創(chuàng)建文件的數(shù)量和inode的數(shù)量有關(guān)
系統(tǒng)讀取文件需要先找到inode, 并分析 inode所記錄的權(quán)限與用戶是否符合掌动,符合了才開始讀取block里面的內(nèi)容-
inode 結(jié)構(gòu)
12個(gè)直接四啰、一個(gè)間接宁玫、一個(gè)雙間接、一個(gè)三間接記錄區(qū)
Superblock (超級(jí)塊)
block 與inode的總量
未使用與已使用b&i總量
b&i的大小
文件系統(tǒng)掛載時(shí)間柑晒、最近一次寫入數(shù)據(jù)時(shí)間欧瘪、最近一次檢測(cè)磁盤fsck的時(shí)間等文件系統(tǒng)相關(guān)信息
一個(gè)validbit數(shù)值,0->已掛載 1->未被掛載
每個(gè)block group都可能含有superblock 作為唯一的superblock的備份File System Descripition (文件系統(tǒng)描述說(shuō)明)
用于描述:
每個(gè)block group 的開始與結(jié)束的 block號(hào)碼
說(shuō)明每個(gè)區(qū)段分別介于哪個(gè)block號(hào)碼之間
(superblock匙赞,bitmap佛掖,inodemap,data block)block bitmap
哪些block號(hào)碼用著罚屋,哪些block號(hào)碼未使用苦囱,刪除文件時(shí)釋放block號(hào)碼
-inode bitmap
如上,替換成 inode
Tips:可以使用dumpe2fs 查看Superblock和File Syetem Descripition
- df 查看目前掛載的設(shè)備
- dumpe2fs /dev/hdc2
稍后問(wèn)萱萱
8.1.4 與目錄樹的關(guān)系
-
目錄
當(dāng)我們mkdir時(shí)撕彤,ext2會(huì)分配一個(gè)inode和至少一塊block給該目錄
inode記錄目錄相關(guān)權(quán)限和屬性,并可記錄分配到的那塊block號(hào)碼
block記錄該目錄下的文件名與該文件名占用的inode號(hào)碼數(shù)據(jù)猛拴。- 使用 ls -i 查看目錄文件所占用的inode號(hào)碼
- 查看 /bin /boot /proc /lost+found /sbin 這五個(gè)目錄的ls -l
ll -d / /bin /boot /proc /lost+found /sbin
Review 目錄樹 p#156 (proc為什么不占用硬盤容量)
文件
當(dāng)我們?cè)?ext2 下新建一個(gè)文件時(shí)羹铅, ext2會(huì)分配一個(gè)indoe和相對(duì)于該文件大小的的block數(shù)量給該文件。超過(guò)12個(gè)block愉昆,會(huì)多一個(gè)block作為塊號(hào)碼的記錄-
目錄樹讀取
文件名實(shí)際上是存在目錄文件的block里职员,所以文件名的新增、刪除跛溉、重命名都是需要 讀取 目錄文件的inode和block焊切,才能找到文件名占用的inode,再找到文件的block芳室。- 目錄樹讀取的過(guò)程
1 通過(guò)掛載點(diǎn)信息找到/dev/hdc2 的inode 號(hào)碼為2的根目錄 inode 专肪,且inode 具有的權(quán)限讓我們可以讀取該block的內(nèi)容
2 取得的block號(hào)碼, 并找到etc/下的inode內(nèi)容
3 讀取inode號(hào)碼得知vbird具有r和x的權(quán)限 堪侯,因此可以讀取etc/的block內(nèi)容
4 取得的block號(hào)碼嚎尤,找到block內(nèi)容中的passwd文件的inode號(hào)碼
5 讀取inode號(hào)碼得知vbird具有r的權(quán)限,因此可以讀取passwd的block內(nèi)容
- 目錄樹讀取的過(guò)程
文件大小的磁盤讀取性能
分區(qū)的規(guī)劃不是越大越好伍宦,大的文件系統(tǒng)存在文件數(shù)據(jù)離散的問(wèn)題芽死,造成數(shù)據(jù)讀取性能低。
8.1.5 Ext2/Ext3 文件的訪問(wèn)與日志文件系統(tǒng)的功能
新增文件時(shí)次洼,系統(tǒng)的行為关贵?
1 用戶在該目錄下,是否有w 和x 的權(quán)限卖毁?有坪哄,繼續(xù)。
2 根據(jù)inode bitmap找到?jīng)]有使用的inode號(hào)碼,并將新文件的權(quán)限和屬性寫入
3 根據(jù) block bitmap 找到?jīng)]有使用的block 號(hào)碼翩肌,并將實(shí)際數(shù)據(jù)寫入block,且更新 inode 的block指向數(shù)據(jù)
4 將剛才寫入的inode 與block 數(shù)據(jù)同步更新inode bitmap 與block bitmap禁悠,并更新superblock的內(nèi)容-
數(shù)據(jù)的不一致?tīng)顟B(tài) (Inconsistent)
- 數(shù)據(jù)存放區(qū)域 -> inode 和 data block
- metadata (中間數(shù)據(jù)) -> super block , inode bitmap, block bitmap:因?yàn)檫@數(shù)據(jù)都是經(jīng)常變動(dòng)的念祭,每次添加、刪除碍侦、編輯都可能會(huì)影響到這三個(gè)部分的數(shù)據(jù)粱坤。
1 文件在寫入文件系統(tǒng)時(shí),系統(tǒng)中斷瓷产,inode table 和 data block 被寫入站玄,但metadata還未更新,metadata和數(shù)據(jù)存放區(qū)不一致
2 Ext2 會(huì)在系統(tǒng)重新啟動(dòng)時(shí)濒旦,強(qiáng)制比對(duì)metadata 和數(shù)據(jù)存放區(qū)株旷,數(shù)量多,時(shí)間慢尔邓,系統(tǒng)繁忙
-
出現(xiàn)日志文件系統(tǒng) (Journaling file system)
專門在文件系統(tǒng)中規(guī)劃出一個(gè)塊晾剖,該塊專門記錄寫入或修訂文件時(shí)的步驟:
1 預(yù)備:當(dāng)系統(tǒng)寫入文件時(shí),會(huì)先在Journal 塊中記錄某個(gè)文件準(zhǔn)備要寫入的信息
2 實(shí)際寫入: 寫入文件的權(quán)限與數(shù)據(jù)梯嗽; 開始更新meta data
3 結(jié)束:完成數(shù)據(jù)與meta data 的更新后齿尽,在journal塊當(dāng)中完成該文件的記錄- 只要檢查journal塊就可以知道是哪些文件出現(xiàn)了inconsistent的狀態(tài),針對(duì)文件修復(fù)
- dumpe2fs 中的 superblock 有Journal inode/backup/size 的信息
- 為什么 從Ext2 轉(zhuǎn)換到Ext3 灯节?可利用性 數(shù)據(jù)完整性 速度 和 易于轉(zhuǎn)換(不用格式化)
8.1.6 Linux 文件系統(tǒng)的操作
Review #p
所有數(shù)據(jù)都得加載到內(nèi)存后cpu才能夠?qū)?shù)據(jù)進(jìn)行處理循头。當(dāng)編輯很大的文件時(shí),頻繁的要系統(tǒng)寫入磁盤中炎疆,由于磁盤寫入速度要比內(nèi)存慢很多卡骂,耗在等待硬盤的寫入和讀取中,沒(méi)效率磷雇。
- Asynchronously 異步處理
1 當(dāng)系統(tǒng)加載一個(gè)文件到內(nèi)存后偿警,若沒(méi)被改動(dòng),則內(nèi)存區(qū)段的文件數(shù)據(jù)會(huì)被設(shè)置為clean
2 如若被改動(dòng)唯笙,內(nèi)存中數(shù)據(jù)會(huì)被改成dirty
3 改動(dòng)被保存在內(nèi)存里螟蒸,未被保存到磁盤中
4 系統(tǒng)會(huì)不定時(shí)將 dirty 的數(shù)據(jù)寫回磁盤,保持磁盤和內(nèi)存數(shù)據(jù)的一致性崩掘。(sync命令強(qiáng)制同步) - 內(nèi)存 與 文件系統(tǒng)的關(guān)系
1 系統(tǒng)將常用文件放置在主儲(chǔ)存器的緩沖區(qū)七嫌,以提高文件系統(tǒng)的讀寫速度
2 Linux的物理內(nèi)存會(huì)被用光,正常苞慢∷性可加速系統(tǒng)性能
3 sync 手動(dòng)同步
4 正常關(guān)機(jī),關(guān)機(jī)命令會(huì)調(diào)用sync同步
5 非正常關(guān)機(jī)會(huì)導(dǎo)致長(zhǎng)時(shí)間的磁盤校驗(yàn),甚至導(dǎo)致文件系統(tǒng)損毀
8.1.7 掛載點(diǎn)(mount point)的意義
文件系統(tǒng)鏈接到某個(gè)目錄 -> 掛載
一定是目錄绍赛,該目錄為掛載點(diǎn)
蔓纠?#p208 難道不是掛載到root下?
8.1.8 其他Linux支持的文件系統(tǒng)與VFS
傳統(tǒng)文件系統(tǒng)
日志文件系統(tǒng)
網(wǎng)絡(luò)文件系統(tǒng):NFS SMBFS
- 查看Linux支持的文件系統(tǒng)
ls -l /lib/modules/$ (uname -r)/kernel/fs - 查看系統(tǒng)目前已經(jīng)加載的內(nèi)存支持的文件系統(tǒng)
cat /proc/filesystems - VFS Virtual Filesystem System
Linux 通過(guò)VFS的內(nèi)核功能讀取文件系統(tǒng)
(文件系統(tǒng)略)
8.2 文件系統(tǒng)的簡(jiǎn)單操作
8.2.1 磁盤與目錄的容量
-
df [-hiTa] display free disk space列出文件系統(tǒng)的整體磁盤使用量
-h human readable
-i 不用硬盤容量吗蚌,用inode數(shù)量顯示
-T 列出該分區(qū)的文件系統(tǒng)名稱Output
Filesystem 代表文件系統(tǒng)是在哪個(gè)分區(qū)
1K-block 說(shuō)明下面單位為1kb
Used 使用掉的硬盤空間
Available剩下
Use% 使用率
mountedon 掛載點(diǎn)df 針對(duì)整個(gè)文件系統(tǒng) 腿倚,需特別關(guān)注 根目錄 的剩余容量
特殊的 /proc 和 /dev/shm(虛擬的,下次開機(jī)就沒(méi)了)
du display disk usage statistics
不使用任何參數(shù)時(shí)蚯妇,會(huì)列出當(dāng)前目錄下的目錄文件容量
-a 列出目錄和文件的容量
-s 只列出總量 -S 去除子目錄
使用通配符 查看 每個(gè)目錄所占用容量
du -sm /*
8.2.2 連接文件 ln
softlink 快捷方式
hardlink 通過(guò)文件系統(tǒng)的inode連接產(chǎn)生新文件名敷燎,而非新文件
- Hard Link
ls -al link字段下的數(shù)字,實(shí)際是多少文件link到了這個(gè)inode號(hào)碼
為什么箩言?
安全硬贯。
1 任意的文件名被刪除,文件內(nèi)容仍然實(shí)際存在陨收。
2 任意的文件名進(jìn)入編輯饭豹,文件內(nèi)容都可以被修改。
3 就是多在block里寫入一個(gè)關(guān)聯(lián)信息而已
缺點(diǎn)
1 不能跨文件系統(tǒng) 2 不能連接到目錄 畏吓?#p214
- symbolic link
創(chuàng)建一個(gè)獨(dú)立的文件(新的inode號(hào)碼墨状,新的block),讓這個(gè)文件數(shù)據(jù)讀取指向它連接的文件名菲饼。
當(dāng)源文件被刪除后肾砂,slink文件無(wú)法打開,實(shí)際就是找不到連接的文件名宏悦。
ln link 源文件 目標(biāo)文件
-s 創(chuàng)建symbolic link
-f 如果目標(biāo)文件存在镐确,則先將其刪除再創(chuàng)建Tips
ln -s /bin /root/bin
此時(shí)/root/bin(為符號(hào)連接文件) 下內(nèi)容進(jìn)入/bin下內(nèi)容,如果被刪除了饼煞,block中就沒(méi)有這份數(shù)據(jù)了(軟連接文件)
挽救:趕緊刪除/root/bin 這個(gè)符號(hào)鏈接文件
原本hardlink源葫,/root/bin下刪除,與/bin下內(nèi)容無(wú)關(guān)砖瞧。關(guān)于目錄的鏈接數(shù)量
新目錄底下存在 . 和 .. 目錄
該目錄本身 鏈接數(shù)量為2 (自身+.)
上級(jí)目錄 鏈接數(shù)量+1 (原有 + ..)
8.3 磁盤的分區(qū)息堂、格式化、檢驗(yàn)與掛載
加磁盤怎么做块促?
1 對(duì)磁盤分區(qū)
2 對(duì)分區(qū)format創(chuàng)建可用文件系統(tǒng)
3 對(duì)文件系統(tǒng)檢驗(yàn)
4 Linux荣堰,需要?jiǎng)?chuàng)建掛載點(diǎn),并掛載竭翠。
8.3.1 磁盤分區(qū)
fdisk DOS partition maintenance program
按m顯示所有操作 離開q所有操作不會(huì)生效
w操作生效 p 輸出目前磁盤狀態(tài)
Device 設(shè)備文件名
Boot 是否為開機(jī)引導(dǎo)模塊
Start End 哪個(gè)柱面號(hào)碼之間 決定分區(qū)的大小
Blocks 以1k為單位的容量
ID system 提示文件系統(tǒng)
最后dev的End柱面號(hào)碼為多少 與最大柱面號(hào)碼5005差距多少 即剩余可分區(qū)的大小
Start End 判斷拓展分區(qū)和邏輯分區(qū)
fdisk -l 查閱系統(tǒng)內(nèi)所有分區(qū)
設(shè)備文件名不要加上數(shù)字 (數(shù)字就是分區(qū))刪除分區(qū)
fdisk /dev/hdc
p
d 選擇
w or q新增分區(qū)
后略振坚,實(shí)操
8.3.2 磁盤格式化
mkfs -t 文件系統(tǒng)格式 /dev/hdc6
mke2fs 指定格式化 創(chuàng)建文件系統(tǒng)
8.3.3 磁盤檢驗(yàn) fsck badblocks
- fsck filesystem consistency check and interactive repair
8.3.4 磁盤掛載與卸載
單一文件系統(tǒng)不應(yīng)該被重復(fù)掛載在不同的掛載點(diǎn)
單一目錄不應(yīng)該重復(fù)掛載多個(gè)文件系統(tǒng)
作為掛載點(diǎn)的目錄應(yīng)該是空目錄
掛載:
mount 剛才創(chuàng)建的文件系統(tǒng)/dev/hdc6 目錄/mnt/hdc6
Linux有驅(qū)動(dòng)程序和分析superblock可以自動(dòng)識(shí)別出掛載的文件系統(tǒng)類型
依靠 兩個(gè)文件
/etc/filesystems
/proc/filesystems
驅(qū)動(dòng)程序目錄
/lib/modules/$ (uname -r )/kernel/fs/
查看 mount -l
光驅(qū)一旦掛載之后就無(wú)法退出光盤
- 格式化(mksf)與掛載軟盤
略 - 掛載U盤
- 重新掛載
mount -o remount,rw,auto/ - 掛載不特定目錄
mount --bind /hom /mnt/home - 將設(shè)備文件卸載
umount - 使用Label name 進(jìn)行掛載的方法
查看Label name (dumpe2fs -h /dev/hdc6)
掛載(mount -L “vibird_logical” /mnt/hdc6)
8.3.5 磁盤參數(shù)修改
mknod(略)
修改Lable name (e2label)
tune2fs & hdparm 命令(略)
8.4 設(shè)置開機(jī)掛載
8.4.1 開機(jī)掛載文件/etc/fstab 及/etc/mtab
系統(tǒng)掛載的一些限制
1 根目錄是必須掛載的,而且一定要先于其他mount point被掛載出來(lái)
2 其他掛載點(diǎn)必須為已新建的目錄斋扰,可任意指定渡八,但一定要遵守必需的系統(tǒng)目錄架構(gòu)原則啃洋。
3 所有掛載點(diǎn)在同一時(shí)間之內(nèi),只能掛載一次
4 所有分區(qū)在同一時(shí)間之內(nèi)屎鳍,只能被掛載一次
5 若進(jìn)行卸載宏娄,你必須將工作目錄移到掛載點(diǎn)外(以及子目錄)之外Lable 或設(shè)備文件名
mount point
磁盤分區(qū)的文件系統(tǒng)
-
文件系統(tǒng)的參數(shù)
能否被 dump 備份命令作用
dump 是一個(gè)用來(lái)做為備份的命令, 我們可以透過(guò) fstab 指定哪個(gè)文件系統(tǒng)必須要進(jìn)行 dump 備份逮壁! 0 代表不要做 dump 備份绝编, 1 代表要每天進(jìn)行 dump 的動(dòng)作。 2 也代表其他不定日期的 dump 備份動(dòng)作貌踏, 通常這個(gè)數(shù)值不是 0 就是 1 啦!是否以 fsck 檢驗(yàn)扇區(qū):
啟動(dòng)的過(guò)程中窟勃,系統(tǒng)默認(rèn)會(huì)以fsck檢驗(yàn)我們的 filesystem 是否完整 (clean)祖乳。 不過(guò),某些 filesystem 是不需要檢驗(yàn)的秉氧,例如內(nèi)存置換空間 (swap) 眷昆,或者是特殊文件系統(tǒng)例如 /proc 與 /sys 等等。所以汁咏,在這個(gè)字段中亚斋,我們可以配置是否要以 fsck 檢驗(yàn)該 filesystem 喔。 0 是不要檢驗(yàn)攘滩, 1 表示最早檢驗(yàn)(一般只有根目錄會(huì)配置為 1)帅刊, 2 也是要檢驗(yàn),不過(guò) 1 會(huì)比較早被檢驗(yàn)啦漂问! 一般來(lái)說(shuō)赖瞒,根目錄配置為 1 ,其他的要檢驗(yàn)的 filesystem 都配置為 2 就好了蚤假。