Linux 系統初始化時,會根據 MBR 來識別硬盤設備。
MBR,全稱 Master Boot Record,可譯爲硬盤主引導記錄,佔據硬盤 0 磁道的第一個扇區。MBR 中,包括用來載入操作系統的可執行代碼,實際上,此可執行代碼就是 MBR 中前 446 個字節的 boot loader 程序(引導加載程序),而在 boot loader 程序之後的 64 個(16×4)字節的空間,就是存儲的分區表(Partition table)相關信息。如圖 所示:
在分區表(Partition table)中,主要存儲的值息包括分區號(Partition id)、分區的起始磁柱和分區的磁柱數量。所以 Linux 操作系統在初始化時就可以根據分區表中以上 3 種信息來識別硬盤設備。其中,常見的分區號如下:
- 0x5(或 0xf):可擴展分區(Extended partition)。
- 0x82:Linux 交換區(Swap partition)。
- 0x83:普通 Linux 分區(Linux partition)。
- 0x8e:Linux 邏輯卷管理分區(Linux LVM partition)。
- 0xfd:Linux 的 RAID 分區(Linux RAID auto partition)。
由於 MBR 留給分區表的磁盤空間只有 64 個字節,而每個分區表的大小爲 16 個字節,所以在一個硬盤上最多可以劃分出 4 個主分區。如果想要在一個硬盤上劃分出 4 個以上的分區時,可以通過在硬盤上先劃分出一個可擴展分區的方法來增加額外的分區。
不過,在 Linux 的 Kernel 中所支持的分區數量有如下限制:
- 一個 IDE 的硬盤最多可以使用 63 個分區;
- 一個 SCSI 的硬盤最多可以使用 15 個分區。
接下來的問題,就是爲什麼要將一個硬盤劃分成多個分區,而不是直接使用整個硬盤呢?其主要有如下原因:
- 方便管理和控制
首先,可以將系統中的數據(也包括程序)按不同的應用分成幾類,之後將這些不同類型的數據分別存放在不同的磁盤分區中。由於在每個分區上存放的都是類似的數據或程序,這樣管理和維護就簡單多了。 - 提高系統的效率
給硬盤分區,可以直接縮短系統讀寫磁盤時磁頭移動的距離,也就是說,縮小了磁頭搜尋的範圍;反之,如果不使用分區,每次在硬盤上搜尋信息時可能要搜尋整個硬盤,所以速度會很慢。另外,硬盤分區也可以減輕碎片(文件不連續存放)所造成的系統效率下降的問題。 - 使用磁盤配額的功能限制用戶使用的磁盤量
由於限制用戶使用磁盤配額的功能,只能在分區一級上使用,所以,爲了限制用戶使用磁盤的總量,防止用戶浪費磁盤空間(甚至將磁盤空間耗光),最好將磁盤先分區,然後在分配給一般用戶。 - 便於備份和恢復
硬盤分區後,就可以只對所需的分區進行備份和恢復操作,這樣的話,備份和恢復的數據量會大大地下降,而且也更簡單和方便。
df查看文件系統硬盤使用情況
df 命令,用於顯示 Linux 系統中各文件系統的硬盤使用情況,包括文件系統所在硬盤分區的總容量、已使用的容量、剩餘容量等。
前面講過,與整個文件系統有關的數據,都保存在 Super block(超級塊)中,而 df 命令主要讀取的數據幾乎都針對的是整個文件系統,所以 df 命令主要是從各文件系統的 Super block 中讀取數據。
df 命令的基本格式爲:
[root@localhost ~]# df [選項] [目錄或文件名]
表列出了 df 命令幾個常用的選項,以及它們各自的作用。
選項 | 作用 |
---|---|
-a | 顯示所有文件系統信息,包括系統特有的 /proc、/sysfs 等文件系統; |
-m | 以 MB 爲單位顯示容量; |
-k | 以 KB 爲單位顯示容量,默認以 KB 爲單位; |
-h | 使用人們習慣的 KB、MB 或 GB 等單位自行顯示容量; |
-T | 顯示該分區的文件系統名稱; |
-i | 不用硬盤容量顯示,而是以含有 inode 的數量來顯示。 |
【例 】
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc2 9920624 3823112 5585444 41% /
/dev/hdc3 4956316 141376 4559108 4% /home
/dev/hdc1 101086 11126 84741 12% /boot
tmpfs 371332 0 371332 0% /dev/shm
不使用任何選項的 df 命令,默認會將系統內所有的文件系統信息,以 KB 爲單位顯示出來。
本例中,由 df 命令顯示出的各列信息的含義分別是:
- Filesystem:表示該文件系統位於哪個分區,因此該列顯示的是設備名稱;
- 1K-blocks:此列表示文件系統的總大小,默認以 KB 爲單位;
- Used:表示用掉的硬盤空間大小;
- Available:表示剩餘的硬盤空間大小;
- Use%:硬盤空間使用率。如果使用率高達 90% 以上,就需要額外注意,因爲容量不足,會嚴重影響系統的正常運行;
- Mounted on:文件系統的掛載點,也就是硬盤掛載的目錄位置。