Linux磁碟與文件系統管理概要

Linux磁碟與文件系統管理

硬碟組成與分區

  1. 硬碟組成
  • 圓形的碟片(主要記錄數據)
  • 機械手臂與磁頭(可讀取碟片上的數據)
  • 主軸馬達,轉動碟片,讓機械手臂的磁頭在碟片上讀取數據
  • 扇區(Sector)為最小的物理存儲單位,每個扇區512bytes
  • 將扇區組成一個圓,那就是柱面(Cylinder),柱面是分區的最小單位
  • 第一個扇區最重要,裡面有硬碟主引導記錄(Masterbootrecord,MBR)及分區表(partition table),其中MBR佔446bytes,partition table佔64bytes
  1. 磁碟分區:分區的開始柱面到結束柱面
  • 主分區與擴展分區最多可以有4個(硬碟的限制)
  • 擴展分區最多只能有一個(作業系統限制)
  • 邏輯分區是由擴展分區分出來的
  • 能夠被格式化後作為數據訪問的分區為主分區與邏輯分區,擴展分區無法格式化
  • 邏輯分區的數量因作業系統而不同,在Linux系統中,IDE硬碟最多有59個邏輯分區(5號到63號),SATA硬碟則有11個邏輯分區(5號到15號)

文件系統特性

  1. super block(1024bytes):記錄此文件系統的整體資訊,包括inode/block的總量,使用量,剩餘量,文件系統格式與相關資訊。
  2. inode:記錄文件屬性,一個文件佔用一個inode,同時記錄此文件的數據所在的block號碼。
  3. block:記錄文件的實際內容,若文件太大時會佔用多個block,inode只有128bytes,記錄一個block號碼要4bytes。
  4. inode將記錄block號碼的區域定義為12個直接,一個間接,一個雙間接,一個三間接記錄區。

日誌文件系統:例如EXT3

  1. 預備:當系統要寫入一個文件時,會現在日誌記錄塊中記錄某個文件準備要寫入的資訊。
  2. 實際寫入:開始寫入文件的許可權與數據,開始更新meta data數據。
  3. 結束:完成數據與meta data的更新後在日誌記錄塊中完成該文件記錄。

虛擬文件系統(Virtual Filesystem Switch VFS)

整個Linux系統都是通過VFS內核功能去讀取文件系統,都是VFS在進行管理,用戶並不需要知道每個分區的文件系統是什麼,VFS會主動幫我們做好讀取的操作。

掛載點

掛載點一定是目錄,該目錄為進入該文件系統的入口

文件系統的簡單操作

  1. 磁碟與目錄的容量
  • df:列出文件系統的整體磁碟使用量
  • du:評估文件系統的磁碟使用量(常用於評估目錄所佔容量)
  • 與df不一樣的是,du會直接到文件系統內去查找所有文件數據
  1. 連接文件:ln
  • 硬連接或實際連接:創建新文件,該文件連接到了目標文件的inode,都指向同一個block,不管刪除其中哪個文件,都可以通過另一個文件找到inode和block讀取到文件數據。
  • 硬連接限制:不能跨文件系統,不能連接目錄
  • 軟連接:創建一個新文件,該文件有自己的inode和block,只是block裡面存的是另一個文件的地址,當那個地址的文件被刪除時,該文件就讀取不到文件數據了。
  • ln [-sf] 源文件 目標文件,不加任何參數就是硬連接。
-s 軟連接
-f 如果目標文件存在時,先刪除再創建

磁碟的分區,格式化,檢驗與掛載

  1. 分區:fdisk [-l] 設備名稱
  2. 磁碟格式化:mkfs [-t 文件格式系統] 設備文件名
  3. 磁碟檢驗:fsck [-t 文件系統] 設備名稱
  4. 磁碟掛載與卸載
  • 掛載:mount 設備文件名 掛載點
  • 卸載:umount 設備文件名 掛載點
  • 掛載條件:單一文件系統不能被重複掛載在不同的掛載點;單一目錄不能重複掛載多個文件系統;作為掛載點的目錄理論上應該是空目錄。
  1. 設置開機掛載:直接到/etc/fstab去修改,下面說說系統掛載的限制:
  • 根目錄是必須掛載的,而且一定要先於其它的mount point被掛載
  • 其它掛載點必須為已新建的目錄
  • 所有掛載點在同一時間內只能掛載一次
  • 所有分區在同一時間內只能掛載一次
  • 要卸載的話,必須先將工作目錄移到掛載點(及其子目錄之外)