Как избежать потери изменений в корневой файловой системе при обновлении ядра?
На Солярисе и его вариантах это делает клон 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).