Linux 磁盤與文件系統管理node
磁盤分區表主要有兩種格式,一種是限制較多的 MBR 分區表,一種是較新且限制較少的
複製代碼
GPT 分區表。 MBR 分區表中,第一個扇區最重要,裏面有:(1)主要開機區(Master boot record, MBR)及分區表(partition table), 其中 MBR 佔有 446 Bytes,而 partition table 則佔 有 64 Bytes。 GPT 分區表除了分區數量擴充較多以外,支持的磁盤容量也能夠超過 2TB。性能優化
文件系統特性性能
文件系統一般會將這兩部份的數據分別存放在不一樣的區塊,權限與屬性放置到 inode 中,至於實際數據則放置到 data block 區塊中。 另外,還有一個超級區塊 (superblock) 會記錄整個文件系統的總體信息,包括inode 與 block 的總量、使用量、剩餘量等。
複製代碼
- superblock:記錄此 filesystem 的總體信息,包括inode/block的總量、使用量、剩餘量,以及文件系統的格式與相關信息等。
- inode:記錄文件的屬性,一個文件佔用一個inode,同時記錄此文件的數據所在的 block號碼。
- block:實際記錄文件的內容,若文件太大時,會佔用多個 block 。
Linux 的 EXT2 文件系統(inode)優化
Ext2 格式化後有點像下面這樣:spa
每個區塊羣組(block group)的六個主要內容說明以下:日誌
- data block (數據區塊) data block 是用來放置文件內容數據地方,在 Ext2 文件系統中所支持的 block 大小有 1K, 2K及 4K 三種而已。在格式化時 block 的大小就固定了,且每一個 block 都有編號,以方便 inode的記錄啦。
- inode table (inode 表格) inode 的內容在記錄文件的屬性以及該文件實際數據是放置在哪幾號 block 內! 基本上,inode 記錄的文件數據至少有下面這些: 該文件的存取模式(read/write/excute); 該文件的擁有者與羣組(owner/group); 該文件的容量; 該文件建立或狀態改變的時間(ctime); 最近一次的讀取時間(atime); 最近修改的時間(mtime); 定義文件特性的旗標(flag),如 SetUID...; 該文件真正內容的指向 (pointer);
- Superblock (超級區塊) Superblock 是記錄整個 filesystem 相關信息的地方, 沒有 Superblock ,就沒有這個filesystem 了。他記錄的信息主要有: block 與 inode 的總量; 未使用與已使用的 inode / block 數量; block 與 inode 的大小 (block 爲 1, 2, 4K,inode 爲 128Bytes 或 256Bytes); filesystem 的掛載時間、最近一次寫入數據的時間、最近一次檢驗磁盤 (fsck) 的時間 等文件系統的相關信息; 一個 valid bit 數值,若此文件系統已被掛載,則 valid bit 爲 0 ,若未被掛載,則 valid bit 爲 1 。
- Filesystem Description (文件系統描述說明) 這個區段能夠描述每一個 block group 的開始與結束的 block 號碼,以及說明每一個區段 (superblock, bitmap, inodemap, data block) 分別介於哪個 block 號碼之間。這部份也能 夠用 dumpe2fs 來觀察的。
- block bitmap (區塊對照表) 若是你想要新增文件時總會用到 block 吧!那你要使用哪一個 block 來記錄呢?固然是選擇「空 的 block 」來記錄新文件的數據囉。 那你怎麼知道哪一個 block 是空的?這就得要經過 block bitmap 的輔助了。從 block bitmap 當中能夠知道哪些 block 是空的,所以咱們的系統就可以 很快速的找到可以使用的空間來處置文件囉。 一樣的,若是你刪除某些文件時,那麼那些文件本來佔用的 block 號碼就得要釋放出來, 此 時在 block bitmap 當中相對應到該 block 號碼的標誌就得要修改爲爲「未使用中」囉!這就是 bitmap 的功能。
- inode bitmap (inode 對照表) 這個其實與 block bitmap 是相似的功能,只是 block bitmap 記錄的是使用與未使用的 block 號碼, 至於 inode bitmap 則是記錄使用與未使用的 inode 號碼囉!
dumpe2fs: 查詢 Ext 家族 superblock 信息的指令code
dumpe2fs /dev/vda5orm
EXT2/EXT3/EXT4 文件的存取與日誌式文件系統的功能cdn
日誌式文件系統 (journal) 會多出一塊記錄區,隨時記載文件系統的主要活動,可加快 系統復原時間;crontab
掛載點的意義 (mount point)
將文件系統與目錄樹結合的動做咱們稱爲「掛載」。重點是:掛載點必定是目錄,該目錄爲進入該文件系統的入口。所以並非你有任何文件系統都能使用,必需要「掛載」到目錄樹的某個目錄後,纔可以使用該文件系統的。
複製代碼
文件系統的簡單操做
df:列出文件系統的總體磁盤使用量; du:評估文件系統的磁盤使用量(經常使用在推估目錄所佔容量)
實體連接與符號連接: ln
Hard Link (實體連接, 硬式連接或實際連接)
假設我係統有個 /root/crontab 他是 /etc/crontab 的實體連接,也就是說這兩個文件名連接到同一個 inode 。
Symbolic Link (符號連接,亦便是捷徑)
這個 Symbolic Link 與 Windows 的捷徑能夠給他劃上等號,由Symbolic link 所建立的文件爲一個獨立的新的文件,因此會佔用掉 inode 與 block。
磁盤的分區、格式化、檢驗與掛載
若是咱們想要在系統裏面新增一顆磁盤時,應該有哪些動做須要作的呢:
複製代碼
- 對磁盤進行分區,以建立可用的 partition ;
- 對該 partition 進行格式化 (format),以建立系統可用的 filesystem;
- 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗;
- 在 Linux 系統上,須要建立掛載點 (亦便是目錄),並將他掛載上來;
觀察磁盤分區狀態
lsblk 列出系統上的全部磁盤列表
blkid 列出設備的 UUID 等參數
parted 列出磁盤的分區表類型與分區信息
磁盤分區: gdisk/fdisk
磁盤格式化(建立文件系統)
XFS 文件系統 mkfs.xfs
XFS 文件系統 for RAID 性能優化 (Optional)
EXT4 文件系統 mkfs.ext4
其餘文件系統 mkfs
文件系統檢驗
xfs_repair 處理 XFS 文件系統
fsck.ext4 處理 EXT4 文件系統
文件系統掛載與卸載
mount
- 單一文件系統不該該被重複掛載在不一樣的掛載點(目錄)中;
- 單一目錄不該該重複掛載多個文件系統;
- 要做爲掛載點的目錄,理論上應該都是空目錄纔是。
設置開機掛載
開機掛載 /etc/fstab 及 /etc/mtab,其實 /etc/fstab (filesystem table) 就是將咱們利用 mount 指令進行掛載時, 將全部的選項與參數寫入到這個文件中就是了。
內存交換空間(swap)之建立
使用實體分區建立swap
使用文件建立swap