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