USBメモリにopenfilerをインストールする
このまえ、VMwareを使ってDRBDで二台のopenfiler間でのレプリケーションをする環境を試してみましたが(こちら)、今回、実サーバで環境を構築しました。以下のような構成になる予定です。DRBDを使うと基本的には片方のサーバはスタンバイになり、普段はまったく使われないのでもったいないですが。
- openfilerはUSBメモリから起動
- サーバ2台でDRBDで同期する
- 各サーバのHDDはRAID10
手順については↓のサイトを参考にさせていただきました。ありがとうございました。ほとんどそのままですが、いくつかはまった点について追加しました。
わがまま大王@みらにすた - ESXiの相棒「Openfiler」のインストールメモ(iSCSI)
機器
- サーバ:HP ProLiant ML115 G5 x 2
- HDD:1TB SATA(WESTERN DIGITAL WD1001FALS) x 8
- USB:2GB USBメモリ(Buffalo RUF2-S2G-BS)
サーバはこんな構成です。ML115は2台で2万円、HDDは1台1万円と安いです。別途SATAケーブルが必要でした。HDD固定用のネジはサーバ筐体にくっついているので不要です。
他に、SATAを無効にした状態でCDからインストールするためにUSB接続のDVDドライブも必要です。
手順
手順自体は長いですが、通常のインストールを行ってから、USBメモリを認識できるようにinitrdを作るだけです。
Openfiler 2.3のISOイメージをダウンロードしてCD-Rに焼きます(64bit版を使いました)。
BIOSの設定で以下の設定を行います。ML115はSATA以外はデフォルトのままでOKでした。
- SATAを無効にする
- USB-DVDドライブから起動できるようにする
- USBメモリから起動できるようにする
USBメモリを接続して起動します。openfilerのブートプロンプトで、USBメモリを認識させるため"linux expert"と入力します。
USBメモリにインストールします。インストーラまかせでよいはずですが、私の環境では以下の点でつまづきました。
- USBメモリにWindowsパーティションがあるとエラーで先に進まない
- 自動でパーティションを作成できない
1点目はWindowsではUSBメモリのパーティションを削除できないようだったので、Ubuntuから削除しました。2点目は、結局手動でパーティションを作成しました。
インストール後に再度CDからブートさせ、openfilerのブートプロンプトで"linux rescue"と入力します。ブート中にシステムをマウントするか聞かれたらNoを選択します。
シェルからUSBメモリをマウントします。
mkdir /mnt/source/boot
mount /dev/sda2 /mnt/source
mount /dev/sda1 /mnt/source/boot
/mnt/source/bootにあるinitrdをコピーします。
cp /mnt/source/boot/initrd-2.6.26.8-1.0.11.smp.pae.gcc3.4.x86.i686_64.img /mnt/source/tmp/initrd.gz
chrootします。先ほどコピーしたinitrd.gzを展開します。
chroot /mnt/source
gunzip /tmp/initrd.gz
cd /tmp
mkdir /tmp/a
cd /tmp/a
cpio -i < /tmp/initrd
viにて/tmp/a/initを編集します。echo "Loading jbd.ko module" の前に以下の内容を追加します。
insmod /lib/sr_mod.ko insmod /lib/ohci-hcd.ko sleep 10 insmod /lib/usb-storage.ko sleep 12
モジュールをコピーします。
cd /lib/modules/2.6.26.8-1.0.11.smp.pae.gcc3.4.x86.i686/kernel/drivers
cp scsi/sr_mod.ko /tmp/a/lib
cp usb/storage/usb-storage.ko /tmp/a/lib
cp usb/host/ohci-hcd.ko /tmp/a/lib
パッケージに戻して/bootにコピーします。
cd /tmp/a
find . | cpio -c -o | gzip -9 > /tmp/usbinitrd.img
cp /tmp/usbinitrd.img /boot/
grub.confを編集します。
default=1に変更し、0をコピーしてinitrdを"/usbinitrd.img"とします(太字が追加・変更した部分です)。もともとある設定では正常に起動できないので、コピーせずに編集してしまってもよいかもしれません。
default=1 title Openfiler NSA (2.6.26.8-1.0.11.smp.gcc3.4.x86_64) root (hd0,0) kernel /vmlinuz-2.6.26.8-1.0.11.smp.gcc3.4.x86_64 ro root=LABEL=/1 quiet initrd /initrd-2.6.26.8-1.0.11.smp.gcc3.4.x86_64.img title Openfiler NSA (2.6.26.8-1.0.11.smp.gcc3.4.x86_64) USB root (hd0,0) kernel /vmlinuz-2.6.26.8-1.0.11.smp.gcc3.4.x86_64 ro root=LABEL=/1 quiet initrd /usbinitrd2.img
リブートします。USBメモリから起動するためにCD-Rを取り出しておきます。
ブートするとgrubの選択画面が表示されるのでUSB版を選びます。正常に起動できない場合(kernel panic)には、何かミスがあるので、再度CDから起動して手順を見直します。
正常に起動できた場合には、リブートしてBIOS画面からSATAを有効にします。
起動するとSATAのディスクが/dev/sda-sddとして認識され、USBメモリはsdeになります。ログインしてRAID10の設定を行います。
まずfdiskでパーティションを作成します。
という構成にしました*1。同じ操作を/dev/sdb-sddまで行います。
RAIDを構築します。
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[abcd]2
mdadm --create /dev/md1 --level=10 --raid-devices=4 /dev/sd[abcd]3
mdadm --detail --scan >> /etc/mdadm.conf
md0とmd1は、DRBDでopenfilerの設定用とデータ用になるパーティションなのですが、この時点で分けてよいのか、すべてをmd0にしてから分けるのがよいのか、
linuxの知識が乏しくわかりませんでした。
この後のDRBDの設定は、こちらに書いたとおりです。DRBDを使用しない場合には、そのままLVMの設定を行います。
*1: DRBDを使用しない場合にはopenfiler用を分ける必要はありません