ROSA Freeze — различия между версиями
D uragan (обсуждение | вклад) (+ Url to source, English page) |
|||
(не показано 14 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | ROSA является динамично развивающейся средой, постоянно получающей большие пласты обновлений. Обновления призваны привнести в систему улучшения и новый функционал, однако иногда они имеют обратный эффект, ломая что-то работающее и вызывая недовольство пользователей. Кроме того, многие члены | + | = Введение = |
+ | ROSA является динамично развивающейся средой, постоянно получающей большие пласты обновлений. Обновления призваны привнести в систему улучшения и новый функционал, однако иногда они имеют обратный эффект, ломая что-то работающее и вызывая недовольство пользователей. Кроме того, многие члены нашего сообщества — это энтузиасты, которых постоянно тянет попробовать что-то новое. Например, всевозможные программы из различных источников, которые не имеют прямого отношения к дистрибутиву. Рано или поздно программы могут вступить в конфликт с приложениями и политиками ОС и привести систему (по крайней мере частично) в нерабочее состояние. Как результат, для многих пользователей актуальным вопросом является автоматический возврат поломанной системы в рабочее состояние. | ||
− | Если вы знакомы с управлением пакетами RPM, то для отката системы вы можете воспользоваться инструментами [http://wiki.rosalab.ru/ru/index.php/%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Urpmi.recover_-_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%B9_%D0%B1%D0%B0%D0%B7%D1%8B Urpmi.recover] и [http://wiki.rosalab.ru/ru/index.php/Urpm-tools#urpm-reposync urpm-reposync]. Однако гарантировать возврат поломанной системы в работоспособное состояние эти инструменты не | + | Если вы знакомы с управлением пакетами RPM, то для отката системы вы можете воспользоваться инструментами [http://wiki.rosalab.ru/ru/index.php/%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Urpmi.recover_-_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%B9_%D0%B1%D0%B0%D0%B7%D1%8B Urpmi.recover] и [http://wiki.rosalab.ru/ru/index.php/Urpm-tools#urpm-reposync urpm-reposync]. Однако гарантировать возврат поломанной системы в работоспособное состояние эти инструменты не могут — ведь не факт, что поломка вызвана исключительно пакетами, или что пакеты можно корректно откатить до предыдущих версий. |
− | Если вы предвидите, что в рамках текущего сеанса работы с большой вероятностью сломаете систему и вам придется откатываться до рабочего состояния, то вы можете воспользоваться {{prog|ROSA Freeze}}. При использовании {{prog|ROSA Freeze}}, ОС может работать в двух | + | Если вы предвидите, что в рамках текущего сеанса работы с большой вероятностью сломаете систему и вам придется откатываться до рабочего состояния, то вы можете воспользоваться {{prog|ROSA Freeze}}. При использовании {{prog|ROSA Freeze}}, ОС может работать в двух режимах — обычном и режиме «заморозки». При использовании последнего поверх всех системных директорий верхнего уровня (/bin, /etc, /usr и так далее; список может быть скорректирован в настройках) с помощью aufs монтируются директории-«перехватчики», находящиеся в tmpfs либо на отдельном разделе жесткого диска. Любые изменения, вносимые в «замороженные» директории, реально попадают в директории-«перехватчики», а содержимое оригинальных директорий остается неизменным. При перезагрузке машины все содержимое этих перехватчиков удаляется и системные директории возвращаются в первоначальное состояние. При этом после перезагрузки система продолжает оставаться в замороженном состоянии — выход из этого режима надо производить явно. Предусмотрена возможность переноса всех изменений из aufs, сделанных в рамках текущей сессии, в оригинальные директории. |
+ | = Базовый функционал = | ||
Находится инструментарий в пакете {{pkg|rosa-freeze}}. Работает наш инструмент в консоли, только от пользователя root, и запускается командой {{cmd|rfreeze}}. Для проверки работоспособности, можно запросить текущий статус: | Находится инструментарий в пакете {{pkg|rosa-freeze}}. Работает наш инструмент в консоли, только от пользователя root, и запускается командой {{cmd|rfreeze}}. Для проверки работоспособности, можно запросить текущий статус: | ||
Строка 13: | Строка 15: | ||
# rfreeze enable | # rfreeze enable | ||
− | Система переходит в замороженное состояние сразу же, то есть перезагрузки не требуется. Однако | + | По умолчанию, после включения режима заморозки все изменения будут перенаправляться в tmpfs. Вы также можете перенаправить эти изменения на отдельный раздел жесткого диска с помощью опции {{cmd|-s}} либо в отдельную директорию на корневом разделе — с помощью опции {{cmd|-f}}. |
+ | |||
+ | Система переходит в замороженное состояние сразу же, то есть перезагрузки не требуется. Однако учтите, что используемый подход не гарантирует фиксацию состояния файлов, которые были открыты на запись в момент включения заморозки. Для надежности, необходимо перезагрузить систему - заморозка директорий осуществляется непосредственно в момент загрузки до того. как какой-либо процесс сможет открыть какой-либо файл на запись. | ||
+ | |||
+ | Для отключения режима заморозки надо дать команду | ||
# rfreeze disable | # rfreeze disable | ||
Строка 19: | Строка 25: | ||
После этой команды уже обязательно необходима перезагрузка. | После этой команды уже обязательно необходима перезагрузка. | ||
− | Пока система находится в «замороженном» состоянии, | + | Пока система находится в «замороженном» состоянии, все изменения, вносимые пользователем в систему, магическим образом исчезнут после перезагрузки. Если вы вдруг осознали, что не хотите такого поворота событий, то можно слить текущее состояние системы с ее оригинальным состоянием командой |
# rfreeze merge | # rfreeze merge | ||
Строка 25: | Строка 31: | ||
После этого текущее состояние системы станет базовым. | После этого текущее состояние системы станет базовым. | ||
− | Впрочем, команда «merge» потенциально опасная, будьте с ней осторожнее и делайте резервные копии | + | Впрочем, команда «merge» потенциально опасная, будьте с ней осторожнее и делайте резервные копии. |
= Что и как замораживается = | = Что и как замораживается = | ||
Строка 39: | Строка 45: | ||
* /tmp | * /tmp | ||
− | Для каждой из остальных директорий верхнего уровня создается «перехватчик» в | + | Вы можете указать список «незамораживаемых» директорий вручную при вызове {{cmd|rfreeze enable}} с помощью опции {{cmd|-d}}. Имена директорий должны быть разделены двоеточием и не содержать слешей, например: |
+ | |||
+ | rfreeze enable -d home:media:mnt | ||
+ | |||
+ | Также {{Prog|rfreeze}} в настоящее время поддерживает заморозку только тех директорий, которые расположены на корневом разделе. В момент включения режима заморозки инструмент автоматически исключит из списка замораживаемых те директории, на которые смонтированы другие устройства или дисковые разделы. | ||
+ | |||
+ | Для каждой из остальных директорий верхнего уровня создается «перехватчик», в зависимости от заданных опций располагающийся либо в tmpfs, либо в одной из директорий корневого раздела, либо на отдельном разделе жесткого диска. В любом случае, хранилище перехватчиков монтируется на директорию {{file|/tmp/sysroot-rw}}, а далее каждый перехватчик из этой директории монтируется через aufs поверх исходной директории так, что все изменения идут в {{file|/tmp/sysroot-rw}}. | ||
Например, поверх директории {{file|/bin}} через aufs монтируется {{file|/tmp/sysroot-rw/bin}}. Если пользователь что-то меняет в {{file|/bin}}, то реально изменения происходят в {{file|/tmp/sysroot-rw/bin}}, а оригинальный {{file|/bin}} не затрагивается. Но пользователь (благодаря aufs) этого не замечает и в течение сеанса его работы (до перезагрузки/выключения) он видит в {{file|/bin}} все свои изменения. | Например, поверх директории {{file|/bin}} через aufs монтируется {{file|/tmp/sysroot-rw/bin}}. Если пользователь что-то меняет в {{file|/bin}}, то реально изменения происходят в {{file|/tmp/sysroot-rw/bin}}, а оригинальный {{file|/bin}} не затрагивается. Но пользователь (благодаря aufs) этого не замечает и в течение сеанса его работы (до перезагрузки/выключения) он видит в {{file|/bin}} все свои изменения. | ||
Строка 45: | Строка 57: | ||
Оригинальные версии всех директорий можно при этом наблюдать в директории {{file|/tmp/sysroot-ro}}. | Оригинальные версии всех директорий можно при этом наблюдать в директории {{file|/tmp/sysroot-ro}}. | ||
− | = | + | = Графический интерфейс = |
+ | Манипуляции с режимом заморозки могут осуществляться с помощью графического интерфейса — [http://wiki.rosalab.ru/ru/index.php/%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/%D0%A1%D0%BA%D1%80%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_GUI_%D0%B4%D0%BB%D1%8F_ROSA_Freeze ROSA Freeze UI] | ||
− | + | [[File:RFreeze UI ru.png|480px|center]] | |
− | rfreeze --help | + | = Файл конфигурации = |
+ | Настройки режима заморозки, используемые по умолчанию, можно изменять в секции «freeze» файла {{file|/etc/rfreeze.cfg}}. Пример секции: | ||
+ | |||
+ | [freeze] | ||
+ | type = folder | ||
+ | device = | ||
+ | folder = /rfreeze | ||
+ | skip_dirs = dev home lost+found media mnt proc run sys tmp | ||
+ | |||
+ | Параметр «type» может принимать значения '''folder''', '''tmpfs''' и '''device'''. Параметры '''device''' и '''folder''' используются, только если '''type''' выставлен в '''device''' или '''folder''' соответственно. | ||
+ | |||
+ | Параметр "skip_dirs" содержит перечень имен директорий (разделенных пробелом), которые не подлежат заморозке. | ||
+ | |||
+ | = Дополнительная информация = | ||
+ | Перечень опций и возможностей, поддерживаемых установленной в системе версией ROSA Freeze, можно узнать, запустив команду | ||
+ | |||
+ | # rfreeze --help | ||
Исходный код программы распространяется под лицензией BSD и доступен по адресу https://abf.rosalinux.ru/soft/rosa-freeze | Исходный код программы распространяется под лицензией BSD и доступен по адресу https://abf.rosalinux.ru/soft/rosa-freeze | ||
+ | == Ограничения == | ||
+ | * Все замораживаемые директории должны располагаться на корневом разделе (монтируемом в {{File|/}}) | ||
+ | * Заморозка {{File|/home}} не поддерживается, даже если эта директория находится на корневом разделе | ||
+ | |||
+ | [[Category:Разработки ROSA]] | ||
[[en:ROSA Freeze]] | [[en:ROSA Freeze]] |
Текущая версия на 14:06, 2 января 2017
Содержание
Введение
ROSA является динамично развивающейся средой, постоянно получающей большие пласты обновлений. Обновления призваны привнести в систему улучшения и новый функционал, однако иногда они имеют обратный эффект, ломая что-то работающее и вызывая недовольство пользователей. Кроме того, многие члены нашего сообщества — это энтузиасты, которых постоянно тянет попробовать что-то новое. Например, всевозможные программы из различных источников, которые не имеют прямого отношения к дистрибутиву. Рано или поздно программы могут вступить в конфликт с приложениями и политиками ОС и привести систему (по крайней мере частично) в нерабочее состояние. Как результат, для многих пользователей актуальным вопросом является автоматический возврат поломанной системы в рабочее состояние.
Если вы знакомы с управлением пакетами RPM, то для отката системы вы можете воспользоваться инструментами Urpmi.recover и urpm-reposync. Однако гарантировать возврат поломанной системы в работоспособное состояние эти инструменты не могут — ведь не факт, что поломка вызвана исключительно пакетами, или что пакеты можно корректно откатить до предыдущих версий.
Если вы предвидите, что в рамках текущего сеанса работы с большой вероятностью сломаете систему и вам придется откатываться до рабочего состояния, то вы можете воспользоваться ROSA Freeze. При использовании ROSA Freeze, ОС может работать в двух режимах — обычном и режиме «заморозки». При использовании последнего поверх всех системных директорий верхнего уровня (/bin, /etc, /usr и так далее; список может быть скорректирован в настройках) с помощью aufs монтируются директории-«перехватчики», находящиеся в tmpfs либо на отдельном разделе жесткого диска. Любые изменения, вносимые в «замороженные» директории, реально попадают в директории-«перехватчики», а содержимое оригинальных директорий остается неизменным. При перезагрузке машины все содержимое этих перехватчиков удаляется и системные директории возвращаются в первоначальное состояние. При этом после перезагрузки система продолжает оставаться в замороженном состоянии — выход из этого режима надо производить явно. Предусмотрена возможность переноса всех изменений из aufs, сделанных в рамках текущей сессии, в оригинальные директории.
Базовый функционал
Находится инструментарий в пакете rosa-freeze. Работает наш инструмент в консоли, только от пользователя root, и запускается командой rfreeze. Для проверки работоспособности, можно запросить текущий статус:
# rfreeze status
Для «заморозки» системы, необходимо выполнить команду
# rfreeze enable
По умолчанию, после включения режима заморозки все изменения будут перенаправляться в tmpfs. Вы также можете перенаправить эти изменения на отдельный раздел жесткого диска с помощью опции -s либо в отдельную директорию на корневом разделе — с помощью опции -f.
Система переходит в замороженное состояние сразу же, то есть перезагрузки не требуется. Однако учтите, что используемый подход не гарантирует фиксацию состояния файлов, которые были открыты на запись в момент включения заморозки. Для надежности, необходимо перезагрузить систему - заморозка директорий осуществляется непосредственно в момент загрузки до того. как какой-либо процесс сможет открыть какой-либо файл на запись.
Для отключения режима заморозки надо дать команду
# rfreeze disable
После этой команды уже обязательно необходима перезагрузка.
Пока система находится в «замороженном» состоянии, все изменения, вносимые пользователем в систему, магическим образом исчезнут после перезагрузки. Если вы вдруг осознали, что не хотите такого поворота событий, то можно слить текущее состояние системы с ее оригинальным состоянием командой
# rfreeze merge
После этого текущее состояние системы станет базовым.
Впрочем, команда «merge» потенциально опасная, будьте с ней осторожнее и делайте резервные копии.
Что и как замораживается
по умолчанию, «заморозке» подлежат все топ-левел директории, кроме:
- /dev
- /home
- /lost+found
- /media
- /mnt
- /proc
- /run
- /sys
- /tmp
Вы можете указать список «незамораживаемых» директорий вручную при вызове rfreeze enable с помощью опции -d. Имена директорий должны быть разделены двоеточием и не содержать слешей, например:
rfreeze enable -d home:media:mnt
Также rfreeze в настоящее время поддерживает заморозку только тех директорий, которые расположены на корневом разделе. В момент включения режима заморозки инструмент автоматически исключит из списка замораживаемых те директории, на которые смонтированы другие устройства или дисковые разделы.
Для каждой из остальных директорий верхнего уровня создается «перехватчик», в зависимости от заданных опций располагающийся либо в tmpfs, либо в одной из директорий корневого раздела, либо на отдельном разделе жесткого диска. В любом случае, хранилище перехватчиков монтируется на директорию /tmp/sysroot-rw, а далее каждый перехватчик из этой директории монтируется через aufs поверх исходной директории так, что все изменения идут в /tmp/sysroot-rw.
Например, поверх директории /bin через aufs монтируется /tmp/sysroot-rw/bin. Если пользователь что-то меняет в /bin, то реально изменения происходят в /tmp/sysroot-rw/bin, а оригинальный /bin не затрагивается. Но пользователь (благодаря aufs) этого не замечает и в течение сеанса его работы (до перезагрузки/выключения) он видит в /bin все свои изменения.
Оригинальные версии всех директорий можно при этом наблюдать в директории /tmp/sysroot-ro.
Графический интерфейс
Манипуляции с режимом заморозки могут осуществляться с помощью графического интерфейса — ROSA Freeze UI
Файл конфигурации
Настройки режима заморозки, используемые по умолчанию, можно изменять в секции «freeze» файла /etc/rfreeze.cfg. Пример секции:
[freeze] type = folder device = folder = /rfreeze skip_dirs = dev home lost+found media mnt proc run sys tmp
Параметр «type» может принимать значения folder, tmpfs и device. Параметры device и folder используются, только если type выставлен в device или folder соответственно.
Параметр "skip_dirs" содержит перечень имен директорий (разделенных пробелом), которые не подлежат заморозке.
Дополнительная информация
Перечень опций и возможностей, поддерживаемых установленной в системе версией ROSA Freeze, можно узнать, запустив команду
# rfreeze --help
Исходный код программы распространяется под лицензией BSD и доступен по адресу https://abf.rosalinux.ru/soft/rosa-freeze
Ограничения
- Все замораживаемые директории должны располагаться на корневом разделе (монтируемом в /)
- Заморозка /home не поддерживается, даже если эта директория находится на корневом разделе