Перенос снапшотов(snapshots) btrfs на другой раздел в отдельном файле

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Снапшоты (snapshot) являются составной частью системы btrfs и находятся с ней на одном разделе, что не совсем безопасно, так как поломка самой файловой системы отправит в небытие и все ваши резервные копии. Так же может возникнуть необходимость использовать ваш снапшот в новой, только что переустановленной ОС (к примеру при переходе на новую платформу) или использовать снапшот на другом ПК. Один из вариантов решения этих задачь - это сохранить снапшот в отдельный файл и разворачивать его там, где в этом есть необходимость.

Процесс установки btrfs и создание подтомов подробно описан в статьях: Установка_Rosa_в_btrfs_с_подтомами_на_этапе_установки и Установка Rosa в btrfs с переносом в подтома после установки. По моему мнению, первый метод с переносом в подтома на этапе установки более прост и понятен.

Для упрощения примера переносить будем только снимок корня системы @. Перенос снимка домашней директории @home осуществляется точно таким же способом.

Перенос снапшота в отдельный файл:

sudo mount /dev/sda2/ /mnt/                              # примонтируем нашу систему btrfs, находящуюся на sda2 в папку /mnt
sudo mount /dev/sdb1/ /media/ # примонтируем раздел(не обязательно btrfs), на который будем переносить снапшот
sudo btrfs subvolume snapshot -r /mnt/@ /mnt/@_snapshot # создадим снапшот корня системы с флагом -r (read-only). Это обязательное условие, без которого команда send работать не будет
sync # сбросим все из кэша на диск
sudo btrfs send /mnt/@_snapshot -f /media/@_snapshot # создадим из снапшота /mnt/@_snapshot файл с именем @_snapshot в папке /media/

Созданный файл @_snapshot в дальнейшем можно будет развернуть в существующей файловой системе или в другой btrfs.

sudo mount /dev/sda2/ /mnt/                      # примонтируем систему btrfs на которой будем разворачивать наш снапшот 
                                                   @_snapshot 
sudo mount /dev/sdb1/ /media/ # примонтируем раздел, на котором лежит наш файл снапшота
sudo btrfs receive /mnt -f /media/@_snapshot # развернем файл снапшота @_snapshot в папку /mnt

Нужно, чтобы в папке /mnt не было другого снапшота с таким же именем, иначе система выдаст об этом сообщение .

Важно!!! помнить, что наш снапшот @_snapshot создавался с флагом "только для чтения". Чтобы можно было работать с ним надо поменять его свойства, т.е. убрать флаг "только для чтения".

sudo btrfs property get /mnt/@_snapshot                # просмотрим свойства нашего снапшота. Система выдаст сообщение ro=true, что 
                                                         значит режим "только для чтения" включён. 
sudo btrfs property set /mnt/@_snapshot ro false # задаем снапшоту новые свойства - отключаем флаг "только для чтения"

Возможные свойства подтома/снапшота:

   • ro - флаг read-only, значения true или false 
   • label - метка тома, значение - строка символов или пустая строка, когда метку нужно сбросить. 
   • compression - сжатие подтома или каталога, значения lzo, zlib или пустая строка, когда сжатие нужно отключить.

Теперь можно грузить систему с этого снапшота (если переименовать его в @), переносить файлы из него в другие снапшоты и подтома. Но надо понимать, что создание новых разделов диска, или использование другого носителя приведет к изменению UUID разделов, что потребует правки fstab на нашем снапшоте.


Внешние ссылки:
Установка Rosa в btrfs с подтомами на этапе установки
Установка Rosa в btrfs с переносом в подтома после установки
btrfs | русскоязычное сообщество по Ubuntu
Wiki btrfs
Опции монтирования