Я получил кучу новых дисков в одной из наших систем и хотел передать им существующий пул, поэтому я сделал следующее:
zfs snapshot -r old-pool@replicaton
zfs send -R old-pool@replication | mbuffer -m 1G | zfs receive -F -d new-pool
но в середине операции я получил предупреждение от zfs send
, жалуясь, что снимок old-pool/some/fileset@replication
не было бы ...
когда я пошел расследовать, я действительно обнаружил, что zfs snapshot -r
не позаботился о создании снимка на old-pool/some/fileset
. Так что я побежал
zfs list -r -o name old-pool | \
xargs -n1 perl -e 'system "zfs","list",$ARGV[0]."\@replication"'
и обнаружил, что около 10% наборов файлов не имели этого снимка ...
Затем я приступил к индивидуальному созданию недостающего снимка, и он работал нормально.
С тех пор я повторил эксперимент и снова обнаружил ту же проблему ...
Есть идеи, как это может быть?
Это происходит на omnios r151010
О МОЙ! Как стыдно ... Я нашел причину ...
Пул (старый пул), который я пытаюсь реплицировать, сам по себе является хранилищем резервных копий, регулярно получающим обновления через zfs receive -F
Итак, хотя мой рекурсивный снимок изначально был готов, он был «очищен» по мере того, как новые снимки интегрировались в отдельные наборы файлов.
Как только я остановил сценарий резервного копирования, который отправлял снимки в old-pool
, мир снова заработал, как ожидалось.