Antergos и Timeshift

Antergos и Timeshift

Cinant унаследовал от прародителей, Antergos’а и Arch’а, «скользящую» модель обновлений. Которая почти всегда обеспечивает доступность самых последних версий ядра, десктопов, утилит и приложений — и это плюс. Однако иногда применение этой модели чревато не очень приятными последствиями — «отваливанием» при обновлении системы отдельных пакетов (особенно из AUR), в том числе и критически важных. И это, безусловно, минус. Преодолеть который — одна из первоочередных задач кастомизации Antergos’а на пути к Cinant’у.

О снапшотах

Преодолеть указанный минус можно различными способами, одним из которых являются системы снапшотов — периодически делаемых моментальных снимков файловой иерархии. Что при существенных сбоях позволяет легко вернуть систему к последнему «хорошему» состоянию.

Для некоторых файловых систем, таких, как ZFS и Btrfs (то есть для тех, которые на самом деле не только файловые системы), умение создавать снапшоты собственными средствами, является врождённой чертой. Для ZFS процесс этот описан в материале по нерусски (который переведён для тех, кто по ихнему плохо читает). Есть даже материал про снапшоты ZFS именно в Antergos’е. Для Btrfs соответствующий материал можно найти на ArchWiki, даже на русскоязычной.

В остальных файловых системах, собственной поддержки снапшотов не имеющих (ext2/3/4, xfs, jfs, reiserfs), они, хоть не столь эффектно и эффективно, могут быть прикручены с помощью отдельных инструментов, одним из коих является rsync. Разумеется, напрашивается идея объединить объединить под одной графической «мордой». И эта идея была реализована в программе Timeshift.

О Timeshift

На вопрос, что такое Timeshift, официальный сайт проекта отвечает так:

TimeShift для Linux — это приложение, которое… защищает вашу систему, выполняя инкрементные снимки файловой системы через равные промежутки времени. Эти снимки могут быть восстановлены позднее, чтобы отменить все изменения в системе.

Снимки получаются посредством программы rsync и создания жёстких ссылок. Общие файлы входят во все моментальные снимки, что экономит дисковое пространство. Каждый снимок представляет собой полную резервную копию системы, которую можно просмотреть с помощью файлового менеджера.

TimeShift… предназначен для защиты только системных файлов и настроек. Пользовательские файлы, такие как документы, изображения и музыка, исключаются. Это гарантирует, что они остаются неизменными при восстановлении системы до более ранней по времени.

Всё сказанное в этой цитате — правда, чистая правда и ничего, кроме правды. Однако это — ещё не вся правда. Во-первых, TimeShift — не только средство резервирования и восстановления системы. Его можно использовать и для своего рода ротации моментальных снимков, сохранённых ранее.

Нечто подобное было реализовано когда-то в OpenSolaris в виде IPS (Image Packaging System — Система Упаковки Образов). Там это обеспечивалось врождённой функцией её файловой системы ZFS, которая поддерживает создание снапшотов сама по себе, без всяких дополнительных средств.

Впрочем, можно и в ZFS on Linux. Однако, насколько я знаю, «системы искаропки», подобной IPS, на её базе (ещё?) никто не сконструировал. Так что для нашего брата линуксоида она остаётся недостижимым идеалом. А о приготовлении снапшотов ZFS ручьмя будет разговор, когда речь дойдёт до этой файловой системы.

Так что в TimeShift можно выбирать между двумя механизмами создания моментальных снимков. Правда, если механизм RSYNC можно использовать для всех нативных файловых системах Linux (Ext2/3/4, XFS — а есть ли ещё какие, сохраняющие актуальность?), то механизм BTRFS — только для одноимённой. И, следовательно, выбор между этими механизмами следует сделать заранее, при установке системы.

Далее, в цитате говорится, что TimeShift предназначен для создания снимков только системы, но не пользовательских данных. И по умолчанию это действительно так. Однако, как будет вскоре показано, это можно изменить с помощью соответствующих настроек, подключая или отключая как отдельные файлы и подкаталоги из домашнего каталога пользователя, так и весь целиком весь /home.

Программа Timeshift была некогда (ещё в 12-м году) была разработана для Ubuntu в рамках проекта TeeJeeTech. И штатно включена, например, в дистрибутив Mint, начиная с версии 19. Однако к Ubuntu’идам она отнюдь не привязана — это кросс-дистрибутивное приложение, и его бинарные пакеты можно обнаружить для всех популярных дистрибутивов. А на странице GitHub’а есть и *.run-файлы, предназначенные для запуска в произвольной Linux-системе.

Имеется пакет timeshift и в AUR’ветке Arch’а, так что может быть легко установлен такой командой:

$ sudo yaourt -S timeshift

Или — с помощью Pamac’а:

Разумеется, со всеми своими зависимостями:

Теперь Timeshift можно запустить из секции Администрирование главного меню среды Cinnamon:

После этого требуется ввод пароля для доступа к правам администратора, и открывается окно мастера настройки Timeshift’а

Настройка осуществляется по разному в зависимости от того, какая файловая система была выбрана при инсталляции в качестве корневой — BTRFS или любая из прочих, подразумевающая создания снапшотов с помощью RSYNC:

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

Timeshift и RSYNC

Как следует из последнего скриншота, в этом случае выбирать ничего не приходится — достаточно нажать кнопку Далее для продолжения работы Мастера установки, предлагающего выбрать устройство для размещения снапшотов. При использовании механизма RSYNC оно может быть любым, лишь бы файловая система на нём была исконно Linux’овая, то есть поддерживающая хардлинки — Ext2/3/3, XFS, JFS, ReiserFS, вероятно, даже Reiser4:

Далее определяется график создания снапшотов и их количество, подлежащее сохранению. По умолчанию предлагается делать снапшоты ежедневно, и хранить их аж пять штук:

Однако мы с Мануалом, перепробовав (не только в виртуалках, но иногда и в реале) несколько вариантов, отказались от создания снапшотов по расписанию вообще, решив делать это руками (как и когда — скоро расскажем):

После утверждения графика и нажатия кнопки Далее предлагается настроить так называемые исключения. И вот здесь оказывается, что приведённое выше утверждение, что

TimeShift… предназначен для защиты только системных файлов и настроек

не вполне соответствует действительности. Да, по умолчанию для всех пользователей (в том числе и администратора) содержимое их домашних каталогов из снапшотов исключено. Однако никто не препятствует изменить переключатели на положение Включить скрытые объекты (то есть dot-файлы) или даже на Включить всё. Мы с Мануалом включили в снапшоты dot-файлы из каталога /home/alv, то есть нашего рабочего:

На этом Мастер установки завершает свою работу, о чём бодро рапортует:

После чего перед нами возникает главное окно Timeshift’а, в котором нет пока ничего, кроме сообщения о его активизации и указания свободного дискового пространства:

И возникает искушение заполнить пустоту окна нажав кнопку Создать (первый снапшот). Однако искушение это лучше преодолеть ради предварительного ознакомления с остальными кнопками инструментальной панели.

Назначение кнопок Восстановить и Удалить очевидно, кнопка Обзор просто вызывает (с правами администратора) файловый менеджер, в нашем случае Nemo, кнопка Мастер — это повторение пройденного пути — самых первичных настроек. А вот кнопка Настройки вызывает панель настроек со своими пятью кнопками (не считая закрытия): Тип, Место, Расписание, Пользователи и Фильтры.

Как нетрудно догадаться, первые четыре — это повторение действий Мастера настроек. Кнопка же Фильтры позволяет установить отдельные «исключения из включений», добавив отдельные скрытые каталоги, dot-файлы или (с помощью кнопки Добавить в нижней панели) задать собственные шаблоны для исключений:

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

Вот теперь, закрыв все вспомогательные панели, можно нажимать в главном окне Timeshift’а кнопку Создать и наблюдать «вживе» за процессом создания снапшота:

Значению времени, указанному на скриншоте в качестве оставшегося, доверять не следует. В нашей инсталляции Antergos’а на создание первого снапшота ушло около 5 минут. По прошествии которых в ранее пустом окне появится первый снапшот, пока ещё одинокий:

По правому клику мыши на имени снапшота появляется контекстное меню доступных над ним действий. Выбрав среди них Обзор файлов, можно убедиться, что перед нами действительно слепок исходной файловой системы. Не запрещено и Посмотреть журнал создания, но это потребует времени — парсинг более чем 250 тысяч строк потребует его немало.

Возникает резонный вопрос — а почём ситчик-то (в гигабайтах дискового пространства)? Очевидно, что размер первого снапшота будет примерно равен объёму исходной системы за вычетом исключений. Дальнейший же рост объёма, занятого каталогом path2/timeshift, лишь в малой степени определяется настройками, а зависит в основном от пользовательской активности и стратегии создания снапшотов.

Стратегия действий

Как уже было сказано, от создания снапшотов по расписанию мы с Мануалом отказались, перейдя на «ручную» модель. Однако не к созданию снапшотов «под настроение», а по (относительно) строгой системе, увязанной с обновлением Cinant’а.

Как было сказано в очерке про Pamac, этот менеджер пакетов содержит в своём составе модуль отслеживания доступности в репозитории обновлений установленных компонентов. О наличии коих сигнализирует пиктограмма в трее, за которой мы с Мануалом следим. Однако не бросаемся обновляться сразу на её «красный цвет». А дожидаемся момента, когда либо обновлений накопится много, либо они будут касаться критически важных пакетов.

И вот тогда мы открывает Timeshift и делаем очередной снапшот. Затем — обновляемся, перезапускаем систему (а обновления по такому принципу обычно требуют рестарта) и проверяем работоспособность её и основных компонентов. Если всё нормально — немедленно делаем ещё один снапшот (на это уходит менее минуты). И эта последняя пара снапшотов, вместе с предыдущей (на всякий пожарный случай) хранится постоянно — то есть всего четыре штуки. Ведь при отказе от снапшотов по расписанию удаление тех, которые потеряли актуальность — дело рук самого применителя.

Каюсь, эта стратегия была выработана не сразу, а после ряда проб и ошибок. И потому стартовый снапшот делался не со свежеустановленной, а с уже кастомизированной системы, занимавшей около 7 ГБ (свежая инсталляция — чуть больше 5 ГБ). И размер снапшота был примерно таким же.

При при описанной стратегии обновления и «снапшотирования» инкрементное прирастание снапшотов за один раз колебалось от пары сотен мегабайт до примерно гигабайта. То есть теоретически могло бы составить максимум 4 ГБ, что при современных объёмах носителей (даже SSD) вполне можно себе позволить. Что бы ни говорила по этому поводу наша жаба. Так что с точки зрения расхода дискового пространства чёрт-снапшот не так страшен, как его малюют.

Исходя из общих соображений и из утверждения разработчиков Timeshift, можно ожидать, что механизм BTRFS окажется ещё более экономным по части дискового пространства. Что мы с Мануалом и проверили.

Timeshift и BTRFS

Поскольку Timeshift через механизм BTRFS работает только поверх одноимённой файловой системы, мы с Мануалом наблюдали его не в реале, а в условиях виртуальной машины, и на примере более иного дистрибутива, Linux Mint 19, о чём в своё время и написали. Так что здесь будет только краткое резюме для сравнения.

При инсталляции Mint’а виртуальный диск был размечен как единый том BTRFS, включающий два субтома — корневой @ и «домашний» @home, оба «безразмерные». Объём инсталляции составил 7,5 ГБ. Программа Timeshift была включена в систему по умолчанию. При её запуске автоматически стартует Мастер установки . Работа его начинается с выбора BTRFS явным образом. Выбора места для размещения снимков нет — оно задано механизмом BTRFS. График создания снапшотов и верхний предел их количества — на усмотрение применителя. осле этого Мастер установки сообщает об окончании работы. Выведя пустое окно с сообщением об активации Timeshift и свободном месте на диске.

Далее следует нажать на кнопку Настройки, дабы завершить дело Мастера. Что сводится оно к ответу на один вопрос: надо ли включать в снапшоты домашние каталоги пользователей, располагающиеся, как легко догадаться, в субтоме @home? Внутри него никаких исключений, в отличие от ситуации с RSYNC, сделать уже нельзя. Так что либо всё «домашнее» исключаем (как оно предлагается по умолчанию), либо включаем, для чего надо поставить «птицу» в соответствующем боксике. Мы с Мануалом пошли по второму пути.

После этого, закрыв окно настроек и нажав кнопку Создать, мы, как и было обещано разработчиками, буквально мгновенно получили первый снапшот своей системы. Размер которого, как и должно было быть, оказался «нулевым».

Затем мы имитировали активную жизнедеятельность в системе путём удаления ненужных пакетов и установки необходимых. Это позволило проследить динамику изменения размера снапшотов. Который укладывался в сотню мегабайт.

Если сравнить это с гигабайтами, расходуемыми на снапшоты при использовании механизма RSYNC — говорить, казалось бы, не о чем. Кроме, конечно, вопроса — а стоит ли ради этого привязываться к файловой системе BTRFS? У нас с Мануалом против есть некоторое предубеждение (не отрицаю — возможно, необоснованно). Так что ответ на вопрос отставляем на усмотрение заинтересованных лиц.

Заключение

Рассмотрев механизмы создания снапшотов, впору задаться вопросом, с которого, вероятно, следовало бы начать этот очерк: а нужны ли народу плезиозавры снапшоты? Покрутив Timeshift как в системах с фиксированными релизами (Linux Mint и Cintu), так и в «скользящих» (то есть в Antergos’е), мы с Мануалом можем на этот вопрос ответить со всей ответственностью.

В системах с фиксированным релиз-циклом снапшоты не нужны однозначно. Их с успехом заменит полный образ установленной, настроенной и отлаженной системы, возможно, изредка обновляемый.

В системах же со «скользящим» обновлением снапшоты — если и не абсолютно необходимы, то крайне желательны. Конечно, даже в таких «скользких» дистрибутивах, как Arch и его производные, вероятность серьёзных повреждений при периодическом апдейте крайне мала. Но нулю она не равна, и к этому нужно быть готовым. Ибо неприятности, к которым мы готовы, почти никогда не происходят — происходят совсем другие неприятности, о которых даже и не думали.

Причём их поддержка (по расписанию ли, или по запросу) отнюдь не исключает создания резервного образа. Вспоминается высказывание моего старого товарища:

Лёгкий флирт, как и насморк, переносится на ногах. В тяжёлых случаях необходим постельный режим.

Соотношение снапшотов и резервных образом аналогично. Снапшоты — быстрый способ отката в случае относительно лёгких повреждений системы. Например, сбоев при обновлении отдельных, даже критически важных, пакетов.

Однако, как было сказано выше, обычно случаются те неприятности, к которым мы не готовы — например, тотальный крах системы (по тем или иным причинам). И создание резервного образа — один из способов подготовиться и к неожиданным неприятностям. Тем самым многократно снизив из вероятность. Так что один из ближайших очерков будет посвящён вопросам создания резервных образов.

Antergos и Timeshift: 3 комментария

  1. Однако, как будет вскоре показано, это можно изменить с помощью соответствующих настроек, подключая или отключая как отдельные файлы и подкаталоги из домашнего каталога пользователя, так и весь целиком весь /home.

    что порой — благо, а порой — ересь. Возможно, наивный пример, но опыт же ж не бывает впустую: задокументируешь — авось, кому пригодится. Любой растяпа начинающий линуксоид сталкивается с тем, что система становится так, как надо, далеко не сразу. Следует переустановка. Порой почувствовавший гарь пятой точки применитель даже догадывается, что перемалывать можно не всё, а только /, который он заблаговременно, естественно, выделил при разметке диска, о чём имеется в той же сети множество наставлений для тех, кто окстился и встал таки на путь истинный. Так же было и со мной. И каково было моё удивление, когда свежепереустановленная система подхватила настройки и мелочи предыдущей. Спустя некоторое время дошло: хранение параметрических данных в каталоге пользователя, откуда приложения их и получили. Каталог-то не затирался при переустановке. Так что, думайте сами, решайте сами: иметь или не иметь затирать или не затирать.

    В нашей инсталляции Antergos’а на создание первого снапшота ушло около. По прошествии которых

    Значение времени потерялось….

    И эта последняя пара снапшотов, вместе с предыдущей (на всякий пожарный случай) хранится постоянно — то есть всего четыре штуки. Ведь при отказе от снапшотов по расписанию удаление тех, которые потеряли актуальность — дело рук самого применителя.

    старательно конспектирует в блокнотик

    При инсталляции Mint’а виртуальный диск был размечен как единый том BTRFS

    что крайне неудобно в том случае, если вы впоследствии решитесь препарировать это дисковое пространство. Операторы извне наотрез отказываются нормально видеть подтома этого большого тома. Решением может быть банальное копирование нужных данных на внешний (по отношению к большому) том, после чего — секир-башка всему разделу с BTRFS…

    Так что ответ на вопрос отставляем на усмотрение заинтересованных лиц.

    И, как заинтересованные лица — заинтересованным лицам, мы посоветуем от этой авантюры альтернативы отказаться. Игра не стоит свеч.

    Ибо неприятности, к которым мы готовы, почти никогда не происходят — происходят совсем другие неприятности, о которых даже и не думали.

    Увеличивая количество седых волос и списка неприятностей к которым мы теперь готовы.
    Отдельно: большое спасибо за очень толковое описание того, что так давно волновало.

  2. > порой — благо, а порой — ересь.
    В общем случае — второе. Потому что бэкапирование системы и бэкапирование данных — вещи очень разные и не надо смешивать личную шерсть с общесистемной.
    Просто дело в том, что у меня в ~/ нет данных. Как правило. Текущий момент — исключение, и временное. А так у меня там только dot-файлы. Которые скорее пряди шерсти общесистемной, нежели клубки шерсти личной 🙂
    Про BTRFS говорить не будем: вроде чуть раньше пришли к общему мнению о несравненных её достоинствах, верно? Ибо
    > Игра не стоит свеч.
    То есть — дiвчинка вы… пардон, овчинка …делки не стоит.
    > Увеличивая количество седых волос
    Мне уже вроде некуда…

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

    Вот, собственно, как и для меня, к примеру, конфигурационный файл .bashrc, который лежит в каталоге пользователя. Но, в целом, разобрались, ключевое, я считаю:

    бэкапирование системы и бэкапирование данных — вещи очень разные и не надо смешивать личную шерсть с общесистемной

    Ну а в плане

    Мне уже вроде некуда…

    я смотрю, что мне ещё ого-го как есть, куда расти

Добавить комментарий