在虛擬機中使用 Linux 系統時,常常發現前期規划的磁盤空間不夠用,本以為直接修改機器配置,修改磁盤大小可以解決問題,但實操發現不是這么回事,還需要一堆操作才能擴容成功,這篇就來詳細說說如何擴容的操作。
比如下面這台機器,磁盤已經快不夠用了:
想在現有基礎上對根目錄【 / 】擴充 10 個 G,該如何操作呢?詳細如下。
一、修改 VMware 中機器的磁盤配置
點擊“編輯虛擬機設置”選項,打開虛擬機設置頁。
二、進行磁盤設置
對原有磁盤大小進行設置,從 10GB 編輯為 20,點擊擴展按鈕。
會提示下面的提示框信息。
一直點擊確定,回到配置信息頁面,可以看到磁盤已經修改為 20GB。
三、啟動系統
點擊“開啟此虛擬機”啟動系統。
四、查看磁盤分區表
命令:fdisk -l
根據提示可以看到此系統的磁盤接口為 scsi,對應“sda”。
這個硬盤是 21.5G 的,有 255 個磁面,63 個扇區,2610 個磁柱。每個 cylinder(磁柱)的容量是 8225280 bytes = 8225.280 K(約為)= 8.225280M(約為)。其中,Device(分區序列)、Boot(引導)、Start(開始)、End(終止)、Blocks(容量)、Id(分區類型 ID)、System(分區類型)。
Device:在 Linux 是通過 hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c、...,x表示的數字 1、2、3、....。 hd 大多是 IDE 硬盤,sd 大多是 SCSI 或移動存儲;
Boot:表示引導分區,在上面的例子中 sda1 是引導分區;
Start:表示的一個分區從 X cylinder(磁柱)開始;
End:表示一個分區到 Y cylinder(磁柱)結束;
Id 和 System:表示的是一個意思,ID 看起來不太直觀,我們要在 fdisk 一個分區時,通過指定 ID 來確認分區類型。比如 7 表示的就 NTFS 分區,這個在 fdisk 中要通過 t 功能來指定,下面的部份會提到;
Blocks:表示的意思的確是容量的意思,其單位是K。一個分區容量的值是由下面的公式而來的:
Blocks = (相應分區 End 數值 - 相應分區 Start 數值) * 單位 cylinder(磁柱)的容量
換算一下 sda1 的 Blocks 的大小 :
sda1 Blocks = (64 - 1 ) * 8225.280 = 518,192.64K = 506.04752M注:得出的這個值和我們通過 fdisk -l 看到的 /dev/sda1 的值是大體相當的,因為換算方法不一樣,所以也不可能盡可能的精確;再加上分區時的一點損失之類,有時或大或小是存在的;
五、開始添加分區
使用 Linux 的 fdisk 分區工具開始給磁盤分區。
可以根據提示開始划分分區:
輸入 m 查看幫助信息,
再輸入 n(表示增加分區),
回車后輸入 p(創建主分區),
回車后 partition number 輸入3(因為上面已經有兩個分區 sda1 和 sda2),
回車會提示輸入分區的 start 值,默認即可,
回車會提示輸入分區的 end 值,默認即可(即當前最大值),
回車后輸入 w 進行保存,
分區划分完畢。
六、修改分區ID
命令:fdisk -l
可以看到新加的分區已經出現:
可以看到 /dev/sda3 的 Id號為 83,我們要將其改成 8e(LVM卷文件系統的 Id),具體方法同第五步,如下圖所示:
修改后的信息如下:
重啟系統。
七、開始擴充分區
顯示邏輯卷分區信息:
命令:lvs
顯示卷組信息:
命令:vgdisplay
將物理硬盤分區初始化為物理卷,以便被 LVM 使用。
命令:pvcreate /dev/sda3
注意:
1)要創建物理卷必須首先對硬盤進行分區,並且將硬盤分區的類型設置為“8e”后,才能使用pvcreat指令將分區初始化為物理卷。
2)如果找不到 sda3,可能是第六步結束后忘了重啟系統。
擴展卷組:
命令:vgextend vg_node10 /dev/sda3
再次顯示卷組信息:
說明我們最多可以有 9.99GB 的擴充空間。
擴充邏輯卷分區:
命令:lvextend -L+9.5G /dev/vg_node10/lv_root /dev/sda3
擴大文件系統:
命令:resize2fs /dev/vg_node10/lv_root
八、查看磁盤擴展情況
可以看到磁盤已擴展成功,Good Luck!