zfs 发送警告:快照不存在(存在)
zfs send warning: snapshot does not exist (it exists)
我在机器A下'zfs pool':
root@machineA:/ # zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
tank 7.44M 28.8G 20K /tank
tank/test 92K 28.8G 19K /tank/test
tank/test@SNAP_2017-June-30_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-01_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-02_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-03_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-04_10:00:00 0 - 19K -
tank/test@BACKUP_from_2017-June-30 0 - 19K -
tank/test/exe 37K 28.8G 19K /tank/test/exe
tank/test/exe@EXE_2017-June-29_13:58:49 9K - 19K -
tank/test/exe@EXE_2017-July-03_10:00:00 9K - 19K -
tank/test/exe@EXE_2017-July-04_10:00:00 0 - 19K -
tank/test/exe@BACKUP_from_2017-June-29
我想发送快照到机器 B:
root@machineB:/ # zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
tank 6.04M 28.8G 23K /tank
使用 netcat 我可以发送快照,但是系统 returns 给我一个非常不寻常的错误...
如果我这样做:
B: nc -w 5 -l 7766 | zfs recv tank/test/exe
A: zfs send -R tank/test/exe@EXE_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
没关系,但如果我这样做:
B: nc -w 5 -l 7766 | zfs recv tank/test
A: zfs send -R tank/test@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
快照流已发送,但在源端我可以显示:
root@machineA:/ # zfs send -R tank/test@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
WARNING: could not send tank/test/exe@SNAP_2017-July-04_10:00:00: does not exist
WARNING: could not send tank/test/exe@SNAP_2017-July-04_10:00:00: does not exist
为什么 ZFS 使用数据集 tank/test/exe
?有什么建议吗?
实际上,它抱怨的快照不存在于源系统上——tank/test/exe
只有@EXE_<date>
个快照,而你正在尝试发送 tank/test/exe@SNAP_<date>
。出现此警告是因为您从顶级 tank/test
文件系统发送 -R
(递归),它首先在父文件系统上发送指定的快照,然后在子文件系统中搜索相同的快照名称以尝试发送那些。通常,这只会在您使用 -R
在父文件系统上拍摄快照时执行您期望的操作——在您的系统上,您只拍摄了父文件系统的快照,而没有同时拍摄子文件系统的快照。
在发送系统上,您可能希望将命令更改为:
zfs send -R tank/test/snap@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
我在机器A下'zfs pool':
root@machineA:/ # zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
tank 7.44M 28.8G 20K /tank
tank/test 92K 28.8G 19K /tank/test
tank/test@SNAP_2017-June-30_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-01_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-02_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-03_10:00:00 9K - 19K -
tank/test@SNAP_2017-July-04_10:00:00 0 - 19K -
tank/test@BACKUP_from_2017-June-30 0 - 19K -
tank/test/exe 37K 28.8G 19K /tank/test/exe
tank/test/exe@EXE_2017-June-29_13:58:49 9K - 19K -
tank/test/exe@EXE_2017-July-03_10:00:00 9K - 19K -
tank/test/exe@EXE_2017-July-04_10:00:00 0 - 19K -
tank/test/exe@BACKUP_from_2017-June-29
我想发送快照到机器 B:
root@machineB:/ # zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
tank 6.04M 28.8G 23K /tank
使用 netcat 我可以发送快照,但是系统 returns 给我一个非常不寻常的错误...
如果我这样做:
B: nc -w 5 -l 7766 | zfs recv tank/test/exe
A: zfs send -R tank/test/exe@EXE_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
没关系,但如果我这样做:
B: nc -w 5 -l 7766 | zfs recv tank/test
A: zfs send -R tank/test@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
快照流已发送,但在源端我可以显示:
root@machineA:/ # zfs send -R tank/test@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766
WARNING: could not send tank/test/exe@SNAP_2017-July-04_10:00:00: does not exist
WARNING: could not send tank/test/exe@SNAP_2017-July-04_10:00:00: does not exist
为什么 ZFS 使用数据集 tank/test/exe
?有什么建议吗?
实际上,它抱怨的快照不存在于源系统上——tank/test/exe
只有@EXE_<date>
个快照,而你正在尝试发送 tank/test/exe@SNAP_<date>
。出现此警告是因为您从顶级 tank/test
文件系统发送 -R
(递归),它首先在父文件系统上发送指定的快照,然后在子文件系统中搜索相同的快照名称以尝试发送那些。通常,这只会在您使用 -R
在父文件系统上拍摄快照时执行您期望的操作——在您的系统上,您只拍摄了父文件系统的快照,而没有同时拍摄子文件系统的快照。
在发送系统上,您可能希望将命令更改为:
zfs send -R tank/test/snap@SNAP_2017-July-04_10:00:00 | nc -w 5 192.168.99.2 7766