人気ブログランキング | 話題のタグを見る

Metaphorical Dream

scst その6 SCSTインストール qla2x00tgtインストール

CentOS5.4にSCSTをインストールする手順です。
qla2x00tgtによるFC Targetのインストール方法とも言えるかな。

Openfiler2.3の場合、HBAを挿入するタイミングが肝になります。

しかし、以下に記載する方法であれば、最初からHBAを挿入した状態で、
qla2x00tgtによるFC Targetを実装することができました。

なお、以下に記載することは、私の備忘録を一部抜粋しているだけなので、
内容についての保証はできません。

【Hardware】
筐体:ML115G5
CPU:PhenomⅡ 945(もっと遅くてもOK)
Mem:W2U800CQ-2GL5J*2(こんなに積まなくてもOK)
HDD:ST3160023AS
HBA:QLogic QLA2342 or QLA2340
OS:CentOS5.4 x86_64 or CentOS5.4 x86(32bit版もOK)
Kernel:2.6.26


【OSインストール】
CentOS5.4 x86_64のインストールパッケージのカスタマイズ

デスクトップ環境
 全てOFF(GNOME,KDEも使わない)

アプリケーション
 エディタ→vim-enhancedのみ

開発
 開発ツール
 開発ライブラリ

サーバー
 全てOFF

ベースシステム
 ベースのみ

仮想化,クラスタリング,クラスタストレージ
 全てOFF

!コメント!
OSインストールに10分程度掛かりますので、
CoffeeBreakでもどうぞ!

【scstのインストール手順】
1.事前準備
1-1.ドライバの確認
lspci | grep Fibre
dmesg | grep qla
cat /sys/class/fc_host/host?/port_name

1-2.ファームのDL
cd /lib/firmware/
wget ftp://ftp.qlogic.com/outgoing/linux/firmware/ql2300_fw.bin

1-3.Linux KernelソースのDL
cd /usr/src
wget ftp://ftp.iij.ad.jp/pub/linux/kernel/linux/kernel/v2.6/linux-2.6.26.tar.gz
tar xvf linux-2.6.26.tar.gz
ln -s /usr/src/linux-2.6.26 linux
ln -s /usr/src/linux-2.6.26 kernel

1-4.scstソースのDL
cd /root
svn co https://scst.svn.sourceforge.net/svnroot/scst

2.scstパッチ当て
2-1.scstパッチのコピー
cd /root/scst/trunk
cp /root/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.26.patch /usr/src

2-2.scstパッチをKernelに当てる
cd /usr/src
patch -p0 < scst_exec_req_fifo-2.6.26.patch

2-3.qla2xドライバの移動&ln貼り付け
cd /root/scst/trunk
mv /usr/src/linux/drivers/scsi/qla2xxx /usr/src/linux/drivers/scsi/qla2xxx_org
ln -s /root/scst/trunk/qla2x00t /usr/src/linux/drivers/scsi/qla2xxx

3.KernelのBuild
3-1.Linux KernelのMakefile設定
cd /usr/src/linux
make menuconfig

!コメント!
 以下のメッセージが表示された場合は
 ターミナル(TeraTermなど)の画面サイズが小さ過ぎます。
  Your display is too small to run Menuconfig!
  It must be at least 19 lines by 80 columns.
  make[1]: *** [menuconfig] エラー 1
  make: *** [menuconfig] エラー 2

3-1-1.FC targetモードの確認
make menuconfigコマンド投入後に表示されたGUIライクな画面にて、
以下の項目を選択していきます。

Device Drivers->
SCSI device support->
SCSI low level drivers->
Qlogic 2xxx target mode support

以下のように表示されていることを確認
[*]が[ ]なっていたりしたら、以下の通りに設定してください。

QLogic QLA2XXX Fibre Channel Support
[*] QLogic 2xxx target mode support (NEW)
[*] Disable initiator mode for ports with enabled target mode (NEW)

3-1-2.CONFIG_NOHIGHMEMをOFFに設定(x86の場合のみ=x86_64では項目自体が無い)

Processor type and features->
High Memory Support (64GB)->

以下のように表示されていることを確認
(X)が( )なっていたりしたら、以下の通りに設定してください。
(X) off
( ) 4GB
( ) 64GB

3-1-3.設定の保存
Exitにて最初の画面に戻ってください。
以下の項目を選択し保存してください。

Save an Alternate Configuration File

最後は、最初の画面に戻ってExitを選択すれば、
元のプロンプト([root@ ~]#)に戻ります。

3-2.Makefikeの微修正
`uname -r`の出力にて、Kernel Version 2.6.26の後に
Buildしていることを明示するため、「-scst」を付与します。
(2.6.26 → 2.6.26-scstとして生成&表示させるという意味です。)

cd /usr/src/linux
cp Makefile Makefile_org
vi Makefile

viの画面が表示されたら、以下の項目を変更
EXTRAVERSION =

EXTRAVERSION = -scst

!コメント!
本項はOptionです。
但し、3-4以降の項目でコマンドを
そのままコピペしたい方は本項を実施してください。
3-4以降は、2.6.26-scstでKernelをBuildした想定で進めます。

3-3.Linux KernelのBuild
make bzImage && make modules && make modules_install && make install

!コメント!
30分くらい掛かりますので、
お風呂にでも入ってサッパリしちゃってください

3-4.新KernelをGRUBメニューへ追加
3-4-1.x86_64(64bit版)の場合
installkernel 2.6.26-scst arch/x86_64/boot/bzImage System.map

3-4-2.x86(32bit版)の場合
installkernel 2.6.26-scst arch/i386/boot/bzImage System.map

3-5.起動Kernelの選択
vi /boot/grub/menu.lst

以下の項目を0に設定
default=1

default=0

!コメント!
新Kernelが最初に起動されるように設定します。
Windowsライクに言うと"c:\boot.ini"を書き換える作業です。

3-6.再起動
shutdown -r now

4.scst&qla2x00tgtの設定(make&installやサービス設定など諸々)
4-1.再度ドライバの確認
lspci | grep Fibre
dmesg | grep qla
cat /sys/class/fc_host/host?/port_name

少なくても"dmesg | grep qla"にて、
以下の表示が出力されればOKでしょう。
光ケーブルが挿入されてないぞ!と怒られていますが。

qla2xxx 0000:01:08.0: Cable is unplugged...
qla2xxx 0000:01:08.1: Cable is unplugged...

4-2.scstのdebugモードからreleaseモードへの変更
cd /root/scst/trunk
make debug2release

出力結果より、以下のエラーが表示されないことを確認
scst: disagrees about version of symbol struct_module

表示される場合には、ご愁傷様です。
以下を実施後、make bzImage無しで、3-3.を再度実行してください。
cd /usr/src/linux
make oldconfig
make clean
rm -rf /lib/modules/`uname -r`

!コメント!
30分待ちは辛いので、
もう一回お風呂にでも入って頭をCoolDownしてください。

4-3.scst,qla2x00t,qla2x00-target,scstadminのコンパイル&インストール
4-3-1.scstのmake&install
cd /root/scst/trunk/scst/src
make all
make install

4-3-2.qla2x00tのmake&install
cd /root/scst/trunk/qla2x00t
make

!コメント!
本項が本当に必要か?は未確認です(不要かもしれない)ので、
おまじないだと思ってください。
個人的には不要と思ってますが。。

4-3-3.qla2x00-targetのmake&install
cd /root/scst/trunk/qla2x00t/qla2x00-target/
make
make install

4-3-4.scstadminのmake&install
cd /root/scst/trunk/scstadmin
make
make install

4-4.qla2xxxのドライバをln
以下のコマンドを実施します。
ls -Fal /lib/modules/2.6.26-scst/extra

"qla2xxx.ko"が無ければ、以下のコマンドにてln
ln -s /lib/modules/2.6.26-scst/kernel/drivers/scsi/qla2xxx/qla2xxx.ko /lib/modules/2.6.26-scst/extra/qla2xxx.ko

4-5.dev_handlersの確認
ls -Fal /lib/modules/2.6.26-scst/extra/dev_handlers

最低でも以下のハンドラが表示されればOK
scst_vdisk.ko
scst_disk.ko

その他には以下のようなものがあります。
scst_cdrom.ko
scst_changer.ko
scst_modisk.ko
scst_processor.ko
scst_raid.ko
scst_tape.ko
scst_user.ko

4-6.scst,qla2x00関連モジュールのmodprobe
modprobe scst
modprobe qla2x00tgt
modprobe qla2xxx
modprobe scst_disk
modprobe scst_vdisk

4-7.qla2x00tのサービススクリプト修正
vi /etc/rc.d/init.d/qla2x00t
#KERNEL_MODULES="qla2x00t"

KERNEL_MODULES="qla2x00tgt"

!コメント!
何で修正するのか?は、修正しないで、
qla2x00tをスタートすればわかります。
ご愁傷様にはならないので、興味本位で試してOKです。

4-8.scstのサービススクリプト修正
vi /etc/rc.d/init.d/scst
#SCST_MODULES="scst scst_disk scst_vdisk"

SCST_MODULES="scst qla2x00tgt scst_disk scst_vdisk"

!コメント!
こちらも、4-7.と同様です。
たぶん、scstのソースをよく読んで、2-3をきちんと設定すれば、
4-7と4-8は不要になるんじゃないか?と想定しています。

4-9.scst.confのファイル初期化
scstadmin -WriteConfig /etc/scst.conf

!コメント!
初回起動時は、/etc/scst.confが無いので、
とりあえず、/etc/scst.confを生成する。

4-10.scst,qla2x00tのサービス開始
/etc/rc.d/init.d/qla2x00t start
/etc/rc.d/init.d/scst start

4-11.サービス開始確認
scstadmin -session

以下のような表示が出力されれば、とりあえずOKです。
[root@fct01 scstadmin]# scstadmin -session
Collecting current configuration: done.

Target Name Initiator Name Group Name Command Count

All done.


5.scstadminによる管理
ここから先は、FC InitiatorをDAS接続していることを想定しています。
そもそも、FC Targetが正常動作しているか?は、
FC Initiatorが居ないとお話にならないので。

5-1.自サーバのHBAのWWPN確認
cat /sys/class/fc_host/host?/port_name

5-2.Target DeviceのEnable化
scstadmin -enable 0x210000e0xxxxxxxx

5-3.グループの設定
scstadmin -addgroup GROUP00

5-4.ユーザ追加&グループへ登録
scstadmin -adduser 21:00:00:e0:xx:xx:xx:xx -group GROUP00

!コメント!
21:00:00:e0:xx:xx:xx:xx=FC InitiatorのWWPNを記載

5-5.ボリューム作成
scstadmin -adddev VOL00 -handler vdisk -path /dev/sda3

!コメント1!
/dev/sda3をvdiskとして、VOL00という名前で作成

!コメント2!
上記5-3では、/dev/sda3をBlockDeviceとして指定しました。
以下の方法であれば、ImageFileとして指定可能です。
dd if=/dev/zero of=/mnt/disk bs=1024k count=3072

/mnt配下にdiskという名前で3GBのImageFileを生成した後、
以下のように設定することも可能。
scstadmin -adddev VOL00 -handler vdisk -path /mnt/disk

!コメント3!
本項を実施すると、Errorが表示される場合があります。
その際、一番手っ取り早いWorkaroundは、新しい別のHDDを一発追加することです。
それが出来ない場合には、以下のように/dev/sda3をfdiskして、
一発Rebootした後、再度scstadmin -adddevを実施してみてください。

[root@fct01 ~]# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 3837 30716280 8e Linux LVM
/dev/sda3 3838 19457 125467650 83 Linux
 ※1
 その他のPartionは、
  /dev/sda1=/boot
  /dev/sda2=/
 です。
 ※2
 Errorが表示される原因については、私も切り分けしきれていません。

5-6.ボリュームをグループにアタッチ
scstadmin -assigndev VOL00 -group GROUP00 -lun 0

!コメント!
いわゆるZoningです。
 VOL00をLUN 0として設定
 GROUP00に所属するユーザ(=FC InitiatorのWWPN)からVOL00へのアクセスを許可

5-7.設定の保存
scstadmin -WriteConfig /etc/scst.conf

5-8.設定ファイルの確認
lv /etc/scst.conf

ここまでで手順は完了です。

上記を実施した後、VMWare ESX4などでストレージの設定をすれば、
2010年 04月 28日に記載した「scst その4」のような画面で、
ESXがFC Targetを認識してくれます。

6.その他(いろいろな確認方法など)
6-1.認識済みFC Targetデバイスの確認
cat /proc/scsi_tgt/scsi_tgt

6-2.自サーバHBAのWWPNを確認
cat /sys/class/fc_host/host?/port_name

6-3.FC InitiatorのWWPNを確認
scstadmin -session

6-4.設定ファイル変更後の設定反映
scstadmin -config /etc/scst.conf

!コメント!
"vi /etc/scst.conf"にて、直接設定ファイルをゴリゴリいじった後、
設定を反映させたい場合のコマンド

6-5.その他scstadminのオプション
"scstadmin --help"で要確認

もしくは、以下のDocでPerlソースの詳細を確認しても良いと思います。
/root/scst/trunk/scstadmin/scstadmin

6-6.WWPNのフォーマット説明
以下、通常はありえないWWPNですが、
説明用に全て異なる値を書いています。

WWPN例
21:aa:bb:cc:dd:ee:ff:00

2
 HAA bits
  Hex:1=IEEE
  Hex:2=IEEE extended

1:aa
 Reserved
 Node内 N_portID

bb:cc:dd
 IEEEによるアサイン値(OUI)

ee:ff:00
 ベンダ固有の値

by mdesign21 | 2010-04-29 01:23 | IT系