之前一直使用vagrant作為虛擬機的作者,遇到了一項棘手的問題——虛擬硬盤空間不足。
使用df -h命令查看后,發(fā)現(xiàn)主硬盤(/dev/sda1)的總空間僅有10G,而通常系統(tǒng)鏡像的初始大小就超過9G。
經(jīng)查,vagrant的設(shè)計初衷是快速還原運行環(huán)境,因此在虛擬機初始化時不會分配足夠的主硬盤空間。
這導致使用半年后,空間不夠用,甚至無法執(zhí)行pip3 install命令。
經(jīng)過進一步研究,發(fā)現(xiàn)了一個有效的解決方案——通過vbox操作來解決vagrant的空間限制問題。
準備工作:
在本次操作中,需要使用virtualbox提供的vboxmanage命令。因此,首先需要將此命令添加到環(huán)境變量中。
記錄原始硬盤信息:
輸入以下命令:
vboxmanage showhdinfo "box-disk1.vmdk"
記錄原硬盤的uuid,之后會用到。
制作擴容版硬盤:
首先,克隆原硬盤:
vboxmanage clonehd "box-disk1.vmdk" "new-virtualdisk.vdi" --format vdi
將硬盤克隆為vdi格式后,開始擴容操作:
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
其中30720單位為MB,表示30G空間。
接下來,將硬盤文件轉(zhuǎn)換回原來的格式(也可以直接使用vdi格式),建議不要直接覆蓋原來的vmdk硬盤文件,以備份:
VBoxManage clonehd "new-virtualdisk.vdi" "resized.vmdk" --format vmdk
記錄新vmdk文件的uuid信息。至此,帶有原數(shù)據(jù)和新尺寸的硬盤制作完成。
將新硬盤載入使用,替換原硬盤文件:
雖然是替換,建議先備份原來的vmdk文件。
- Windows系統(tǒng):
ren box-disk1.vmdk box-disk1-backup.vmdk ren resized.vmdk box-disk1.vmdk
- Linux系統(tǒng):
mv box-disk1.vmdk box-disk1-backup.vmdk mv resized.vmdk box-disk1.vmdk
修改.box配置文件:
替換完硬盤后,還需最后一步。
打開原vmdk對應(yīng)的box文件,將原來的vmdk的uuid信息全部替換為新vmdk文件的uuid。注意,可能有多個地方需要替換,確保替換完全。
大功告成截圖紀念:
可以看到,主硬盤現(xiàn)在已擴大到30G,再也不用擔心空間不夠用了。
方法來源:修改Vagrant box磁盤大小