第十二章 管理磁碟和檔案系統
12.1 了解磁碟儲存體
在大多數現代作業系統中,資料儲存體的基本運作原理都是相同的。磁碟用作永久儲存體,而 RAM (Random Access Memory,隨機存取記憶體) 和交換空間則用作臨時儲存體。例如,當執行一條指令時,該指令將從硬碟複製到 RAM,以便電腦處理器 (CPU) 可以更快地存取該指令。
相對於從硬碟存取資料,CPU 可以更快地從 RAM 存取資料。但因為 RAM 造價過高,且斷電即清除資料,硬碟容量遠大於 RAM。
當執行太多程序或執行了一個帶有記憶體洩漏的程序而將 RAM 填滿時,如果系統沒有提供一種擴展系統記憶體的方法,則會導致新程序失敗,於是便有了交換空間。採用一些演算法將一些資料從 RAM 中換到磁碟中,在需要時再換回去。
當需要在不同類型的作業系統之間交換檔案時,通常採用 VFAT 檔案系統。
12.2 對硬碟進行分割
變更分割區可能導致系統無法啟動,建議先拿空硬碟熟練掌握後再實際應用。
12.2.1 理解分割區表
從傳統上來說,PC 架構的電腦使用 MBR (Master Boot Record,主引導紀錄) 分割區表來儲存關於硬碟分割區大小和佈局資訊。然而,近年來,一種被稱為 GUID (Global Unique Identifier) 分割區表的新標準在部分 UEFI 電腦架構的電腦上得到了應用,從而取代了較老的 BIOS 系統啟動方法。
MBR 規範所固有的限制帶來了對 GUID 分割的需求。MBR 分割區的大小被限制在 2TB,而 GUID 分割區可以建立最大 9.4ZB 的分割區。
fdisk 指令不支援 GPT 分割,可以使用 parted 指令。
12.2.2 查看磁碟分割區
fdisk -l /dev/sda 或 parted -l /dev/sdb
由 sd? 裝置 (如 sda、sdb 等) 所表示的 SCSI 或 USB 儲存裝置最多可以有 16 個次要裝置 (比如主 /dev/sdc 裝置以及 /dev/sdc1 到 /dev/sdc15),所以共有 15 個分割區。
由 nvme 裝置 (如 nvme0、nvme1 等) 所表示的 NVMe SSD 儲存裝置可以劃分一個或多個命名空間 (大多數裝置只使用第一個) 和分割區,例如 /dev/nvme0n1p1 表示第一個 NVMe 裝置上第一個命名空間的第一個分割區。
對於 x86 電腦,磁碟最多可以有 4 個主要分割區。所以如果想要 4 個以上的分割區,至少有一個分割區是延伸分割區。四個主要分割區外的任何分割區都是邏輯分割區,使用了來自延伸分割區的空間。
12.2.3 建立單一分割區硬碟
一般添加一個儲存媒介的過程:
- 安裝新的硬碟或插入新的 USB 隨身碟。
- 對新硬碟進行分割。
- 在新硬碟上建立檔案系統。
- 掛載檔案系統。
如果使用
parted指令進行修改,請謹慎執行每一步,因為parted指令的變更會立即生效。 而fdisk指令是可撤銷的,只有在確定應用變更時才會實際變更。資料無價,謹慎操作。
確認新增加的裝置名稱。
方法有許多,例如查看系統日誌:
journalctl -f例如分配的名稱為 /dev/sdb。
如果裝置自動掛載需要先卸載。
查看是否掛載 /dev/sdb:
mount | grep sdb卸載分割區:
umount /dev/sdb1使用
parted指令建立分割區。parted /dev/sdb執行後將處於 parted 指令模式,可以使用 parted 單一字母指令設定來使用分割區。
4.刪除分割區。
單一指令 `p` 列出所有分割區。
使用 `rm` 指令,按下 Enter 後輸入相對應 `Number` 即可刪除某個分割區。
建立 GPT 分割區表。
使用指令
mklabel gpt。建立新分割區。
輸入
mkpart指令,系統會提示輸入分割區名稱、檔案系統類型,然後是分割區的開始和結束。例如命名 yexca-UDisk,檔案類型為 xfs,分割區從 1MB 開始,到 123GB 結束:
| |
檢查分割區是否正確建立。
單一指令
p列出所有分割區。分割區建立完成後需要在分割區上建立檔案系統。
例如建立 XFS 檔案系統:
mkfs -t xfs /dev/sdb1若沒有
-t選項,預設建立 EXT2 檔案系統。掛載檔案系統。
| |
卸載檔案系統。
使用指令
umount /dev/sdb1
一般來說,插入 USB 裝置會自動掛載。
如果需要手動掛載,可在 /etc/fstab 添加一行:
| |
共六段:
- 分割區
- 掛載的資料夾
- 檔案系統
- 分割區啟動時掛載
- 是否使用
dump指令備份分割區檔案 (0 為不備份) - 在一定的掛載數量之後對分割區進行錯誤檢查
12.2.4 建立多重分割區磁碟
使用 fdisk 指令介紹。
進入 fdisk 指令模式。
fdisk /dev/sdb建立分割區。
單一指令
n,然後選擇主要分割區p或延伸分割區e,選擇分割區位置 (預設即可)。然後是分配的空間,起始空間可以預設,按下 Enter 後輸入結束空間:例如分配 5 GB 空間則輸入
+5G,若直接輸數字則會被認為是磁區。第四個分割區,即延伸分割區,分配空間可以兩次都是預設。
檢查分割區。
單一指令
p。預設的分割區類型是 Linux,如果想要轉換分割區類型。
使用指令
t,選擇分割區數,然後輸入L查看分割區類型列表,找到十六進位碼,然後輸入以變更。檢查變更並儲存變更。
單一指令
p以檢查,單一指令w以儲存變更。變更完畢後,檢查核心是否知道對分割區表的變更。
| |
- 建立檔案系統。
| |
12.3 使用邏輯卷宗管理分割區
如果磁碟空間不足,恐怕只能將資料複製到另一個更大的磁碟中,但該過程需要停機且效率低下。
LVM (Logical Volume Management,邏輯卷宗管理) 可採用靈活且高效的方式處理變更儲存體的需求。透過使用 LVM,可將實體磁碟分割區添加到被稱為 卷宗群組 的空間池。邏輯卷宗根據需要從卷宗群組分配空間。
12.3.1 檢查現有的 LVM
使用指令 fdisk -l /dev/sda 查看是否存在 Linux LVM 分割區,假設 /dev/sda2 為 LVM 分割區。
查看該 LVM 分割區是否在 LVM 群組中使用。
pvdisplay /dev/sda2
假設卷宗群組 (VG Name) 是 vg_abc,查看卷宗群組的資訊。
vgdisplay vg_abc
可以從實體卷宗使用的最小儲存單位是 PE (Physical Extent) 大小。
查看卷宗群組的 PE 分配位置。
lvdisplay vg_abc
輸出將展示多個邏輯卷宗名稱,這些邏輯卷宗可以和實體卷宗一樣直接使用名稱進行掛載。

12.3.2 建立 LVM 邏輯卷宗
LVM 邏輯卷宗的使用是由上而下進行的,而建立 LVM 邏輯卷宗的過程則是由下而上進行。首先建立一個或多個實體卷宗 (PV),然後使用實體卷宗建立卷宗群組 (VG),最後從卷宗群組建立邏輯卷宗 (LV)。
準備一個有 LVM 分割區的儲存裝置。
建立過程 12.2.4 有提及。
將該實體卷宗加入卷宗群組。
vgcreate myvg0 /dev/sdb5查看卷宗群組。
vgdisplay myvg0若分割區為 400M,可以使用 396M 空間 (以 4M 為單位)。
| |
- 放入檔案系統並掛載。
| |
- 或者也可以寫入 /etc/fstab 以自動掛載。
12.3.3 擴展 LVM 邏輯卷宗
如果用完邏輯卷宗的空間,可添加空間而不必卸載該邏輯卷宗。為此,卷宗群組中必須有可用的空間,然後擴展邏輯卷宗。
- 檢查剩餘空間。
| |
擴展邏輯卷宗。
lvextend -L +1G /dev/mapper/myvg0-name調整檔案系統大小。
resize2fs -p /dev/mapper/myvg0-name檢查是否調整成功。
df -h /mnt/tmp
12.4 掛載檔案系統
事實上在上兩節中已經涉及了掛載檔案系統指令 mount 以及自動掛載設定 (檔案 /etc/fstab)。
12.4.1 支援的檔案系統
輸入指令 cat /proc/filesystems 以查看支援的檔案系統類型,以下僅部分。
| 檔案系統 | 描述 |
|---|---|
| ext4 | 流行 EXT3 檔案系統的繼承者。支援最大 1EB 的卷宗以及最大 16 TB 的檔案 |
| iso9660 | 從 High Sierra 檔案系統 (CD-ROM 的原始標準) 演變而來。資料 CD-ROM 通常使用該檔案系統 |
| Minix | 最初用於 UNIX 的 Minix 版本。支援最多只有 30 個字元的檔案名稱 |
| msdos | MS-DOS 檔案系統類型,可用於掛載來自 Windows 作業系統的軟碟 |
| vfat | Microsoft 擴展的 FAT 檔案類型 |
| exfat | 為 SD 卡、USB 隨身碟和其他快閃記憶體優化的擴展 FAT 檔案系統 |
| proc | 並非真正的檔案系統。是 Linux 核心的檔案系統介面。/proc 的掛載點應該是一個 proc 檔案系統。許多公用程式依賴 /proc 才能存取 Linux 核心資訊 |
| ReiserFS | 日誌檔案系統。曾經多個 Linux 發行版本的預設檔案系統類型,但如今是 EXT 和 XFS |
| swap | 用於交換空間 |
| squashfs | 壓縮且唯讀的檔案系統類型 |
| NFS | Network Filesystem,用於在其他 Linux 或 UNIX 電腦上掛載檔案系統 |
| ntfs | Windows NT 檔案系統 |
| xfs | 最早由 Silicon Graphics 開發的高效能檔案系統,可很好地使用大型檔案 |
| gfs2 | 一種共享磁碟檔案系統,允許多台電腦使用相互溝通的共享磁碟,而不必透過網路檔案系統層,如 CIFS、NFS 等 |
輸入 man fs 了解更多 Linux 檔案系統相關資訊。
12.4.2 啟動交換空間
| |
如果在 /etc/fstab 添加了交換空間相關條目,如:
/var/opt/myswap swap swap defaults 0 0
可以使用 swapon -a 啟用。
12.4.3 停用交換空間
swapoff /var/opt/myswap
12.4.4 使用 fstab 檔案定義可掛載的檔案系統
12.2.3 已介紹,不過欄位二可以使用 UUID 而非裝置名稱,因為裝置名稱是可變的。
查看 UUID:blkid
12.4.5 使用 mount 指令掛載檔案系統
同樣在 12.2.3 已介紹。
12.4.6 以迴送方式掛載磁碟映像檔
也就是將 ISO 映像檔掛載。
| |
12.4.7 使用 umount 指令
可以輸入裝置分割區名稱或目錄名稱。
裝置分割區名稱:umount /dev/sdb1
目錄名稱:umount /mnt/tmp
通常,最好使用目錄名稱。
如果一個目錄正忙碌而無法被卸載,可以:
延遲卸載:
umount -l強制卸載:
umount -f
12.5 使用 Cockpit 管理儲存體
圖形使用者介面,啟用請參考第八章。