VMDK格式扩容
估计是因为vmdk
是VMWare的格式,所以VirtualBox并不直接支持对vmdk
扩容,所以需要先转为vdi
格式进行扩容。
VBoxManage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
VBoxManage modifyhd "new-virtualdisk.vdi" --resize 51200
//如果需要还可以转回去
VBoxManage clonehd "new-virtualdisk.vdi" "virtualdisk.vmdk" --format vmdk
VDI格式扩容
C:\Program Files\Oracle\VirtualBox> VBoxManage modifyhd /full/path/to/xxx.vdi --resize 40960 //注意单位是MB
更改完之后,可以通过下面命令查看:
C:\Program Files\Oracle\VirtualBox> VBoxManage showhdinfo path/to/Centos.vdi
UUID: e04c5354-2196-43f8-98b5-9111b11e3b7c
Parent UUID: base
State: locked write
Type: normal (base)
Location: path/to/Centos.vdi
Storage format: vdi
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 29784 MBytes
Encryption: disabled
In use by VMs: Centos7 (UUID: 35797940-ddab-43bc-b33e-830de59775c8)
当然也可以用VBoxManage list hdds查看
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 26G 24G 2.9G 90% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 3.9G 20K 3.9G 1% /tmp
/dev/sda1 1014M 165M 850M 17% /boot
查看系统的分区情况:
# fdisk -l
...
设备 Boot Start End Blocks Id System
/dev/sda1 2048 2099199 1048576 83 Linux
/dev/sda2 * 2099200 62914559 30407680 8e Linux LVM
....
我们发现目前系统有一块盘/dev/sda
,这块盘有两个分区:/dev/sda1
和/dev/sda2
,这两个分区的大小才,显然在这个分区后面应该还有空间,而且我们我们第二个分区是由Linux LVM
进行管理的,LVM是什么呢?
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上进行合并到一个逻辑卷中,作为大的逻辑空间来使用,这对于空间的扩充来说非常灵活。
有几个概念:
物理卷(PV):可以在上面创建卷组的媒介,可以是硬盘分区,也可是硬盘本身
卷组(VG):将一组物理卷收集为一个管理单元,从而使得众多硬盘空间看起来像一块打的硬盘。
逻辑卷(LV):虚拟分区,由物理区域组成
物理区域(PV):硬盘可供指派给逻辑卷的最小单元
所以我们需要做的就是62914559之后的空间可见,也就是创建磁盘分区:
# fdisk /dev/sda
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p #创建主分区
分区号 (3,4,默认 3):3
起始 扇区 (62914560-104857599,默认为 62914560): #默认回车即可
Last 扇区, +扇区 or +size{K,M,G} (62914560-104857599,默认为 104857599): #默认回车即可
命令(输入 m 获取帮助):w //写入分区信息
这里容易忽略对分区格式的修改,因为后面需要进行LVM扩容,所以需要修改为:8e
# fdisk /dev/sda
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):W
The partition table has been altered!
执行partprobe
使分区表生效,否则得需要重启。
LVM管理新的分区
其实不使用LVM扩容也可以,直接将新的分区挂载即可使用,但是对我们后面使用有些麻烦,很多工作都是在之前的分区中进行,后面还得切换路径,比较折腾,所以选择LVM进行分卷合并。
再将新的分区加入LVM卷组之前,我们先要知道系统现有的卷组名称,以及现有的逻辑分卷:
# vgdisplay
--- Volume group ---
VG Name cl
Format lvm2
....
VG Size <29.00 GiB
# lvdisplay
--- Logical volume ---
LV Path /dev/cl/swap
LV Name swap
VG Name cl
....
--- Logical volume ---
LV Path /dev/cl/root
LV Name root
VG Name cl
将物理分区加入卷组,并将该分区的物理元旦扩展到逻辑分区root中:
//创建物理卷
# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
// 创建完可以通过pvdisplay命令查看,确实多了/dev/sda3
# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size <29.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 7423
Free PE 0
Allocated PE 7423
PV UUID hJCE4d-Q2Xc-3qGP-6kY1-TPBJ-NwWP-sHP22y
"/dev/sda3" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID PeQ7eZ-YPsT-RdyR-bAsm-FjEE-cEUg-eKocD0
# vgextend cl /dev/sda3
Volume group "cl" successfully extended
# lvextend /dev/cl/root /dev/sda3
到这边其实还是没有OK,因为df -lh
检查发现原分区大小还是没有变化,究其原因还需要需要xfs进行同步:
xfs_growfs /dev/cl/root
meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=1703680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=6814720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3327, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 6814720 to 12056576
最后查看发现,OK!