На данные ссылается столько снимков, сколько вы сделаете, и они будут удалены с диска, только если вы удалите все снимки, которые ссылались на эти данные, а также данные с работающего тома, это справедливо как для btrfs, так и для ZFS.
Например, в btrfs, если я создам ~/mifyle.txt
, а затем сделаю снимок @home
, мой файл не будет удален с диска, пока я не удалю этот снимок и ~/myfile.txt
, то же самое происходит и с ZFS.
Но что если я делаю моментальные снимки с @
и @home
? Будут ли ссылки на ~/myfile.txt
в снимках @ и @home или только в снимках @home?
И ведет ли себя ZFS по-другому? Если я создам файл rpool/home/myfile.txt
, где rpool
- родительский, а rpool/home
- дочерний набор данных, затем сделаю снимки для rpool
и rpool/home
, будет ли myfile. txt будет упоминаться в обоих снимках наборов данных или только в снимке дочернего набора данных?
Каждый набор данных, дочерний или родительский, является собственной собственной файловой системой. Файловая система — это место, где файлы и каталоги используются и сохраняются.
Снимки, сделанные для rpool, влияют только на набор данных rpool. Снимки, сделанные в rpool/home, влияют только на набор данных home.
Помните, что home — это не просто каталог в rpool, это файловая система, которая, как оказалось, монтируется в путь /mnt/rpool/home.
Если вы сохраните файлы в home наборе данных, а затем уничтожите home набор данных, все файлы и папки в домашнем наборе данных исчезнут: в том числе сохраненные в его снимки! Такие файлы никогда не сохранялись в наборе данных rpool во время монтирования home в /mnt/rpool/home.
Это верно и для моментальных снимков. Снимки для rpool/home не создают снимки для rpool; создаются только домашние снимки.
Единственная причина, по которой вас может заинтересовать rpool, влияющая на rpool/home, — это когда вы используете рекурсивные действия над rpool, где любое такое рекурсивное действие повлияет на rpool и все его дочерние элементы,, включая rpool/home.
Если вы создаете рекурсивный моментальный снимок для rpool, он не создает одиночный снимок. Он создает несколько моментальных снимков, по одному для каждого набора данных.
Эта команда создаст следующие снимки. -r "рекурсивный":
zfs snap -r rpool@important
Вы можете удалить все снимки с помощью следующей команды. Обратите внимание на параметр -r:
zfs destroy -r rpool@important
Если вы предпочитаете избирательность, вы можете уничтожить только определенные снимки, не нанося вреда другим.Обратите внимание, что параметр -r не используется:
zfs destroy rpool@important
zfs destroy rpool/media@important
Теперь у вас останутся только сохраненные снимки: