Fedora Core 2 から Core 3 へ アップグレード

2004.12.16〜2004.12.23
2005.01.06 「サーバがハングアップし、不安定な状況が続く・・・」を追記

前書き

CD-ROMを使用して、Core3にアップグレードを決意。

用意するもの

PostgreSQLのダンプ取得

PostgreSQL のデータベースについて、ダンプを取得する。
# cd /var/lib/pgsql/backups
# pg_dumpall > pg_dumpall.20041215


CD-ROMでブートしてアップグレード

CD-ROMを挿入後再起動して、CD-ROMからアップグレードを試みる。
問題なく終了。

再起動するもsendmail起動中にハングアップ

失敗。なぜか起動しない。
現象としては、sendmail の起動中に応答がなくなる・・・
sendmail を起動中:

20分ぐらい待ってみてもやっぱり応答なし。
原因は不明。せめてこういうとき、タイムアウトということでとりあえず先に進んでくれればいいのに。
よくわからないので、Linux起動時にsendmailが起動しないようにしてみることにした。

こんな時はレスキューモード

Fedora Core 3 のCD-ROM版、一枚目をCD-ROMドライブに突っ込んで再起動。
一番初めの画面で、カーネルをオプション「rescue」をつけて起動。
linux rescue

あと、適当に質問に答えると、
既存のfstabに記述されているパーティションが
そっくりそのまま、/mnt/sysimage にマウントされた状態のLinuxが起動する模様。

とりあえずレスキューっぽく起動した後、/mnt/sysimage/etc/rc3.d/S80sendmailを削除
rm /mnt/sysimage/etc/rc3.d/S80sendmail

これでsendmailは自動で起動しなくなるから、大丈夫かな・・・、
CD-ROMを抜いて、Ctrl + Alt + Delete で再起動

ログイン画面でハングアップ・・・

今度は問題なく起動した!と思ったら、こんなところでハングアップしてしまった・・・。

Fedora Core release 3 (Heidelberg)
Kernel 2.6.9-1.667 on an i686
login:



こんなところでハングアップしたの初めて。
悲しい・・・

原因を探るべく、再度レスキューモードで起動。
ログを見てみる。

# tail /mnt/sysimage/var/log/messages
Dec 20 20:17:09 lark anacron: anacron startup succeeded
Dec 20 20:17:09 lark xfs[2125]: ignoring font path element /usr/X11R6/lib/X11/fonts/100dpi:unscaled (unreadable)
Dec 20 20:17:09 lark xfs[2125]: ignoring font path element /usr/X11R6/lib/X11/fonts/Speedo (unreadable)
Dec 20 20:17:09 lark xfs[2125]: ignoring font path element /usr/share/fonts/default/Type1 (unreadable)
Dec 20 20:17:09 lark atd: atd startup succeeded
Dec 20 20:17:09 lark messagebus: messagebus startup succeeded
Dec 20 20:17:10 lark dracd: rc.dracd startup succeeded
Dec 20 20:17:10 lark haldaemon: haldaemon startup succeeded
Dec 20 20:17:11 lark fstab-sync[2182]: removed all generated mount points

haldaemonが動いたあと、fstab-syncが動作した後止まっている様子。
haldaemonって何?と思い、ここを見てみる。
# cd /mnt/sysimage/etc/rc3.d
# ls -l
0 lrwxrwxrwx  1 root root 19 12月 22 06:08 +S98haldaemon -> ../init.d/haldaemon
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K01adsl -> ../init.d/adsl
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 K01yum -> ../init.d/yum
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K05innd -> ../init.d/innd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K05saslauthd -> ../init.d/saslauthd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K10dc_server -> ../init.d/dc_server
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K10psacct -> ../init.d/psacct
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 K10radiusd -> ../init.d/radiusd
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K12cWnn -> ../init.d/cWnn
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K12dc_client -> ../init.d/dc_client
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K12kWnn -> ../init.d/kWnn
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K15httpd -> ../init.d/httpd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K16rarpd -> ../init.d/rarpd
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 K20bootparamd -> ../init.d/bootparamd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K20iscsi -> ../init.d/iscsi
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 K20nfs -> ../init.d/nfs
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K24irda -> ../init.d/irda
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K25squid -> ../init.d/squid
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 K28amd -> ../init.d/amd
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 K30sendmail -> ../init.d/sendmail
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 K34dhcrelay -> ../init.d/dhcrelay
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K34yppasswdd -> ../init.d/yppasswdd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K35dhcpd -> ../init.d/dhcpd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K35vncserver -> ../init.d/vncserver
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K36mysqld -> ../init.d/mysqld
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 K45arpwatch -> ../init.d/arpwatch
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 K46radvd -> ../init.d/radvd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K50snmptrapd -> ../init.d/snmptrapd
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 K50tux -> ../init.d/tux
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K50vsftpd -> ../init.d/vsftpd
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K61ldap -> ../init.d/ldap
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 K70aep1000 -> ../init.d/aep1000
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 K70bcm5820 -> ../init.d/bcm5820
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K73ypbind -> ../init.d/ypbind
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K74nscd -> ../init.d/nscd
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 K74ups -> ../init.d/ups
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K74ypserv -> ../init.d/ypserv
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K74ypxfrd -> ../init.d/ypxfrd
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 K89netplugd -> ../init.d/netplugd
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K90isicom -> ../init.d/isicom
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 K91isdn -> ../init.d/isdn
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K92ip6tables -> ../init.d/ip6tables
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 K92ipchains -> ../init.d/ipchains
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 K96pcmcia -> ../init.d/pcmcia
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 K99readahead -> ../init.d/readahead
0 lrwxrwxrwx  1 root root 25 12月 23 01:03 K99readahead_early -> ../init.d/readahead_early
0 lrwxrwxrwx  1 root root 23 12月 23 01:03 S00microcode_ctl -> ../init.d/microcode_ctl
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S01sysstat -> ../init.d/sysstat
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S05kudzu -> ../init.d/kudzu
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 S06cpuspeed -> ../init.d/cpuspeed
0 lrwxrwxrwx  1 root root 18 12月 23 01:03 S08iptables -> ../init.d/iptables
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S10network -> ../init.d/network
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 S12syslog -> ../init.d/syslog
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 S13irqbalance -> ../init.d/irqbalance
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S13portmap -> ../init.d/portmap
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S14nfslock -> ../init.d/nfslock
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S18rpcgssd -> ../init.d/rpcgssd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 S19rpcidmapd -> ../init.d/rpcidmapd
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 S19rpcsvcgssd -> ../init.d/rpcsvcgssd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S25netfs -> ../init.d/netfs
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 S26apmd -> ../init.d/apmd
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 S26lm_sensors -> ../init.d/lm_sensors
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 S28autofs -> ../init.d/autofs
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 S40smartd -> ../init.d/smartd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S50snmpd -> ../init.d/snmpd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S55named -> ../init.d/named
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 S55sshd -> ../init.d/sshd
0 lrwxrwxrwx  1 root root 16 12月 23 01:03 S56xinetd -> ../init.d/xinetd
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 S58ntpd -> ../init.d/ntpd
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 S64postgresql -> ../init.d/postgresql
0 lrwxrwxrwx  1 root root 22 12月 23 01:03 S80courier-imap -> ../init.d/courier-imap
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 S85gpm -> ../init.d/gpm
0 lrwxrwxrwx  1 root root 14 12月 23 01:03 S87iiim -> ../init.d/iiim
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S90canna -> ../init.d/canna
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S90crond -> ../init.d/crond
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 S90xfs -> ../init.d/xfs
0 lrwxrwxrwx  1 root root 17 12月 23 01:03 S95anacron -> ../init.d/anacron
0 lrwxrwxrwx  1 root root 13 12月 23 01:03 S95atd -> ../init.d/atd
0 lrwxrwxrwx  1 root root 20 12月 23 01:03 S97messagebus -> ../init.d/messagebus
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S97rhnsd -> ../init.d/rhnsd
0 lrwxrwxrwx  1 root root 15 12月 23 01:03 S98dracd -> ../init.d/dracd
0 lrwxrwxrwx  1 root root 19 12月 23 01:03 S98haldaemon -> ../init.d/haldaemon
0 lrwxrwxrwx  1 root root 11 12月 22 06:10 S99local -> ../rc.local

これは、Fedora Core 3 の新機能「HAL」のデーモンのよう。
怪しいので削除した。

# rm S98haldaemon

ちなみに、HALの説明を見てみたら、こんなことが書いてあった。

# rpm -qi hal
Name        : hal                          Relocations: (not relocatable)
Version     : 0.4.2                             Vendor: Red Hat, Inc.
Release     : 1.FC3                         Build Date: Thu Dec  2 06:12:31 2004
Install Date: Wed Dec 22 06:08:27 2004      Build Host: tweety.build.redhat.com
Group       : System Environment/Libraries   Source RPM: hal-0.4.2-1.FC3.src.rpm
Size        : 354734                           License: AFL/GPL
Signature   : DSA/SHA1, Thu Dec  2 06:51:46 2004, Key ID b44269d04f2a6fd2
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL         : http://www.freedesktop.org/Software/hal
Summary     : Hardware Abstraction Layer
Description :

HAL is daemon for collection and maintaining information from several
sources about the hardware on the system. It provdes a live device
list through D-BUS.


再起動成功!

haldaemonを起動しないようにして、再起動実行
今度はちゃんと起動できた・・・。ほっと一息。

PostgreSQLのDBリストア

pg_dumpallで出力したダンプを使用してリストアするので、
手始めに既存のDBを初期化する
# cd /var/lib/pgsql/data
# rm -r  *
# initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.eucJP.

fixing permissions on existing directory /var/lib/pgsql/data... ok
creating directory /var/lib/pgsql/data/base... ok
creating directory /var/lib/pgsql/data/global... ok
creating directory /var/lib/pgsql/data/pg_xlog... ok
creating directory /var/lib/pgsql/data/pg_clog... ok
selecting default max_connections... 100
selecting default shared_buffers... 1000
creating configuration files... ok
creating template1 database in /var/lib/pgsql/data/base/1... ok
initializing pg_shadow... ok
enabling unlimited row size for system tables... ok
initializing pg_depend... ok
creating system views... ok
loading pg_description... ok
creating conversions... ok
setting privileges on built-in objects... ok
creating information schema... ok
vacuuming database template1... ok
copying template1 to template0... ok

Success. You can now start the database server using:

    /usr/bin/postmaster -D /var/lib/pgsql/data
or
    /usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start

DBをリストアする
# /etc/init.d/postgresql start
postgresql サービスを開始中:                                [  OK  ]
# su - postgres
# createdb postgres
# psql -f /var/lib/pgsql/backups/pg_dumpall.20041215

sendmailが起動しない理由は、bindの設定ファイルがデフォルトに戻っていたから

<>Fedora Core 3 へのアップグレードにより、
bindの設定ファイル「named.conf」が、デフォルトに戻っていて、
既存のファイルは、「named.conf.rpmsave」という名前になって保存されていた。

sendmailが起動しなかったのも、この影響による。
早速、設定ファイルを修正し、sendmailを起動してみた

# /etc/init.d/sendmail start
sendmail を起動中:                                          [  OK  ]

カーネルがハングアップし、不安定な状況が続く・・・

これでバージョンアップ終わりかと思いきや、
何故かサーバ稼動中、キーボードが利かなくなることが1日に4、5回
不定期におきるようになった。
pingにも応答しなくなるので、おそらくカーネルがハングアップしていると思われる。

その度にHDD or ファイルが壊れないことを祈りつつ。電源プチプチ再起動。

/var/log/messages等を見ても、ハングアップの前兆をあらわすようなログは出力されておらず、
困り果てる毎日が続いた。

本当に参った。もうクリーンインストールしてしまおうかと思っていたが、
ある日、Tomcat が動いているときにハングアップすることが多いことに気づく。

そういえば、我が家の Tomcat は、 Fedora Core 3にアップグレードそる前、
自分でソースを持ってきてコンパイルして生成したファイル「mod_jk2.so」を
使っている。

ということで、「mod_jk2.so」のコンパイルを再度行ってみると、
こんな結果になった。

[再コンパイル前]
# cd /usr/lib/httpd/modules
# ls -l mod_jk2.so
-rwxr-xr-x  1 root root 1454728 Apr 27  2004 mod_jk2.so

[再コンパイル後]
# cd /usr/lib/httpd/modules
# ls -l mod_jk2.so
-rwxr-xr-x  1 root root  706433 Jan  3 00:14 mod_jk2.so

ファイルのサイズが変わった!
残念ながら、具体的に何がどう変わったかは分からない。
けど、ファイルのサイズに変化があったということはきっと何かが変わっているだろうと推測。

これで Tomcat を起動してみたところ、サーバがハングアップしなくなりました。
もしかしたら、これが原因だったのかも・・・。

結論

Fedora Core 2からFedora Core 3へのアップグレードは、
今までで一番、現状復旧するのに時間がかかった。
今まで、Redhat9.0 -> Fecore Core 1 -> Fedora Core 2とアップブレードしてきたが
これほどトラブルは多くなかった。

お金に余裕があるのならば、もう一台PCを用意して、
新規にFedora Core 3をインストールして、
既存のデータをそこに移行したほうが、トラブルも少なく。
時間的コストもかからないと思う。
(復旧に4日もかかってしまったので)

Fedora Core 4 がリリースされるのにあわせて、
ちゃんと貯金しようと思う。
 
導入手順書へ戻る