前言
Linux 系統(tǒng)中所有的硬件設(shè)備都是通過文件的方式來表現(xiàn)和使用的,我們將這些文件稱為設(shè)備文件,硬盤對應(yīng)的設(shè)備文件一般被稱為塊設(shè)備文件。
本文介紹磁盤設(shè)備在 Linux 系統(tǒng)中的表示方法以及如何創(chuàng)建磁盤分區(qū)。
為什么要有多個分區(qū)?
防止數(shù)據(jù)丟失:如果系統(tǒng)只有一個分區(qū),那么這個分區(qū)損壞,用戶將會丟失所的有數(shù)據(jù)。
增加磁盤空間使用效率:可以用不同的區(qū)塊大小來格式化分區(qū),如果有很多1K的文件,而硬盤分區(qū)區(qū)塊大小為4K,那么每存儲一個文件將會浪費3K空間。這時我們需要取這些文件大小的平均值進行區(qū)塊大小的劃分。
數(shù)據(jù)激增到極限不會引起系統(tǒng)掛起:將用戶數(shù)據(jù)和系統(tǒng)數(shù)據(jù)分開,可以避免用戶數(shù)據(jù)填滿整個硬盤,引起的系掛起。
磁盤分類
比較常見的磁盤類型有服務(wù)器中使用的 SCSI 硬盤和消費類市場中的 SATA 硬盤,當(dāng)然還有當(dāng)下大熱的各種固態(tài)硬盤。
SCSI 硬盤
SCSI 硬盤即采用 SCSI 接口的硬盤。它由于性能好、穩(wěn)定性高,因此在服務(wù)器上得到廣泛應(yīng)用。同時其價格也不菲,正因它的價格昂貴,所以在普通PC上很少見到它的蹤跡。SCSI 硬盤使用 50 針接口,外觀和普通硬盤接口有些相似(下圖來自互聯(lián)網(wǎng)):
SATA 硬盤
SATA(Serial ATA)口的硬盤又叫串口硬盤,Serial ATA 采用串行連接方式,串行 ATA 總線使用嵌入式時鐘信號,具備了更強的糾錯能力,與以往相比其最大的區(qū)別在于能對傳輸指令(不僅僅是數(shù)據(jù))進行檢查,如果發(fā)現(xiàn)錯誤會自動矯正,這在很大程度上提高了數(shù)據(jù)傳輸?shù)目煽啃?。串行接口還具有結(jié)構(gòu)簡單、支持熱插拔的優(yōu)點(下圖來自互聯(lián)網(wǎng)):
固態(tài)硬盤
固態(tài)硬盤(Solid State Disk),一般稱之為 SSD 硬盤,固態(tài)硬盤是用固態(tài)電子存儲芯片陣列而制成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。其主要特點是沒有傳統(tǒng)硬盤的機械結(jié)構(gòu),讀寫速度非???下圖來自互聯(lián)網(wǎng)):
磁盤設(shè)備在 Linux 下的表示方法
在 Linux 系統(tǒng)中磁盤設(shè)備文件的命名規(guī)則為:
主設(shè)備號 + 次設(shè)備號 + 磁盤分區(qū)號
對于目前常見的磁盤,一般表示為:
sd[a-z]x
主設(shè)備號代表設(shè)備的類型,相同的主設(shè)備號表示同類型的設(shè)備。當(dāng)前常見磁盤的主設(shè)備號為 sd。
次設(shè)備號代表同類設(shè)備中的序號,用 "a-z" 表示。比如 /dev/sda 表示第一塊磁盤,/dev/sdb 表示第二塊磁盤。
x 表示磁盤分區(qū)編號。在每塊磁盤上可能會劃分多個分區(qū),針對每個分區(qū),Linux 用 /dev/sdbx 表示,這里的 x 表示第二塊磁盤的第 x 個分區(qū)。
如下圖所示:
該系統(tǒng)中一共有四塊磁盤 /dev/sda,/dev/sdb,/dev/sdc 和 /dev/sdd。其中的 /dev/sda 上創(chuàng)建了三個分區(qū),分別是 /dev/sda1,/dev/sda2,/dev/sda5;/dev/sdb 上只有一個分區(qū) /dev/sdb1。而 /dev/sdc 和 /dev/sdd 則尚未分區(qū)(也肯能是只有一個分區(qū),分區(qū)的名稱和磁盤的名稱相同)。
磁盤分區(qū)
創(chuàng)建磁盤分區(qū)大概有下面幾個目的:
- 提升數(shù)據(jù)的安全性(一個分區(qū)的數(shù)據(jù)損壞不會影響其他分區(qū)的數(shù)據(jù))
- 支持安裝多個操作系統(tǒng)
- 多個小分區(qū)對比一個大分區(qū)會有性能提升
- 更好的組織數(shù)據(jù)
磁盤的分區(qū)由主分區(qū)、擴展分區(qū)和邏輯分區(qū)組成。在一塊磁盤上,主分區(qū)的最大個數(shù)是 4,其中擴展分區(qū)也是一個主分區(qū),并且最多只能有一個擴展分區(qū),但可以在擴展分區(qū)上創(chuàng)建多個邏輯分區(qū)。因此主分區(qū)(包括擴展分區(qū))的范圍是 1-4,邏輯分區(qū)從 5 開始。對于邏輯分區(qū),Linux 規(guī)定它們必須建立在擴展分區(qū)上,而不是建立在主分區(qū)上。
主分區(qū)的作用是用來啟動操作系統(tǒng)的,主要存放操作系統(tǒng)的啟動或引導(dǎo)程序,因此建議操作系統(tǒng)的引導(dǎo)程序都放在主分區(qū),比如 Linux 的 /boot 分區(qū),最好放在主分區(qū)上:
擴展分區(qū)只不過是邏輯分區(qū)的 "容器"。實際上只有主分區(qū)和邏輯分區(qū)是用來進行數(shù)據(jù)存儲的,因而可以將數(shù)據(jù)集中存放在磁盤的邏輯分區(qū)中。
我們可以通過 fdisk 命令來查看磁盤分區(qū)的信息:
輸出中的前幾行是磁盤的基本信息,比如總大小為 80G,一共有多少個扇區(qū)(sector),每個扇區(qū)的大小等等。紅框中的則是我們比較關(guān)注的分區(qū)信息:
- 第一列 Device 顯示了磁盤分區(qū)對應(yīng)的設(shè)備文件名。
- 第二列 Boot 顯示是否為引導(dǎo)分區(qū),上圖中的 /dev/sda1 就是引導(dǎo)分區(qū)。
- 第三列 Start 表示磁盤分區(qū)的起始位置。
- 第四列 End 表示磁盤分區(qū)的結(jié)束位置。
- 第五列 Sectors 表示分區(qū)占用的扇區(qū)數(shù)目。
- 第六列 Size 顯示分區(qū)的大小。
- 第七列和第八列顯示的內(nèi)容相同,分別是數(shù)值 ID 及其文字描述。 Id 列顯示了磁盤分區(qū)對應(yīng)的 ID,根據(jù)分區(qū)的不同,分區(qū)對應(yīng)的 ID 號也不相同。Linux 下用 83 表示主分區(qū)和邏輯分區(qū),5 表示擴展分區(qū),8e 表示 LVM 分區(qū),82 表示交換分區(qū),7 表示 NTFS 分區(qū)。
上圖中的信息表明:/dev/sda1 是一個主分區(qū)并且被用作引導(dǎo)分區(qū);/dev/sda2 是擴展分區(qū),其中只有一個邏輯分區(qū),即 /dev/sda5,這點可以通過兩個分區(qū)相同的大小證明。
利用 fdisk 劃分磁盤分區(qū)
fdisk 是 Linux 系統(tǒng)中一款功能強大的磁盤分區(qū)管理工具,可以觀察硬盤的使用情況,也可以用來管理磁盤分區(qū)。本文僅介紹如何使用 fdisk 創(chuàng)建新的磁盤分區(qū)。
假設(shè)我們的 Linux 系統(tǒng)中增加了一塊新的磁盤,系統(tǒng)對應(yīng)的設(shè)備名為 /dev/sdd,下面我們通過 fdisk 命令對這個磁盤進行分區(qū)。
輸入命令 n 來創(chuàng)建新分區(qū):
根據(jù)上面的提示,我們選擇 p 來創(chuàng)建主分區(qū),然后提示我們輸入分區(qū)的編號:
主分區(qū)的編號為 1- 4,這里我們輸入了 1。接下來是設(shè)置分區(qū)的大?。?/p>
分區(qū)的大小是通過設(shè)置分區(qū)開始處的扇區(qū)和結(jié)束處的扇區(qū)設(shè)置的。這里如果回車兩次會把整個磁盤劃分為一個分區(qū),也就是整個磁盤的容器都分給了一個分區(qū)。這樣一個簡單的分區(qū)就差不多完成了,注意此時的分區(qū)信息還沒有寫入到磁盤中,在這里還可以反悔,如果確認(rèn)執(zhí)行上面的分區(qū),執(zhí)行 w 命令就行了:
這時分區(qū)操作已經(jīng)完成了,我們可以通過下面的命令查看分區(qū)的結(jié)果:
如果嫌上面的執(zhí)行過程麻煩,可以用下面的一行命令起到相同的效果:
$ (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdd
更改分區(qū)的類型
上面創(chuàng)建的分區(qū)類型默認(rèn)為 83(Linux),如果想要一個 8e(Linux LVM)類型的分區(qū)該怎么辦?我們可以繼續(xù)使用 fdisk 命令修改分區(qū)的類型,這次輸入 t 命令來修改分區(qū)的類型:
接下來可以選擇要修改的分區(qū)號,我們只有一個分區(qū),所以默認(rèn)就是 1。
下面我們可以通過 L 命令來查看 fdisk 命令支持的分區(qū)類型:
我們需要創(chuàng)建 LVM,因此我們使用 LVM 的類型代碼 8e:
最后輸入 w 命令確認(rèn)變更。再次查看 /dev/sdd 的分區(qū)信息,此時分區(qū)類型已經(jīng)變成了 Linux LVM:
總結(jié)
分區(qū)是使用磁盤的基礎(chǔ),在分區(qū)完成后還需要對分區(qū)進行格式化,并把格式化后的文件系統(tǒng)掛載到 Linux 系統(tǒng)之后才能存儲文件。