Блог Конфуция
Обновляем виртуозную убунту 06.01.2009

UPD: Умные вещи про бэкпортинг.

< strong >UPD: При обновлении до харди не обязательно проходить всю цепочку edgy → feisty → gutsy → hardy (так как это уже невозможно), достаточно сразу записать в /etc/apt/sources.list везде hardy. Если будет ругаться на что-то связанное с tzdata (например, Could not perform immediate configuration (2) on tzdata), то достаточно удалить этот пакет: apt-get remove tzdata. Он потом все равно установится в процессе обновления.

Решил переехать со старой ubuntu 6.10 (можно было и с 6.06, но уже поздно) на новую ubuntu 8.04 внутри контейнера Virtuozzo на мастерхосте. Конфигурация, как видите, мудреная, и без эксцессов не обошлось.

Сначала проапгрейдил систему через смену репозиториев, запуская для каждого apt-get update и apt-get dist-upgrade. Это рисковано, но сработало. Перезагрузив VPS, обнаружил, что он не запускается и висит на стадии запуска klogd. Поговорил с техподдержкой, и это, как ни странно, помогло: пока мы болтали с тетей из мастерхоста, сервак загрузился. Он, оказывается, не висел, а просто долго чего-то ждал. После отключения /etc/init.d/klogd система стала стабильно загружаться за несколько секунд.

Дальше — интереснее. Обнаружил, что убунта больше не использует sysvinit, а вместо него все запускается с помощью их нового апстарта (upstart). Почитал про него и понял, что этот новый апстарт есть именно то, что нужно. Он умеет загружать все параллельно, построен на событиях и — что главное для боевого сервера — умеет красиво респавнить упавшие демоны.

Как же это здорово, подумалось мне тогда. Вот сейчас заиспользую этот чудесный апстарт. Но не тут-то было. Он при апгрейде не установился. Команда cat /etc/issue пишет Ubuntu 8.04 \n \l, а апстарта нету. Как же так?

Ну, ничего. Мы же на каникулах — сейчас и апстарт поставим.


apt-get install startup-tasks system-services \
    upstart-compat-sysv upstart-logd
Поставил, и сервер напрочь отказался запускаться. После нажатия кнопки запуска в панели управления сервер работал около двух секунд и снова становился выключенным. Но это не беда, у меня остался полный бекап системы.

Как отлаживать такой черный ящик — непонятно. Выход нашелся очень забавный. Если VPS выключен, то через панель управления смотреть и править его файлы нельзя. Режима восстановления у мастерхостовского виртуоза нету. Однако, если в начале файла /etc/init.d/rc поставить sleep 600, то можно 10 минут спокойно лазить по файлам на еще не загруженном сервере. Не очень удобно, но уже что-то. Дальше обнаружилось, что до сбоя логи не пишутся никакие, хотя, процессы инициализации запускаются.

С помощью метода научного тыка, строки echo OK > my-debug.log и моральной поддержи кота Шарика (в пять утра не спит только кот и его программист) обнаружил, что сервак убивает одна единственная строка kill -USR1 1 в /etc/init.d/mountall.sh. Видимо, новая версия апстарта из моего сервера от такой грубости падала, и виртуоз решал, что пора сервер выключать, раз инит уже свалился. Повторю, мастерхостовский виртуоз делал все это очень быстро и очень молча. Хитрец такой.

Если вы знаете быстрый, надежный и не очень недорогой VPS-хостинг с адекватными версиями линуксов и возможностью отладки, поделитесь со мной пожалуйста… ну, пожалуйста, пожалуйста, пожалуйста, пожалуйста ;)

Теги:
  • сервер
  • ubuntu
  • virtuozzo
  • openvz
  • masterhost
  • upstart
Очень жду ваших комментариев на почту или на гитхаб.