日頃の作業はもっぱら Ubuntu 上で行っている山本泰宇です。
ご存知の方も多いと思いますが、Ubuntu は Canonical Ltd. で開発されている Linux ディストリビューションです。Debian Gnu/Linux をベースにしていますが、必ず2年に一度の長期サポート版(LTS)をリリースしてくれるので、安定して運用していくにはありがたい存在です。
その LTS ですが、最新は去年4月にリリースされた Ubuntu 12.04 です。さらに一つ前が Ubuntu 10.04 となります。サイボウズでは Ubuntu 12.04 がリリースされた去年の4月から9月まで半年をかけて、Ubuntu 10.04 のシステムを 12.04 に移行しました。移行プロジェクトについては機会があれば別に書こうと思います。
今回は、移行作業の過程で作成した調査資料を公開します。
資料は別サイトで公開しています。Ubuntu 10.04 から 12.04 に至るまでの変更を追跡して調査しました。
調査の過程で様々な問題を検出して対処したのですが、印象に残るものを挙げておきます。
新 iSCSI ターゲット LIO
Ubuntu 12.04 では従来の iSCSI Enterprise Target (iET) の代わりに、より高機能な LIO が iSCSI ターゲットとして組み込まれています。LIO は iET と比較していろいろといい面はあるのですが、情報が不足しているのが玉に瑕です。そこでプログラムから利用できる API やサイボウズで利用するにあたって一部改造した情報を公開しました。
- Evaluating LIO Linux iSCSI Target (英語記事)
- iSCSI target (日本語記事)
Apache で X.509 証明書の取り扱いに不具合
詳細はこちら。証明書 DN で使う UID 属性の OID がなぜかおかしくなっているというもので、まさかそんな箇所に不具合が仕込まれるとは想像もしませんでした。事前の検証で検出できたとはいえ、ヒヤッとしました。
BDI flusher が起動せず、tar 展開したファイルが空になる
詳細はこちら。ext4 ファイルシステムのように遅延アロケーションするファイルシステムで、明示的に fsync しないプログラム(tar や cp)でファイルを作成後、この不具合に見舞われて、さらにサーバーがクラッシュするとはじめて発覚する不具合です。幸い運用前に検出できたのですが、正直なところ間一髪でした。
fsync すればいいのはその通りなんですが、tar や cp でファイルを展開した後の sync はうっかりし忘れる人、多いのじゃないでしょうか。いや、普通ならしなくても大した問題にはならないのですけれどね。。
こうした取り組みの結果、一切トラブルを起こすことなく OS 移行は完了しました。皆様の仕事のお役に立てば幸いです。お気付きのことがあれば twitter でご連絡ください。