Назад | Перейти на главную страницу

неполные рекурсивные снимки на zfs

Я получил кучу новых дисков в одной из наших систем и хотел передать им существующий пул, поэтому я сделал следующее:

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, мир снова заработал, как ожидалось.