(以下操作僅在VirtualBox虛擬機(jī)Ubuntu系統(tǒng)下的LVM文件系統(tǒng)中測(cè)試且有效,其他系統(tǒng)可以借鑒此方法進(jìn)行磁盤擴(kuò)容)
VirtualBox中默認(rèn)創(chuàng)建的磁盤容量為8GB,當(dāng)我們裝完系統(tǒng)后很可能會(huì)發(fā)現(xiàn)剩余空間不足,此時(shí)不需要重新創(chuàng)建虛擬機(jī)再裝一遍系統(tǒng),我們可以調(diào)整該磁盤文件的最大容量。
磁盤文件格式轉(zhuǎn)換
以下命令在命令提示符下輸入
首先如果你的磁盤格式是vmdk的,那么應(yīng)該首先轉(zhuǎn)換成VDI格式。
轉(zhuǎn)換命令:
VBoxManage clonehd? "vmdk文件路徑" "vdi轉(zhuǎn)換后的VDI文件保存路徑和文件名" --format VDI
(如果文件路徑中有空格則需要加上雙引號(hào),否則可以不加)
(一般會(huì)提示沒有該命令請(qǐng)到VirtualBox安裝目錄下執(zhí)行,或者將VirtualBox目錄添加到系統(tǒng)path環(huán)境變量中去)
示例:
VBoxManage clonehd? "D:\VirtualBox VMs\Ubuntu\Ubuntu-disk1.vmdk" "D:\VirtualBox VMs\Ubuntu\Ubuntu.vdi" --format VDI
調(diào)整磁盤文件容量
轉(zhuǎn)換完成后我們開始調(diào)整VDI磁盤文件的容量。
通過下面的命令查看所有被虛擬機(jī)管理的虛擬磁盤,找到我們要轉(zhuǎn)換的磁盤文件的UUID
VBoxManage list hdds
然后調(diào)整磁盤的中的虛擬磁盤文件的動(dòng)態(tài)大小上限:
VBoxManage modifyhd 目標(biāo)磁盤的UUID --resize 調(diào)整后文件的大?。∕B)
示例:
VBoxManage.exe modifyhd 734f523d-d7e1-4a3c-82ee-6f802b248c41 --resize 15360
設(shè)置虛擬機(jī)系統(tǒng)磁盤文件系統(tǒng)
? ? ? ?調(diào)整磁盤容量上限后在虛擬機(jī)中系統(tǒng)的磁盤實(shí)際容量就會(huì)大于當(dāng)前文件系統(tǒng)中記錄的容量,我們需要修復(fù)這種錯(cuò)誤,同時(shí)將擴(kuò)大的磁盤容量合并到已有的磁盤系統(tǒng)中去。下面介紹了圖形工具和終端命令兩種方式進(jìn)行錯(cuò)誤修復(fù)和分區(qū)合并。
圖形工具方式
完成后進(jìn)入虛擬機(jī),安裝gparted工具。
sudo apt-get install gparted
打開后提示修復(fù)一個(gè)磁盤錯(cuò)誤。
以root分區(qū)為例,調(diào)整root分區(qū)大小,將root分區(qū)擴(kuò)容后執(zhí)行并保存。
終端命令方式
如果你的Linux沒有圖形界面,那么也可以在終端下通過parted命令對(duì)磁盤的錯(cuò)誤進(jìn)行修復(fù)
通過下面的命令查看所有識(shí)別的分區(qū)信息:
sudo parted -l
此時(shí)提示進(jìn)行修復(fù),輸入fix執(zhí)行修復(fù)
通過parted的resizepart命令合并空閑空間到磁盤中(parted從3.0后resize命令已經(jīng)被移除,這里我們通過resizepart去執(zhí)行操作)
首先鍵入:sudo parted
然后在parted命令提示符下輸入:print,列出所有分區(qū)設(shè)備。
接著輸入:resizepart,選擇對(duì)應(yīng)的分區(qū)編號(hào),輸入100%回車即可
然后Ctrl+C退出parted命令。
執(zhí)行l(wèi)vm命令,通過pvresize命令將文件系統(tǒng)擴(kuò)大到整個(gè)磁盤分區(qū)
注意這里的Physical volume是物理卷的意思,不是lvm中的邏輯卷,由于該示例的lvm邏輯卷是建立在sda3物理卷上的,因此這里填寫sda3
然后Ctrl+C退出lvm命令
設(shè)置LVM文件系統(tǒng)的物理邊界
對(duì)于不知道lvm文件系統(tǒng)路徑的,可以通過 sudo fdisk -l 命令查看
對(duì)于LVM分區(qū)的系統(tǒng)來說還要執(zhí)行l(wèi)vextend命令去擴(kuò)展邏輯卷(LVM)的物理邊界,下面的命令意味將所有剩余的自由空間全部分配給lvm文件系統(tǒng)。
sudo lvextend -l +100%FREE lv文件系統(tǒng)路徑
示例:
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-root
設(shè)置LVM文件系統(tǒng)的邏輯邊界
執(zhí)行了lvextend命令擴(kuò)展邏輯卷(LVM)的物理邊界后通過df -k命令看到的磁盤大小還是之前的大小,此時(shí)還需要用resize2fs命令擴(kuò)展邏輯卷的邏輯邊界(-p表示將邏輯邊界設(shè)置的和物理邊界一樣大)
resize2fs -p lv文件系統(tǒng)路徑
示例:
sudo resize2fs -p /dev/mapper/ubuntu--vg-root
至此再查看root磁盤容量已經(jīng)擴(kuò)大了。