Как избежать потери изменений в корневой файловой системе при обновлении ядра?
На Солярисе и его вариантах это делает клон zfs текущего /
файловая система и устанавливает новое ядро там. При перезагрузке вы получаете новый /
,
В моем случае у меня есть /scripts
каталог, так что если я когда-либо должен вернуться к предыдущему ядру, то мой /scripts
также будет откат, который для меня должен быть независимым от ядра, на котором я нахожусь.
Вопрос
Как можно избежать потери изменений, внесенных в файловую систему с момента завершения обновления ядра до перезагрузки хоста?
Существует ли процедура, о которой я не знаю, так как даже если вы очень быстро перезагружаетесь после обновления ядра, записи в журнале могли бы быть легко сделаны, чего вы никогда не увидите.
1 ответ
Вы описали загрузочные среды (BE), которые будут создаваться автоматически при обновлении системы или вручную с beadm
команда.
Вы можете иметь несколько независимых BE, хотя одновременно может быть активен только один. Вы также можете обновить / изменить каждый BE отдельно. Обычно вы делаете это для тестирования определенных версий программного обеспечения или полного обновления системы, но это не ограничивается этим.
От преимуществ к поддержке нескольких загрузочных сред:
Хотя одновременно может быть активна только одна загрузочная среда, вы можете смонтировать неактивную загрузочную среду, используя
beadm mount
команда. Затем вы можете использоватьpkg
команда с альтернативным корнем (-R
) возможность установки или обновления определенных пакетов в этой среде.
Я только что попробовал, beadm mount BeName
будет монтировать BeName во временную директорию /tmp
, который доступен для записи. Вы можете написать простой скрипт для синхронизации / копирования ваших новых или измененных файлов в старый BE или наоборот.
В документации также говорится, что возможны снимки на BE (с beadm create BeName@snapshotNamedescription
), что может быть полезно, если вы хотите отслеживать различия, возникшие между двумя моментами времени (с помощью zfs diff
).