У меня есть несколько серверов, каждый из которых работает от USB-накопителя. Серверы - это в основном гипервизоры.
Я думал о распространении бинарных обновлений в виде загрузки образа системы и его распаковки прямо на действующий USB-диск с последующей перезагрузкой. Эта техника сводилась бы к dd if=newimage.img of=/dev/sda && reboot
.
Однако я пробовал это, и это не совсем работает, как ожидалось. Диск с новым образом не загружается.
Поскольку можно запускать серию команд на каждом хосте и обновлять их таким образом большую часть времени, для меня это не критично. Но я хотел бы узнать, есть ли способ распаковать образ диска поверх работающей в реальном времени системы и правильно загрузить ее в новую среду, какой бы она ни была. Например, я мог бы когда-нибудь решить заменить эти Linux на совершенно другую ОС, кто знает :)
Идеи, предложения?
(При условии, что ответ на мой предыдущий вопрос - «да»). Возможно, хост записывает (свое представление о правильной структуре файловой системы) на USB-устройство во время или после dd
это работает. Вы можете попробовать remount -o ro,remount
в файловых системах работающего хоста перед выполнением dd
, но вы можете предотвратить dd
сам не работает при попытке записи в / dev / sda. Вам также может потребоваться быстрая и жесткая перезагрузка (echo b > /proc/sysrq-trigger
), чтобы ОС при выключении ничего не пыталась писать.
Обрезание файловой системы работающей в данный момент системы звучит как плохая идея. Вы можете заставить его работать, перемонтировав корневую файловую систему в режиме только для чтения, а затем выполнив dd
, а затем перезагрузите систему (Примечание: не используйте сценарий перезагрузки, потому что вы не хотите выполнять выключение, если вы заблокировали корневую файловую систему, вы просто хотите перезагрузить систему на ней.)