-
認(rèn)識(shí)Linux文件系統(tǒng)
-
磁盤組成及分區(qū)復(fù)習(xí)(正好給自己提幾個(gè)問(wèn)題)
-
什么是扇區(qū),有哪兩種格式
- 扇區(qū)(Sector)為最小的物理儲(chǔ)存單位,且依據(jù)磁盤設(shè)計(jì)的不同,目前主要有 512bytes 與 4K 兩種格式;
-
什么是磁柱
- 將扇區(qū)組成一個(gè)圓,那就是磁柱(Cylinder);
-
磁盤分區(qū)表的兩種格式
- 磁盤分區(qū)表主要有兩種格式,一種是限制較多的 MBR 分區(qū)表,一種是較新且限制較少的 GPT 分區(qū)表。
-
MBR第一個(gè)扇區(qū)由什么組成呢
- MBR 分區(qū)表中,第一個(gè)扇區(qū)最重要,里面有: (1)主要開(kāi)機(jī)區(qū)(Master boot record, MBR)及分區(qū)表(partition
table), 其中 MBR 占有 446 bytes,而 partition table 則占有 64 bytes。
- MBR 分區(qū)表中,第一個(gè)扇區(qū)最重要,里面有: (1)主要開(kāi)機(jī)區(qū)(Master boot record, MBR)及分區(qū)表(partition
-
實(shí)體磁盤的文件名是什么
- /dev/sd[a-p][1-128]
-
虛擬磁盤的文件名是什么
- /dev/vd[a-d][1-128]
-
-
文件系統(tǒng)特性
- 什么是格式化,(我以前只是覺(jué)得是清空哈哈哈哈,還真沒(méi)想過(guò)),每種操作系統(tǒng)所設(shè)定的文件屬性和權(quán)限并不相同,格式化分區(qū)槽是為了讓它變成系統(tǒng)能夠使用的"文件系統(tǒng)格式"
- 文件系統(tǒng)通常將權(quán)限和屬性放到inode中,實(shí)際數(shù)據(jù)放到data block區(qū)塊中,另外有一個(gè)超級(jí)區(qū)塊(superblock)會(huì)記錄整個(gè)文件系統(tǒng)的整體信息(inode與block的總量呀,使用量呀,剩下多少呀,聽(tīng)起來(lái)像一個(gè)管家哈哈哈哈)
-
inode、block、superblock的簡(jiǎn)要概述
- superblock:記錄此 filesystem 的整體信息(inode/block 的總量、使用量、剩余量, 以及文件系統(tǒng)的格式與相關(guān)信息)
- inode:記錄文件的屬性,一個(gè)文件占用一個(gè)inode,同時(shí)記錄文件數(shù)據(jù)所在的block號(hào)碼
- block:實(shí)際記錄文件的內(nèi)容,如果是很大的文件就多占一些block啦
-
關(guān)于碎片整理
- 需要碎片整理是因?yàn)閷懭氲腷lock過(guò)于離散啦,想想磁盤機(jī)械手臂的磁盤讀取頭來(lái)來(lái)回回的我都覺(jué)得累,碎片整理就是將同一個(gè)文件的block整理到一起,那么數(shù)據(jù)的讀取就變得容易,但是Ext2是索引式文件系統(tǒng)(一下子將inode中的block號(hào)碼對(duì)應(yīng)的block全讀出來(lái),是不是有點(diǎn)像散列表哈哈哈),不太需要碎片整理啦,但是如果是以前的老式u盤呢,例如FAT格式(這里讀取block是需要一個(gè)一個(gè)讀取的,感覺(jué)像鏈表),就需要碎片整理了
-
Linux的Ext2文件系統(tǒng)(inode)
- 文件系統(tǒng)一開(kāi)始就將inode與block規(guī)劃好了,除非重新格式化or利用resize2fs等指令變更文件系統(tǒng)大小,否則inode和block就固定不再變動(dòng)啦
-
關(guān)于區(qū)塊群組
-
如果文件系統(tǒng)太大啦,那么那么奪得inode與block都放在一起也不好管理,于是Ext2文件系統(tǒng)在格式化的時(shí)候會(huì)區(qū)分為多個(gè)區(qū)塊群組,而每個(gè)群組都有獨(dú)立的inode、block、superblock系統(tǒng)
- 接上圖,文件系統(tǒng)最前面有一個(gè)啟動(dòng)扇區(qū)(boot sector)可安裝開(kāi)機(jī)管理程序,所以我們才能由多重引導(dǎo)呀!
-
-
data block
-
Ext2 文件系統(tǒng)中所支持的 block 大小有 1K, 2K 及
4K 三種而已
- 上圖非絕對(duì),某些應(yīng)用程序捕捉不到辣么大的文件
- 關(guān)于Ext2文件系統(tǒng)block的限制
- 原則上, block 的大小與數(shù)量在格式化完就不能夠再改變了(除非重新格式化)
- 每個(gè) block 內(nèi)最多只能夠放置一個(gè)文件的數(shù)據(jù)
- 如果文件大于 block 的大小,則一個(gè)文件會(huì)占用多個(gè) block 數(shù)量
- 若文件小于 block ,則該 block 的剩余容量就不能夠再被使用了(磁盤空間會(huì)浪費(fèi))
- 現(xiàn)在磁盤都太大啦,4k就好,知道原理就行
-
-
inode table
-
inode記錄的文件數(shù)據(jù)至少有:
- 該文件的存取模式(read/write/excute);
- 該文件的擁有者與群組(owner/group);
- 該文件的容量;
- 該文件建立或狀態(tài)改變的時(shí)間(ctime);
- 最近一次的讀取時(shí)間(atime);
- 最近修改的時(shí)間(mtime);
- 定義文件特性(flag),如 SetUID...;
- 該文件真正內(nèi)容的指向 (pointer);
-
關(guān)于inode的特色
- 每個(gè) inode 大小均固定為 128 bytes (新的 ext4 與 xfs 可設(shè)定到 256 bytes)
- 每個(gè)文件都僅會(huì)占用一個(gè)inode
- 文件系統(tǒng)能夠建立的文件數(shù)量與inode的數(shù)量有關(guān)
- 系統(tǒng)讀取文件需先找到inode,先分析inode所記錄的權(quán)限與用戶是否符合,如果符合才能夠開(kāi)始讀取block內(nèi)容
-
關(guān)于inode的12個(gè)直接、一個(gè)間接、一個(gè)雙間接和一個(gè)三間接
-
如果文件很大呢,inode記錄一個(gè)block號(hào)碼要花費(fèi)4byte,根本記錄不下那么多block號(hào)碼
- 直接就是直接指向block號(hào)碼的對(duì)照
- 間接就是再拿一個(gè)block當(dāng)作記錄block號(hào)碼的記錄區(qū)
- 雙間接就是使用第一個(gè)block來(lái)記錄block號(hào)碼
- 三間接就是使用第二個(gè)block記錄block號(hào)碼
-
-
inode記錄的文件數(shù)據(jù)至少有:
- 假如block大小為1k,inode能指定多少block呢
- 12個(gè)直接:12*1K=12K
- 間接:256*1K=256K
- 雙間接:2562561K=2562K
- 三間接: 256256256*1K=2563K
- 總額=12 + 256 + 256256 + 256256*256 (K) = 16GB
- 注意2k與4k block不能這么計(jì)算,因?yàn)闀?huì)受到Ext2文件系統(tǒng)本身的限制
-
superblock
-
superblock記錄的主要信息
- block與inode的總量
- 未使用與已使用的inode和block數(shù)量
- block與inode的大小(block 為 1, 2, 4K, inode 為 128bytes 或 256bytes)
- filesystem的掛載時(shí)間,最近一次寫入數(shù)據(jù)的時(shí)間,最近一次檢查磁盤(fsck)的時(shí)間等文件系統(tǒng)相關(guān)信息
- 一個(gè)valid bit數(shù)值,如果這個(gè)文件系統(tǒng)已經(jīng)被掛載,valid bit為0,否則valid bit為1
- 注意:除了第一個(gè)block group含有superblock之外,后面的block group不一定含有superblock,如果有的話呢,主要是作為第一個(gè)block group內(nèi)superblock的備份,用于救援
-
Filesystem Description(文件系統(tǒng)描述誰(shuí)說(shuō)明)
- 該區(qū)段描述每個(gè)block group的開(kāi)始和結(jié)束block號(hào)碼,以及每個(gè)區(qū)段(superblock、bitmap、inodemap、data block)分別介于哪一個(gè)block號(hào)碼之間
-
superblock記錄的主要信息
-
block bitmap(區(qū)塊對(duì)照表)**
-
block bitmap記錄的主要信息
- 記錄哪些block是空的
- 再刪除某些文件時(shí),文件原本占用的block號(hào)碼需要釋放,block bitmap中相應(yīng)的block號(hào)碼標(biāo)志就會(huì)被修改為"空閑"
-
block bitmap記錄的主要信息
-
dumpe2fs:查詢Ext家族superblock信息的指令**
- 語(yǔ)法
1. dumpe2fs [-bh] 裝置文件名 - 選項(xiàng)與參數(shù)
1. -b :列出保留為壞軌的部分(用不到 ) 2. -h : 僅列出 superblock 的數(shù)據(jù),不會(huì)列出其他的區(qū)段內(nèi)容。 - blkid:顯示目前系統(tǒng)被格式化的裝置
- dumpe2fs的部分字段
1. Filesystem volume name:文件系統(tǒng)的名稱 2. Last mounted on:上一次掛載的目錄位置 3. Filesystem UUID:Linux對(duì)裝置的定義碼 4. Filesystem features:文件系統(tǒng)的特征數(shù)據(jù) 5. Default mount options:預(yù)設(shè)在掛載時(shí)會(huì)主動(dòng)加上的掛載參數(shù) 6. Filesystem state:這塊系統(tǒng)的文件的狀態(tài),clean是沒(méi)問(wèn)題的意思 7. Inode count:inode的總數(shù) 8. Block count:block的總數(shù) 9. Reserved block count:保留的block總數(shù) 10. Free blocks:空閑的block可用數(shù)量 11 Free inodes:空閑的inode可用數(shù)量 12. Block size:?jiǎn)蝹€(gè)block的容量大小 13. inode size:inode的容量大小 14. Journal size:日志式數(shù)據(jù)的可供記錄總量 15. Group 0:第一塊block group位置 16. Primary superblock at 0, Group descriptors at 1-1:主要 superblock 的所在 17. Inode table at 161-672 (+161):inode table的所在 18. Free blocks:剩余的容量有多少
- 語(yǔ)法
-
-
與目錄樹(shù)的關(guān)系
-
目錄
- 當(dāng)我們?cè)趌inux的文件系統(tǒng)建立一個(gè)目錄時(shí),系統(tǒng)會(huì)分配一個(gè)inode和至少一塊block給該目錄,inode記錄該目錄的權(quán)限、屬性and分配到的block號(hào)碼,block記錄在這個(gè)目錄下的文件名和該文件名占用的inode號(hào)數(shù)據(jù)[要記得這只是個(gè)目錄呀]
- 當(dāng)目錄下的文件數(shù)過(guò)多導(dǎo)致一個(gè)block無(wú)法容納所有文件名+inode對(duì)照號(hào)碼時(shí),Linux會(huì)給于該目錄多一個(gè)block來(lái)記錄相關(guān)的數(shù)據(jù)
-
文件
- 當(dāng)我們?cè)贚inux的ext2建立一個(gè)一般文件時(shí),ext2分配一個(gè)inode與相匹配與文件大小的block給該文件,[記得如果文件很大時(shí)候我們還有inode的12個(gè)直接、一個(gè)間接、一個(gè)雙間接和一個(gè)三間接幫忙]
-
目錄樹(shù)讀取
- eg:讀取/etc/passwd的過(guò)程
- / 的 inode:
透過(guò)掛載點(diǎn)的信息找到根目錄 inode,且 inode 規(guī)范的權(quán)限讓我們可以讀取該 block的內(nèi)容(有 r 與 x); - / 的 block:
取得 block 的號(hào)碼,并找到該內(nèi)容有 etc/ 目錄的 inode 號(hào)碼; - etc/ 的 inode:
讀取 etc的inode號(hào)碼得知用戶具有 r 與 x 的權(quán)限,因此可以讀取 etc/ 的 block 內(nèi)容; - etc/ 的 block:
取得 block 號(hào)碼,并找到該內(nèi)容有 passwd 文件的 inode 號(hào)碼; - passwd 的 inode:
讀取passwd的inode號(hào)碼得知用戶具有 r 的權(quán)限,因此可以讀取 passwd 的 block 內(nèi)容; - passwd 的 block:
將該 block 內(nèi)容的數(shù)據(jù)讀出來(lái)。
- / 的 inode:
- eg:讀取/etc/passwd的過(guò)程
-
filesystem 大小與磁盤讀取效能
- 文件系統(tǒng)過(guò)大可能會(huì)有文件數(shù)據(jù)離散的問(wèn)題發(fā)生,合理規(guī)劃分區(qū)
-
-
EXT2/EXT3/EXT4 文件的存取與日志式文件系統(tǒng)的功能
-
新增一個(gè)文件時(shí)文件系統(tǒng)的行為
- 確定新增文件的目錄是不是有相應(yīng)權(quán)限
- 根據(jù)inode bitmap找到?jīng)]有使用的inode號(hào)碼,將新文件的權(quán)限/屬性寫入
- 根據(jù)block bitmap找到未使用的block號(hào)碼,將實(shí)際數(shù)據(jù)寫入block,并更新inode的block指向
- 將剛剛寫入的inode與block數(shù)據(jù)同步至inode bitmap與block bitmap,并更新superblock的內(nèi)容
-
數(shù)據(jù)存放區(qū)域與中介數(shù)據(jù)
- 將inode table與data block稱為數(shù)據(jù)存放區(qū)域
- 將其他eg:superblock、block bitmap與inode bitmap等區(qū)段稱為metadata(因?yàn)閟uperblock、block bitmap與inode bitmap數(shù)據(jù)經(jīng)常變動(dòng),無(wú)論新增、刪除還是修改都會(huì)影響這幾個(gè)區(qū)段的數(shù)據(jù),所以就叫中介數(shù)據(jù)啦)
-
數(shù)據(jù)不一致(inconsistent)狀態(tài)
- 寫入inode table與data block數(shù)據(jù)之后,嘣!停電了!系統(tǒng)不知道為啥斷了!metadata的內(nèi)容與實(shí)際數(shù)據(jù)存放區(qū)不一致
- Ext2中,如果有此情況,系統(tǒng)重新啟動(dòng)后會(huì)由superblock當(dāng)中的valid bit與filesystem state等狀態(tài)判斷是否強(qiáng)行進(jìn)行數(shù)據(jù)一致性檢查(費(fèi)事費(fèi)力,要針對(duì)metadata區(qū)域與實(shí)際數(shù)據(jù)存放區(qū)進(jìn)行對(duì)比,要搜尋整個(gè)filesystem,于是引出了日志式文件系統(tǒng))
-
日志式文件系統(tǒng)(journaling filesystem)
- 簡(jiǎn)化了的一直性檢查的步驟
- 預(yù)備:當(dāng)系統(tǒng)要寫入一個(gè)文件,在日志記錄區(qū)塊中記錄某個(gè)文件準(zhǔn)備要寫入的信息
- 實(shí)際寫入:寫入文件的權(quán)限and數(shù)據(jù),更metadata的數(shù)據(jù)
- 結(jié)束:完成數(shù)據(jù)與metadata的更新
- 這樣做的好處在于有問(wèn)題檢查日志記錄區(qū)塊就好了,不用針對(duì)整塊filesystem檢查
- 簡(jiǎn)化了的一直性檢查的步驟
-
Linux文件系統(tǒng)的運(yùn)作
- 關(guān)于異步處理(asynchronously)的方式
系統(tǒng)加載一個(gè)文件到內(nèi)存后,如果文件沒(méi)有修改過(guò),那么內(nèi)存區(qū)段的文件數(shù)據(jù)就會(huì)設(shè)定為干凈(clean)的,但是如果內(nèi)存中的文件被修改過(guò),此時(shí)內(nèi)存中的數(shù)據(jù)就會(huì)被設(shè)定為臟的(dirty),此時(shí)所有的動(dòng)作都在內(nèi)存中進(jìn)行,不寫入到磁盤,然后系統(tǒng)不定時(shí)的將內(nèi)存中設(shè)定為dirty的數(shù)據(jù)寫回磁盤,以保持磁盤和內(nèi)存數(shù)據(jù)一致性 - 關(guān)于Linux文件系統(tǒng)與內(nèi)存的關(guān)系
- 系統(tǒng)將常用的文件數(shù)據(jù)放置到主存儲(chǔ)器的緩沖區(qū),用來(lái)加速文件系統(tǒng)的讀寫
- 所以Linux的物理內(nèi)存最后都會(huì)被用光,這是正常滴,為了加速系統(tǒng)效能
- 可以使用sync來(lái)強(qiáng)迫內(nèi)存中dirty的文件回寫到磁盤
- 關(guān)機(jī)指令會(huì)主動(dòng)呼叫sync
- 非正常系統(tǒng)中斷,由于數(shù)據(jù)未回寫到磁盤,重新啟動(dòng)可能要花費(fèi)時(shí)間進(jìn)行磁盤檢驗(yàn),還有可能導(dǎo)致文件系統(tǒng)的損毀(不是磁盤壞了...)
- 關(guān)于異步處理(asynchronously)的方式
-
掛載點(diǎn)的意義(mount point)
- 掛載點(diǎn)一定時(shí)目錄,該目錄未進(jìn)入該文件系統(tǒng)的入口
-
這里要重點(diǎn)重重點(diǎn)記錄一下了!!!這里我本來(lái)一直沒(méi)搞清楚為什么/,/home,/boot這三個(gè)目錄的inode的號(hào)碼都是一樣的,而且為什么說(shuō)/,/home,/boot是三個(gè)不同的文件系統(tǒng)
因?yàn)樗麄兌紥燧d在根目錄啊,目錄是目錄,掛載只是掛在樹(shù)上的果子而已,誰(shuí)或三個(gè)果子不能長(zhǎng)在一個(gè)枝椏上,剩下的事交給目錄inode指向的block,而/,/home,/boot的文件屬性并不相同,掛載點(diǎn)也不相同,所以自然是三個(gè)不同的文件系統(tǒng) - 為什么/,/.,/..是一樣的東西呢,可以看一看,文件屬性相同,還指向一個(gè)inode,還都是一個(gè)掛載點(diǎn),當(dāng)然是一個(gè)東西[官方一點(diǎn)說(shuō),同一個(gè)filesystem的某個(gè)inode只會(huì)對(duì)應(yīng)到一個(gè)文件內(nèi)容,畢竟一個(gè)文件占用一個(gè)inode嘛]
-
-
其他 Linux 支持的文件系統(tǒng)與 VFS
-
常見(jiàn)的支持的日志式文件系統(tǒng)
- 傳統(tǒng)文件系統(tǒng): ext2 / minix / MS-DOS / FAT (用 vfat 模塊) / iso9660 (光盤)等等
- 日志式文件系統(tǒng): ext3 /ext4 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS / ZFS
- 網(wǎng)絡(luò)文件系統(tǒng): NFS / SMBFS
-
查看Linux支持的文件系統(tǒng)
ls -l /lib/modules/$(uname -r)/kernel/fs -
查看目前已加載到內(nèi)存中支持的文件系統(tǒng)
cat /proc/filesystems -
Linux VFS(virtual filesystem switch)
- 整個(gè)linux系統(tǒng)都是通過(guò)名為vfs的核心功能來(lái)讀取filesystem的,所以我們才無(wú)需知道每個(gè)partition是什么,vfs主動(dòng)幫我們做好讀取的工作
-
vfs簡(jiǎn)略圖
-
-
XFS 文件系統(tǒng)簡(jiǎn)介
-
EXT 家族: 支持度最廣,格式化超慢
- ext家族采用的是預(yù)先規(guī)劃處所有的inode/block/metadata等數(shù)據(jù),但是目前磁盤容量愈來(lái)愈大,傳統(tǒng)MBR被GPT取代,格式化的時(shí)候預(yù)先分配inode和block要耗費(fèi)大量時(shí)間
-
XFS 文件系統(tǒng)的配置
- xfs主要規(guī)劃為三個(gè)部分,一個(gè)資料區(qū) (data section)、一個(gè)文件系統(tǒng)活動(dòng)登錄區(qū) (log section)以及一個(gè)實(shí)時(shí)運(yùn)作區(qū) (realtime section)
- 資料區(qū)(data section)
- 與ext家族一樣包括 inode/data block/superblock 等數(shù)據(jù)
- 與ext家族類似,data section分為多個(gè)儲(chǔ)存區(qū)群組(allocation groups),每個(gè)儲(chǔ)存區(qū)群組包含(1)整個(gè)文件系
統(tǒng)的 superblock、 (2)剩余空間的管理機(jī)制、 (3)inode 的分配與追蹤。 - inode與block在系統(tǒng)需用時(shí)動(dòng)態(tài)生成
- 與ext家族不同之處,xfs的block與inode喲多種不同的容量可設(shè)定,block[512bytes ~ 64K,最高4k,不然linux核心不給掛載沒(méi)法用],inode[256bytes ~2M,256bytes的默認(rèn)值即可]
- 文件系統(tǒng)活動(dòng)登錄區(qū)(log section)
- 主要用來(lái)記錄文件系統(tǒng)的變化,直至文件的變化完整的寫入到數(shù)據(jù)區(qū),該文件的該筆記錄才會(huì)終結(jié),文件系統(tǒng)意外中斷后系統(tǒng)會(huì)依此登錄區(qū)進(jìn)行檢驗(yàn),來(lái)快速的修復(fù)文件系統(tǒng)
- 可指定外部的磁盤作為xfs的日志區(qū)塊(因?yàn)樽x寫頻繁,可指定ssd)
- 實(shí)時(shí)運(yùn)作區(qū)(realtime section)
- 文件建立時(shí),xfs在這一區(qū)段找一個(gè)或書個(gè)extent區(qū)塊用來(lái)將文件放置在這個(gè)區(qū)塊內(nèi),等到分配完畢,再寫入data section的inode與block中
- 這個(gè)extent區(qū)塊大小在格式化時(shí)要先指定[4K~1G],默認(rèn)即可,不要亂動(dòng)[會(huì)影響到實(shí)際磁盤的效能]
- xfs主要規(guī)劃為三個(gè)部分,一個(gè)資料區(qū) (data section)、一個(gè)文件系統(tǒng)活動(dòng)登錄區(qū) (log section)以及一個(gè)實(shí)時(shí)運(yùn)作區(qū) (realtime section)
-
XFS文件系統(tǒng)的描述數(shù)據(jù)觀察
-
xfs_info 掛載點(diǎn)/裝置文件名
- 第一行,isize=inode的容量,agcount=儲(chǔ)存區(qū)群組的個(gè)數(shù),agsize=每個(gè)儲(chǔ)存區(qū)群組具有65536個(gè)block,文件系統(tǒng)容量=4655364k*(第四行bsize=4096=4k)
- 第二行,sectsz=邏輯扇區(qū)(sector)的容量
- 第四行,bsize=block的容量
- 第五行,sunit與swidth與磁盤陣列的stripe相關(guān)性較高
- 第七行,internal指的是這個(gè)登錄區(qū)的位置在文件系統(tǒng)內(nèi),而非外部設(shè)備
- 第九行,realtime=none表示沒(méi)有使用,extent容量=4k
-
-
-
-
文件系統(tǒng)的簡(jiǎn)單操作
-
磁盤與目錄的容量
-
df
- 語(yǔ)法
1. df [-ahikHTm] [目錄或文件名] - 選項(xiàng)與參數(shù)
1. -a:列出所有文件系統(tǒng),包括特有的/proc等文件系統(tǒng) 2. -k:以kbytes的容量顯示 3. -m:以mbytes的容量顯示 4. -h:以較易閱讀的格式顯示(G,M,K) 5. -H:以m=1000k取代m=1024k的方式 6. -T:連同partition的filesystem名稱(eg:xfs)也列出來(lái) 7. -i:不用磁盤容量,而以inode的數(shù)量來(lái)顯示 - 字段含義
- filesystem:代表文件系統(tǒng)是在哪個(gè)partition
- 1k-blocks:底下的數(shù)字單位是1kb
- used:使用掉的硬盤空間
- available:剩下的磁盤空間大小
- use%:磁盤使用率
- mounted on:掛載點(diǎn)
- 有個(gè)/dev/shm的目錄是內(nèi)存虛擬出來(lái)的磁盤空間哈,通常是總物理內(nèi)存的一半
- 語(yǔ)法
-
du
- 語(yǔ)法
1. du [-ahskm] 文件或目錄名稱 - 選項(xiàng)與參數(shù)
1. -a列出所有的目錄與文件容量 2. -h:同df 3. -s:列出總量,而不列出每個(gè)目錄的占用容量 4. -S:不包括子目錄的統(tǒng)計(jì),與-s有差別 5. -k,-m:同上 - 直接輸入du不加選項(xiàng),du會(huì)分析當(dāng)前目錄的文件與目錄所占用的磁盤空間,實(shí)際顯示時(shí)僅會(huì)顯示目錄容量(不含文件)
- 語(yǔ)法
-
-
實(shí)體鏈接與符號(hào)鏈接
-
Hard link(實(shí)體鏈接、硬鏈接or實(shí)際鏈接)
有沒(méi)有可能多個(gè)檔名對(duì)應(yīng)到同一個(gè)inode?hard link就是在某個(gè)目錄下新增一筆檔名鏈接到某個(gè)inode號(hào)碼的關(guān)聯(lián)記錄
建立實(shí)體鏈接的指令
ln 目標(biāo)文件名 將建立實(shí)體鏈接的文件名-
示意圖
-
建立實(shí)體鏈接的好處
- 安全:將任何一個(gè)文件刪除后,inode與block都依然存在,可通過(guò)另一個(gè)檔名來(lái)讀取到正確的文件數(shù)據(jù)
有沒(méi)有可能hard link改變block呢,有,新增數(shù)據(jù)正好將目錄的block填滿時(shí)則需要再加一個(gè)block來(lái)記錄時(shí)
-
hard link的限制
- 不能跨filesystem
- 不能link目錄
-
Symbolic link(符號(hào)鏈接)
- symbolic link就是建立一個(gè)獨(dú)立的文件,當(dāng)數(shù)據(jù)讀取時(shí)這個(gè)文件會(huì)指向他link的文件的檔名,當(dāng)源檔被刪除后,符號(hào)鏈接的文件將找不到原始的檔名
- 建立符號(hào)鏈接的指令
ln -s 目標(biāo)文件名 將建立符號(hào)鏈接的文件名 - 連結(jié)檔的重要內(nèi)容就是他會(huì)寫上目標(biāo)文件的文件名(ll可以看到連結(jié)檔的的大小其實(shí)就是目標(biāo)文件名的路徑)
-
示意圖
-
ln
- 語(yǔ)法
1. ln [-sf] 來(lái)源文件 目標(biāo)文件 - 選項(xiàng)與參數(shù)
-s:如果不加任何參數(shù)就進(jìn)行連結(jié),那就是 hard link,至于 -s 就是 symbolic link -f:如果目標(biāo)文件存在時(shí),就主動(dòng)的將目標(biāo)文件直接移除后再建立 - eg
cd /tmp;cp -a /etc/passwd du -sb;df -i .(計(jì)算/tmp下有多少個(gè)bytes的容量,使用了多少inode) ln passwd passwd_hd(實(shí)體鏈接) du -sb;df -i .(觀察) ln -s passwd passwd_so(符號(hào)鏈接) du -sb;df -i .(觀察) ll -i passwd*(觀察) - 關(guān)于目錄的link數(shù)量
- 新建一個(gè)目錄,會(huì)有三樣?xùn)|西,目錄本身,“.”,"..","."指向目錄本身,".."指向上層目錄,so...新的目錄link數(shù)為2,上層目錄的link數(shù)增加1
- 語(yǔ)法
-
-
-
磁盤的分區(qū)、格式化、檢驗(yàn)與掛載
- 新增一顆磁盤時(shí)的動(dòng)作
- 對(duì)磁盤進(jìn)行分區(qū),以建立可用的 partition
- 對(duì)該 partition 進(jìn)行格式化 (format),以建立系統(tǒng)可用的 filesystem
- 若仔細(xì)一點(diǎn),則對(duì)剛剛建立好的 filesystem 進(jìn)行檢驗(yàn)
- 在 Linux 系統(tǒng)上,需要建立掛載點(diǎn) (亦即是目錄),并將他掛載上來(lái)
-
觀察磁盤分區(qū)狀態(tài)
-
lsblk 列出系統(tǒng)上的所有磁盤列表
- 語(yǔ)法
1. lsblk [-dfimpt] [device] - 選項(xiàng)與參數(shù)
-d : 僅列出磁盤本身,并不會(huì)列出該磁盤的分區(qū)數(shù)據(jù) -f :同時(shí)列出該磁盤內(nèi)的文件系統(tǒng)名稱 -i :使用 ASCII 的方式輸出,不使用復(fù)雜的編碼 -m :同時(shí)輸出該裝置在 /dev 底下的權(quán)限數(shù)據(jù) (rwx 的數(shù)據(jù)) -p :列出該裝置的完整文件名 -t :列出該磁盤裝置的詳細(xì)數(shù)據(jù),包括磁盤隊(duì)列機(jī)制、 預(yù)讀寫的數(shù)據(jù)量大小等 - 一些字段
NAME:裝置的文件名(省略/dev等前導(dǎo)目錄) MAJ:MIN:主要:次要裝置代碼(核心認(rèn)識(shí)的裝置都是透過(guò)這兩個(gè)代碼熟悉的) RM:是否為可卸除裝置(usb、光盤...etc) SIZE:容量 RO:是否為只讀裝置 TYPE:是磁盤(disk),分區(qū)(partition)還是只讀存儲(chǔ)器(rom)等 MOUNTPOINT:掛載點(diǎn) - eg
- 列出/dev/sda裝置內(nèi)所有數(shù)據(jù)的完整文件名
lsblk -ip /dev/sda - 列出裝置的UUID參數(shù)
UUID:全局單一標(biāo)識(shí)符,Linux將系統(tǒng)內(nèi)所有的裝置都給予一個(gè)獨(dú)一無(wú)二的標(biāo)識(shí)符,可用來(lái)掛載or使用
blkid - parted列出磁盤的分區(qū)表類型與分區(qū)信息
parted device_name print
幾個(gè)字段
Model:磁盤的模塊名(廠商
Disk /dev/sda:磁盤的總?cè)萘?br> Partition Table:分區(qū)表格式(MBR/GPT)
- 列出/dev/sda裝置內(nèi)所有數(shù)據(jù)的完整文件名
- 語(yǔ)法
-
-
磁盤分區(qū):gdisk/fdisk
- __MBR分區(qū)使用fdisk分區(qū),GPT分區(qū)使用gdisk分區(qū)
-
gdisk(不需要背)
-
gdisk 裝置名稱
eg:gdisk /dev/sda 幾個(gè)常用的指令 d delete a partition # 刪除一個(gè)分區(qū) n add a new partition # 增加一個(gè)分區(qū) p print the partition table # 印出分區(qū)表 (常用) q quit without saving changes # 不儲(chǔ)存分區(qū)就直接離開(kāi) gdisk w write table to disk and exit # 儲(chǔ)存分區(qū)操作后離開(kāi) gdisk 使用gdisk不要背,?之后就全都可以看到(可以隨便玩,別按w,按q就行了)
-
p列出目前磁盤分區(qū)表信息后的幾個(gè)字段
- Number:分區(qū)表編號(hào),1指的是/dev/sda1
- Start(sector):每一個(gè)分區(qū)槽開(kāi)始扇區(qū)號(hào)碼位置
- End(sector):每一個(gè)分區(qū)的結(jié)束扇區(qū)號(hào)碼位置,與 start 之間可以算出分區(qū)槽的總?cè)萘?/li>
- Size:分區(qū)槽容量
- Code:分區(qū)槽內(nèi)可能的文件系統(tǒng)類型,linux為8300,swap為8200(只是一個(gè)提示,不見(jiàn)得真的代表分區(qū)槽內(nèi)的文件系統(tǒng))
- Name:文件系統(tǒng)的名稱
-
幾點(diǎn)重要的結(jié)論
- 可以看到最大扇區(qū)數(shù)及目前使用到的扇區(qū)數(shù),可以進(jìn)行額外的分區(qū)
- 新分區(qū)通常選用上一個(gè)分區(qū)的結(jié)束扇區(qū)號(hào)碼+1作為起始扇區(qū)號(hào)碼
- gdisk只有root可以執(zhí)行,使用的裝置文件名eg:/dev/sda,而不要使用/dev/sda1,因?yàn)槲覀兪菍?duì)整個(gè)磁盤進(jìn)行分區(qū)而不是某個(gè)分區(qū)進(jìn)行分區(qū)
-
用gdisk新增分區(qū)槽(下面是假設(shè)需求)
1GB 的 xfs 文件系統(tǒng) (Linux)
? 1GB 的 vfat 文件系統(tǒng) (Windows)
? 0.5GB 的 swap (Linux swap)(這個(gè)分區(qū)等一下會(huì)被刪除喔! )
-
- 新增一顆磁盤時(shí)的動(dòng)作






