Net: SaaSes の VPS 上の Debian GNU/Linux を 6.0 へ

以下、仮想サーバを起動できなくなる可能性があるので、この情報ついての取り扱いは自己責任でお願いします。
この通りやったから、サーバが起動しなくなったとか言われても、私は知りません。

SaaSesOsukini サーバ (VPS) のほうも、Debian GNU/Linux を lenny から squeeze にアップグレードしてみました。

こちらのサーバは Xen による準仮想化サーバなので、さくらの VPS とは若干事情が異なります。

まずはサポートに、自分の仮想サーバを実行している Domain-0 サーバについて、Domain-U のカーネルの読み込みが PyGrub であるか、また、Linux カーネル 2.6.32-5 の Xen 用カーネルが動作するか、を確認してみました。

当然ながらサポート外のバージョンを動かすことになるので、自己責任にはなるのですが、私が借りているサーバに置いては、PyGrub 起動、Linux カーネル 2.6.32-5 については動く可能性がある、とのことでしたので、思い切ってアップグレードを行いました。(注意: 同じブランドのサービスでもほかのサーバが同等の構成になっているかどうかは不明です)

ちなみに Xen の仮想化では、カーネルが仮想サーバ側からは触れない位置に置かれることもあり、そのような設計の場合は、ユーザによるカーネルの入れ替えは出来ません。カーネルの読み込みに、PyGrub を採用していると、仮想サーバ内のカーネルを読んで起動してくれるので、これが可能になります。

手順としては、基本的には「Debian 5.0 (lenny) からのアップグレード」にしたがって、進めていく形になります。

  1. まずはファイルをバックアップ。
  2. hold されているパッケージがないか確認。
  3. /etc/apt/sources.list を書き換え。
  4. 既存パッケージを削除されないようにして、パッケージをアップグレードする。
    # apt-get update; apt-get upgrade
  5. カーネルをインストールする。
    # apt-get install linux-image-2.6.32-5-xen-amd64
    ※必ず Xen 用のカーネルをインストールする。(この例では 64bit なので -xen-amd64 となる)
  6. udev をインストールする。
    # apt-get install udev
  7. /boot/grub/menu.lst を以下のように修正する。

    default 0
    timeout 5

    title Debian/Ubuntu
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.32-5-xen-amd64 root=/dev/xvda1 ro
    initrd /boot/initrd.img-2.6.32-5-xen-amd64

    ※kernel や initrd は実際にインストールされたパス・ファイル名を指定する。

  8. 意を決して再起動する。(※この再起動でサーバにアクセスできない場合は失敗。諦めてコントロールパネルから、OS を再インストール。)
  9. パッケージをアップグレードする。
    # apt-get dist-upgrade
  10. やっぱり意を決して再起動する。
  11. 設定などを確認する。必要であれば、一時的に削除していたパッケージをインストールして設定する。
  12. 完了

SaaSes の Osukini サーバはリモートコンソールがないので、一発勝負的なところがありますね。

※実際一発勝負的にやってしまい、ミドルウェアの調整で四苦八苦してしまい、環境を戻してくるまで、のべ 16 時間程度かかっています。疲れました。(例えば、MySQL サーバのバージョンが変わって、起動できなくなったり、色々面倒な設定変更が多数ありました。当たり前ではありますが、バックアップは必ず取って作業する必要があります。)