2010年10月24日日曜日

KVM 上に RH7.3 を p2v

古いサーバ(RH7.3)を、最新サーバ(CentOS5.5 x86_64)上の KVM に p2v しようとして調査&実験中。
RH7.3 は、Web サーバとして使っている程度なのだが、これまで7年ほど安定して動いていたし、全く新しくサーバを作るというのも面倒(と思えるだけ?)なので、そのまま丸ごと p2v しようと調査している。
まずは、CentOS5.5 の KVM 上で、RH7.3 がどの程度動くものか調査。RH7.3 を最小インストールしたところ、まあ普通に動いた。が、どうにもI/O性能が低い。これは、KVM の設定で、writeback に変更して解決。
    <disk type='block' device='disk'>
      <driver name='qemu' cache='writeback'/>
      <source dev='/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part5'/>
      <target dev='hda' bus='ide'/>
    </disk>
次に、パワーオフ(shutdown -h now)がうまくいかず。ブートオプション apm=power_off を追加して解決。ここで、apm=power_off,realmode_power_off のように、後ろに realmode_power_off をつけてしまうと、パワーオフ(shutdown -h now)をやっても、リブートしてしまうので注意。
title Red Hat Linux (2.4.20-46.7.legacysmp)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-46.7.legacysmp ro root=/dev/hda2 apm=power_off
        initrd /initrd-2.4.20-46.7.legacysmp.img
ちなみに、KVM ゲストが RHEL3 の場合も、これでパワーオフできるようになります。

2011-02-19追記
VMware 上で RHEL3 を動かす場合にも、apm=power_off は効きます。わたしが利用しているのは、VMware Server 1.0 と VMware Player です。

2011-03-27追記
realmode_power_off を打ち間違えて、real_mode_power_off と記載していましたので、修正しました。なお、この辺のパラメータに対応するコードは、arch/i386/kernel/apm.c にあります。
static int __init apm_setup(char *str)
{
...
                if ((strncmp(str, "power-off", 9) == 0) ||
                    (strncmp(str, "power_off", 9) == 0))
                        power_off = !invert;
                if ((strncmp(str, "allow-ints", 10) == 0) ||
                    (strncmp(str, "allow_ints", 10) == 0))
                        apm_info.allow_ints = !invert;
                if ((strncmp(str, "broken-psr", 10) == 0) ||
                    (strncmp(str, "broken_psr", 10) == 0))
                        apm_info.get_power_status_broken = !invert;
                if ((strncmp(str, "realmode-power-off", 18) == 0) ||
                    (strncmp(str, "realmode_power_off", 18) == 0))
                        apm_info.realmode_power_off = !invert;
...
2014-05-02追記
その後、実際に引っ越して一年以上運用しているが、問題なし。

2010年10月2日土曜日

Fake RAID

仕事で使う新しいサーバに、今まで使ったことがなかった LSI Software MegaRAID という所謂 SATA RAID が載っていて、Linux のソフトRAID(md)とどちらを使うか迷っていました。そもそも、SATA RAID って何だ?どこまでハードでやってくれるのか?というところからして知識が無く、次の情報を読んでやっとイメージがつかめました。

http://itpro.nikkeibp.co.jp/article/Keyword/20070824/280335/

http://h50146.www5.hp.com/products/software/oe/linux/mainstream/support/faq_hard/hard_ata_raid.html#ahasoftware

http://2chnull.info/r/linux/1208263754/201-300

これらを読んで、複数の HDD の集合を RAID として BIOS に見せる機能を、ハードウェアが提供してくれる。同様に OS にも RAID として認識できるようなメタデータを見せてくれる。ということかなと理解しました。試したところ、SATA RAID の場合、Linux 上からは dmraid として扱われ、デバイス名がやたらに長くなるようでした。デバイス名がやたらに長くなるのが運用上耐えられないのと、md なら2台でも RAID10 (READ のみストライプ) が使えるようなので、そちらにすることにしました。2台で RAID10 を構成するには、
# mdadm -C /dev/md1 -l 10 -p f2 -n 2 /dev/sd[ab]2
のようにする。ただし、GRUB は RAID10 を扱えないようなので、/boot だけは RAID1 にする必要があります。それから、1台目の HDD が壊れると、ブート出来なくなるので、2台目の HDD の MBR のセットアップも必要です。
次のMIRACLE LINUXさんのFAQが参考になります。

http://www.miraclelinux.com/technet/faq/data/00080.html

2010-10-03追記
mdadm の -p f2 ですが、READ が最速になる指定とのこと。下記に、わかりやすい説明があります。感謝。

http://hellokitty68.main.jp/wiki/Linux_Software_RAID10

2010-10-06追記
dmraid の場合に、デバイス名がどのように見えるのか、試しにインストールしたときの mount の出力を貼っておきます。CentOS5.5 で試した際のもの。
# mount
/dev/mapper/ddf1_4c53492020202020808627c3000000004711471100001450p2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/mapper/ddf1_4c53492020202020808627c3000000004711471100001450p1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
人気ブログランキングへ にほんブログ村 IT技術ブログへ