Мини-HOWTO - Как сделать систему с точками восстановления

Модератор: adventurer

Аватара пользователя

Автор темы
serg666
Сообщения: 615
Зарегистрирован: 26 фев 2013, 21:15

Мини-HOWTO - Как сделать систему с точками восстановления

#1

Сообщение serg666 » 25 мар 2014, 17:52

Hi All.

У многих новичков часто возникают ситуации, когда после установки какого либо драйвера или софта результат не соответствует ожидаемому, например после установки драйвера видеокарты перестала стартовать система X-window и начинающий пользователь остается наедине с пугающе мрачной текстовой консолью черного цвета. Обычно это заканчивается тем, что пользователь, не сумев починить, просто переустанавливает систему с нуля и, хотя в отличие от MS Windows, этот процесс достаточно быстр, но все равно вызывает у пользователя негативные эмоции.

Сегодня я расскажу вам как установить новую систему таким образом, что бы в вашей системе были точки отката после каждой установки софта. Для этого мы будем используем файловую систему btrfs и одно из ее замечательных свойств snapshot'ы (снимки).
Итак, берем
    чистенький компьютер
    загрузочную флешку/CD/DVD-disk с вашим дистрибутивом лубунты (в этой статье на примере Lubuntu 13.10)
    возможность выхода в интернет с этого компьютера
Подключаем загрузочный носитель и выбираем загрузку без установки:
Изображение
Ждем пока live система загрузится и настраиваем в ней выход в интернет.
После настройки открываем окно терминала и устанавливаем пакет btrfs-tools
Изображение
Теперь мы можем создавать диски с файловой системой btrfs. Нам надо подготовить жесткий диск компьютера для установки на него лубунту, мы будем делать это до запуска инсталлятора ОС, потому что инсталлятор иногда отказывается создавать разделы btrfs. Запустим программу gparted и разобьем диск нашего компьютера на разделы:
Изображение
Поговорим немного о размерах разделов жесткого диска.
В моем примере они совсем неидеальны, потому что я использовал виртуальную машину для этой статьи и размер жесткого диска всего лишь 8ГБ, у вас же на компьютере жесткий диск явно будет намного большего размера. Раздел /boot, многие зачастую не выносят его в отдельный раздел, но я настоятельно рекомендую всегда выделять его на отдельный раздел жесткого диска, это может помочь в случае восстановления системы. Минимальный размер 100-250 МБ, но если у вас достаточно большой диск я бы порекомендовал выделить 1-1.5ГБ, это позволит вам в будущем поместить на этот раздел какой нибудь iso образ линукса, добавить его в grub и использовать его в дальнейшем в качестве live системы для восстановительных целей. Файловая система для этого раздела должна быть простой, незатейливой и надежной, например ext4 или ext2, операции записи на этом разделе случаются довольно редко, обычно только в моменты обновления ядра операционной системы, так что главное тут надежность и доступность.
Следующий раздел /, корневой раздел. Тут будет установлена вся операционная система и все программы. Рекомендую 6-15ГБ, я обычно ставил 8ГБ, но один раз столкнулся с тем, что мне этого не хватило, это случилось тогда когда мне понадобилось поработать с LaTeX'ом, так что если жесткий диск достаточно большой не пожалейте 15ГБ. Хотя пожалуй с учетом роста размеров приложений, размеров жестких дисков и того, что для снапшотов тоже требуется некоторое дополнительное пространство, я лично в следующий раз отведу на корневую систему с btrfs 20ГБ.
Размер раздела swap традиционно делают 1-2х размера оперативной памяти компьютера.
Ну а все оставшее место можно отдать под раздел /home, или разбить оставшееся место по вашему вкусу - /home, виндоуз раздел(ы) и так далее. Файловая система для /home это уже на ваш вкус (я предпочитаю ext4).
Итак, разбиваем жесткий диск на разделы, сохраняем и запускаем инсталлятор. В инсталляторе выбираем самостоятельное разбиение на разделы:
Изображение
на следующем экране выбираем наши разделы, назначаем им точки монтирования, но не устаналиваем флаги форматирования (это позволит нам избежать ошибки инсталлятора):
Изображение
Далее инсталлируем все как обычно и перезагружаем систему.
После перезагрузки настраиваем интернет и доустанавливаем пакет apt-btrfs-snapshot:
Изображение
Вот этой то программой мы и будем управлять точками восстановления и откатами системы назад:
Изображение
Команда apt-btrfs-snapshot -h выведет краткое описание использования команды.
Команда apt-btrfs-snapshot list выведет список точек восстановления, как видите на скриншоте у нас пока нет ни одной точки восстановления.
Как же нам создавать точки восстановления? Что нужно для этого делать? Ответ простой - а ничего не нужно делать, все будет происходить автоматически, при установке программ при помощи apt или менеджера пакетов автоматически будет создаваться точка восстановления. Давайте установим программу mc командой sudo apt-get install mc и проверим:
Изображение
На скиншоте видно что после установки у нас появился снапшоп @apt-snapshot-2014-03-25_11:17:47
На следующем скриншоте видно, что я запустил mc, вышел из него, и решил откатить систему в состояние до установки mc. Для этого я еще раз вывел список снапшотов и затем командой sudo apt-btrfs-snapshot set-default @apt-snapshot-2014-03-25_11:17:47 переключил файловую систему на использование сохраненного снапшота. Команда выполнилась и предложила мне перезагрузить систему, что бы (ха-ха) изменения вступили в силу. Перезагружаем и проверяем а есть ли в система установленная программа mc:
Изображение
А ее и нет, следовательно мы добились нужного результата.
Теперь мы хотим удалить тот старый снапшот в котором была установлена программа mc. Для этого надо вывести список снапшотов и удалить не нужный(е):
Изображение
Для этого служит команда sudo apt-btrfs-snapshot delete ИМЯ_СНАПШОТА
Помните - нельзя, а точнее программа не даст вам удалить активный снапшот, т.е. до перезагрузки в предыдущем шаге мы не могли удалить этот снапшот - он был активен.
Вот собственно и все.
Представим теперь, что система после установки драйвера видеокарты сломалась. Не беда - вы в консоли выводите список снапшотов, откатываете систему на предыдущий, перезагружаете компьютер и все опять в порядке.

Несколько замечаний.
Эта статья описывает установку новой системы, а что же делать тем у кого система уже установлена и жалко ее сносить. К сожалению придется, потому что утилита btrfs-convert в данный момент поломана, в lubuntu 14.04 она уже вроде починена, но пользователям 13.10 и менее это никак не поможет, да и конвертация, а точнее приведение системы в загружаемое состояние после конвертации не тривиальная задача, так что лучше ставьте с нуля.
Иногда удаляйте лишние снапшоты, что бы они не тратили дисковое пространство, все таки понемногу, но каждый снапшот отъедает место на диске. В командах программы apt-btrfs-snapshot есть команда удаления всех снапшотов старее чем указанное количество дней, пользуйтесь ей.

Удачи в установке и применении. Помните большинство проблем возникает из-за невнимательности.
Последний раз редактировалось serg666 25 мар 2014, 20:34, всего редактировалось 2 раза.

Аватара пользователя

uum74
Сообщения: 273
Зарегистрирован: 09 янв 2014, 06:42
Откуда: Сибирь

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#2

Сообщение uum74 » 25 мар 2014, 18:31

Вот это да! Спасибо, serg666 за такую полезную статью! Все говорили, что их нет, а они ЕСТЬ - точки воосстановления в Linux! Я знал, я верил в это! Да это ж какая удобная штука - установил по-невнимательности или по-незнанию что-то не то и вместо того, чтобы все это "выковыривать": sudo apt-btrfs-snapshot delete! Для новичков вообще вещь незаменимая! Lubuntu 14.04 LTS буду ставить обязательно по вашей методике!

Аватара пользователя

adventurer
Супермодератор
Сообщения: 2928
Зарегистрирован: 15 июн 2011, 18:24

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#3

Сообщение adventurer » 25 мар 2014, 19:09

Мои поздравления, serg666! :Bravo:

А теперь вопросы.
Снапшоты будут делаться только с разделов btrfs?
В статье Вы пишете, что предпочитаете для /home файловую систему ext4, а при разметке выбираете btrfs.
Сколько места занимает каждый снапшот. Можете дать объём установленной системы (чистой) и получающихся снапшотов?

Аватара пользователя

Автор темы
serg666
Сообщения: 615
Зарегистрирован: 26 фев 2013, 21:15

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#4

Сообщение serg666 » 25 мар 2014, 20:40

adventurer писал(а):Снапшоты будут делаться только с разделов btrfs?

Да, это же фича btrfs. Более того apt-btrfs-snapshot наверно будет делать снапшоты только рута.
adventurer писал(а):В статье Вы пишете, что предпочитаете для /home файловую систему ext4, а при разметке выбираете btrfs.

Ну это я так, на тестовой машине в виртуалбокс игрался.
adventurer писал(а):Сколько места занимает каждый снапшот.

На этот вопрос нет четкого ответа, но вобщем то не очень много.
adventurer писал(а):Можете дать объём установленной системы (чистой) и получающихся снапшотов?

Ну попробую попозже еще раз установить, поиграться и напишу.

Аватара пользователя

adventurer
Супермодератор
Сообщения: 2928
Зарегистрирован: 15 июн 2011, 18:24

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#5

Сообщение adventurer » 25 мар 2014, 21:46

Верно ли, что:
/boot вынесен на отдельный раздел, не потому что так лучше, а потому что по неизвестным мне причинам, LiveCD записанные на btrfs из под grub 2 не загружаются.

Так я и не понял, будет ли делаться снапшот раздела home (это можете проверить)? Зависит ли это от файловой системы раздела home?

Аватара пользователя

Автор темы
serg666
Сообщения: 615
Зарегистрирован: 26 фев 2013, 21:15

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#6

Сообщение serg666 » 25 мар 2014, 22:24

adventurer писал(а):Верно ли, что:
/boot вынесен на отдельный раздел, не потому что так лучше, а потому что по неизвестным мне причинам, LiveCD записанные на btrfs из под grub 2 не загружаются.

Нет, видимо раньше так было. А сейчас я спокойно грузил в виртуалке систему состоящую всего из двух партишнов btrfs / и свап. Соответственно boot и home были в корне, но что интересно home при этом жил на собственном снапшоте, это видимо инсталлятор лубунты так сделал.
И потом тут написано про LiveCD... Впрочем я читал подобное и про установку на HDD.

Иллюстрирую:
Изображение

Аватара пользователя

Автор темы
serg666
Сообщения: 615
Зарегистрирован: 26 фев 2013, 21:15

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#7

Сообщение serg666 » 25 мар 2014, 23:34

Займемся сравнением заполнености файловых систем ext4 и btrfs.
Исходные условия 8ГБ жесткий диск, поделим в gparted на разделы
/ - 6000МиБ
/home - 1000МиБ
swap - остаток 1.16 ГиБ
Изображение
Установим лубунту и посмотрим занятость раздела до апдейтов:
Изображение
и после апдейтов (апдейтов на 123.6 мег):
Изображение

Теперь проделаем все тоже самое для системы установленной на btrfs.
Что мы хотим понять после этого теста?
1) Я хочу на голую сиcтему поставить первым делом apt-btrfs-snapshot, а уже потом ставить все апдейты и посмотреть насколько будут большие потери дискового пространства на создание снапшота(ов).
2) Будет ли apt-btrfs-snapshot автоматически делать снапшоты на выделенном партишне /home или будет делать только в корневой файловой системе /.

Устанавливаем систему на btrfs с точно таким же разбиением на партишны как в примере с ext4.
Занятость корневой файловой системы сразу после установки:
Изображение
Видно, что btrfs скушала чуть больше места чем ext4, на примерно 93МБ, ну вобщем то приемлимо. Или в процентах btrfs съела на 2% больше.
Устанавливаем первым делом btrfs-tools и apt-btrfs-snapshot и запускаем update-manager:
Изображение
Смотрим занятость корневой файловой системы после установки апдейтов:
Изображение
И видим, что по сравнению с ext4 у нас занятость на 7% больше (или 487МБ), ну наверно логично - сколько то ушло на снапшоты, сколько то ушло на саму btrfs все таки другая FS и хранит данные по другому, другие алгоритмы и т.д.
В принципе по моему мнению вполне приемлимо.

Посмотрим, что там творится со снапшотами в корне и в home.
Изображение
apt-btrfs-snapshot показывает, что у нас 2 снапшота, правда сама утилита btrfs показывает чуть больше, ну да ладно. А вот на /home не было создано ни одного снапшота.
Ладно, попробуем еще один тест, попробуем установить playonlinux, при его установке совершенно точно создаются каталоги и файлы в домашнем каталоге пользователя. Вот и проверим будет ли создан снапшот на /home:
Изображение
Видно, что прибавился снапшот для /, но опять нет ни одного снапшота для /home.

Вывод: apt-btrfs-snapshot мониторит и снапшотит только раздел с корневой файловой системой, если надо делать снапшоты других разделов следут делать их вручную командой btrfs с соотвествующими ключами.

Аватара пользователя

uum74
Сообщения: 273
Зарегистрирован: 09 янв 2014, 06:42
Откуда: Сибирь

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#8

Сообщение uum74 » 26 мар 2014, 07:13

serg666, тут пара-тройка вопросов у меня назрела:
1. btrfs - как она ведет себя на реальном железе - быстрее, нет ext4? Или одинаково? У меня ноут просто старый - HP Pavilion dv5000(E260EA), озу-512Мб - из них 128Мб "отжирает" встроенная видеокарта, итого "чистыми" остается только 384Мб, проц-1.6GHz, три раздела - /, swap, home, все в ext4 - работает достаточно быстро, причем пробовал ставить ext2, ext3 - ноутбук на них "тупил" конкретно (хотя вроде эти файловые системы наоборот предназначены для старых машин).
2. /btrfs, /home - ext4 - не будет ли каких-нибудь "глюков" из-за разных ФС? Или лучше уже /home делать тоже в btrfs?
3. swap - имеет ли значение, где он установлен - после всех разделов, или лучше его ставить между / и /home?
Заранее вам благодарен, ответьте, пожалуйста, как будет время.

Аватара пользователя

Автор темы
serg666
Сообщения: 615
Зарегистрирован: 26 фев 2013, 21:15

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#9

Сообщение serg666 » 26 мар 2014, 07:51

1) на реальном железе не пробовал, а в виртуалке у меня создалось впечатление, что btrfs помедленнее, что вобщем то и логично.
2) глюков из-за того, что используются разные FS для / и /home не должно быть, я несколько лет использовал ext4 для / и xfs для /home, правда потом при апгрейде HDD отказал от xfs по той причине, что разделу с xfs невозможно изменить размер, так что переехал обратно на ext4
3) по идее свап чем ближе к началу диска тем лучше - в начале диска обычно скорость обмена данными повыше, так то либо swap /boot / /home либо /boot swap / /home. Это, естественно, в случае использования HDD, в случае использования SSD или виртуального диска разницы нет.

Аватара пользователя

adventurer
Супермодератор
Сообщения: 2928
Зарегистрирован: 15 июн 2011, 18:24

Re: Мини-HOWTO - Как сделать систему с точками восстановлени

#10

Сообщение adventurer » 26 мар 2014, 10:08

Спасибо, serg666.
О снапшотах раздела /home. Нужда в них не большая. Просто там остаются конфиги, но уж поискать и удалить не нужное на одном разделе гораздо легче, чем вычищать всю систему. :)

PS
Два года назад я спрашивал про точки восстановления:
viewtopic.php?f=2&t=743
Здорово, что форум не стоит на месте!


Вернуться в «How-To и FAQ»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость