Josh Asked: 2024-12-30 00:10:52 +0800 CST2024-12-30 00:10:52 +0800 CST 2024-12-30 00:10:52 +0800 CST 回滚到以前的 proxmox 快照而不丢失当前的 zfs 快照? 772 使用带有 ZFS 存储池的 proxmox,是否可以将 LXC 容器或 QEMU 虚拟机恢复到早期快照(而不是最新快照)而不会丢失或破坏任何快照? 尝试使用 Proxmox GUI 执行此操作会显示一条错误消息: 无法回滚,“snapshotname”不是“storage:vmname”上的最新快照 换个角度问,是否有可能出现非线性快照?例如,快照树看起来像这样,其中有一个带有分支的真正“树”,并且一些快照有多个子节点? 互联网上的多个来源似乎表明不是这样(示例 1或示例 2),但我知道这是不正确的,因为我已经这样做了 :) zfs 1 个回答 Voted Best Answer Josh 2024-12-30T00:10:52+08:002024-12-30T00:10:52+08:00 是的,尽管多个论坛帖子和文档表明这只有通过 qcow2 才有可能,但使用命令行和 ZFS 克隆还是可以相当容易地实现的: 确定当前 ZFS 快照,这些快照代表您要回滚到的快照。如果您不确定,可以检查/etc/pve/qemu-server/或下的 VM 或 LXC 配置文件。使用(可能根据需要结合使用)来找到它们。/etc/pve/lxc/zfs listgrep 对于此示例,假设我正在处理 LXC 容器 ID 113,因此我的 ZFS 文件系统rpool/data/lxc/subvol-113-disk-0@creation是rpool/data/lxc/subvol-113-disk-1@creation 克隆所有相关卷的快照并使用 生成新的 ZFS 数据集zfs clone $dataset@$snapshot $new_dataset。我倾向于将新数据集名称设置为下一个可用的磁盘编号,但您可以选择几乎任何您喜欢的新名称: zfs clone rpool/data/lxc/subvol-113-disk-0@creation rpool/data/lxc/subvol-113-disk-2 zfs clone rpool/data/lxc/subvol-113-disk-1@creation rpool/data/lxc/subvol-113-disk-3 编辑 VM 或 LXC 配置文件(在/etc/pve/qemu-server或 下/etc/pve/lxc)并进行两项更改:更新卷的路径并将 parent属性设置为要回滚到的快照的名称(creation在我的示例中) 对于 LXC 容器,您将编辑rootfs参数以及任何mp$n参数 对于虚拟机,您需要编辑scsi$n行,或者ide$n如果您使用 IDE 磁盘则编辑行 UI 现在应该会显示快照树,并且一切都应按预期工作。您可以照常创建新快照。如果要恢复到之前的树,您需要编辑配置文件并调整parent以及恢复/调整您编辑的存储行。
是的,尽管多个论坛帖子和文档表明这只有通过 qcow2 才有可能,但使用命令行和 ZFS 克隆还是可以相当容易地实现的:
确定当前 ZFS 快照,这些快照代表您要回滚到的快照。如果您不确定,可以检查
/etc/pve/qemu-server/
或下的 VM 或 LXC 配置文件。使用(可能根据需要结合使用)来找到它们。/etc/pve/lxc/
zfs list
grep
对于此示例,假设我正在处理 LXC 容器 ID
113
,因此我的 ZFS 文件系统rpool/data/lxc/subvol-113-disk-0@creation
是rpool/data/lxc/subvol-113-disk-1@creation
克隆所有相关卷的快照并使用 生成新的 ZFS 数据集
zfs clone $dataset@$snapshot $new_dataset
。我倾向于将新数据集名称设置为下一个可用的磁盘编号,但您可以选择几乎任何您喜欢的新名称:编辑 VM 或 LXC 配置文件(在
/etc/pve/qemu-server
或 下/etc/pve/lxc
)并进行两项更改:更新卷的路径并将parent
属性设置为要回滚到的快照的名称(creation
在我的示例中)rootfs
参数以及任何mp$n
参数scsi$n
行,或者ide$n
如果您使用 IDE 磁盘则编辑行UI 现在应该会显示快照树,并且一切都应按预期工作。您可以照常创建新快照。如果要恢复到之前的树,您需要编辑配置文件并调整
parent
以及恢复/调整您编辑的存储行。