PVE系统小硬盘更换大硬盘无损扩容
通过将原小硬盘完整克隆到新大硬盘,再扩展分区和文件系统来实现 Proxmox VE(PVE)系统的扩容,是一种非常稳妥且常用的方法。这种方法保留了原有系统配置、引导信息和所有数据,只需在克隆后对未使用的空间进行扩展即可。
✅ 适用场景
PVE 安装在单块小容量硬盘上(如 128GB SSD)。
已购入一块更大的新硬盘(如 1TB SSD)。
希望完全保留现有系统和虚拟机,仅扩大存储空间。
系统使用 默认 LVM 安装方式(最常见:
/在 LVM 上,VM 存储在local-lvm的 thin pool 中)。
🔧 操作步骤概览
物理安装新硬盘
从 Live 系统启动(如 SystemRescue、Ubuntu Live)
使用
dd或Clonezilla克隆小盘到大盘扩展分区表(如有必要)
扩展 LVM 物理卷(PV)、卷组(VG)、逻辑卷(LV)
扩展文件系统(ext4/xfs)
重启进入 PVE,验证扩容
📌 详细操作流程(以默认 LVM 安装为例)
第一步:准备环境
关机,将新大硬盘(如
/dev/sdb)接入主机。使用 SystemRescue CD/USB 或 Ubuntu Live USB 启动(避免挂载原系统盘)。
打开终端,确认磁盘:
1 | lsblk |
假设:
- 原小盘:
/dev/sda(128GB) - 新大盘:
/dev/sdb(1TB)
⚠️ 务必确认设备名,避免反向克隆导致数据丢失!
第二步:克隆小盘到大盘
方法 A:使用 dd(简单但慢,逐字节复制)
1 | dd if=/dev/sda of=/dev/sdb bs=4M status=progress conv=noerror,sync |
此命令会将 sda 的所有内容(包括 MBR/GPT、分区表、数据)完整复制到 sdb。
方法 B:使用 Clonezilla(推荐,支持智能复制、压缩、更快)
选择
device-device→disk_to_local_disk选择源盘(sda)和目标盘(sdb)
勾选
-k1(自动重建目标盘的分区表以匹配实际大小)或手动后续调整
Clonezilla 默认不会自动扩展分区,但能更高效地只复制已用数据。
第三步:扩展分区(如果使用 MBR 或 GPT 分区表)
克隆后,新盘的分区大小仍与旧盘一致(例如 sdb1 只有 128GB),需扩展最后一个分区以占用全部空间。
查看当前分区:
1 | parted /dev/sdb print |
通常 PVE 默认分区结构为:
/dev/sdb1:EFI(如果有,约 512MB)/dev/sdb2:/boot(约 1GB)/dev/sdb3:LVM PV(剩余空间)
我们需要扩展 sdb3 到整盘末尾。
使用 growpart(推荐):
1 |
|
growpart能安全扩展分区而不破坏数据。
验证:
1 | lsblk |
第四步:扩展 LVM
现在 /dev/sdb3 已变大,但 LVM 还不知道新空间。
1. 通知内核重新读取分区大小(如果需要):
1 | pvscan |
通常 growpart 后系统会自动识别,若未识别,可重启或运行:
1 | partprobe /dev/sdb |
2. 扩展物理卷(PV)到分区最大:
1 | pvresize /dev/sdb3 |
这一步是关键!它让 LVM 知道 PV 现在有更多可用空间。
3. 查看卷组(VG)空闲空间:
1 | vgs |
4. 扩展逻辑卷(LV)
情况 A:扩容根分区(/)
1 | lvextend -l +100%FREE /dev/pve/root |
情况 B:扩容 local-lvm(即 thin pool data,用于 VM 存储)
这是更常见的需求——让虚拟机有更多空间。
1 |
|
注意:
/dev/pve/data是 thin pool,不是普通 LV。扩容后,PVE Web UI 中 “local-lvm” 的可用空间会立即增加。
第五步:关机并更换启动盘
关机
移除原小硬盘(/dev/sda)
将新大硬盘接到原小盘的位置(确保 BIOS 从它启动)
开机进入 PVE
第六步:验证
1 | df -h / |
你应该看到:
根分区或 thin pool 空间显著增大
所有 VM 正常运行
Web UI 中 local-lvm 存储容量变大
⚠️ 注意事项
不要在运行中的 PVE 系统上直接克隆系统盘!必须从 Live 环境操作。
UEFI vs Legacy:如果原系统是 UEFI 启动,确保新盘的 EFI 分区(/dev/sdb1)也被正确克隆,并且 BIOS 设置为 UEFI 启动。
ZFS 用户不适用此方法:ZFS 池不能简单克隆后扩容,需用
zpool replace或zpool attach。双盘临时共存时注意设备名变化:建议在 Live 系统中通过
/dev/disk/by-id/识别磁盘,避免 sda/sdb 互换。
✅ 总结
| 步骤 | 操作 |
|——|——|
| 1 | Live 系统启动 |
| 2 | dd 或 Clonezilla 克隆小盘 → 大盘 |
| 3 | growpart /dev/sdb 3 扩展 LVM 分区 |
| 4 | pvresize /dev/sdb3 通知 LVM |
| 5 | lvextend + resize2fs 扩容 LV 和文件系统 |
| 6 | 更换硬盘,重启验证 |