メインコンテンツ | メニュー

Main Contents

2006年12月24日

FreeBSD4 から FreeBSD6 へのアップグレード

FreeBSD4.11-RELEASEのサポートが2007年1月31日で切れるため、現在稼動している 4.11 のサーバー群をすべて 6.2 にアップグレードすることに。
ていうか、6.2-RELEASE すげえ遅れてるし。。

とりあえず、M/B と CPU を交換しなくてはならないやつもいるので、早急に作業することに。
DNS としても稼動しているやつもあり、 BIND8 → BIND9 への移行もしなくてはいけない。
ついでに、 ipf や ipfw で動いているのを、全部 pf にしてやりたい。

というわけで、 BIND の移行も含めて、日本で書いてある記事が見あたらなかったので、ざっくりですが書いておきます。
基本的に、 /usr/src/UPDATING に全部書かれているので、そっちを読んだ方が良いです。
英語は読めんという人は、やらない方が懸命。。この作業、非常にリスク高いですから。。

4.11-RELEASE から 5.5-RELEASE へアップグレード。
6.x へのアップグレードは、5.4 以降からのみのサポートとなるので、2段階のアップグレードとなります。。

1. RELENG_5_5 へ cvsup
2. /usr/src/UPDATING をよく読む(重要。頑張って英語読みましょう)
以下、 /usr/src/UPDATING の抜粋

	<make sure you have good level 0 dumps>
	<maybe fix /etc/fstab>					[1]
	make buildworld						[2]
	make buildkernel KERNCONF=YOUR_KERNEL_HERE		[3]
	cp sys/${MACHINE}/conf/GENERIC.hints /boot/device.hints [4]
	make installkernel KERNCONF=YOUR_KERNEL_HERE
	cd sys/boot ; make STRIP= install			[5]
								[6]
	<reboot in single user>					[7]
	/usr/src/etc/rc.d/preseedrandom				[8]
	mergemaster -p						[9]
	rm -rf /usr/include/g++
	rm -f /sbin/mountd
	make installworld					[11]
	mergemaster -i						[12]
	<reboot>

[11] と [12] の間に BIND のアップグレードを行います。
アップグレード方法については、下記を合わせて読むと良いでしょう。
BIND9 用の named.conf をあらかじめ用意しておくと作業がスムーズに進みます。
http://www.toshikazu.org/archives/000071.html
http://www.soi.wide.ad.jp/class/20030038/slides/34/index_bar.html
http://www.bsddiary.net/doc/bind9.html
[2] の時に気をつけるのは、 /etc/make.conf に COMPAT4x=YES の文があることを確認すること。
これがないと、make installworld の途中で再起不能に陥ります。
kernel config にもいろいろ変更が入っているので、 5.5 の GENERIC からしっかりマージしてやることが重要です。
[9] の時に、追加必須な user がいくつかあるので気をつけましょう。

めでたく 5.5-RELEASE にアップグレードできたら、6.x にアップグレード。
ここまできちゃえば、あとは楽ちんです。

1. RELENG_6 に cvsup (6.2 が未リリースのため)
2. /usr/src/UPDATING をよく読む(重要。頑張って英語読みましょう)
以下、 /usr/src/UPDATING の抜粋
<make sure you have good level 0 dumps>
	make buildworld					[9]
	make kernel KERNCONF=YOUR_KERNEL_HERE		[8]
							[1]
	<reboot in single user>				[3]
	mergemaster -p					[5]
	make installworld
	make delete-old
	mergemaster -i					[4]
	<reboot>

4.11 → 5.5 の時とは違い、かなり楽ちんです。
make buildkernel, make installkernel ではなく、 [8] の make kernel だけで kernel をビルドします。
こちらも、kernel config を GENERIC からしっかりマージしてやることが重要です。
options COMPAT_FREEBSD4 と、
options COMPAT_FREEBSD5 の追加必須。
あとは、さほど難しくないと思います。

久々に、FreeBSD ハンドブック を読んだんですが、Chapter 8. FreeBSD カーネルのコンフィグレーション とか非常に参考になることがわかりやすく書かれているので、読んでおくと良いと思います。

あとは、 6.2-RELEASE を待って、リリースされたら、 RELENG_6_2 にしてやれば完璧。
しかし、以前は kernel config に options SCHED_ULE がコメントアウトしてあったのだが、
options SCHED_4BSD のみになってるし。ULE すけじゅーらはどこいったー?

サーバー復旧。。

11/27のエントリーを書いた後、RAID1 のリビルドをしていたのだけど、不幸にも途中で停止(失笑)
ディスクがかなりぼろぼろのようで、リビルド不可能らしい。

仕方がないので、とりあえず ad2 のみで稼動させることに。
/etc/fstab を書きかえねばならないのだけど、起動不能。
11/27 の時みたいに、インストーラから起動して、Fixed mode で書きかえして、何とか起動。
起動時に PIO4 に落ちるけど、仕方あるまい。。
とりあえず動いてるからよしとしよう。

こうなったら、ディスクを全交換するしかないので、250GB のやつを買ってきた。
160GB → 250GB のアップグレード。
このサーバーを構築したときなんて、20GB が主流で、こいつは 容量多くないとダメだから 60GB にして、大容量にホクホクしてたんだけどなあ。
時代は進んだものです。。

話を戻して、ディスクの交換方法を検討。
現状では、 PIO4 で動作させているので、激遅いからバックアップに時間がかかりすぎる。
あまり長時間止められないので、


  1. RAID1 で 250GB にミラーリングさせる。
  2. もう 1台に新規スライスを作成
  3. リストア


という方法でいくことに。
こうすれば、DMA の性能を活かしてリストアの時間を短縮できると思ったのですが。。。
現実は厳しかった。
元のディスクがかなり重症で、 hard error でまくり。リビルド不可能。。。

仕方がないので、 /stand/sysinstall から 250GB に新規スライス作成。
hard error でまくりながら、 dump to restore。
やり方は下記参照
http://www.jp.freebsd.org/QandA/HTML/1859.html

何とかディスク交換は完了しました。

しかし、まだ悪魔は待っていた。
AM3:00、periodic daily が走り、DBの日度バックアップが走る。
負荷が上昇してきたところで、動作中のプロセスがことごとく core を吐き、kernel panic を起こしてお亡くなりになった(失笑)

再起動しても起動せず。ファンすら回らない。
CPU か M/B が壊れたか。。
夏場に、CPU ファンが故障して交換したことがあった。その時は、CPU はちゃんと動いていたので、大丈夫だろうと思っていたのだが、それが今になって死んだのか。。。
だめもとで、CPU はそのまま。予備の M/B に交換(古いパーツのストック)したら、とりあえず動いた。
M/B がぶっ壊れたか。。
とりあえず動いたので、 CPU と M/B の交換計画を練ることに。。寝れん。

ずらずら書いてますが、数日間にわたって格闘しておりました。
具体的な日付を忘れたので、ずらずら書きます(失笑)

CPU と M/B の交換計画

  • Athlon XP は入手不可のため、入手可能な CPU にする
  • 現在の DDR400 のメモリが使用可能な M/B
  • AGP の VRAM が使用可能な M/B

Intel は CPU が高価なため、予算オーバー。DDR400 & AGP が使用可能な M/B は非常に限られ、その中から DFI LANPART nF3 Ultra-D に決定。

CPU は、予算内で.できるだけ高性能なものを選択、 Athlon64 x2 4200+ に決定。

しかし、問題がある。
現在、 FreeBSD 4.11-RELEASE のため、nForce3 のチップセットでちゃんと動くか不明。
どこかで動作しないような噂を聞いた気がするのだ。。
そこで、次のような順で交換することにした。

  1. kernel を 4.11 → 5.5-RELEASE にアップグレード
  2. M/B と CPU を交換
  3. kernel を 6-STABLE にアップグレード(6.2 が未リリースのため)

これで何とかうまくいった。 via FreeBSD4 から FreeBSD6 へのアップグレード
動作は非常に良好。
amd64 への移行は、クリーンインストールでないと、リスクがかなり高いため i386 でいくことに。
それでも、dual core は超快適。ちゃんと SMP で動作してくれています。
既存のメモリを使いまわした関係で Dual Channel ではないのだけど、今までに比べたら十分高速に動作してくれるし。
ports の java/jdk14 の構築が 1時間ちょっとで終了した模様。celeron 700 とかだと半日以上かかっていたのに。。
なんという速さ。。


Copyright © here.Creative Commons LicenseThis weblog is licensed under a Creative Commons License.