Как сделать снапшот ubuntu

Обновлено: 05.07.2024

В данной статье рассмотрены принципы и методики по применению снапшотов. Для более лучшего понимания материала необходимо знать, что такое LVM на базовом уровне и уметь оперировать с PV, VG, LV.

Назначение и принцип работы снапшотов

COW (Copy-On-Write)

Итак, разобравшись, что такое снапшот и когда он применяется, необходимо понимать, что происходит с файлами после создания снимка. Снапшот создан, и все старые файлы, т.е. которые не изменялись на момент создания снимка, остались на месте. А вот новые файлы или изменения для существующих уже будут записаны в новое расположение файловой системы на диске. Даже когда модификация данных завершена, старые данные никогда не перезаписываются. По сути будет создан ещё один файл, в котором содержатся все изменения (дельта), которые происходят с исходными данными. Таким образом достигается экономия дискового пространства засчет хранения лишь изменений на диске, а не полной копии данных. Технически происходит следующее: при необходимости изменения старого файла создается reflink и выделяется место под изменения.

Поэтому есть общие рекомендации и напоминания относительно снапшотов:

LVM1 vs LVM2

  • если блок должен быть изменен в источнике, он сначала копируется в моментальный снимок (снапшот), помечается как скопированный в таблице исключений, а затем новые данные записываются в исходный том. Так работает LVM1, снимки которого являются readonly.
  • LVM2 позволяет создавать снимки для чтения и записи, т.е. работает схожим образом, как и LVM1, но при необходимости записи данных в самом снапшоте, блоки данных помечаются в таблице исключений как используемые и уже никогда не будут скопированы с исходного тома.

Под таблицей исключений понимается хеш-таблица, в которой записываются все сопоставления относительно изменений блоков и таблицы CoW. Но это уже глубокие технические подкапотные детали, с которыми можно ознакомиться по ссылке.

В целом обе версии можно использовать, но у второй есть несомненное преимущество в виде возможности изменений в самом снапшоте.

Пример использования

Подготовительные работы

После того, как с теорией разобрались, пора переходить к практике! В качестве лабораторного стенда будет использоваться Centos 7 с установленным пакетом lvm2:

  • PV: sdb1 5 Гб
  • VG: vg_data 5 Гб
  • LV: lv_data 2,5 Гб
  • точки монтирования: /mnt и /mnt2

Далее LV был смонтирован по пути /mnt, и туда записаны произвольные файлы:

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

Как видно из команды выше, у исходного тома и снапшота появились новые атрибуты:

  1. Источник снапшота, т.е. указывает, что том является исходным относительно снапшота, origin
  2. Права на запись, writable
  3. Политика размещения: унаследовано от VG, inherit
  4. Статус, active
  5. Устройство: открыто или смонтировано, open

Также можно посмотреть более подробный вывод про LV или снапшот, где вся информация будет в расширенном виде:

Помимо атрибутов, появилось поле Data (Allocated to snapshot в lvdisplay), которое показывает свободное место для снапшота в процентах. На данный момент весь выделенный гигабайт свободен, т.к. в исходный том в /mnt не было записано никаких изменений.

Теперь же в исходный том будут внесены изменения для демонстрации поведения снапшота:

Был создан простой файл, забитый нулями, размером 512 Мб. И в lvs это изменение сразу учитывается:

Ещё одним способом для наглядной проверки использования места снапшотом является утилита dmsetup:

В выводе выше интересны последние три цифры:

  • кол-во используемых секторов
  • кол-во доступных секторов
  • кол-во мета секторов

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

Повреждения снапшота

Может возникнуть логичный вопрос, а что произойдет, если все секторы будут использованы, и отведенный гигабайт исчерпается? Такой снапшот станет непригодным для использования. Так, если создать ещё один файл через dd и после посмотреть статус:

Такой снепшот непригоден для использования и его остаётся только удалить:

Для предотвращения такой ситуации настоятельно рекомендуется сохранять размер снапшота таким же, как у исходного логического тома, чтобы минимизировать риск повреждения снапшота. Это можно делать в автоматическом режиме, добавив параметры в /etc/lvm/lvm.conf:

Монтирование снапшота

После повреждения и удаления снапшота, необходимо создать новый уже известной командой:

Но теперь для использования функционала LVM2 можно смонтировать снапшот в отдельную точку /mnt/2:

Если не указать флаг -o nouuid при использовании XFS и смонтированном исходным LV (origin), то возникнет ошибка вида:

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

Теперь имеются две точки монтирования, одна из которых является снапшотом. Для примера можно внести изменения в файлах на /mnt2, а после выполнить слияние с исходным LV.

Слияние (merge) снапшота с исходным LV

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

lvdisplay должен показывать, что LV том не используется и значение open равно нулю:

Теперь можно запустить слияние всех изменений из снапшота в исходный LV:

Наблюдать за прогрессом изменения секторов можно через dmsetup:

В конечном итоге, если слияние завершилось, атрибуты будут следующие:

Если кажется, что процесс подвис, а в dmsetup не происходит изменений, то нужно убедиться, что LV том не примонтирован. Если попытаться смонтировать том, то будет ошибка Command on LV vglxc/wikisnapshot is invalid on LV with properties: lv_is_merging_cow. В таком случае можно попытаться перезапустить мерж, указав аргументом наименование VG:

Заключение

В статье были рассмотрены теоретические аспекты назначения и применения снапшотов, а также проведены практические проверки на примере LVM2 в Centos 7. Резюмируя, стоит выделить основные моменты, о которых стоит помнить (повторюсь для закрепления):

Лично мне не доводилось использовать снапшоты LVM, т.к. обычно я пользуюсь снапшотами, которые предоставляет делать гипервизор для виртуальных машин. Принцип работы такой же, что описан в начале статьи. Но также есть серверы, доступа к которым из консоли гипервизора у меня нет, и вот тут в теории уже можно будет попробовать использовать возможности снапшотов в LVM.

Было бы неплохо иметь возможность попробовать новую версию Ubuntu, зная, что вы можете вернуться к предыдущей версии, если вам не понравится что-то? Вы наверняка задумывались, каким приложением для резервного копирования воспользоваться в Ubuntu и есть ли такое приложение для Linux, которое бы позволяло создать текущий снимок вашей системы или же настроить график автоматического создания в то или иное время суток без вашего участия. Это возможно, и об этом сегодня пойдет речь в дальнейшем обсуждении.

Как восстановить систему в Ubuntu linux

Сегодня мы с вами рассмотрим небольшой приложение для резервного копирования системы под названием TimeShift, в первую очередь, это приложение представляет из себя очень легкий в освоении пользовательский интерфейс, во вторых, приложение бесплатно и не удивительно, так как это же линукс, в некоторой степени процедура создания снимка и Восстановления системы схожа с Windows.

Это приложение очень удобно и полностью выполняет те требования, которые возлагает на него пользователь, позволяет изначально сделать снимок вашей системы, а затем продолжать создавать дополнительные снимки, регулярно, через заданные промежутки времени. TimeShift позволяет создать резервную копию только для системных файлов и настроек системы, нельзя создать копию пользовательских файлов, таких как документы, изображения, музыка и прочие. Это не особо важно и думаю, вы со мной согласитесь, нам требуется лишь сохранить работоспособность нашей системы, а не сохранять файлы которые хранятся в нашей домашней директории (Изображения, музыку, документы), эти файлы мы можем хранить на диске D или внешнем накопителе как это делают большинство пользователей в любой операционной системе.

Установка TimeShift в Ubuntu Linux

Приступим к первому шагу, а именно к установке приложения TimeShift которое позволит нам настроить автоматическое создание снимков системы и в случае чего, восстановить систему в прежнее рабочее состояние. Выполните комбинацию "Ctrl + Alt + T", чтобы открыть окно терминала, далее введите следующие команды в командной строке и нажмите клавишу "Enter".

После установки ищем установленное приложение либо с помощью поиска в Dash или же в меню - Системные утилиты - TimeShift. Далее при попытке запуска приложения откроется окно в котором будет предложено ввести пароль администратора, так как приложение довольно таки серьезное, стоит защита паролем администратора и это правильно, чтобы никто кому не положено не запускал системные утилиты.

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

Aptik приложение для резервного копирования пользовательских файлов в Linux

Установка Aptik в Ubuntu Linux

Выполните комбинацию "Ctrl + Alt + T", чтобы открыть окно терминала, далее введите следующие команды в командной строке и нажмите клавишу "Enter".

Первый запуск TimeShift

После запуска TimeShift, вы увидите в нижнем окне статуса приложения, текст вида(Synching files), который сообщает нам о том, что происходит сканирование текущего корневого диска на котором у нас установлена система. По умолчанию, после запуска приложение, оценивается размер диска и количество файлов которое придется скопировать для создания резервной копии системы, иногда это может длиться минут 10, можете запустить приложение и пойти сделать себе кофе. В раскрывающемся списке(Backup Device) в том случае если у вас несколько дисков, вы можете выбрать любой другой на который требуется сохранить созданную резервную копию.

Сканирование файловой системы и определение размера который потребуется под создание резервной копии

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

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

Создана резервная копия

Нажав в интерфейсе приложения на кнопку Browse, вы увидите вашу резервную копию которая хранится в корне вашей системы в директории /timeshift, после создания копии, советовал бы перенести ее в облако Google Drive или же в Dropbox, в облаке ваша копия будет в безопасности, что дает гарантию отката системы в случае когда это потребуется. Конечно облако это хорошо, но я для этого использую внешний диск на 1Т который у меня всегда под рукой, если у вас имеется так же внешний диск, можете использовать именного его для хранения снимка системы.

Настройка автоматического создания снимков системы

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

Перейдя в настройки приложения и кликнув по кнопке Settings, мы увидим следующее:

  • Schedule - настройка автоматического создания снимков системы(имеется возможность создания раз в месяц, раз в неделю, раз в день, каждый час и после перезагрузки). По умолчанию стоят настройки создания снимка системы каждый день и после перезагрузки, вы можете изменить эти настройки как вам нужно.
  • Auto-Remove - настройка удаления снимков системы которые старше(месяца или двух или сколько вам нужно, этот параметр легко настраивается, вы можете задать то кол месяцев которое вам нужно). Аналогично настраивается удаление резервной копии которая старше определенного количества недель, дней и часов. Так же имеется пункт настройки(when free space less than), который позволяет автоматически удалять старые копии если свободное дискового пространство приближается к заданному лимиту GB которое вы зададите в настройках приложения.
  • Advanced - в данном разделе, вы найдете пункты Exclude(исключить нужные директории с резервного копирования) и пункт Include, что означает добавить нужные вам дополнительные директории для резервного копирования, если добавили директорию по ошибке, рядом находится кнопка Remove, выделили директорию, нажали на волшебную кнопочку и удалили ненужное.

На этом пожалуй и все, если у вас останутся вопросы, вы всегда их можете задать в комментариях к материалу. Всем удачи!

Вот я поставил систему, установил все нужные пакеты, настроил все под себя и теперь хочу сохранить это, чтобы заново не пердолиться. Щито делать?

Да я знаю, что можно сохранить dot files, но все-равно надо ставить все пакеты нужные (надо ещё помнить или хранить список) и т.п. Хотелось бы просто раскатать образ и обновить систему одной командой.

Что сейчас 'стильно модно молодежно'?

Бонусом вопрос: помогут ли снапшоты zfs? Есть машина с zfs в том числе, и там такая же задача есть.



1. Тупо в tar /.
2. dd всего раздела с /


Кстати, бубунта с минтом из коробки имеют бэкапилку и гуем.


но все-равно надо ставить все пакеты нужные (надо ещё помнить или хранить список)

configuration manager\NixOS\golden image

носки с сандалиями


Поможет. Также можно сделать экспорт снапшота, как он там называется.




Хорошо, с zfs , работает, я понял. Что делать с машинами на прочих фс? dd/tar выглядит довольно хардкорно. Неужели нет специализированных решений?

в файловых системах, кроме zfs btrfs xfs, нет инструмента снапшотинга.

поэтому либо оффлайновый dd всего раздела.

либо tar файловой системы.

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

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

По-сути, нужно заархивировать ФС. Лучше для этой цели использовать mksquashfs, ИМХО.

В nixos снапшоты системы одна из главных фич.

Снапшоты у xfs лютое 4.2! Собственных снапшотов у xfs нет. И да xfs поверх lvm это не просто xfs.

А как бекапить - всё, кроме btrfs и zfs, любимым архиватором хоть непосредственно файлы хоть весь раздел dd а потом любимый архиватор.

Да, до выхода из строя диска или иного сбоя который убьет zfs

Я исп. rear — делает архив системы + средства загрузки и восстановления на голом железе.


На FreeBSD используют стандартные механизмы dump/restore. Для Linux это же поддерживается XFS. Для использования ZFS применяются определённые административные практики на основе снапшотов, да.


Медиа

Linux не проявляет милосердия, когда у вас нет резервной копии.

Существует несколько резервных утилит, включая System Restore для Windows и Time Machine для Mac OS.

Функция Timeshift работает в двух режимах: режиме Rsync и режиме BTRFS.

В режиме rsync моментальные снэпшоты берутся с использованием rsync и жестких ссылок, а общие файлы совместно используются моментальными снэпшоты для экономии места на диске.

В режиме BTRFS моментальные снимки берутся с использованием файловой системы BTRFS.

BTRFS поддерживается только в системах, имеющих подтомы типа Ubuntu.

В этой статье мы установим Timeshift на различные дистрибутивы Linux и рассмотрим его возможности.

Установка Timeshift
Дистрибуты на основе Ubuntu

Вы можете использовать утилиту apt для установки Timeshift для всех версий ОС Debian, таких как Ubuntu, Linux Mint, Elementary OS и т. д.

Установка из репозитория GitHub

Используя репозиторий GitHub, вы можете установить Timeshift на все Linux-версии, такие как Linux Mint, Kali OS, Ubuntu, Arch Linux и Manjaro.

Чтобы установить 32-разрядную версию, выполните следующие действия:

Удаление Timeshift

Timeshift может быть удалена с использованием любой из этих двух простых команд.

Первая команда работает с системами на базе Debian, а вторая работает с любым Linux.

Настройка Timeshift

Вы можете запустить Timeshift из терминала, набрав timehift-launcher.

Вам будет предложено ввести пароль для использования приложения. Ввод только timeshift в терминале выдаст вам только версию.

Timeshift имеет несколько важных функций, которые требуют очень мало времени и усилий для настройки.

Это основные функции, описанные в разделе «Настройки».

Этот параметр запрашивает тип снэпшотов, которые вы хотите использовать.

Вы можете делать их с помощью rsync или BTRFS. Различие между этими двумя объяснялось ранее.

Location

Снэпшоты имеют большие размеры, поэтому рекомендуется хранить их на другом диске или разделе.

Здесь вы можете выбрать, где вы хотите сохранить снэпшоты.

Все снэпшоты сохраняются по умолчанию в / timeshift, но вы можете выбрать другие разделы Linux.

Schedule

Чем чаще вы делаете снэпшоты, тем больше места они занимают.

Вы можете планировать, когда будут сделаны снэпшоты.

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

Users

Timeshift не является инструментом резервного копирования для ваших личных файлов, а скорее для файлов и настроек вашей системы.

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

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

Filters

Вы можете добавить папки или файлы, которые соответствуют определенным критериям, которые вы предоставляете .

Использование Timeshift
Как сделать снэпшот


Нажмите «Create», и операция начнется немедленно.

Если вам не хватает места, вы будете предупреждены об этом.

После создания моментального снэпшота вы увидите уведомление, подтверждающее завершение.

Восстановление из моментального снэпшота

Вы можете восстановить моментальные снимки из запущенной снэпшоты или Live Live CD (после установки Timeshift).

Если восстановите систему, вам потребуется перезагрузка.

Вы можете восстановить свои снэпшоты на другие тома или разделы. Обратите внимание, что выполнение этого будет перезаписывать ваши данные.

Существуют и другие варианты в Timeshift, такие как удаление и просмотр снэпшотов.

Вы можете выполнить эти операции или узнать полезные команды в командной строке, набрав timehift.

Читайте также: