ひとりごと

新しい記事:[2413]  古い記事:[2411] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2009/01/10 (土)

・ はじめての AMD64

久しぶりにZFSを使ってみようかなーと思っているのですが、ZFSはメモリを食いますし、 x86(32bit) 環境よりも AMD64(64bit) の方がいろんな面で適しているそうです。最終的には AMD64 + ZFS を狙っているのですが、同時にやるとエラいことになると思うので 難易度の高そうな AMD64化から先にやってみました。

なお、うちのサーバは gmirror による2台のmirror(ad1,ad2) + dump保管用(ad0)の合計3台構成になっています。何かあった時にすぐに戻せるよう、mirror は切り離してから 64 化することにしました。

  1. 別の SATA-HDDにAMD64なFreeBSDをインストール。 前もって make buildworld, make buildkernel を済ませておく
  2. (1)を ad0 のところに接続してシングルユーザモードで起動。 gmirror を解除する
    # gmirror stop gm0
    # gmirror clear ad1
    # gmirror clear ad2
  3. 一旦シャットダウンしてad2 を物理的に切り離す
  4. ad1 を適当なところにマウント
    # mount /dev/ad1s1a /mnt
    # mount /dev/ad1s1d /mnt/usr
  5. 今度再起動するとデバイス名が変わってるので、/mnt/etc/fstabを適当に編集 (/dev/gmirror/gm0 -> /dev/ad1 等)
  6. インストール実行
    # cd /usr/src
    # make installworld DESTDIR=/mnt
    # make installkernel DESTDIR=/mnt
    # mergemaster -Ui -D /mnt
  7. 再起動した後 ports を再構築

手順はだいたいこんな感じ。文章で書くとなんてことはないのですが、12時間ぐらいかかりました(爆)。いや、想定外の事項が多すぎて・・・。

いやはや、難易度高めといっても FreeBSD5~6, 6~7 なんかはわりとスイスイだったので、こんなに時間がかかるとは思いもよりませんでした(^_^)。しかも PHP とか PostgreSQL とか軒並み動かないので、ports ツリーを全部 make し終わるまでサーバーを復旧させられないし(T^T)。(7)だけで数時間かかりましたよ。

でもね、苦労した甲斐はありました。
# uname -a
FreeBSD toriyu.toriyu.dd.que.ne.jp 7.1-RELEASE-p1 FreeBSD 7.1-RELEASE-p1 #0: Fri Jan 9 15:48:34 JST 2009 root@:/usr/obj/usr/src/sys/GENERIC amd64

じゃじゃーん。ちゃんとamd64になってますね。まぁハードウェアが同じなので苦労した割には違いがわかんないのですけど(^_^)。気がついたところでは エンコード用に2GBを超えるファイルのファイルサイズをPHPで取得したときにこれまで負の数で返ってきてたのが、64ビット版ではちゃんと大きい整数になってるみたいです。

細かいところはいろいろ調整しなくちゃいけないところもあるかと思いますが、それに関してはおいおいやっていくつもりです。

[つっこみ]

新しい記事:[2413]  古い記事:[2411] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)