IBM サブシステム・デバイス・ドライバーを使用した SAN への Linux のインストール

このプロセスは、IBM サブシステム・デバイス・ドライバーを使用して、SAN に Linux をインストールするときに使用します。

この手順では、シングル・パスの SAN 装置からブートされるように、 ブート・ローダーが正しく構成されていることを前提とします。 また、SDD RPM がシステムにインストールされていることも前提とします。 この手順には、初期 RAM ディスク (initrd) に SDD ファイルをコピーして、linuxrc スクリプトを編集する方法が記述されています。このスクリプトは、ブート時にカーネルが初期 RAM ディスクをマウントすると処理されます。SDD rpm の現行情報については、「IBM® System Storage™ マルチパス・サブシステム・デバイス・ドライバー ユーザーズ・ガイド」 (http://www-03.ibm.com/servers/storage/support/software/sdd) を参照してください。
次の手順で、IBM SDD を使用して、Red Hat と SUSE をインストールします。
  1. 次のコマンドを入力して、既存の _initrd_file_ のバックアップを作成します。
    cd /boot
    cp _initrd_file_ _initrd_file.bak
  2. 次のコマンドを入力して、イメージを解凍します。
    zcat _initrd_file_.bak > _initrd_file_
  3. 次のコマンドを入力して、イメージのループバック装置をセットアップします。
    losetup /dev/loop0 /path/to/your/_initrd_file_
  4. 次のコマンドを入力して、ファイル・システムに存在しているすべてのエラーを訂正します。
    e2fsck -f /dev/loop0
  5. 次のコマンドを入力して、initrd ファイル・システムのサイズを決定します。
    df /dev/loop0

    /boot ディレクトリー (または initrd ファイルを格納する他の場所) に、 大きな initrd ファイル (たとえば、それぞれが 32 MB の大きさの複数のファイル) を保管する十分な容量があることを確認します。 /boot ディレクトリーに十分なスペースがない場合は、一時ディレクトリーで以下のステップを実行して、圧縮された initrd ファイル (32 MB ではなく、数メガバイト) を /boot ディレクトリーにコピーし直します。

    ファイル・システムが 32 MB 以上ないか、またはフリー・スペースが多くない場合は、次のコマンドを入力してそれを 32 MB まで増やす必要があります。

    losetup -d /dev/loop0
    dd if=/dev/zero of=_initrd_file_ seek=33554432 count=1bs=1
    注: ファイルがすでに 32 MB 以上の場合は、このステップは不要なので実行しないでください。このステップを実行すると、初期 RAM ディスク・ファイル・システムが破壊されることがあります。
    SUSE では、 さらに大きな初期 RAM ディスクを作成する必要があります (例えば、48 MB すなわち 48×1024×1024 の場合、seek=50331648)。initrd ファイルが十分に大きい場合は、 スキップして、ループバック装置をマウントします。 ステップ 9 を参照してください。
  6. 次のコマンドを入力して、イメージのループバック装置をセットアップします。
    losetup /dev/loop0 /path/to/your/_initrd_file_
  7. 再度次のコマンドを入力して、クリーン・ファイル・システムがあることを確認します。
    e2fsck -f /dev/loop0
    ファイル・システムにまだエラーが残っている場合は、前の DD ステップが正しく実行されず、initrd を壊しています。ここで、losetup -d /dev/loop0 と入力してループバック装置を削除し、手順を最初から再始動する必要があります。
  8. 次のコマンドを入力して、ファイル・システムをサイズ変更します。
    resize2fs /dev/loop0
    注: サイズ変更を行うと、ファイル・システムが自動的に拡張して、使用可能なすべてのスペースを使用できるようになります。
  9. 次のコマンドを入力して、ループバック装置をマウントします。
    mount /dev/loop0 /mnt/tmp
  10. これで、32 MB の initrd ファイル・システムを持つことができました。次のコマンドを入力して、さらにファイルを追加することができます。
    cd /mnt/tmp
  11. 標準の mk_initrd または mkinitrd プロセスを使用して (使用する配布により異なります)、ホスト・アダプター・ドライバーを initrd ファイルにまだ追加していない場合は、ホスト・アダプター・ドライバーのモジュール・ファイルを手動でコピーする必要があります。 また、SCSI コアおよび SCSI ディスク・ドライバーを手動で initrd ファイル・システムにコピーし、該当する insmod コマンドを linuxrc スクリプトに追加する必要があります。
  12. SUSE では、etc/、proc/、および sysroot/ ディレクトリーを initrd ファイル・システムに作成する必要があります。

    ホスト・アダプターのロードおよび /proc のマウント後、linuxrc スクリプトに echo コマンドを追加すると、 デバイス・ディスカバリーが自動的に実行されていなければ、/proc/scsi/scsi を介して LUN を強制的に追加することができます。

  13. 次のコマンドを入力して、initrd ファイル・システムに SDD ディレクトリーを作成します。
    mkdir -p opt/IBMsdd/bin
    chmod -R 640 opt/IBMsdd/
  14. SDD については、次のファイルを initrd ファイル・システムにコピーする必要があります。
    注: コピーを実行するときは、現在 /mnt/tmp ディレクトリーにいることを確認します。
    ファイル名 ターゲット位置
    /etc/vpath.conf etc/
    /etc/group etc/
    /etc/passwd etc/
    /etc/nsswitch.conf etc/
    /opt/IBMsdd/sdd-mod.o-CORRECT_VERSION lib/sdd-mod.o
    /opt/IBMsdd/bin/* opt/IBMsdd/bin/
    /lib/libc.so.6 lib/
    /lib/ld-linux.so.2 lib/
    /lib/libacl.so.1 lib/
    /lib/libattr.so.1 lib/
    /lib/libdl.so.2 lib/
    /lib/libm.so.6 lib/
    /lib/libpthread.so.0 lib/
    /lib/libnss_files.so.2 lib/
    /lib/librt.so.1 lib/
    /bin/awk, chmod, chown, cp, date, grep, ls, mknod, mount, ps, rm, sed, sh, tar, unmount bin/
    /dev/sd[a-z], sd[a-z][a-z]
    たとえば、次のとおりです。

    tar cps /dev/sd[a-z] /dev/sd[a-z][a-z]| tar xps

    dev/
  15. Red Hat の場合は、以下の追加のファイルをファイル・システムにコピーする必要があります。
    ファイル名 ターゲット位置
    /lib/libproc.so.2.0.7 lib/
    /lib/libpcre.so.0 lib/
    /lib/libtermcap.so.2 lib/
    /bin/ash.static bin/ash
  16. SUSE の場合は、以下の追加のファイルをファイル・システムにコピーする必要があります。
    ファイル名 ターゲット位置
    /lib/libreadline.so.4 lib/
    /lib/libhistory.so.4 lib/
    /lib/libncurses.so.5 lib/
    etc/nsswitch.conf
    注: etc/nsswitch.conf ファイルのパスワードとグループ記入項目が、compat ではなく、files をポイントするように変更する必要があります。
    N/A
  17. initrd linuxrc スクリプトに対して次のような変更を行う必要があります。
    1. Red Hat の場合は、ファイルの末尾から次のブロックのコマンドを除去します。
      echo Creating block devices
      mkdevices /dev
      echo Creating root device
      mkroot dev /dev/root
      echo 0x0100 > /proc/sys/kernel/real-root-dev
      echo Mounting root filesystem
      mount -o defaults -ro - -t ext2 /dev/root /sysroot
      pivot_root /sysroot /sysroot/initrd
      unmount /initrd/proc

      nash シェルではなく、ash シェルを起動するように、linuxrc スクリプトの先頭行を変更します。

    2. /proc ファイル・システムがまだ明示的に linuxrc スクリプトにマウントされていない場合は、次の mount コマンドを追加します。
      mount -n -tproc /proc /proc
    3. SDD を構成するには、次のコマンドを linuxrc スクリプトの末尾に追加します。
      insmod /lib/sdd-mod.o
      /opt/IBMsdd/bin/cfgvpath

      システムのルート・ファイル・システムをマウントして、構成情報をそれにコピーできるようにします。 たとえば、/dev/vpatha3 上に ext3 ルート・ファイル・システムがある場合は、/bin/mount -o rw -t ext3 または /dev/vpatha3 /sysroot と入力し、あるいは /dev/vpatha3 上に reiserfs ルート・ファイル・システムがある場合は、/bin/mount -o rw -t reiserfs /dev/vpatha3 /sysroot と入力します。

      動的に作成された装置特殊ファイルをシステムのルート・ファイル・システムにコピーするには、次のコマンドを入力します。
      tar cps /dev/IBMsdd /dev/vpath* | (cd /sysroot && tar xps)
      /bin/umount /sysroot
      ルート・ファイル・システムをカーネルに定義する必要があります。 従来、この情報はストリングとしてブート・ローダーに渡され (たとえば、 /dev/vpatha3)、装置のメジャー・ナンバーおよびマイナー・ナンバーの 16 進表記に変換されました。 メジャー・ナンバーとマイナー・ナンバーが 254,3 に等しい場合は、これらのナンバーは 16 進数の 0xFE03 で表されます。 linuxrc スクリプトは、次のコマンドで 16 進値を /proc に渡します。
      echo 0xFE03 > /proc/sys/kernel/real-root-dev
      /bin/umount /proc
  18. システム fstab を編集し、すべてのシステム・マウント・ポイントを LABEL または /dev/sd マウント・ソースからそれぞれの対応 /dev/vpath に変更してください。マルチパス構成でのラベルによるブート操作の危険性については、ステップ 23 を参照してください。
  19. システムの fstab を initrd etc/ ディレクトリーにコピーします。
  20. イメージをアンマウントし、次のコマンドを入力してループバック・バインディングを除去します。
    umount /mnt/tmp
    losetup -d /dev/loop0
  21. 次のコマンドを入力して、イメージを圧縮します。
    gzip -9 _initrd_file_
    mv _initrd_file_.gz _initrd_file_ 
  22. ブート・パラメーター (たとえば、lilo.conf、grub.conf、または menu.lst) に、次のとおり付加します。
    ramdisk_size=34000

    より大きな initrd ファイル・システムを作成した場合は、そのサイズをカバーできるだけの大きさを持つ値にしてください。

  23. 完全性のために、 カーネルのルート・パラメーターのブート・ローダー付加を該当の vpath 装置に変更します。 たとえば、root=/dev/vpatha5。 ただし、対応する 16 進数のメジャー、マイナーを initrd linuxrc スクリプト内の /proc ファイル・システムに渡すことにより、この値は前のステップによって指定変更されます。
    注: LABEL でブートすると、正しいラベルを使用しても、ファブリック内で最初に検出された装置が間違った装置であったり、vpath マルチパス装置ではなく、sd シングル・パス装置であったりするリスクがあります。
  24. サーバーをリブートします。 sd 装置ではなく、vpath 装置上のルート・ファイル・システムによりブートします。
図 1 および図 2 は、Red Hat および SUSE の場合の完全な linuxrc ファイルを示しています。
図 1. Red Hat の場合の完全な linuxrc ファイルの例
#!/bin/ash

echo "Loading scsi_mod.o module"
insmod /lib/scsi_mod.o
echo "Loading sd_mod.o module"
insmod /lib/sd_mod.o
echo "Loading qla2310.o module"
insmod /lib/qla2310.o
echo "Loading jbd.o module"
insmod /lib/jbd.o
echo "Loading ext3.o module"
insmod /lib/ext3.o
echo Mounting /proc filesystem
mount -t proc /proc /proc
insmod /lib/sdd-mod.o
/opt/IBMsdd/bin/cfgvpath
/bin/mount -o rw -t ext3 /dev/vpatha3 /sysroot
tar cps /dev/IBMsdd /dev/vpath* | (cd /sysroot && tar xps)
/bin/umount /sysroot
echo 0xFE03 > /proc/sys/kernel/real-root-dev
/bin/umount /proc
図 2. SUSE の場合の完全な linuxrc ファイルの例
#! /bin/ash

export PATH=/sbin:/bin:/usr/bin

# check for SCSI parameters in /proc/cmdline
mount -n -tproc none /proc
for p in `cat /proc/cmdline` ; do
  case $p in
    scsi*|*_scsi_*|llun_blklst=*|max_report_luns=*)
      extra_scsi_params="$extra_scsi_params $p"
      ;;
  esac
done
umount -n /proc

echo "Loading kernel/drivers/scsi/scsi_mod.o $extra_scsi_params"
insmod /lib/modules/2.4.21-190-smp/kernel/drivers/scsi/scsi_mod.o $extra_scsi_params

echo "Loading kernel/drivers/scsi/sd_mod.o"
insmod /lib/modules/2.4.21-190-smp/kernel/drivers/scsi/sd_mod.o

echo "Loading kernel/drivers/scsi/qla2310_conf.o"
insmod /lib/modules/2.4.21-190-smp/kernel/drivers/scsi/qla2310_conf.o

echo "Loading kernel/drivers/scsi/qla2310.o"
insmod /lib/modules/2.4.21-190-smp/kernel/drivers/scsi/qla2310.o

echo "Loading kernel/drivers/scsi/aic7xxx/aic7xxx.o"
insmod /lib/modules/2.4.21-190-smp/kernel/drivers/scsi/aic7xxx/aic7xxx.o

echo "Loading kernel/fs/reiserfs/reiserfs.o"
insmod /lib/modules/2.4.21-190-smp/kernel/fs/reiserfs/reiserfs.o
mount -t proc /proc /proc
insmod /lib/sdd-mod.o
/opt/IBMsdd/bin/cfgvpath
/bin/mount -o rw -t reiserfs /dev/vpatha3 /sysroot
tar cps /dev/IBMsdd /dev/vpath* | (cd /sysroot && tar xps)
/bin/umount /sysroot
echo 0xFE03 > /proc/sys/kernel/real-root-dev
/bin/umount /proc
ライブラリー | サポート | ご利用条件 | フィードバック
© Copyright IBM Corporation 2004, 2006. All Rights Reserved.