更改 vdi 文件大小

在虚拟机关闭的情况下, 执行以下操作

# cmd 下执行
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list hdds

# 显示结果
UUID:           3431e0fe-ad04-4e2d-983f-69b18d5fb097
Parent UUID:    base
State:          locked read
Type:           normal (base)
Location:       C:\Users\zhanlin\VirtualBox VMs\C7\C7.vdi
Storage format: VDI
Capacity:       20480 MBytes
Encryption:     disabled

UUID:           304f75b7-575f-4ca3-b1a8-aefec725eb45
Parent UUID:    3431e0fe-ad04-4e2d-983f-69b18d5fb097
State:          locked write
Type:           normal (differencing)
Location:       C:\Users\zhanlin\VirtualBox VMs\C7\Snapshots/{304f75b7-575f-4ca3-b1a8-aefec725eb45}.vdi
Storage format: VDI
Capacity:       20480 MBytes
Encryption:     disabled

注意如果你曾经建立过快照, 那么可能会有两个文件需要扩容:

  1. 正经的 vdi 文件: C7\C7.vdi
  2. 快照使用的 vdi 文件: C7\Snapshots/{304f75b7-575f-4ca3-b1a8-aefec725eb45}.vdi

一旦建立过快照, 你目前使用的状态应该都是基于最新快照的, 所以需要为快照文件扩容:

# 为 vdi 文件扩容, 实际上在有快照存在的情况下, 我感觉这一步没有必要
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\zhanlin\VirtualBox VMs\C7\C7.vdi" --resize 20480

# 为快照扩容, 其中 20480 是 20480mb, 即 20 GB
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Users\zhanlin\VirtualBox VMs\C7\Snapshots/{304f75b7-575f-4ca3-b1a8-aefec725eb45}.vdi" --resize 20480

在 Linux 中启用新硬盘

重启虚拟机, 确认扩容后的结果:

sudo fdisk -l /dev/sda

# 显示结果, 已经是 21.5 GB 了, 但是 df -h 会发现并未在使用中 
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0007375a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    16777215     7339008   8e  Linux LVM
/dev/sda3        16777216    41943039    12582912   8e  Linux LVM

然后开始启用新分区:

sudo fdisk /dev/sda

# 依次选择以下选项
n
p
3

# 此时回车两次, 使用默认值扩容

# 然后再依次选择以下选项
t
3
8e
w

# 此时会保存退出, 并且一般会提示, 以下内容, 此时重启
WARNING: Re-reading the partition table failed with error 16:设备或资源忙。 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)

查看 VG Name 和 mapper

# 查看 VG Name
sudo vgdisplay

# 显示结果
--- Volume group ---
VG Name               centos
System ID             
Format                lvm2
Metadata Areas        2
Metadata Sequence No  5
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                2
Act PV                2
VG Size               18.99 GiB
PE Size               4.00 MiB
Total PE              4862
Alloc PE / Size       4862 / 18.99 GiB
Free  PE / Size       0 / 0   
VG UUID               S6qpoZ-XkIC-eGC2-3oRn-gMfU-VMq0-G2TVjx

# 查看 mapper
ll /dev/mapper

# 显示结果
lrwxrwxrwx 1 root root       7 Sep  9 11:32 centos-root -> ../dm-0
lrwxrwxrwx 1 root root       7 Sep  9 11:27 centos-swap -> ../dm-1
crw------- 1 root root 10, 236 Sep  9 11:27 control

其中, VG Name centoscentos-root 后续会使用.

依次执行以下命令:

sudo pvcreate /dev/sda3
sudo vgextend centos /dev/sda3  # 前面查询到的 centos
sudo lvextend /dev/mapper/centos-root /dev/sda3  # 前面查询到的 centos-root

其实确认文件系统:

cat /etc/fstab | grep centos

# 显示结果
/dev/mapper/centos-root /                       xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

此时如果是 xfs 系统, 执行如下命令:

sudo xfs_growfs /dev/mapper/centos-root

否则执行:

sudo resize2fs /dev/mapper/centos-root

最后查询扩容效果:

df -h

# 显示结果
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   19G  6.0G   13G  33% /
devtmpfs                 908M     0  908M   0% /dev
tmpfs                    920M     0  920M   0% /dev/shm
tmpfs                    920M  8.6M  911M   1% /run
tmpfs                    920M     0  920M   0% /sys/fs/cgroup
/dev/sda1               1014M  149M  866M  15% /boot
tmpfs                    184M     0  184M   0% /run/user/1000
Comments
Write a Comment