雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統

千鋒雲端計算發表於2019-09-19

雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統:

索引式檔案系統

====================================================================================

雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統

Ext3/Ext4檔案系統基本結構

雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統

雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統

雲端計算學習路線教程大綱課件:EXT2/3/4檔案系統

• superblock:記錄此檔案系統的整體資訊,包括inode/block的總量、使用量、剩餘量,以及檔案系統的格式等;

• inode:記錄檔案的屬性(檔案的後設資料metadata),一個檔案佔用一個inode,同時記錄此檔案資料所在的block number;

• block:實際儲存檔案的內容,若檔案太大時,會佔用多個block。

Superblock 沒有Superblock ,就沒有filesystem

• block 與 inode 的總量;

• 未使用與已使用的 inode / block 數量;

• block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128bytes 或 256bytes);

• filesystem 的掛載時間、最近一次寫入資料的時間、最近一次檢查 (fsck) 的時間等檔案系統相關資訊;

• 每個block group 都可能含有 superblock,這樣可以進行用於 superblock 的修復;

inode table: 儲存檔案的後設資料

• 檔案的許可權(read/write/excute);

• 檔案的屬主/屬組(owner/group);

• 檔案的大小;

• 檔案的(ctime);

• 檔案的(atime);

• 檔案的(mtime);

• 記錄檔案內容所在的block number (pointer);

data block: 儲存檔案的實際資料

檢視檔案系統的資訊

dumpe2fs

[root@tianyun ~]# dumpe2fs /dev/sda2

tune2fs

[root@tianyun ~]# tune2fs -l /dev/sda3

tune2fs 1.39 (29-May-2006)

Filesystem volume name: yang

Last mounted on: <not available>

Filesystem UUID: 28459f88-87dc-4624-94a7-07b0f3eb2420

Filesystem magic number: 0xEF53

Filesystem revision #: 1 (dynamic)

Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super

Default mount options: (none)

Filesystem state: clean

Errors behavior: Continue

Filesystem OS type: Linux

Inode count: 48960

Block count: 195312

Reserved block count: 9765

Free blocks: 183410

Free inodes: 48946

First block: 1

Block size: 1024

First inode: 11

Inode size: 128

Journal inode: 8

EXT2/EXT3/EXT4 日誌式檔案系統

新建一個檔案的過程:

1. 先確定使用者對於想新建立檔案目錄是否具有 w 與 x 的許可權;

2. 根據 inode bitmap 找到沒有使用的 inode 號碼,並將檔案的許可權和屬性寫入;

3. 根據 block bitmap 找到沒有使用的 block號碼,將檔案的實際資料寫入 block 中,且更新 inode 的 block 指向資訊;

4. 將剛剛寫入的 inode 與 block 資訊同步更新 inode bitmap 與 block bitmap,並更新 superblock 的內容。

• 檔案的不一致 (Inconsistent) 狀態

例如突然斷電、kernel發生錯誤等。這樣可能寫入的資訊僅有 inode table 及 data block 而已,最後一個同步更新的步

驟並沒有做完,此時就會發生 metadata 的內容與實際資訊產生不一致 (Inconsistent) 的情況。

• 日誌式檔案系統 (Journaling filesystem)

1. 準備:當系統要寫入一個檔案時,會先在日誌區記錄某個檔案準備寫入的資訊;

2. 實際寫入:寫入檔案的許可權與資料,更新 metadata 的資訊;

3. 結束:完成資料與 metadata 的更新後,在日誌記錄區塊中完成檔案的記錄。

修復檔案系統 fsck,e2fsck -fy

案例1: 系統無法啟動

案例二:Read-only file system

如果執行中的伺服器的某一個分割槽出現readonly,導致程式無法寫這個分割槽(比如nginx程式無法寫日誌檔案到此分割槽,

手動測試touch到此分割槽也顯示:cannot touch ‘xxxxx’:Read-only file system),該怎麼辦?

解決:磁碟read-only的原因一般有2種,一種是沒有正常關機導致,還有一種是硬碟故障導致。

如果是/分割槽,這種情況只能下線報修磁碟了。

如果是其它分割槽,則可以嘗試三步解決此問題:

1. 先取消掛載此分割槽

2. 再fsck.ext4 -fy /dev/sdb1

3. 最後掛載此分割槽,檢查是否可以正常讀寫。

如果仍舊不可以正常讀寫,請報修磁碟。

注:以上操作過程,請保證伺服器不線上上提供服務。

案例三:修復superblock

找到備份的superblock

[root@tianyun ~]# dumpe2fs -h /dev/datavg/lv1 |grep 'Blocks per group'

dumpe2fs 1.42.9 (28-Dec-2013)

Blocks per group: 8192

利用備份的 superblock恢復superblock

[root@tianyun ~]# fsck.ext4 -b 8192 /dev/datavg/lv1


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2657445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章