kvm虚拟机如何扩容
给 KVM 虚拟机(KVM Virtual Machine)扩容,通常需要分两步走:在宿主机上扩大虚拟磁盘文件,以及在虚拟机内部扩展文件系统。根据你的磁盘管理方式(QCOW2 镜像文件或 LVM 逻辑卷),操作步骤略有不同。以下是主流的 QCOW2 镜像文件 + 虚拟机内 Linux(LVM/标准分区) 的扩容流程。第一步:在宿主机上扩容虚拟磁盘在进行任何磁盘操作前,强烈建议先关闭虚拟机并备份当前的 .qcow2 文件,以防数据丢失。1.关闭虚拟机:宿主机执行。确保虚拟机处于关闭状态:Bashvirsh shutdown <虚拟机名称>
2.查看当前磁盘信息:宿主机执行。找到虚拟机的磁盘文件路径(可以通过 virsh domblklist <虚拟机名称> 查看),然后检查其大小:Bashqemu-img info /path/to/your/vm-disk.qcow2
3.增加磁盘容量:宿主机执行。使用 qemu-img resize 命令增加空间。例如,给镜像增加 50G(也可以直接写目标总大小如 100G):Bash# 增加 50G
qemu-img resize /path/to/your/vm-disk.qcow2 +50G
第二步:在虚拟机内扩展文件系统将虚拟机开机 (virsh start <虚拟机名称>) 并通过 SSH 或控制台登录。此时虚拟机已经识别到了更大的硬盘,但分区和文件系统还没有利用这些新空间。根据虚拟机内部的磁盘布局,选择以下方案 A 或方案 B:方案 A:虚拟机内是标准常规分区(如 /dev/sda1, /dev/sda2)如果你的文件系统直接建在普通分区上,可以使用 growpart 和对应文件系统的扩容工具。安装扩容工具(以 Ubuntu/Debian 为例):Bashsudo apt-get install cloud-guest-utils
扩展分区表:假设你要扩容 /dev/sda 的第 2 个分区:Bashsudo growpart /dev/sda 2
扩展文件系统:如果是 EXT4 文件系统:Bashsudo resize2fs /dev/sda2
如果是 XFS 文件系统:Bashsudo xfs_growfs /
方案 B:虚拟机内使用了 LVM(逻辑卷管理,通常为 Linux 默认)如果你的虚拟机使用的是 LVM,扩容会更灵活,可以把新空间作为一个新分区加进卷组。用 fdisk 创建新分区:Bashsudo fdisk /dev/sda
输入 n 创建新分区(一路回车使用默认的起始和结束扇区)。输入 t 修改分区类型,选择刚才创建的分区号,类型输入 8e(Linux LVM)。输入 w 保存并退出。运行 sudo partprobe 刷新分区表(如果提示忙,可能需要重启虚拟机)。将新分区扩展到 LVM 中(假设新分区为 /dev/sda3):Bash# 1. 创建物理卷
sudo pvcreate /dev/sda3
2. 查看卷组名称(假设叫 ubuntu-vg)
sudo vgdisplay
3. 扩展卷组
sudo vgextend ubuntu-vg /dev/sda3
4. 扩展逻辑卷(将所有剩余空间都给根目录逻辑卷)
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
最后,刷新文件系统:EXT4: sudo resize2fs /dev/ubuntu-vg/ubuntu-lvXFS: sudo xfs_growfs /💡 检查结果完成后,在虚拟机内部运行 df -h,你应该就能看到根目录或者目标挂载点的容量已经成功变大了。