如題,筆者之前一直在使用vagrant作爲虛擬機使用。
vagrant的好處自然不必說,只是有一天遇到了一個麻煩事——虛擬硬盤空間不!夠!了!
筆者使用了df -h
命令一看,結果發現,主硬盤(/dev/sda1
)總空間居然只有10G,然而一般的系統鏡像初始大小就超過9G。
在網上一查,發現vagrant其實最初設計定位是快速還原運行環境,於是vagrant一般情況下在虛擬機初始化階段不會留出很足的主硬盤空間。
於是這就很尷尬了,用了大半年就發現空間不夠了,甚至pip3 install
都無法使用。
後來再一查,找到了一個親測可行的解決方案——既然vagrant自身設定尷尬,那就直接通過vbox操作使之不尷尬!
準備工作
環境變量
在這次操作中,我們需要用到virtualbox提供的vboxmanage
命令。所以我們首先需要將此命令添加到環境變量中。
在windows下的操作,就是將virtualbox的安裝路徑添加至path項。unix系統中應該類似。
記錄原始硬盤信息
輸入如下命令
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
空間。
接下來將硬盤文件轉回原來的格式(其實直接使用vdi格式也可以),以及,建議不要直接覆蓋原來的 vmdk
硬盤文件,以作備份。
VBoxManage clonehd "new-virtualdisk.vdi" "resized.vmdk" --format vmdk
記錄一下新vmdk
文件的uuid信息。到這一步,帶有原數據和新尺寸的硬盤就製作完畢了。
將新硬盤載入使用
替換原硬盤文件
雖然說是替換,不過還是建議將原來的vmdk
文件進行一個備份。
字面意思,替換原文件
windows:
ren box-disk1.vmdk box-disk1-backup.vmdk
ren resized.vmdk box-disk1.vmdk
linux:
mv box-disk1.vmdk box-disk1-backup.vmdk
mv resized.vmdk box-disk1.vmdk
修改.box
配置文件
其實替換完機子之後,還差最後一步。
打開原來的vmdk對應的box文件,將原來的vmdk
的uuid信息全部替換爲新vmdk
文件的uuid。
要注意,可能有不止一處,一定要好好查找一下,保證替換完全。
大功告成
截圖紀念:
可以看到,主硬盤現在已經擴大到了30G,再也不用擔心空間不夠用啦。
方法來源:修改Vagrant box磁盤大小