151

Использование Timeshift для управления снимками в Debian на Btrfs

Всем привет, на связи Уханов. В прошлом посте мы поприкалыавались на тему создания автоматических снимков файловой системы BTRFS в Debian. Тогда в конце заметки я упомянул, что Grub можно научить грузить систему прямо из снимка. Давайте сделаем это, а заодно, рассмотрим другую программу для управления снимками.

Нюанс установки системы

В посте про установку Debian на subvolume BTRFS я подробно рассказывал про процесс. Принцип действий будет тот-же, но subvolume должно быть только два: @ и @home. Subvolume @ мы будем использовать для корня файловой системы. Вот только нюанс в том, что установщик создаёт первый subvolume с именем @rootfs. Начнём.

Итак, дорогой друг, ты уже разметил диск, создал файловую систему и дошёл до этапа установки базовой системы. Словом, всё как в руководстве .

Итак, жми CTRL+ALT+F2 и погружайся в консоль. Осмотримся что у на по дискам:

df

Отмонтируем всё, что касается /target

umount /dev/sda1 && umount /dev/sda3

Примонтируем нашу BTRFS для работы с ней:

mount /dev/sda3 /mnt

Посмотрим что там внутри

cd /mnt ls

Как я и говорил, там один subvolume с именем @rootfs. Нам надо его переименовать, но система сделать это не даст. Ты же помнишь, что в BTRFS снимок - это тоже subvolume? Делаем финт ушами снимок subvolume, называем его @ и удаляем старый subvolume с именем @rootfs.

btrfs subvolume snapshot /mnt/@rootfs /mnt/@ btrfs subvolume delete /mnt/@rootfs

Создаём subvolume для домашних каталогов:

btrfs subvolume create @home

Проверяем сделанное:

btrfs subvolume list /mnt

Мы должны видеть два subvolume: @ и @home. Отмонтируем и монтируем корень уже куда надо:

umount /mnt mount -o rw,noatime,compress=lzo,space_cache,subvol=@ /dev/sda3 /target

Создадим каталоги:

mkdir -p /target/boot/efi mkdir -p /target/home

Монтируем оставшееся:

mount /dev/sda1 /target/boot/efi

mount -o rw,noatime,compress=lzo,space_cache,subvol=@home /dev/sda3 /target/home

Заметьте, что в отличие от предыдущей заметки я монтирую не через subvolid, а через subvol. То есть не по id, а по имени. Это важно. Там-же пишем и в fstab

nano /target/etc/fstab

Примерно так:

Жмём CTRL+ALT+F1 и продолжаем установку.

Установка Timeshift

Timeshift - свободная программа, предназначенная для автоматического периодического резервного копирования и восстановления системы Linux. Она умеет создавать резервные копии через rsync или снимки BTRFS вручную или по расписанию. Установим:

sudo apt install timeshift

Пройдём несложную процедуру настройки и создадим тестовый снимок:

Создание снимков при работе APT

Для того, чтобы снимки автоматически создавались при установке, удалении и обновлении пакетов, необходимо поставить пакет timeshift-autosnap-apt. Начнём.

sudo apt install git make

git clone https://github.com/wmutschl/timeshift-autosnap-apt.git /home/$USER/timeshift-autosnap-apt

cd /home/$USER/timeshift-autosnap-apt

sudo make install

Проверим создание снимков установкой Midnight Commander:

sudo apt install mc

Видим, что снимок создан:

Загрузка системы из снимка

Для этого нам потребуется пакет grub-btrfs. Установим его.

git clone https://github.com/Antynea/grub-btrfs.git /home/$USER/grub-btrfs

cd /home/$USER/grub-btrfs

sudo make install

Теперь надо включить пункт меню загрузки:

nano /etc/default/grub-btrfs/config

Раскомментируйте пункт GRUB_BTRFS_SUBMENUNAME

Мы видим, что теперь при установке пакетов редактируется меню загрузчика GRUB:

Теперь появилось дополнительное подменю, откуда можно загрузиться в желаемый снимок.

Восстановление

При восстановлении снимка программа создаёт текущий снимок, чтобы восстановление можно было отменить.

У меня не заработала кнопка “Обзор” и средствами программы мне не удалось увидеть файлы в снимке. Впрочем, снимок можно примонтировать вручную.

Программа умеет делать копии и на файловой системе EXT4 при помощи rsync.

Оригинал как обычно в моём блоге.

GNU/Linux

1.2K поста15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

1
Автор поста оценил этот комментарий

А за каким нам требуется rsync, раз уж мы используем снапшоты BTRFS?

В обратном случае мы можем делать инкрементальный бэкап. Независимо от ФС.

Тем более насчет BTRFS есть определенные сомнения, и не только у меня: RHEL ее послал, Oracle по-тихому забросил, в SuSE по дефолту для хомяка предлагается XFS, что тоже показательно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Как я понял из идеи, надо делать бекапы: на другой носитель на случай краха файловой системы, для этого rsync. Для защиты от случайного изменения / удаления дынных - ежечасные снапшоты.

Про сомнения насчёт btrfs не знаю. Работает и развивается. XFS несколько для других целей. А ведь есть ещё и JFS и reiserfs.

Так-же можно сказать и про ZFS -- её в линуксе вообще не стояло, она портирована из Solaris.

показать ответы
0
Автор поста оценил этот комментарий

Старее снимок удалится сам или руками нужно?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вы сами указываете сколько каких снимков хранить.

Иллюстрация к комментарию
5
Автор поста оценил этот комментарий

Из Windows отредактировать простым способом не получится. Из Linux есть два способа. Правьте файл /etc/default/grub.

1. Для того, чтобы всегда загружать третью строку в загрузочном меню по умолчанию, поменяйте GRUB_DEFAULT=0 на GRUB_DEFAULT=2

2. Для того, чтобы запоминать последний выбранный вариант, и загружать его по умолчанию, замените GRUB_DEFAULT=0 на GRUB_DEFAULT=saved, ниже допишите GRUB_SAVEDEFAULT=true

Сохраните файл, выполните команду update-grub

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Даже добавит нечего.

0
Автор поста оценил этот комментарий

Не понятно... А как оно само из бэкапа восстановится, если текущий винт сдох? Все равно же кто-то должен что-то сделать.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

RAID1 - это не бекап. Когда в RAID1 выходит из строя диск ничего не надо ни откуда восстанавливать. Данные выглядят как есть. Надо лишь заменить сбойный диск. Как работает подобный механизм, но с файловой системой ReFS читать тут: Дисковые пространства: обработка чрезвычайных ситуаций

0
Автор поста оценил этот комментарий

Если умер диск, raid становится degraded,  btrfs для этого совершенно не нужна.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Классический RAID - штука довольно примитивная и неповоротливая. Например заменить в нём диски на диски большего размера очень геморройно.

1
Автор поста оценил этот комментарий

Если не использовать дедуп, то там нет никаких особых требований к ОЗУ. Lvm raid я не использовал и особо ее не знаю, а вот zfs очень люблю.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

А Вы её на Linux используете? На FreeBSD или Solaris не использовали? Интересны различия в реализации.

показать ответы
0
Автор поста оценил этот комментарий

LVM RAID это довольно своеобразная штука с подводными камнями и граблями. Для сборки SW RAID есть MDADM, к нему даже гуй имеется — webmin.

Идея с ZFS интересна, но она охоча до ОЗУ, сомневаюсь что в детском саду ее избыток.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Про Webmin многие забывают. Гуй для всего.

0
Автор поста оценил этот комментарий

Не понятно... А как оно само из бэкапа восстановится, если текущий винт сдох? Все равно же кто-то должен что-то сделать.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

RAID1 средствами BTRFS.

Тут я её средствами RAID10 собрал

ArchLinux: установка системы на subvolume BTRFS

0
Автор поста оценил этот комментарий

Я про ext4 потому и спрашиваю, что другие фс могут быть заблокированы в установщик, но бэкапы это не то, что нужно.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тогда RAID1 средствами BTRFS + снапшоты. Но бекап я бы не отменял.

0
Автор поста оценил этот комментарий

Спасибо, вроде бы похоже на то, что нужно. Боюсь, что это будет какой-нибудь госдистрибутив, что-то такое с ext4 есть?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Timeshift может делать бекапы через rsync на ext4. Из Российских линуксов можно рассмотреть Astra Linux. Он основан на Debian, потому наверное мои рекомендации относятся и к нему.

показать ответы
0
Автор поста оценил этот комментарий

Можно. Но сложно, хотелось бы чтобы оно само.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Так оно и будет само. Надо только настроить.

показать ответы
0
Автор поста оценил этот комментарий

Зачем обе сущности сразу? Функционал перекрывается.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Timeshift умеет или в rsync или в снимки. Человеку наверное лучше графическое решение. Поэтому так предложил.

показать ответы
0
Автор поста оценил этот комментарий

RAID это про отказоустойчивость, а не надежное хранение. От развалившейся файловой системы, например, он не спасает. И от шифровальщика тоже. Тут нужно резервное копирование.

Софтрейдом в линухах занимается MDADM (реализации на уровне ФС я не беру).

Вот статья на рачвики (для линуксов это хороший источник справочных материалов) с примерами: https://wiki.archlinux.org/title/RAID

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Как резервную копию можно задействовать Timeshift с бекапами через rsync. А Snapper для защиты от случайного удаления/изменения файлов.

показать ответы
0
Автор поста оценил этот комментарий

Прикольно. Смотрю тут есть специалисты. Может быть подскажете тогда? Жена работает в детском садике. Соответственно, за компами никто не следит. Однажды накрылся жёсткий диск на одном компьютере со всей информацией. У меня были в загашнике два винта. Я установил винду в софтовом рейде. При умирании или отключении любого диска - система продолжает работать, при обратном подключении происходит синхронизация. При запуске, самостоятельно стартует первый работоспособный диск. Как такое софтовое дублирование сделать с линуксом? Такое ощущение, что рано или поздно их переведут на него. Искал информацию, но ничего похожего не нашёл. Может расскажете в статье или ссылку кинете?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Вот тут я говорил про программный Raid на btrfs. Могу подробнее написать. Ну и вообще про варианты реализации.
показать ответы