Есть несколько важных вещей, чтобы отметить.
Наименования:
btrfs Subvolume - независимый контейнер данных inside
файловой системы. Представляется в виде каталога существующей ФС. Если вы создадите новый подобъем, он будет пустым, готовым к использованию логического блока данных внутри файловой системы. Очень удобно использовать там, где данные должны быть логически разделены, например, разные виртуальные машины или разные клиенты на разных подобъемах. Это позволяет very fast
удалить весь логический блок данных с помощью команды удаления всего объема.
btrfs Snapshot - копия existing
подобъема со всеми его данными на момент создания снимка. Может использоваться как оперативное резервное копирование для возврата настроек или изменений, например, для создания снимка с минимального объема, внесения изменений (ВМ или данные), проверки, если все в порядке, после некоторого льготного периода удалите снимок.
Важно отметить: снимки могут быть доступны только для чтения (-r
) и, таким образом, могут использоваться как блоки приращений изменений FS и, возможно, переноситься в абсолютно другую BTRFS!
Текущие (2016-12-30) ограничения BTRFS:
Копирование или перемещение данных между подобъемами, например, mv dir1/dataset1 dir_subvolume1/
создает все действительные значения io для копирования данных в другой подобъем и, в случае перемещения, удаления из исходного.
И очень эффективное копирование тонн данных, просто делая ссылки и, таким образом, используя функцию COW в BTRFS:
cp -a --reflink=always dir1/dataset1 dir_subvolume1/
и при необходимости:
rm -rf dir1/dataset1
Только для чтения. Снимок вложенного тома может быть переименован (перемещен с помощью mv
) на уровне существующего каталога, но не может быть переименован / перемещен на другой уровень подкаталога. например, mv /btrfs/subvol_snap1 /btrfs/.snaphots
не возможен, выдает мало объясненную ошибку: mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system
.
Чтобы иметь возможность перемещать такой снимок, вам нужно создать новый снимок только для чтения существующего снимка только для чтения в новое предпочтительное расположение, а затем удалить старый:
btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1
Просто для более легкой жизни:
btrfs sub list /btrfs
Я надеюсь, что это сэкономит массу времени всем новым поклонникам btrfs :)