Как сделать снимок btrfs?

22

Мой / домашний раздел состоит из целого физического диска. Он отформатирован как btrfs. Я хочу сделать снимок. Я в замешательстве, в частности, в отношении имен субобъема.

Я знаю, что есть похожие вопросы, но каждый похожий вопрос, похоже, задает что-то отличное от того, что я спрашиваю (и они старше, что, вероятно, устарело, учитывая быстрое развитие btrfs). Например, ответ на этот вопрос, по-видимому, не является ответом на мой вопрос, потому что мой раздел / home - это отдельный том, а на странице руководства для btrfs показана другая команда для создания моментальных снимков.

другая похожая проблема, нет твердого решения .
кто-то такой же смущенный, как и я, по вопросам именования

Мой вопрос:

Начнем с простого: это правильная команда для создания простого снимка моего домашнего раздела?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Я получил действительно смелый и проверил это, и это не работает. Ошибка есть error accessing /home/@home. Как показано ниже, @home указан в списке.

Я явно запутался в подобъемных именах. Нужно ли использовать их при создании снимков? В некоторых примерах показано, как сделать снимки домашнего использования /homeв качестве параметра источника, но на основе примеров корневых томов мне кажется, что мне нужно использовать /home/@home.

Будет ли эта команда работать? А если нет, то почему?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

Это @просто соглашение об именах? Это имеет смысл вообще?

Вот некоторые результаты, которые могут иметь отношение:

btrfs subvolume list /home
ID 256 top level 5 path @home

Я не уверен, что это значит, точно. При попытке btrfs device scanвыдает ошибку (например, невозможно сканировать устройство / dev / sda1). Моя файловая система не имеет ошибок. Все хорошо.

Вот мои разделы. В ответ на один ответ no / home - не единственный мой раздел btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX для Моники Челлио
источник
сообщество примет решение о репо ...
One Zero

Ответы:

19

Какова правильная команда для создания снимка моего домашнего раздела в Ubuntu 12.04?

Учитывая тот факт, что home находится в разделе btrfs и монтируется как / home, правильная команда:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Вот мои результаты:

Перед запуском команды сегодня:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

Команда:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

После запуска команды сегодня:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

Единственная проблема, связанная с этим методом, заключается в том, что моментальные снимки отображаются при выполнении ls (list) / home.

Вики сообщество Ubuntu было обновлено с решением для этого. Вот:

Как работать со снимками в макете Ubuntu

Чтобы работать со снимками / / / home в макете Ubuntu, очень удобно монтировать файловую систему btrfs в отдельном месте и работать с вершины дерева btrfs, а не из смонтированных подобъемов. <- это решение. К сожалению, это не удобно .

sudo mount /dev/sdX# /mnt

Для создания снимка используйте тот же синтаксис, который я использовал выше:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Это создаст снимок @ подобъекта с именем @_snapshot, расположенного также в верхней части дерева btrfs. Поскольку он находится в верхней части дерева, он не будет отображаться при перечислении файлов в подключенном томе.

Чтобы вернуться к снимку, вам просто нужно изменить его имя на имя, которое Ubuntu монтирует и перезагружает. Вот как можно изменить имя:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Чтобы удалить снимок, используйте:

sudo btrfs subvolume delete /mnt/@_badroot

Снимки btrfs сами по себе являются субобъемами и самодостаточны, удаляя старый @ субобъем, как это хорошо, если у нас есть замена.

ПРИМЕЧАНИЕ. Команда btrfs-tools set-defaultнарушит макет Ubuntu.

MountainX для Моники Челлио
источник
Так ты там прав? Теперь вы сможете смонтировать ваши снимки.
Турбо
Я на самом деле еще не пытался их монтировать. И я только что увидел ответ psusi о пакете apt-btrfs-snapshot. Это выглядит интересно, верно?
MountainX для Моники Челлио
Да, я упомянул это и в третьем пункте. Извините, пришлось указать на это;)
турбо
Я предлагаю вам пометить ваше решение как ответ.
Турбо
Существует решение для снимков, которые отображаются, когда вы работаете с ls / home. Я редактирую свой ответ с информацией сейчас.
MountainX для Моники Челлио
11

Хорошо обо всем по порядку:

  • Имя подсоба, на которое вы смотрите, @homeкак показано btrfs subvolume list /home. Он установлен в /home. @home - это имя подобъема, также он имеет идентификатор 256, поэтому, скорее всего, только ваш / home форматируется как btrfs.

  • Теперь, чтобы создать снимок @home, вы должны выполнить: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • Подобъем может иметь любое имя. @ - это соглашение Ubuntu во время установки. (Если вы используете apt-btrfs-snapshotкорневой подобъем, его нужно назвать @btw.) Вики сообщества настоятельно рекомендует сохранить его @как root и @homeкак home, поскольку он смонтирован таким образом. Это особенно важно, если вы хотите выполнить откат: вы не должны использовать btrfs subvolume set-default (не синтаксис, выделенный целью).

  • Для btrfs device scanвас нужно использовать sudo.

  • Для удаления подобъема вы можете использовать sudo btrfs subvolume delete @home_snapshot_20120421

Все BTRFS команда может быть сокращена до тех пор , пока они являются однозначными, так, например , sudo btrfs device scanможет быть усечена до sudo btrfs d s, sudo btrfs dev scили что - нибудь между ними.

Я надеюсь, что ответил на ваши вопросы. Есть несколько инструментов для регулярного резервного копирования, одним из примеров является btrfs-snapshot-вращение . Используйте их с осторожностью, так как ни один из них не является действительно зрелым или набрал достаточную тягу, то есть они могут содержать ошибки.

турбо
источник
Я получаю сообщение об ошибке:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX для Monica Cellio
Кроме того, у меня еще не было успеха btrfs device scan. Любой вариант, включая использование, sudoвыдает ошибку «ОШИБКА: невозможно сканировать устройство '/ dev / sdX'», где X - любое допустимое имя, такое как a, a1, b и т. Д.
MountainX для Monica Cellio
@OneZero: у меня пока нет ответов на все вопросы, но я нашел правильную команду для создания снимка моего домашнего раздела в Ubuntu 12.04, и я предоставил эту информацию в качестве ответа ниже.
MountainX для Моники Челлио
это действительно странно. Я проверил с моим разделом btrfs, btrfs sub snap @ /mnt/randomи он работал для меня. Затем я снова был в / mnt, где @ был установлен. Извините за путаницу
турбо
@ Турбо: Ваш ответ был очень полезным. Не нужно извиняться за попытку помочь. Даже страницы Ubuntu не ясны. Мы все выясним в конце концов.
MountainX для Моники Челлио
10

Установите apt-btrfs-snapshotпакет и использовать его подкоманды list, snapshot, deleteи set-default.

Это скрипт, который оборачивает команды нижнего уровня btrfs. Он работает, сначала монтируя корневую файловую систему btrfs где-нибудь. Под этим я подразумеваю реальный корень, а не тот, /@который обычно монтируется как /. Другими словами, вам нужно запустить , mount /dev/sda1 /mntтак что вы можете просматривать подобъемов , которые будут перечислены в качестве /mnt/@, /mnt/@homeи любые другие , которые Вы создали. Оттуда вы можете btrfs subvolume snapshot /mnt/@home @snapshot-today, который создаст снимок /@homeимени /@snapshot-today. Сравните это с запуском btrfs subvolume snapshot /home /home/@snapshot_today, который вместо этого создает снимок как дочерний элемент /@home, следовательно, он появляется, когда вы ls /homeи его настоящее имя /@home/@snapshot-today.

Откат снимка - это просто операция переименования mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. В следующий раз при загрузке, когда он идет к горе /@homeв /home, он найдет снимок.

Немного сложно обернуть голову, потому что вы должны иметь в виду разницу между тем, как btrfs видит вещи, и тем, как ядро ​​видит вещи, на что влияют параметры монтирования (в частности, аргумент subvol =).

psusi
источник