我正在尝试利用 zfs 快照的功能。稍微解释一下我是如何配置的:
zpool create vol0 mirror /dev/sda /dev/sdb
zfs create -o volblocksize=128K -V 15T vol0/pprovol
我获得了我的 ZFS 卷:
NAME USED AVAIL REFER MOUNTPOINT
vol0 15.0T 16.6T 100K /vol0
vol0/pprovol 15.0T 31.6T 1.99G -
我有一个块设备:
Disk /dev/zd0: 15 TiB, 16492674416640 bytes, 32212254720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 131072 bytes
I/O size (minimum/optimal): 131072 bytes / 131072 bytes
我将其格式化为 xfs:mkfs.xfs /dev/zd0,并将其安装在我的挂载点上
现在我想为这个 zd0 设备创建快照。这样我就可以回滚对 xfs 文件系统所做的更改。
这可能吗?我该怎么做?
它确实适用于我的 /vol0,但这不是我需要的。希望在这里得到一些帮助!谢谢。
答案1
以下是如何在 ZFS 设置上管理 XFS 上的快照。
(免责声明:在 ZFS 上存储(ppro)数据有更安全、更智能的方法)
- 拍摄快照。
- 识别快照。
- 克隆快照。
- 挂载克隆的块设备。
当您运行 ZFS 快照时,快照将出现在您的快照列表中:
从那里,您必须克隆快照以使其可见为块设备。
zfs clone vol1/pprovol2@snap_daily-2016-12-23-2359 vol1/recovery
这将创建一个名为 的新 zfs 文件系统vol1/recovery
,并同时创建一个新/dev/zdX
设备。dmesg | tail
将显示实际的设备名称。它很可能是/dev/zd16
。
这是你的克隆。如果你想挂载它,只需运行:
mount -t xfs -o nouuid /dev/zd16 /mountpoint
这nouuid
是必需的,因为克隆的设备具有与原始 XFS 文件系统相同的名称 UUID。
答案2
您可以像对任何其他数据集一样对 ZFS 卷进行快照。不过,您可能需要先冻结文件系统,以确保其处于一致状态。幸运的是,XFS 是少数几个可以轻松实现此操作的文件系统之一
# xfs_freeze -f /mount
# zfs snapshot vol0/pprovol@snap1
# xfs_freeze -u /mount
在大多数 ZFS 系统上,您最终会得到一个...@snapshot
设备/dev
,尽管我从未在 Linux 上尝试过。您应该能够以只读方式挂载该设备以恢复文件。
如果您只是想完全回滚,您可以卸载实时文件系统,运行zfs rollback
,然后再次挂载它。