Hyper-v给Linux虚拟机扩展硬盘空间

Posted by gebaocai on November 2, 2024

遇到问题

在Hyper-V中,给虚拟机扩展硬盘空间可不是一件简单地在设置里调数字的事儿。实际操作起来,坑还是不少的。我最近就踩了几个,所以赶紧记录下来,也希望能帮到其他遇到同样问题的朋友。

首先,咱们在Hyper-V管理器里增加虚拟硬盘的大小很容易,图形界面点点点就搞定了。

Hyper-V管理器操作如下:

在hyper-v管理器,右键虚拟机 选择硬盘驱动器,再点编辑 选择扩展 选择配置磁盘, 输入新大小后, 点击完成。

但是!这只是第一步。虚拟机内部的操作系统并不知道硬盘变大了,它看到的还是原来的小硬盘。所以,接下来才是关键。

虚拟机操作:

如果是Windows系统,那就相对简单些。磁盘管理工具里,找到扩展后的硬盘,右键“扩展卷”,一路下一步,基本就搞定了。不过,有时候会碰到“扩展卷”是灰色的情况。这时候别慌,可能是分区格式不对,MBR格式的磁盘最多只能支持2TB,超过了就没办法扩展。转换成GPT格式就能解决这个问题了。转换格式可以用Diskpart命令行工具,不过操作要小心,数据无价!

Linux系统稍微麻烦一点儿,

首先输入lsblk查看当前逻辑卷和磁盘空间

1
2
3
4
5
6
7
8
lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─cl_192-root 253:0    0   17G  0 lvm  /
  └─cl_192-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom

通过发现虚拟机已经识别到扩展后的硬盘了, 现在需要调整分区并释放空间给sda2。执行命令

1
parted /dev/sda resizepart 2 100%

使用 parted 重新调整分区大小, 这里 2 是 /dev/sda2 的分区编号,100% 表示扩展到整个磁盘的可用空间。

检查调整后的分区

1
2
3
4
5
6
7
8
9
parted /dev/sda print
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  xfs          boot
 2      1075MB  53.7GB  52.6GB  primary               lvm

发现分区已经调整

运行 pvresize

调整完分区后,执行以下命令来扩展物理卷:

1
pvresize /dev/sda2

扩展逻辑卷

1
lvextend -l +100%FREE /dev/mapper/cl_192-root

逻辑卷信息可以通过fdisk -l查看

调整文件系统大小

你需要调整文件系统大小以匹配新的逻辑卷大小。根据你的文件系统类型,使用以下命令

  • xfs(hyper-v模式下)
1
xfs_growfs /dev/mapper/cl_192-root
  • ext2/ext3/ext4
1
resize2fs /dev/mapper/cl_192-root

检查是否扩容成功

1
2
3
4
5
6
7
8
df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.8G     0  3.8G   0% /dev/shm
tmpfs                    3.8G   18M  3.8G   1% /run
tmpfs                    3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/mapper/cl_192-root   47G   17G   31G  35% /
/dev/sda1               1014M  339M  676M  34% /boot

总结

总而言之,扩展Hyper-V虚拟机硬盘空间,看似简单,实则暗藏玄机。Windows系统相对友好,图形界面操作为主,但要注意MBR和GPT格式的限制。Linux系统则需要更专业的命令行操作,考验你的功底。记住,操作前一定要备份数据,以防万一!