Island Life

< お題:pingコマンド | Gaucheの低レベルマクロ機構 >

2014/11/28

practical-scheme.net OS移行

実はこれまでUbuntu 10.04LTSで持たせてきたんだけどサポート切れが近づいてきたし 以下の事情にも迫られて、14.04LTSに切り替え。記録のためにメモ。

最初にサーバをLinodeに移行したのは(2010年の始め)で、 当時まだVPSのメモリが高かったから節約のために32bit Ubuntu9で構築した。

その後色々使う用途が増えてきたのと価格が下がったので、メモリ4GBのノードに移行したんだが、 ユーザランドに色々インストールしてたのを入れ直すのが面倒だったので、 10.04への切り替えは「カーネル64bit、ユーザランド32bit」という変則的な対応で 済ませた。確かLinodeのボタン一発で変更出来たような気がする。

それが、最近になって32bitアドレス空間ではいろいろ不便が生じて来ていた。 Kahuaプロセスが2GB超くらい食うことがあるんだけど、Conservative GCだと アドレス空間がつまってくるとfalse pointerの発生確率が上がってメモリ効率がどんどん 落ちてくるのだ。 そこで休日を一日潰して完全64bit化することにした。10.04サポート切れ直前に 慌てるのもいやだし。

OS部分は別パーティション切って分離してて、そこに対する変更はgitで管理してるから いいんだけど、ユーザランドの方で 思いつきでいろいろ機能足したりサービスをホストしたりしてるので、 64bit依存部分だけ綺麗に分けられるようになってない。 バイナリは再インストールが必要だし、データのうち機種依存のもの (gdbmファイルが筆頭) はコンバートが必要だ。

そこで以下の手順で移行。

  • Linodeで新たなノードを作り、OSパーティションに14.04LTSインストール。
  • 必要なシステムソフトをapt-get install。
  • システム設定のカスタム部分をgitから復帰
    • Apacheが2.2から2.4になってて、confファイルの作法がちょっと変わってた (参考)
  • Gaucheなど必要なコードをコンパイル、インストール
    • いくつか細かい修正。Kahuaにsvnへの参照が残ってたりとか。
  • データ部分はひとつのディレクトリの下にまとまっているので、
    1. 変換が必要なものについてはスクリプトを流してダンプを作っとく
    2. ディレクトリまるごとコピー
    3. スクリプトを流してダンプからバイナリデータ復元
  • 元のノードとIPをswap。
    • swap自体はノードを立ち上げたまま出来るんだけど、その後うまくssh接続 できなかったのでノードを再起動した。sshdだけの再起動でも良いかもしれない。 (もちろん手元のknown_hostsのエントリはssh-keygen -Rで消しとく。known_hosts のホスト名がいつの間にかハッシュ化されててちょっと戸惑った。)
  • サービスを一個づつ立ち上げて確認
    • ディレクトリのオーナーやパーミッションで何ヶ所かひっかかった。 一度直せば動くんでつい忘れちゃうんだが、スクリプトで復元できるように しとかないとな。

LinodeはWeb管理画面もそこそこストレス無く動くしなかなか良いですな。 あとIP swapが出来るのでDNSいじらないで良いのは有難い。

Tag: Hosting

Post a comment

Name: