酒日記

2001 06 03

Sun, 03 Jun 2001

キリンラガー (5% × 1000 ml)

缶のラガー呑んだの久しぶり。だが、なんだか金属っぽい味と変に抜けた後味。 モルツや一番絞りのほうがいいなあ。

...

grass の HDD は現在 IBM DTLA-307030 (7200rpm 30GB) なのだが、ごく稀に「キュキュキュキュキュ」と音を発して帰って来なくなったり(Ctrl + C で復帰できるけど)、Maildir 形式のメールボックスを開いてると「キュウッ」と心臓に悪い音を立てることがあったり、 なんだか不安。なので、クラッシュする前に HDD を丸ごと乗せかえ作戦発動。

HDD は Maxtor の 34098H4 (5,400rpm 40GB)。以前とても音が静かだった記憶があるので。

Hard Disk Upgrade Mini How-To を見ながら、そのとおりに作業。

  • 新しい HDD をセカンダリのマスタとして接続
  • fdisk で領域確保。分割は、
       Device Boot    Start       End    Blocks   Id  System
    /dev/hdc1             1         5     40131   83  Linux
    /dev/hdc2             6      4982  39977752+   5  Extended
    /dev/hdc5             6       643   5124703+  88  Unknown
    /dev/hdc6           644       898   2048256   88  Unknown
    /dev/hdc7           899       931    265041   82  Linux swap
    /dev/hdc8           932      1059   1028159+  88  Unknown
    /dev/hdc9          1060      4982  31511497   88  Unknown
    
    こんな感じで。Id 88 は ReiserFS ね。
  • mkfs (mkreiserfs) でフォーマット
  • hda に /new-disk/{boot,usr,var,home} というマウントポイントを作って、新 HDD の各パーティションをマウント。 /new-disk/proc はディレクトリだけ作っておく。
  • シングルユーザモードに移行して、旧 HDD の内容を丸ごとコピー。
    # telinit 1
    # cp -a /bin /boot /dev /etc /home /lib /misc /mnt /opt /root /sbin /tmp /usr /var /new-disk
    
    システムとデータ合計10GB程あるので、1時間以上掛かる。
が、コピー中に /lib/libc-2.1.3.so が読み込めない、という旨のエラーが (詳細なエラーメッセージは控えられなかった)。よりにもよってそんな大事なファイルが・・・ まあ、どうしようもないので続行。/lib はルートパーティションにあるから fsck も出来ないし。

コピー完了後、/new-disk/etc/fstab を新環境にあわせて書き換え。 ブートは取り敢えず Grub のブートフロッピーでやることにして、lilo.conf はいじらず。 電源を落として、元の HDD をセカンダリに。新しい HDD をプライマリに (要するに入れ換えた)

で、起動。普通に起動していって・・・ログイン画面に(一安心)。 しかしここで、root はログインできるが一般ユーザでログインできず。懸案の /lib/libc-2.1.3.so を見てみると、 パーミッションが -rw------- になってて、サイズも本来なら 5M あるハズなのに 1M ちょっとしかない。 ・・・つまり壊れてるわけだ。うひー。

もとの HDD (今は hdc になってる) を /mnt にマウントして、

# cat /mnt/lib/libc-2.1.3.so > /dev/null
等とやってみると、あの忌まわしい「キュキュキュキュキュ」の音が! これだったのか・・・しかし、libc が壊れかけてても普通に使えてたってのは何というか、恐ろしい。

さて、まず libc をどうにかしなくちゃと、aqua からファイルを FTP で持ってきて、迂闊にも

# cp /tmp/libc-2.1.3.so /lib/libc-2.1.3.so
等としてしまい、直後に固まる。Linux は /bin /sbin にあるような基本的なコマンド類もことごとくダイナミックリンクなので、 libc を上書きしようとした瞬間ににっちもさっちも行かなくなったのだな。
# どうしてこういうことって、Enter キーを押した直後に思い出すんだろうかね。

仕方ないので、また電源切って HDD を入れ換えて、旧 HDD で起動。新 HDD を /new-disk にマウントして、aqua から持ってきた libc-2.1.3.so を /new-disk/lib/libc-2.1.3.so に上書きして解決。・・・こう書くとあっさりしてるけど、実際はビール2リットルのんで明け方に作業してるわけで、これがまた。長かった・・・
# こういう危険な作業を酔ってる時にやってしまうのも、大変に迂闊だといえましょう。

...

コピーしたファイルのチェックを

# find /lib -type f -exec cmp {} /new-disk{} \;
のようにしてやってみる。どうやら本当にピンポイントで libc だけが壊れてたらしい・・・マーフィーの法則って奴ですか。


モルツ (5% × 1000 ml)

スラッシュドット ジャパンが面白い。 ついつい仕事中に入り浸ってしまう(笑)

しかし、気になるのは書いてある内容より運用しているシステムのほうだったりする、ってのが仕事漬けの毎日に毒されてしまっているというか何というか。 Apache + mod_perl + MySQL で運用されているので、ますます親近感 (Java だったりすると親近感がまるで沸かないのね(^^;) 何故気になるかというと、ざっと見たところ slashdot と同程度 (ページビューとかユーザ数じゃなくて、 画面遷移の多さとカスタマイズ度合) のシステムを一ヶ月以内に作らねばならない、という切羽詰まった仕事の都合があるもので、ええ。

せっかくオープンソースなのだから、ソースでも見てみんベ、と、ここから slash-2.0.0.tar.gz を落としてきて、展開してみてみる。んー。Oracle と PostgreSQL でも動かせるんですね。素晴らしい。 で、ざっと *.pm ファイルの行数を数えてみると、25 ファイルで合計 18,000 行ほど。 自分がこの前一週間ででっち上げた BBSの *.pm ファイルが 7 ファイル 4,000 行ほど。 今度の仕事、概算でその BBS の 4倍程度の規模になるかなあ、と見込んでいるので・・・

俺の書いたへぼいコードと比べるのは失礼だけれども、大体同程度の規模になるわけだな。 これ、一ヶ月で出来るのかしらん・・・


powered by blosxom