如題,筆者以前一直在使用vagrant做爲虛擬機使用。linux
vagrant的好處天然沒必要說,只是有一天遇到了一個麻煩事——虛擬硬盤空間不!夠!了!shell
筆者使用了df -h
命令一看,結果發現,主硬盤(/dev/sda1
)總空間竟然只有10G,然而通常的系統鏡像初始大小就超過9G。windows
在網上一查,發現vagrant其實最初設計定位是快速還原運行環境,因而vagrant通常狀況下在虛擬機初始化階段不會留出很足的主硬盤空間。ui
因而這就很尷尬了,用了大半年就發現空間不夠了,甚至pip3 install
都沒法使用。.net
後來再一查,找到了一個親測可行的解決方案——既然vagrant自身設定尷尬,那就直接經過vbox操做使之不尷尬!vagrant
在此次操做中,咱們須要用到virtualbox提供的vboxmanage
命令。因此咱們首先須要將此命令添加到環境變量中。設計
在windows下的操做,就是將virtualbox的安裝路徑添加至path項。unix系統中應該相似。unix
輸入以下命令code
vboxmanage showhdinfo "box-disk1.vmdk"
記錄下原硬盤的uuid,以後會有用。orm
首先是將原硬盤進行克隆操做
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磁盤大小