Linux學習筆記(三)-Linux 磁盤與文件系統管理

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。

磁盤的分區、格式化、檢驗與掛載

若是咱們想要在系統裏面新增一顆磁盤時,應該有哪些動做須要作的呢:
複製代碼
  1. 對磁盤進行分區,以建立可用的 partition ;
  2. 對該 partition 進行格式化 (format),以建立系統可用的 filesystem;
  3. 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗;
  4. 在 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

相關文章
相關標籤/搜索