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

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

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

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

Мой вопрос:

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

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

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

1120 Я явно запутался в подобъемных именах. Нужно ли использовать их при создании снимков? В некоторых примерах показано создание снимков дома с использованием /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). Моя файловая система не имеет ошибок. Все хорошо.

1125 Вот мои разделы. В ответ на один ответ 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"  
22
задан 13 April 2017 в 15:23

3 ответа

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

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

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

  • Подобъем может иметь любое имя. @ - это соглашение Ubuntu во время установки. (Если вы используете apt-btrfs-snapshot, корневой подобъем должен быть назван @ между прочим.) Вики сообщества настоятельно рекомендуют сохранить @ в качестве корневого и @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-вращение . Используйте их с осторожностью, поскольку ни один из них не является действительно зрелым или набрал достаточную силу, то есть они могут очень хорошо содержать ошибки.

0
ответ дан 13 April 2017 в 15:23

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

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

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.

0
ответ дан 13 April 2017 в 15:23

Установите пакет 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 =). ]

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: