2021-05-12 14:32:11
Linux 磁碟與磁碟分割區圖文詳述
Linux 系統中所有的硬體裝置都是通過檔案的方式來表現和使用的,我們將這些檔案稱為裝置檔案,硬碟對應的裝置檔案一般被稱為塊裝置檔案。本文介紹磁碟裝置在 Linux 系統中的表示方法以及如何建立磁碟分割區。
磁碟分類
比較常見的磁碟型別有伺服器中使用的 SCSI 硬碟和消費類市場中的 SATA 硬碟,當然還有當下大熱的各種固態硬碟。
SCSI 硬碟
SCSI 硬碟即採用 SCSI 介面的硬碟。它由於效能好、穩定性高,因此在伺服器上得到廣泛應用。同時其價格也不菲,正因它的價格昂貴,所以在普通PC上很少見到它的蹤跡。SCSI 硬碟使用 50 針介面,外觀和普通硬碟介面有些相似(下圖來自網際網路):
SATA 硬碟
SATA(Serial ATA)口的硬碟又叫串列埠硬碟,Serial ATA 採用序列連線方式,序列 ATA 匯流排使用嵌入式時鐘信號,具備了更強的糾錯能力,與以往相比其最大的區別在於能對傳輸指令(不僅僅是資料)進行檢查,如果發現錯誤會自動矯正,這在很大程度上提高了資料傳輸的可靠性。序列介面還具有結構簡單、支援熱插拔的優點(下圖來自網際網路):
固態硬碟
固態硬碟(Solid State Disk),一般稱之為 SSD 硬碟,固態硬碟是用固態電子儲存晶片陣列而製成的硬碟,由控制單元和儲存單元(FLASH晶片、DRAM晶片)組成。其主要特點是沒有傳統硬碟的機械結構,讀寫速度非常快(下圖來自網際網路):
磁碟裝置在 Linux 下的表示方法
在 Linux 系統中磁碟裝置檔案的命名規則為:
主裝置號 + 次裝置號 + 磁碟分割區號
對於目前常見的磁碟,一般表示為:
sd[a-z]x
主裝置號代表裝置的型別,相同的主裝置號表示同型別的裝置。當前常見磁碟的主裝置號為 sd。
次裝置號代表同類裝置中的序號,用 "a-z" 表示。比如 /dev/sda 表示第一塊磁碟,/dev/sdb 表示第二塊磁碟。
x 表示磁碟分割區編號。在每塊磁碟上可能會劃分多個分割區,針對每個分割區,Linux 用 /dev/sdbx 表示,這裡的 x 表示第二塊磁碟的第 x 個分割區。
如下圖所示:
該系統中一共有四塊磁碟 /dev/sda,/dev/sdb,/dev/sdc 和 /dev/sdd。其中的 /dev/sda 上建立了三個分割區,分別是 /dev/sda1,/dev/sda2,/dev/sda5;/dev/sdb 上只有一個分割區 /dev/sdb1。而 /dev/sdc 和 /dev/sdd 則尚未分割區(也肯能是只有一個分割區,分割區的名稱和磁碟的名稱相同)。
磁碟分割區
建立磁碟分割區大概有下面幾個目的:
- 提升資料的安全性(一個分割區的資料損壞不會影響其他分割區的資料)
- 支援安裝多個作業系統
- 多個小分割區對比一個大分割區會有效能提升
- 更好的組織資料
磁碟的分割區由主分割區、擴充套件分割區和邏輯分割區組成。在一塊磁碟上,主分割區的最大個數是 4,其中擴充套件分割區也是一個主分割區,並且最多只能有一個擴充套件分割區,但可以在擴充套件分割區上建立多個邏輯分割區。因此主分割區(包括擴充套件分割區)的範圍是 1-4,邏輯分割區從 5 開始。對於邏輯分割區,Linux 規定它們必須建立在擴充套件分割區上,而不是建立在主分割區上。
主分割區的作用是用來啟動作業系統的,主要存放作業系統的啟動或載入程式,因此建議作業系統的載入程式都放在主分割區,比如 Linux 的 /boot 分割區,最好放在主分割區上:
擴充套件分割區只不過是邏輯分割區的 "容器"。實際上只有主分割區和邏輯分割區是用來進行資料儲存的,因而可以將資料集中存放在磁碟的邏輯分割區中。
我們可以通過 fdisk 命令來檢視磁碟分割區的資訊:
<div ">
$ sudo fdisk -l /dev/sda
輸出中的前幾行是磁碟的基本資訊,比如總大小為 80G,一共有多少個磁區(sector),每個磁區的大小等等。紅框中的則是我們比較關注的分割區資訊:
第一列 Device 顯示了磁碟分割區對應的裝置檔名。
第二列 Boot 顯示是否為引導分割區,上圖中的 /dev/sda1 就是引導分割區。
第三列 Start 表示磁碟分割區的起始位置。
第四列 End 表示磁碟分割區的結束位置。
第五列 Sectors 表示分割區佔用的磁區數目。
第六列 Size 顯示分割區的大小。
第七列和第八列顯示的內容相同,分別是數值 ID 及其文字描述。 Id 列顯示了磁碟分割區對應的 ID,根據分割區的不同,分割區對應的 ID 號也不相同。Linux 下用 83 表示主分割區和邏輯分割區,5 表示擴充套件分割區,8e 表示 LVM 分割區,82 表示交換分割區,7 表示 NTFS 分割區。
上圖中的資訊表明:/dev/sda1 是一個主分割區並且被用作引導分割區;/dev/sda2 是擴充套件分割區,其中只有一個邏輯分割區,即 /dev/sda5,這點可以通過兩個分割區相同的大小證明。
利用 fdisk 劃分磁碟分割區
fdisk 是 Linux 系統中一款功能強大的磁碟分割區管理工具,可以觀察硬碟的使用情況,也可以用來管理磁碟分割區。本文僅介紹如何使用 fdisk 建立新的磁碟分割區。
假設我們的 Linux 系統中增加了一塊新的磁碟,系統對應的裝置名為 /dev/sdd,下面我們通過 fdisk 命令對這個磁碟進行分割區。
<div ">
$ sudo fdisk /dev/sdd
輸入命令 n 來建立新分割區:
根據上面的提示,我們選擇 p 來建立主分割區,然後提示我們輸入分割區的編號:
主分割區的編號為 1- 4,這裡我們輸入了 1。接下來是設定分割區的大小:
分割區的大小是通過設定分割區開始處的磁區和結束處的磁區設定的。這裡如果回車兩次會把整個磁碟劃分為一個分割區,也就是整個磁碟的容器都分給了一個分割區。這樣一個簡單的分割區就差不多完成了,注意此時的分割區資訊還沒有寫入到磁碟中,在這裡還可以反悔,如果確認執行上面的分割區,執行 w 命令就行了:
這時分割區操作已經完成了,我們可以通過下面的命令檢視分割區的結果:
<div ">
$ sudo fdisk -l /dev/sdd
如果嫌上面的執行過程麻煩,可以用下面的一行命令起到相同的效果:
<div ">
$ (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdd
更改分割區的型別
上面建立的分割區型別預設為 83(Linux),如果想要一個 8e(Linux LVM)型別的分割區該怎麼辦?我們可以繼續使用 fdisk 命令修改分割區的型別,這次輸入 t 命令來修改分割區的型別:
接下來可以選擇要修改的分割區號,我們只有一個分割區,所以預設就是 1。
下面我們可以通過 L 命令來檢視 fdisk 命令支援的分割區型別:
我們需要建立 LVM,因此我們使用 LVM 的型別程式碼 8e:
最後輸入 w 命令確認變更。再次檢視 /dev/sdd 的分割區資訊,此時分割區型別已經變成了 Linux LVM:
總結
分割區是使用磁碟的基礎,在分割區完成後還需要對分割區進行格式化,並把格式化後的檔案系統掛載到 Linux 系統之後才能儲存檔案。
相關文章