Установка Rosa в btrfs с переносом в подтома после установки — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
м (Перенос в подтома)
 
(не показано 19 промежуточных версий 2 участников)
Строка 1: Строка 1:
Статья рассчитана на повышение уровня владения операционной системой Роса, а также более глубокое понимание файловой системы btrfs. Статья позволит повысить вам стабильность, отказоустойчивость системы.
+
Статья рассчитана на повышение уровня владения операционной системой Роса и линукс в целом, обязательна к прочтению начинающим и опытным пользователям, а также на более глубокое понимание файловой системы btrfs. Позволит повысить вам стабильность, отказоустойчивость системы. Система btrfs уникальна тем, что являясь по себе файловой системой, внутри может содержать подтома, которые имеют функции разделов.
Система btrfs уникальна тем, что являясь по себе файловой системой, внутри может содержать подтома, которые имеют функции разделов.
+
 
В данной инструкции нужно строго следить за номерами разделов. Своими действиями. Понимать принцип монтирования разделов, команд копирования/переноса и иметь минимальный опыт работы в терминале.<br />
 
В данной инструкции нужно строго следить за номерами разделов. Своими действиями. Понимать принцип монтирования разделов, команд копирования/переноса и иметь минимальный опыт работы в терминале.<br />
'''Статья подходит и для других дистрибутивов, умеющих работать с файловой системой btrfs'''.<br />
+
'''Статья подходит и для других дистрибутивов, умеющих работать с файловой системой btrfs.<br /> '''
 
Что такое подтома в системе btrfs?<br />
 
Что такое подтома в системе btrfs?<br />
 
При разметке диска опытные стараются ставить корень, home и другие каталоги в разные разделы, которые имеют структуру sdxX, а в системе uefi их может быть множество.<br />
 
При разметке диска опытные стараются ставить корень, home и другие каталоги в разные разделы, которые имеют структуру sdxX, а в системе uefi их может быть множество.<br />
В случае же с btrfs раздел может быть один, а вот подтома заменяют дополнительные разделы. И в итоге у нас получается - к примеру раздел с btrfs - sda1 один, а подтома - @, @home, @var, @opt, @usr разные и независимые, с тем только условием, что они имеют точки монтирования в корневом подтоме @ и прописаны в /etc/fstab.  
+
В случае же с btrfs раздел может быть один, а вот подтома заменяют дополнительные разделы. И в итоге у нас получается - к примеру: раздел с btrfs на sda1 - один, а подтома - @, @home, @var, @opt, @usr разные и независимые, с тем только условием, что они имеют точки монтирования в корневом подтоме @ и прописаны в /etc/fstab. Названия подтомов могут быть отличными от тех, что даны в статье, главное чтобы Вы для себя понимали структуру, их расположение и связь.
 
+
 
== '''Основные команды, которыми мы будем пользоваться''' ==
 
== '''Основные команды, которыми мы будем пользоваться''' ==
 
  man
 
  man
Строка 44: Строка 42:
 
  btrfs subvolume create ./@home
 
  btrfs subvolume create ./@home
 
Проверим, что подтома созданы верно @ и @home
 
Проверим, что подтома созданы верно @ и @home
  ls ./rosa   - увидим системные каталоги, включая @ и @home
+
  ls ./  - увидим системные каталоги, включая @ и @home
 
  или
 
  или
 
  btrfs subvolume list  ./
 
  btrfs subvolume list  ./
 
   ID 263 gen 31 top level 5 path @
 
   ID 263 gen 31 top level 5 path @
 
   ID 264 gen 32 top level 5 path @home
 
   ID 264 gen 32 top level 5 path @home
 +
 
== '''Перенос в подтома''' ==
 
== '''Перенос в подтома''' ==
 
На этом этапе стоит дать пояснения. Можно не переносить каталог /home в подтом @home, а просто перенести всё содержимое в @. Тогда уменьшится количество команд при создании снапшотов и станет легче обслуживать систему. Сократиться количество подтомов.<br />
 
На этом этапе стоит дать пояснения. Можно не переносить каталог /home в подтом @home, а просто перенести всё содержимое в @. Тогда уменьшится количество команд при создании снапшотов и станет легче обслуживать систему. Сократиться количество подтомов.<br />
Строка 60: Строка 59:
 
Находясь в MC, слева перейдем в каталог @home, справа перейдем в каталог /home. Выберем нашего юзера - /user и нажмем на клавиатуре клавишу '''insert''' (выделит все файлы и папки в каталоге).<br />
 
Находясь в MC, слева перейдем в каталог @home, справа перейдем в каталог /home. Выберем нашего юзера - /user и нажмем на клавиатуре клавишу '''insert''' (выделит все файлы и папки в каталоге).<br />
 
Затем нажмем '''F6''' для переноса из '''/home''' в подтом '''@home'''. Проверить это легко - справа в mc каталог /home будет пуст.<br />
 
Затем нажмем '''F6''' для переноса из '''/home''' в подтом '''@home'''. Проверить это легко - справа в mc каталог /home будет пуст.<br />
 +
 +
'''Пояснение - дополнение'''<br />
 +
Этим способом переноса домашнего каталога также можно воспользоваться, если вы хотите установить свежую систему на новый HDD или SSD<br />и при этом сохранить все настройки пользователя, при использовании любой другой файловой системы.<br />Для этого переносим домашний каталог на новый раздел смонтированного диска, вышеописанным способом. Далее устанавливаем систему на новый HDD или SSD, задаем точки монтирования, раздел /home оставляем без форматирования, при установке должны быть введены - тот же пользователь, что и был раньше, а также пароли, используемые ранее.
  
 
'''Перенесем остальные каталоги и файлы в подтом @'''<br />
 
'''Перенесем остальные каталоги и файлы в подтом @'''<br />
 
Теперь нужно перенести все каталоги и файлы в подтом '''@''', кроме '''@home'''. Удалять папку '''/home''' не нужно, она будет точкой монтирования нашего подтома '''@home'''.
 
Теперь нужно перенести все каталоги и файлы в подтом '''@''', кроме '''@home'''. Удалять папку '''/home''' не нужно, она будет точкой монтирования нашего подтома '''@home'''.
Слева перейдем в '''@''', а справа передвигаемся по каталогам, нажимая клавишу '''insert''' выделим все файлы, кроме '''@home'''. Нажмем '''F6''' и перенесем все выделенное в '''@'''.<br />
+
Слева перейдем в '''@''', а справа передвигаемся по каталогам, нажимая клавишу '''insert''' выделим все файлы, кроме '''@home'''. Нажмем '''F6''' и перенесем все выделенное в '''@'''.
 +
Таким образом, в правой части файлового менеджера mc должно остаться два подтома: '''@''', '''@home'''.<br />
 
Выйдем из редактора '''MC''' - введем exit.<br />
 
Выйдем из редактора '''MC''' - введем exit.<br />
  
 
Дальше нам нужно поправить fstab и обновить загрузчик grub2!
 
Дальше нам нужно поправить fstab и обновить загрузчик grub2!
 +
 
== '''Делаем chroot и Правим fstab''' ==
 
== '''Делаем chroot и Правим fstab''' ==
 
Мы перенесли систему в подтома и параметр монтирования нам нужен не /, а subvol=@. Нужно примонтировать наш btrfs раздел с опцией subvol=@ и сделать chroot в систему!
 
Мы перенесли систему в подтома и параметр монтирования нам нужен не /, а subvol=@. Нужно примонтировать наш btrfs раздел с опцией subvol=@ и сделать chroot в систему!
  cd /tmp    - Перейдем в папку tmp
+
  cd /tmp    - перейдем в папку tmp
 
  mkdir 0    - создадим папку 0
 
  mkdir 0    - создадим папку 0
  mount | grep rosa  - Проверяем расположение нашей системы  и параметры монтирования
+
  mount | grep rosa  - проверяем расположение нашей системы  и параметры монтирования
 
   /dev/sda1 on /media/rosa type btrfs (rw,nosuid,nodev,relatime,space_cache,subvolid=5,subvol=/,uhelper=udisks2)
 
   /dev/sda1 on /media/rosa type btrfs (rw,nosuid,nodev,relatime,space_cache,subvolid=5,subvol=/,uhelper=udisks2)
  
  mount /dev/sda1 0 -o subvol=@  - Монтируем раздел btrfs на /dev/sda1 в папку 0 с опцией subvol=@
+
  mount /dev/sda1 0 -o subvol=@  - монтируем раздел btrfs на /dev/sda1 в папку 0 с опцией subvol=@
  ls 0                            - Проверяем. Видим список каталогов нашей системы
+
  ls 0                            - проверяем, видим список каталогов нашей системы
  
 
Смонтируем временные интерфейсные файловые системы в 0 (из хостовой системы в гостевую):
 
Смонтируем временные интерфейсные файловые системы в 0 (из хостовой системы в гостевую):
Строка 85: Строка 89:
 
Делаем '''chroot''' в папку 0:
 
Делаем '''chroot''' в папку 0:
 
  chroot 0
 
  chroot 0
  ls        - Проверяем. Видим список каталогов нашей системы
+
  ls        - проверяем, видим список каталогов нашей системы
  
 
Правим '''fstab''' в /etc/fstab:<br />
 
Правим '''fstab''' в /etc/fstab:<br />
Строка 93: Строка 97:
 
         UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 /home btrfs relatime,nofail,subvol=@home 1 1
 
         UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 /home btrfs relatime,nofail,subvol=@home 1 1
 
  Опции relatime,nofail можно заменить на defaults
 
  Опции relatime,nofail можно заменить на defaults
Обновляем загрузчик и перезагружаемся
+
Обновляем загрузчик, но не торопимся перегружаться (читаем ниже)
 
  update-grub2      - для росы
 
  update-grub2      - для росы
 
  update-grub      - для убунту/дебиано подобных<br />
 
  update-grub      - для убунту/дебиано подобных<br />
Строка 100: Строка 104:
 
  grub2-install /dev/sda
 
  grub2-install /dev/sda
 
  grub-install /dev/sda  - для убунту/дебиано подобных и остальных
 
  grub-install /dev/sda  - для убунту/дебиано подобных и остальных
 +
 +
В частности, для дистрибутива LinuxMint Debian Edition "Cindy", обязательно необходимо применить команду:
 +
grub-install /dev/sda
 +
 +
'''Примечание'''
 +
Создание снапшотов очень удобно делать и использовать программой с графическим интерфейсом '''"Timeshift"''', которая входит в состав этого дистрибутива с LMDE. Ознкомиться с ее работой вы можете по ссылкам:<br />
 +
[https://teejeetech.in/timeshift/ Timeshift - Утилита восстановления системы для Linux (англ.)]
 +
[https://www.alv.me/timeshift-btrfs/ Timeshift - Утилита восстановления системы для Linux (русский)]
 +
[https://www.alv.me/mint-19-i-timeshift-btrfs-ochen-neprostaya-mashina-vremeni/#comment-109457 Timeshift - Кратко как работать с программой с картинками (русский)]
 +
 
Проверяем
 
Проверяем
 
  cat /boot/grub2/grub.cfg | grep /boot    - для росы
 
  cat /boot/grub2/grub.cfg | grep /boot    - для росы
Строка 107: Строка 121:
 
'''Перезагружаемся в нашу систему. Если всё сделано правильно, то всё загрузится и заработает! Дальше можно приступать к созданию снапшотов.'''  
 
'''Перезагружаемся в нашу систему. Если всё сделано правильно, то всё загрузится и заработает! Дальше можно приступать к созданию снапшотов.'''  
  
Проверить наши подтома можно примонтировав раздел btrfs в запущеной системе, в нашем случае это sda1:
+
Проверить наши подтома можно примонтировав раздел btrfs в запущенной системе, в нашем случае это sda1:
 
  su -
 
  su -
 
  mount /dev/sda1 /mnt
 
  mount /dev/sda1 /mnt
Строка 142: Строка 156:
 
  grub2-install /dev/sda
 
  grub2-install /dev/sda
 
Перезагружаемся!!!
 
Перезагружаемся!!!
 +
== '''Создание снапшотов''' ==
 +
Смонтируем наш раздел sda1 c btrfs в /mnt:
 +
su -
 +
mount /dev/sda1 /mnt
 +
Посмотрим наши подтома:
 +
btrfs subvolume list /
 +
  ID 263 gen 105 top level 5 path @
 +
  ID 264 gen 105 top level 5 path @home
 +
Пояснение: В данном выводе мы видим, что на разделе /dev/sda1 присутствуют два подтома, корневой - @ и домашний - @home. level в нашем случае должен быть в пределах от 0 до 9. В ином случае (если значение трехзначное число) это будет вложенный подраздел (подраздел внутри подраздела).<br />
 +
Создадим снапшот корневого подтома @:
 +
cd /mnt          - перейдем в каталог mnt
 +
btrfs subvolume snapshot ./@ ./@_snapshot
 +
Проверяем подтома:
 +
btrfs subvolume list /
 +
  ID 263 gen 114 top level 5 path @
 +
  ID 264 gen 114 top level 5 path @home
 +
  ID 270 gen 111 top level 5 path @_snapshot
 +
Для понимания создания снапшотов был создан текстовый файл '''"test snaphot"''' в корневом каталоге в папке /opt. После этого сделаем переход на снапшот в качестве корня.
 +
su -
 +
ls /                      - покажет содержание корневого каталога в @
 +
> /opt/"test snaphot.txt"  - пользуемся самой короткой командой для создания файла в Linux - >.
 +
== '''Переходы по снапшотам''' ==
 +
Переход по подтомам можно осуществлять в рабочей системе. Все изменения вступят в силу после перезагрузки. Переход на снапшот в данной схеме будет осуществляться через команду '''mv'''.<br />
 +
Cоздание снапшотов и переходов для всех подтомов делается аналогичным образом, следите только за пространством жесткого диска и именами подразделов!<br />
 +
Перейдем на снапшот в качестве корневого каталога. Продолжаем работать в смонтированном в /mnt разделе /dev/sda1, или же примонтируем вновь, как описано выше!<br />
 +
Переименуем наш кореневой подтом '''@''' в '''@_old''':
 +
cd /mnt
 +
mv ./@ ./@_old
 +
А снапшот '''@_snapshot''' переименуем в кореневой подтом '''@''':
 +
mv ./@_snapshot ./@
 +
Проверяем подтома:
 +
btrfs subvolume list /
 +
  ID 263 gen 154 top level 5 path @_old
 +
  ID 264 gen 173 top level 5 path @home
 +
  ID 270 gen 172 top level 5 path @
 +
cd                  - выйдем из каталога /mnt
 +
umount /mnt        - Отмонтируем и можно перезагружаться
 +
Все изменения вступят в силу после перезагрузки!!!! До этого работа продолжиться в созданном @_old!!!!
 +
После перезагрузки проверим каталог /opt и увидим, что файл "test snaphot", созданный нами ранее, отсутствует! Он остался в @_old, поэтому снапшоты и называют моментальными снимками!<br />Посмотрим каталог /opt:
 +
ls /opt
 +
  lib/ share/
 +
И смотрим предыдущий корневой подтом:
 +
su -
 +
mount /dev/sdа1 /mnt
 +
ls /mnt/@_old/opt
 +
  lib/ share/ test snaphot.txt
  
 +
Удалить лишние подтома (с раздела /dev/sda1, примонтированного в /mnt) можно командой:
 +
btrfs subvolume delete /mnt/@_old
  
 +
'''Примечание: Команда btrfs subvolume set-default может нарушить макет установленный по умолчанию, применение ее после проделанной инструкции не желательно без опыта!'''
 +
'''Btrfs моментальные снимки подобъемов сами по себе, и самодостаточны! Могут работать, как самостоятельная система, удаление старого @ подтома возможно, если у нас есть замена.'''
  
 +
== '''В заключении''' ==
 +
После всех манипуляций и настроек рекомендуем ознакомиться с инструментами fstrim, filefrag при использовании Btrfs на SSD, воспользовавшись руководствами man.<br />
 +
Провести балансировку и дефрагментацию системы, как описано в [http://wiki.rosalab.com/ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Rosa_%D0%B2_btrfs_%D1%81_%D0%BF%D0%BE%D0%B4%D1%82%D0%BE%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BD%D0%B0_%D1%8D%D1%82%D0%B0%D0%BF%D0%B5_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8&action=edit этой] статье.<br />
 +
Раз в месяц или меньше рекомендуем пользоваться командой btrfs scrub start <путь>, она считывает все блоки данных и метаданных со всех устройств и проверяет контрольные суммы. Автоматически восстанавливает поврежденные блоки, если есть правильная копия. Дополнительную информацию вы можете посмотреть по внешней ссылке "Btrfs in Calculate Linux" в конце статьи.
  
 
== '''Макет системы''' ==
 
== '''Макет системы''' ==
Строка 167: Строка 235:
  
  
Внешние ссылки
+
Внешние ссылки<br />
 
[https://btrfs.wiki.kernel.org/index.php/Main_Page Вики btrfs]<br />
 
[https://btrfs.wiki.kernel.org/index.php/Main_Page Вики btrfs]<br />
 
[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs%285%29#MOUNT_OPTIONS Опции монтирования]<br />
 
[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs%285%29#MOUNT_OPTIONS Опции монтирования]<br />
 
[https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3 Балансировка btrfs]<br />
 
[https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3 Балансировка btrfs]<br />
 +
[https://wiki.calculate-linux.org/ru/btrfs Btrfs in Calculate Linux - (для ознакомления)]<br />
 +
[https://wiki.archlinux.org/index.php/Btrfs Btrfs in Arch Linux wiki - (для ознакомления)]<br />
 +
[https://ctlos.github.io/wiki/btrfs/btrfs-part1/ Btrfs in CTLOS Linux (Arch based) - (для ознакомления)]<br />
 
[http://wiki.rosalab.com/ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Rosa_%D0%B2_btrfs_%D1%81_%D0%BF%D0%BE%D0%B4%D1%82%D0%BE%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BD%D0%B0_%D1%8D%D1%82%D0%B0%D0%BF%D0%B5_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8&action=edit Установка Rosa в btrfs с подтомами на этапе установки]<br />
 
[http://wiki.rosalab.com/ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Rosa_%D0%B2_btrfs_%D1%81_%D0%BF%D0%BE%D0%B4%D1%82%D0%BE%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BD%D0%B0_%D1%8D%D1%82%D0%B0%D0%BF%D0%B5_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8&action=edit Установка Rosa в btrfs с подтомами на этапе установки]<br />
 
[http://wiki.rosalab.com/ru/index.php/%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D1%87%D0%B8%D0%BA%D0%B0_Grub2 Восстановление загрузчика Grub2]<br />
 
[http://wiki.rosalab.com/ru/index.php/%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D1%87%D0%B8%D0%BA%D0%B0_Grub2 Восстановление загрузчика Grub2]<br />

Текущая версия на 22:36, 17 января 2022

Статья рассчитана на повышение уровня владения операционной системой Роса и линукс в целом, обязательна к прочтению начинающим и опытным пользователям, а также на более глубокое понимание файловой системы btrfs. Позволит повысить вам стабильность, отказоустойчивость системы. Система btrfs уникальна тем, что являясь по себе файловой системой, внутри может содержать подтома, которые имеют функции разделов. В данной инструкции нужно строго следить за номерами разделов. Своими действиями. Понимать принцип монтирования разделов, команд копирования/переноса и иметь минимальный опыт работы в терминале.
Статья подходит и для других дистрибутивов, умеющих работать с файловой системой btrfs.
Что такое подтома в системе btrfs?
При разметке диска опытные стараются ставить корень, home и другие каталоги в разные разделы, которые имеют структуру sdxX, а в системе uefi их может быть множество.
В случае же с btrfs раздел может быть один, а вот подтома заменяют дополнительные разделы. И в итоге у нас получается - к примеру: раздел с btrfs на sda1 - один, а подтома - @, @home, @var, @opt, @usr разные и независимые, с тем только условием, что они имеют точки монтирования в корневом подтоме @ и прописаны в /etc/fstab. Названия подтомов могут быть отличными от тех, что даны в статье, главное чтобы Вы для себя понимали структуру, их расположение и связь.

Основные команды, которыми мы будем пользоваться

man
mkdir
cd
mount
umount
btrfs subvolume list
btrfs subvolume create
btrfs subvolume snapshot
mv
mc

Структура операций

1. Установить систему на раздел с btrfs.
2. Запустить LiveCD и примонтировать установленую систему для работы в каталог /media/rosa.
3. Создать подтома корня и домашнего каталога (@ и @home).
4. Сделать chroot в систему с опцией subvol=@ в разделе btrfs (subvolid=5).

Разметим диск

Грузимся в LiveCD открываем gparted и делаем простую разметку. Раздел с корнем и раздел подкачки.
Или устанавливаем сразу, без режима LiveCD, и редактируем разделы в diskdrake (Управление дисковыми разделами росы).
Примечание: Стоит отметить, что раздел подкачки не нужен, если у вас более 4Gb оперативной памяти! Если система UEFI, то раздел /boot будет в fat32/vfat и иметь вид “/sdxX /boot fat32 350Mb-500Mb”.
Если у нас UEFI, то при разметке поменяется нумерация разделов от той, что в статье - "/boot/efi sda1, /корень sda2, /swap sda3". Читаем про утилиту efibootmg и флаги для разделов esp,boot.
Итак, ефи у нас не будет, поэтому создаем корень и свап:

/sda1	/  btrf    50Gb
/sda2      swap	   4Gb

Установим систему в btrfs

Устанавливаем систему как обычно в подготовленные разделы. В итоге у нас весь subvolid=5 заполниться системными каталогами и файлами, с которыми не удобно работать при создании снапшотов!
После установки, выключаем систему и загружаемся в LiveCD. Все дальнейшие действия по переносу в подтома можно осуществлять только в этом режиме, иной метод может привести к потере данных.

Создание подтомов в системе btrfs

Монтируем нашу систему в каталог media

mkdir /media/rosa
mount /dev/sda1 /media/rosa

Переходим в папку rosa

cd /media/rosa
ls ./home      - проверяем, видим имя нашего пользователя в установленной системе.

Продолжаем. Не забываем, что мы находимся в каталоге rosa.
Создадим подтома (@ и @home) в системе btrfs на разделе /dev/sda1, который мы смонтировали в /media/rosa:

btrfs subvolume create ./@
btrfs subvolume create ./@home

Проверим, что подтома созданы верно @ и @home

ls ./   - увидим системные каталоги, включая @ и @home
или
btrfs subvolume list  ./
  ID 263 gen 31 top level 5 path @
  ID 264 gen 32 top level 5 path @home

Перенос в подтома

На этом этапе стоит дать пояснения. Можно не переносить каталог /home в подтом @home, а просто перенести всё содержимое в @. Тогда уменьшится количество команд при создании снапшотов и станет легче обслуживать систему. Сократиться количество подтомов.
Но есть и минусы этой простоты, если home не отделить, он тоже будет снапшотится. Естественно это скажется на размере снапшотов и занимаемом дисковом пространстве, при внушительном размере хомяка))). Установим утилиты nano и mc, если их нет!
Запустим Midnight Commander:

mc

Легких путей Мы не ищем, поэтому поместим все по своим местам в подтома @ и @home.

Перенос /home в @home:
Находясь в MC, слева перейдем в каталог @home, справа перейдем в каталог /home. Выберем нашего юзера - /user и нажмем на клавиатуре клавишу insert (выделит все файлы и папки в каталоге).
Затем нажмем F6 для переноса из /home в подтом @home. Проверить это легко - справа в mc каталог /home будет пуст.

Пояснение - дополнение
Этим способом переноса домашнего каталога также можно воспользоваться, если вы хотите установить свежую систему на новый HDD или SSD
и при этом сохранить все настройки пользователя, при использовании любой другой файловой системы.
Для этого переносим домашний каталог на новый раздел смонтированного диска, вышеописанным способом. Далее устанавливаем систему на новый HDD или SSD, задаем точки монтирования, раздел /home оставляем без форматирования, при установке должны быть введены - тот же пользователь, что и был раньше, а также пароли, используемые ранее.

Перенесем остальные каталоги и файлы в подтом @
Теперь нужно перенести все каталоги и файлы в подтом @, кроме @home. Удалять папку /home не нужно, она будет точкой монтирования нашего подтома @home. Слева перейдем в @, а справа передвигаемся по каталогам, нажимая клавишу insert выделим все файлы, кроме @home. Нажмем F6 и перенесем все выделенное в @. Таким образом, в правой части файлового менеджера mc должно остаться два подтома: @, @home.
Выйдем из редактора MC - введем exit.

Дальше нам нужно поправить fstab и обновить загрузчик grub2!

Делаем chroot и Правим fstab

Мы перенесли систему в подтома и параметр монтирования нам нужен не /, а subvol=@. Нужно примонтировать наш btrfs раздел с опцией subvol=@ и сделать chroot в систему!

cd /tmp    - перейдем в папку tmp
mkdir 0    - создадим папку 0
mount | grep rosa  - проверяем расположение нашей системы  и параметры монтирования
 /dev/sda1 on /media/rosa type btrfs (rw,nosuid,nodev,relatime,space_cache,subvolid=5,subvol=/,uhelper=udisks2)
mount /dev/sda1 0 -o subvol=@   - монтируем раздел btrfs на /dev/sda1 в папку 0 с опцией subvol=@
ls 0                            - проверяем, видим список каталогов нашей системы

Смонтируем временные интерфейсные файловые системы в 0 (из хостовой системы в гостевую):

for i in dev sys proc; do mount --bind -v /$i 0/$i; done
   mount: /dev bound on /tmp/0/dev.
   mount: /sys bound on /tmp/0/sys.
   mount: /proc bound on /tmp/0/proc.

Пояснение: /$i - из хостовой системы, 0/$i - в гостевую. Программа, запущенная в окружении chroot не может получить доступ к файлам вне нового корневого каталога.
Делаем chroot в папку 0:

chroot 0
ls         - проверяем, видим список каталогов нашей системы

Правим fstab в /etc/fstab:

Горячие клавиши в nano: выделить строку shift+end, копировать Alt+6, вставить Ctrl+U, сохранить изменения  Ctrl+O, выход Ctrl+X.
nano /etc/fstab
       UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 / btrfs relatime,nofail,subvol=@ 1 1
       UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 /home btrfs relatime,nofail,subvol=@home 1 1
Опции relatime,nofail можно заменить на defaults

Обновляем загрузчик, но не торопимся перегружаться (читаем ниже)

update-grub2      - для росы
update-grub       - для убунту/дебиано подобных
Обновление загрузчика может не сработать в росе, рекомендуется установить загрузчик по новой в /dev/sda сразу, командами ниже. Или же после перезагрузки при неудаче, по небольшой инструкции "Система не запустилась и выдает ошибку" можно зайти в систему и установить загрузчик из под суперпользователя.

Установка grub2 в /dev/sda (находимся в chroot 0):

grub2-install /dev/sda
grub-install /dev/sda   - для убунту/дебиано подобных и остальных

В частности, для дистрибутива LinuxMint Debian Edition "Cindy", обязательно необходимо применить команду:

grub-install /dev/sda

Примечание

Создание снапшотов очень удобно делать и использовать программой с графическим интерфейсом "Timeshift", которая входит в состав этого дистрибутива с LMDE. Ознкомиться с ее работой вы можете по ссылкам:
Timeshift - Утилита восстановления системы для Linux (англ.) Timeshift - Утилита восстановления системы для Linux (русский) Timeshift - Кратко как работать с программой с картинками (русский)

Проверяем

cat /boot/grub2/grub.cfg | grep /boot     - для росы
cat /boot/grub/grub.cfg | grep /boot      - для остальных
Видим что boot раздел находиться в @ -/@/boot, все верно и сделано правильно!

Перезагружаемся в нашу систему. Если всё сделано правильно, то всё загрузится и заработает! Дальше можно приступать к созданию снапшотов.

Проверить наши подтома можно примонтировав раздел btrfs в запущенной системе, в нашем случае это sda1:

su -
mount /dev/sda1 /mnt
ls /mnt/@/home       - будет пуст, а
ls /mnt/@home        - покажет нам нашего пользователя!!!
umount /mnt          - отмонтировать раздел

Система не запустилась и выдает ошибку

Находясь в chroot мы обновили загрузчик grub2. Перезагружаем и видим такой вывод - “error file boot/grub/i386-pc/normal.mod not found” и "grub rescue>". Загрузчик не нашел путь до модуля normal.mod

Без модулей grub поддерживает только ту файловую систему, которая была в /boot. Вы можете попытаться просмотреть содержимое каждого раздела чтобы определить где находятся файлы модулей.
Наш boot там же, где и @.

grub rescue> ls
Пример: по команде ls, отображаются разделы: (hd0) (hd0,msdos4) (hd0,msdos3) (hd0,msdos2) (hd0,msdos2) (hd0,msdos1) и их нумерация будет такая: ls (hd0,1)/ ls (hd0,2)/ ls (hd0,3)/ ls (hd0,4)/

В таких случаях нам нужно найти раздел /boot. Мы знаем, что /boot у нас в @, поэтому ищем где наши @ и @home.
Ищем @ и @home в разделе hd0,1:

ls (hd0,1)/
 @ @home
ls (hd0,1)/@       - команда выведет каталоги в @. Где мы увидим наш /boot.

Если вы увидели папку boot, значит это наш раздел. Дальше устанавливаем этот раздел значением переменной root с помощью команды set:

set root=(hd0,1)
set prefix=($root)/@/boot/grub2

Загружаем и запускаем модуль normal, который должен загрузить все, что нам необходимо:

insmod $prefix/i386-pc/normal.mod
normal

Происходит загрузка в систему.
Дальше в системе устанавливаем загрузчик grub2 в /dev/sda:

su -
grub2-install /dev/sda

Перезагружаемся!!!

Создание снапшотов

Смонтируем наш раздел sda1 c btrfs в /mnt:

su -
mount /dev/sda1 /mnt

Посмотрим наши подтома:

btrfs subvolume list /
 ID 263 gen 105 top level 5 path @
 ID 264 gen 105 top level 5 path @home

Пояснение: В данном выводе мы видим, что на разделе /dev/sda1 присутствуют два подтома, корневой - @ и домашний - @home. level в нашем случае должен быть в пределах от 0 до 9. В ином случае (если значение трехзначное число) это будет вложенный подраздел (подраздел внутри подраздела).
Создадим снапшот корневого подтома @:

cd /mnt          - перейдем в каталог mnt
btrfs subvolume snapshot ./@ ./@_snapshot

Проверяем подтома:

btrfs subvolume list /
 ID 263 gen 114 top level 5 path @
 ID 264 gen 114 top level 5 path @home
 ID 270 gen 111 top level 5 path @_snapshot

Для понимания создания снапшотов был создан текстовый файл "test snaphot" в корневом каталоге в папке /opt. После этого сделаем переход на снапшот в качестве корня.

su -
ls /                       - покажет содержание корневого каталога в @
> /opt/"test snaphot.txt"  - пользуемся самой короткой командой для создания файла в Linux - >.

Переходы по снапшотам

Переход по подтомам можно осуществлять в рабочей системе. Все изменения вступят в силу после перезагрузки. Переход на снапшот в данной схеме будет осуществляться через команду mv.
Cоздание снапшотов и переходов для всех подтомов делается аналогичным образом, следите только за пространством жесткого диска и именами подразделов!
Перейдем на снапшот в качестве корневого каталога. Продолжаем работать в смонтированном в /mnt разделе /dev/sda1, или же примонтируем вновь, как описано выше!
Переименуем наш кореневой подтом @ в @_old:

cd /mnt
mv ./@ ./@_old

А снапшот @_snapshot переименуем в кореневой подтом @:

mv ./@_snapshot ./@

Проверяем подтома:

btrfs subvolume list /
 ID 263 gen 154 top level 5 path @_old
 ID 264 gen 173 top level 5 path @home
 ID 270 gen 172 top level 5 path @
cd                  - выйдем из каталога /mnt
umount /mnt         - Отмонтируем и можно перезагружаться

Все изменения вступят в силу после перезагрузки!!!! До этого работа продолжиться в созданном @_old!!!! После перезагрузки проверим каталог /opt и увидим, что файл "test snaphot", созданный нами ранее, отсутствует! Он остался в @_old, поэтому снапшоты и называют моментальными снимками!
Посмотрим каталог /opt:

ls /opt
 lib/ share/ 

И смотрим предыдущий корневой подтом:

su -
mount /dev/sdа1 /mnt
ls /mnt/@_old/opt
 lib/ share/ test snaphot.txt

Удалить лишние подтома (с раздела /dev/sda1, примонтированного в /mnt) можно командой:

btrfs subvolume delete /mnt/@_old
Примечание: Команда btrfs subvolume set-default может нарушить макет установленный по умолчанию, применение ее после проделанной инструкции не желательно без опыта!
Btrfs моментальные снимки подобъемов сами по себе, и самодостаточны! Могут работать, как самостоятельная система, удаление старого @ подтома возможно, если у нас есть замена.

В заключении

После всех манипуляций и настроек рекомендуем ознакомиться с инструментами fstrim, filefrag при использовании Btrfs на SSD, воспользовавшись руководствами man.
Провести балансировку и дефрагментацию системы, как описано в этой статье.
Раз в месяц или меньше рекомендуем пользоваться командой btrfs scrub start <путь>, она считывает все блоки данных и метаданных со всех устройств и проверяет контрольные суммы. Автоматически восстанавливает поврежденные блоки, если есть правильная копия. Дополнительную информацию вы можете посмотреть по внешней ссылке "Btrfs in Calculate Linux" в конце статьи.

Макет системы

subvolid=5
|
| ────  @
| 	|
| 	|── /usr
| 	|
| 	|── /bin
| 	|
| 	|── /home (пустой каталог. точка монтирования home)
| 	|── …
|
|
|── @home
|── @_snapshot
|
└── @...

Благодарность за помощь в редакции данной статьи Михаилу Новоселову!


Внешние ссылки
Вики btrfs
Опции монтирования
Балансировка btrfs
Btrfs in Calculate Linux - (для ознакомления)
Btrfs in Arch Linux wiki - (для ознакомления)
Btrfs in CTLOS Linux (Arch based) - (для ознакомления)
Установка Rosa в btrfs с подтомами на этапе установки
Восстановление загрузчика Grub2
EFI System Partition (Русский) арчвики
Настройка UEFI-загрузчика. Самое краткое руководство в мире. 2016г.
Change root (Русский) арчвики
Ошибка grub rescue unknown filesystem