# 磁碟內部不是真空的,但空氣很乾淨。
# 磁碟分扇區,是邏輯化資料的需要,能更好的管理硬碟空間。
# 硬碟的儲存容量=磁頭數(盤面數)×磁軌(柱面)數×每道扇區數×每道扇區位元組數
# 外圈資料讀取快,內圈資料讀取慢
# 磁碟寫資料、windows的c盤、linux的boot分割槽都在磁碟的外圈,要求讀寫速度快。
linux檔案系統由三部分組成:檔名、inode、block
linux檔案系統: ext3、ext4、xfs
windows檔案系統: fat32、ntfs
# inode包含檔案的元資訊,具體來說有以下內容:
①檔案的位元組數
②檔案擁有者的 user id
③檔案的 group id
④檔案的讀、寫、執行許可權
⑤檔案的時間戳,共有三個:
ctime指檔案屬性上一次修改的時間
mtime指檔案內容上一次修改的時間
atime指檔案上一次訪問的時間。
⑥鏈結數,即有多少檔名指向這個inode
⑦檔案資料 block 的位置
# 檢視檔案的inode資訊
[root@master ~]
# stat /etc/passwd
檔案:"/etc/passwd"
大小:2262 塊:8 io 塊:4096 普通檔案
許可權:(0644/-rw-r--r--) uid:( 0/ root) gid:( 0/ root)
環境:system_u:object_r:passwd_file_t:s0
最近訪問:2020-07-14 22:26:24.741000178 +0800
最近更改:2020-06-23 17:54:17.315020864 +0800
最近改動:2020-06-23 17:54:17.315020864 +0800
# inode詳解
# inode號唯一標識乙個檔案
# 由於檔案的實際內容和inode都會占用硬碟空間,在格式化時,作業系統自動將硬碟分為兩個區域。乙個是資料區,存放資料,另乙個是inode區,存放inode所包含的資訊。
# 在格式化時,inode節點的總數已經給定,用完了,就不能建立檔案了。
# 每個inode節點的大小,一般是128位元組或256位元組。
# 假定在一塊1gb的硬碟中,每個inode節點的大小為128位元組,每1kb就設定乙個inode,那麼inode table的大小就會達到128mb,佔整塊硬碟的12.8%。
# inode資料量設定大一些:可以建立多個檔案。占用空間比較大
# inode資料量設定小一些:可以建立很少檔案。占用空間比較小
# 系統內部識別檔案的過程:
# 首先,系統找到這個檔名對應的inode號碼;
# 其次,通過inode號碼,獲取inode資訊;
# 最後,根據inode資訊,找到檔案資料所在的block,讀出資料。
# 查詢乙個普通檔案的inode號碼
[root@master ~]
# ls -i a.txt
67394033 a.txt
# 查詢乙個目錄檔案的inode號碼
[root@master ~]
# ls -id /etc
33554497 /etc
# 查詢系統中的inode的總數
[root@master ~]
# df -i
檔案系統 inode 已用(i) 可用(i) 已用(i)% 掛載點
devtmpfs 228628 394 228234 1% /dev
tmpfs 232906 1 232905 1% /dev/shm
tmpfs 232906 935 231971 1% /run
tmpfs 232906 16 232890 1% /sys/fs/cgroup
/dev/sda1 524288 341 523947 1% /boot
tmpfs 232906 6 232900 1% /run/user/42
tmpfs 232906 17 232889 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/centos 7 x86_64
# block詳解【windows中稱作 簇】
# block,也可以叫做io塊
# block是真正儲存資料的地方。
# block是檔案系統中最小的儲存單位
# 扇區是磁碟中最小的儲存單位
# block設定大:效率高,利用率低。
# block設定小:效率低,利用率高。
# 檢視系統block的大小
[root@master ~]
# stat a.txt | grep io
大小:47 塊:8 io 塊:4096 普通檔案
# 成功建立檔案有兩個前提:①所在分割槽有剩餘空間 ②所在分割槽有剩餘索引節點
# 若存在剩餘空間,但不存在剩餘的索引節點,則不能成功建立檔案。
[root@master ~]
# df -h
檔案系統 容量 已用 可用 已用% 掛載點
devtmpfs 894m 0 894m 0% /dev
tmpfs 910m 0 910m 0% /dev/shm
tmpfs 910m 11m 900m 2% /run
tmpfs 910m 0 910m 0% /sys/fs/cgroup
/dev/sda1 1014m 179m 836m 18% /boot
tmpfs 182m 8.0k 182m 1% /run/user/42
tmpfs 182m 24k 182m 1% /run/user/0
/dev/sr0 4.3g 4.3g 0 100% /run/media/root/centos 7 x86_64
[root@master ~]
# df -i
檔案系統 inode 已用(i) 可用(i) 已用(i)% 掛載點
devtmpfs 228628 394 228234 1% /dev
tmpfs 232906 1 232905 1% /dev/shm
tmpfs 232906 936 231970 1% /run
tmpfs 232906 16 232890 1% /sys/fs/cgroup
/dev/sda1 524288 341 523947 1% /boot
tmpfs 232906 6 232900 1% /run/user/42
tmpfs 232906 17 232889 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/centos 7 x86_64
# 解決辦法
①刪除部分快取檔案,釋放一部分的inode。
②備份部分快取檔案,刪除檔案,釋放出inode。然後新建乙個目錄,重新掛載乙個新分割槽,下次寫資料寫入新分割槽的掛載目錄下。
# 一塊新分割槽,在格式化後,inode總數已經固定了,可以通過-i引數指定inode的數量。
# 當伺服器宕機後,重啟報錯時,若要修復檔案系統才好用,具體用法可以上網搜,這裡只給出方法。
# 用之前了解清楚,請示領導才好用
輸入root密碼
fsck -f -y /dev/sda1 # 修復引導分割槽檔案系統
fsck -f -y /dev/sda3 # 修復/dev/sda3對應的檔案系統
reboot
兩篇部落格的學習,對linux檔案系統的學習已經足夠了。
檔案系統 檔案系統的架構
vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...
當前Linux檔案系統架構下的檔案系統新需求
這裡討論一下在不改變當前linux檔案系統架構下,對linux檔案系統的新需求。第一需求,緩解檔案系統修復極度緩慢的問題。通過標記部分元資料為unused或者clean有助於減少修復檔案系統時需要檢查的資料總量。fsck的多種實現已經高度優化,但是仍然可能有更多的提公升空間。簡單來說,對檔案系統修復...
linux 檔案系統 Linux 檔案系統結構介紹
ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...