對於目前的網絡開發者來說,比較好的搭檔就是Win7+VirtualBox+CentOS的組合,既可以發揮Linux強大的網絡服務功能,也可以有效的隔離各項服務拖慢系統,影響系統的運行,對於新手來說可以減少配置錯誤帶來的損失,最主要的是方便移植,不同每次重裝系統,都要痛苦的安裝配置一大堆東西。
但如果當我們在虛擬機中安裝和使用的時候,發現系統存儲不夠用,怎么辦,使用VirtualBox 4 版本以上的可以方便、快速的擴容。
VirtualBox 中虛擬硬盤有幾種形式,VMDK、VDI、VHD、HDD等。
- VMDK:是VMware開發並使用的,同時也被SUN的xVM、QEMU、SUSE Studio、.NET DiscUtils支持,所以兼容性會好些。
- VDI:是Virtual Box 自己的處理格式,而且Virtual Box支持Windows和Linux,所以對於使用VirtualBox的用戶比較好。
- VHD:是Windows專有的處理格式,HDD是Apple專有的處理格式,所以不會支持跨平台,一般不會考慮。
我們這里以如何給VMDK和VDI擴容為例,至於其它格式自己百度谷歌轉換吧。
這里我們用到兩個東西:(1)VBoxManage工具命令——在Vitualbox安裝目錄下,可以指定完整路徑;(2)centos.vdi或cenos.vmdk——你系統的磁盤文件文件,一般位於用戶的VirtualBox VMs文件夾下。
1 擴容磁盤文件
1.1 VDI
VDI擴容最簡單,一條命令:
VBoxManage modifyhd centos.vdi --resize 16000
1.2 VMDK
如果是VMDK就要先轉換成VDI,然后再擴容:
VBoxManage clonehd "centos.vmdk" "centos.vdi" --format vdi // vmdk是轉換前的文件,vdi是轉換之后的文件 VBoxManage modifyhd "centos.vdi" --resize 16000 // 這里的單位是M
一陣0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
過后,通過VBoxManage list hdds
就可以看到我們克隆的文件了。
如果想再轉回為VMDK,用這個命令就可以了:
VBoxManage clonehd "centos.vdi" "resized.vmdk" --format vmdk
不過,直接使用vdi格式的也可以了。
2 指定新磁盤文件
接下來,打開虛擬機,選擇系統 > 右擊 > 設置 > 存儲 > 控制器SATA > 右邊的添加虛擬硬盤 > 選擇轉換后的文件 就行了。
在虛擬機打開系統,通過df -h
查看發現,根目錄還是原樣,下面我們通過LVM來擴展分區。
3 LVM擴展
LVM(Logic Volume Manager)邏輯卷管理,像RedHat系的默認分區管理方式,是建立在硬盤分區之上,文件系統之下的邏輯層,用來解決在最初分區時未正確的評估和和分配分區容量,而造成系統分區不夠用。接下來擴展分區就是幾行代碼的事了。
sudo fdisk -l
查看當前系統分區情況。可以看到我們已經創建的分區,sda1、sda2的什么,也可以ls /dev/
來查看。
如果有第二塊硬盤會看到sdb,我這里是只有一塊,且已經分了sda1和sda2。
下面創建將擴展的空間,創建新分區。
sudo mkfs.ext4 /dev/sda4 // 將分區格式化為ext4格式
下面開始LVM操作,查看卷組名,我這里是VolGroup,記着下面要用
sudo vgdisplay
sudo pvcreate /dev/sda4 // 創建新物理卷
sudo vgextend VolGroup /dev/sda4 // 擴展到卷組
查看根分區:
其中,/dev/VolGroup/lv_root
就是根分區,也是我們要擴展的分區。
擴展到容量邏輯分區,命令:
sudo lvextend /dev/VolGroup/lv_root /dev/sda4
如果出現如下錯誤:
則
sudo vgreduce --removemissing VolGroup // 即可解決
最后
sudo resize2fs /dev/VolGroup/lv_root // 刷新邏輯分區容量
sudo df -h // 會發現根分區,現在容量翻倍了。。。 sudo reboot // 重啟系統,一切OK,我的虛擬機又復活了。。。
補充:LVM的基本知識
LVM中有PV、VG、LV分別表示物理卷、卷組、邏輯卷。
操作流程就是,先是通過pvcreate
將整個分區和硬盤創建為物理卷,對家vgcreate
創建卷組volgroup
,並把pvcreate
的物理卷加入。然后通過lvcreate
在卷組volgroup
中創建我們需要的比如20G大小的邏輯卷。然后利用mkfs
格式化為相應該的格式,比如ext4。最后通過mount
掛載,形成我們可以訪問的文件系統。
如果要擴容,通過這種方式來增加容量。
lvextend -L +xxG /dev/VolGroup/zzz
如果要壓縮,則卸載掉邏輯卷,在e2fsck
檢測剩余的容量,然后,
resizef2fs /dev/VolGroup/zzz xxM // 減少xxM
lvreduce -L xxM // 將邏輯卷減少xxM
如果要刪除,則用命令
lvremove vgremove pvremove
也是要先umount
,同時要修改/etc/fstab
中的掛載信息,否則啟動不起來。
參考資料: