Обновление ОС "на лету"
Интересно, есть ли способ установить более новую версию ОС, скажем, 14.04 (когда она появится) на второй раздел диска моего сервера изнутри операционной системы (например, Ubuntu 12.04), затем изменить порядок загрузки grub и перезагрузиться на новую? система (сокращающая время простоя сервера)?
Сценарий:
1-й раздел - Ubuntu 12.04 - счастлив и работает
2-й раздел - пустой
новый LTS приходит
1-й раздел - Ubuntu 12.04 (сервер все еще работает) - установить 14.04 на второй раздел
2-й раздел - идет установка
перезагрузка после установки
1-й раздел - старая система (собирается быть уничтоженной)
2-й раздел - сервер работает с 14.04 (время простоя уменьшено до одной перезагрузки)
Есть идеи, как этого достичь? Способна ли кукла на автоматизацию такого рода?
Спасибо!
1 ответ
Вы, вероятно, могли бы сделать, но прежде чем я доберусь до этого, рассмотрим традиционный подход:
Ждите в нерабочее время. Немногие серверы должны быть активными 24/7, а на тех, которые обычно имеют отказоустойчивую систему, можно обновлять один сервер за раз без каких-либо простоев. Если для запланированного времени простоя недостаточно важно, вы можете запланировать обновление.
Сделайте резервную копию диска на ваш второй диск. Но вы уже делаете это регулярно, верно?
Сделайте стандартное обновление LTS-LTS. Исправьте все, что сломано, и двигайтесь дальше. Службы на сервере будут оставаться активными до тех пор, пока они могут (MySQL и др. Будут перезапускаться при обновлении, но обычно они возвращаются обратно).
Единственный способ сделать то, что вы спрашиваете, с помощью виртуальной машины. Вы можете попробовать облегченные методы LXC или schroot, но я думаю, что вы, вероятно, захотите использовать VirtualBox хотя бы потому, что он старый и задокументированный.
Установите его, создайте виртуальную машину с почти физическим, необработанным доступом к диску, установите Ubuntu и настройте все. Я предоставлю вам, это дает вам большую гибкость для перенастройки, если вам нужно что-то изменить в обновлении.
Другой и единственный настоящий подход с высокой доступностью - это подход с горячей заменой / отработкой отказа. Запустите новый сервер, установите Ubuntu, настройте его, синхронизируйте данные (в идеале, делитесь ими из SAN через NFS между всеми серверами, чтобы обеспечить некоторую атомарную согласованность) и запустите его. Нажмите на переключатель, и через несколько микросекунд новый сервер займет место старого.
Более современный подход к этому состоит в том, чтобы просто виртуализировать все на своем компьютере, чтобы, даже если у вас был только один физический хост-сервер, вы могли просто создать другую виртуальную машину для своего нового сервера и выполнить простое мягкое переключение.
Я думаю, что первый традиционный метод дает вам максимальную безопасность, не усложняя существующую производственную настройку такими вещами, как виртуальные машины (при условии, что они еще не созданы).