Proxmox VE 迁移 /var/lib/vz 到另一块硬盘的完整教程

为什么需要迁移 /var/lib/vz

装过 Proxmox VE 的朋友都知道,安装程序默认把 local 存储(挂载在 /var/lib/vz)放在系统盘上。如果系统盘是 NVMe 这样的高速硬盘,那就浪费了大好性能——因为 local 存储的设计用途是存放 ISO 镜像、容器模板和备份文件,这些都不需要太高的读写速度。

更合理的布局是:把 /var/lib/vz(仓库)放到 HDD 上,把 NVMe 全部释放出来做成 lvmthin 或 ZFS 存储池,给虚拟机用。这样各取所长,性能最大化。

下面就是迁移 /var/lib/vz 到 HDD 的详细步骤。

准备工作

确认硬盘设备名

先看清楚当前磁盘布局,这一步很重要,搞错设备名会丢数据:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE

输出示例:

NAME         SIZE TYPE MOUNTPOINT FSTYPE
nvme0n1    447.1G disk
├─nvme0n1p1    1G part /boot/efi  vfat
├─nvme0n1p2    1G part /boot      ext4
└─nvme0n1p3  445G part            LVM2_member
  ├─pve-root 100G lvm  /          ext4
  ├─pve-swap   8G lvm  [SWAP]     swap
  └─pve-data 337G lvm              ← local-lvm 用的空间
sda          1.8T disk             ← 这就是你的 HDD
└─sda1       1.8T part             ← 还没格式化

确认 sda 是你的 HDD(看容量),nvme0n1 是高速盘。

第一步:格式化 HDD

如果 HDD 是全新盘或数据已备份,直接格式化:

mkfs.ext4 /dev/sda1

第二步:复制现有数据

把当前 /var/lib/vz 下的所有内容(ISO 镜像、模板、备份等)复制到 HDD 上:

mkdir -p /mnt/temp_hdd
mount /dev/sda1 /mnt/temp_hdd
cp -a /var/lib/vz/* /mnt/temp_hdd/

-a 参数会保留权限、时间戳、软链接等所有属性。复制完成后可以先验证一下:

find /var/lib/vz -type f | wc -l
find /mnt/temp_hdd -type f | wc -l

两个数字应该一致。

第三步:配置永久挂载

卸载临时挂载点,把旧的 /var/lib/vz 备份一下,然后创建新的挂载目录:

umount /mnt/temp_hdd
mv /var/lib/vz /var/lib/vz.bak
mkdir -p /var/lib/vz

然后用 HDD 挂载到 /var/lib/vz:

mount /dev/sda1 /var/lib/vz

为了让系统重启后自动挂载,编辑 /etc/fstab:

nano /etc/fstab

在文件末尾添加一行:

/dev/sda1  /var/lib/vz  ext4  defaults  0  0

验证 fstab 配置是否正确:

mount -a

如果没有报错,说明配置没问题。

第四步:验证完整性

确认数据都在:

# 检查挂载情况
df -h /var/lib/vz

# 检查目录内容
ls -la /var/lib/vz/

确认一切正常后,删除备份的旧数据:

rm -rf /var/lib/vz.bak

第五步:重启验证

reboot

重启后在 Web 管理界面检查 local 存储的可用空间,应该已经变为你的 HDD 容量(2TB 左右),ISO、模板等文件都正常可见。

第六步:释放 NVMe 空间创建虚拟机存储

迁移完成后,NVMe 上原本是 /var/lib/vz 占用的空间就释放了。现在可以去 Proxmox Web 界面:

  1. 进入 节点 -> 磁盘 -> LVM-Thin(也可以用 ZFS)
  2. 在 NVMe 的剩余空间上创建新的存储池,命名为 nvme-vm
  3. 以后创建虚拟机时,系统盘选择 nvme-vm

这样布局就更合理了:

用途存储介质挂载点/池名
PVE 系统NVMe/(pve-root)
仓库(ISO、模板、备份)HDD/var/lib/vz(local)
虚拟机磁盘NVMenvme-vm(lvmthin)

延伸:安装时就规划好

如果你还没安装 PVE,或者打算重装,可以安装时直接在专家模式里规划好分区:

  1. 在安装界面按 Ctrl + Alt + F2 进入 shell
  2. 输入 debug 后按 Ctrl + Alt + F1 切回图形界面
  3. 此时会出现 "专家模式" 选项
  4. NVMe 只分 50-100G 给根目录
  5. HDD 分一个分区挂载到 /var/lib/vz

这样从一开始就是最优布局,不用后期折腾迁移。

注意事项

  • 备份重要数据:操作前一定备份 /var/lib/vz 下你需要保留的 ISO、模板、备份文件
  • 核对设备名:命令中的 /dev/sda1 必须替换为你的实际设备名,格式化错了就是数据全丢
  • PVE 服务中断:操作完成后建议重启一次 PVE,确保所有服务识别到新路径
  • 如果使用 ZFS:步骤类似,但文件系统要用 ZFS 而非 ext4
Last modification:May 21st, 2026 at 05:39 pm
如果觉得我的文章对你有用,请随意赞赏