Fedora13によるFCoE Target & FCoE Initiatorのセットアップ手順です。
近頃、Intelから正式発表があった「Open FCoE」を使用した具体的なセットアップ手順となります。
正式発表資料では、Intel X520(82599チップ)のみを謳っています。
しかし、個人購入するには少々高額(6万円程度)です。
このため、本手順ではIntel EXPI9301CT(82574Lチップ:実売4000円以下)を使用します。
また、Dell Optiplex 755のOn Borad NIC(82566DM-2チップ)でも動作確認済みです。
従って、e1000系ドライバで動作するIntel製NICであれば、概ね動作すると考えて良いと思います。
なお、本手順は自宅SAN友の会にも同内容をアップ済みですが、
正式発表後のTwitter件数などを鑑みて、こちらのBlogにも改めて書きたいと思います。
それでは行ってみよう!
Hardware構成
FCoE Target
デバイス | 型番など |
---|---|
筐体 | ML115G5 |
CPU | AMD Phenom X4 9350e |
Mem | W2U800CQ-2GL5J*2(こんなに積まなくてもOK) |
HDD | ST3160023AS OS起動用(SATAなら何でもOKなハズ) |
HDD | ST3500320NS Target用(SATAなら何でもOKなハズ) |
HBA | 不要 |
NIC | intel EXPI9301CT(増設) |
OS | Fedora13 x86 or Fedora13 x86_64(64bit版もOK) |
Kernel | 2.6.35 |
※
各NICは以下の用途で使用
ML115G5のDefaultNIC(Broadcom)をIP通信用
intel EXPI9301CT(増設)をFCoE用
接続構成
FCoE TargetとInitiatorは、EXPI9301CT同士でDAS(直結)構成としてください。
筐体(ML115G5)のDefaultNICはIP疎通性があれば接続方法は何でもOKです。
NIC2枚挿しが厳しければ、シリアルコンソール接続設定を参照。
OSインストール
TargetもInitiatorも同じです。
Fedora13 x86のインストールパッケージのカスタマイズ
<デスクトップ環境>
全てOFF(GNOME,KDEも使わない)
<アプリケーション>
エディタ→vim-enhancedのみ
<開発>
開発ツール 開発ライブラリ
<サーバー>
Samba ※ Mustではありません。 TeraTermをWinXPで動作させている関係で、ファイルのやり取りをCIFSでやりたかっただけです。
<ベースシステム>
ベースのみ
全てOFF
1.事前準備
1-1.KernelSrcのDL
cd /usr/src wget ftp://ftp.iij.ad.jp/pub/linux/kernel/linux/kernel/v2.6/linux-2.6.35.tar.gz tar zxvf linux-2.6.35.tar.gz ln -s /usr/src/linux-2.6.35 linux ln -s /usr/src/linux-2.6.35 kernel
1-2.SCSTのSrcDL
cd /usr/src svn co https://scst.svn.sourceforge.net/svnroot/scst/branches/2.0.0.x mkdir scst ln -s /usr/src/2.0.0.x /usr/src/scst/trunk
!コメント1!
2011/11/04に修正
最新版のscst(2.1.0.x系)をDLしてしまうと、
正常に動作しない場合があるので、lnしました。
これやらないと、永遠にKernelのBuildをやり直さなければならず、
心がへし折れそうになると思うので修正しました。
2.各種パッチ当て
2-1.SCSTのパッチ当て
cp /usr/src/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.35.patch /usr/src patch -p0 < scst_exec_req_fifo-2.6.35.patch
2-2.FCSTのパッチ当て
変数定義
KERNEL=linux-2.6.35 KDIR=/usr/src/$KERNEL PDIR=/usr/src/scst/trunk/fcst/linux-patches
パッチ当て
cd $PDIR for patch in `grep -v '^#' series-2.6.35` do (cd $KDIR; patch -p1) < $patch done cd /usr/src/
3.KernelのBuild
3-1.Linux KernelのMakefile設定
cd /usr/src/linux-2.6.35 make menuconfig
!コメント1!
基本的に変更する箇所はありませんので、
以下に記載する項目を確認していくという作業になります。
なお、SCST+qla2x00tgtによるFC Targetインストール時*1と同様に
32bit版のみHigh Memory Supportの項目をOffにします。
!コメント2!
以下のメッセージが表示された場合は
ターミナル(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
『make menuconfig』コマンドを打つと以下のような画面が表示されるので、
ここからカーソルキーを使用して各項目を選択し確認していきます。
# make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/basic/hash HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTCC scripts/kconfig/mconf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/lex.zconf.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf arch/x86/Kconfig # # using defaults found in /boot/config-2.6.33.3-85.fc13.x86_64 # /boot/config-2.6.33.3-85.fc13.x86_64:569:warning: symbol value 'm' invalid for PCCARD_NONSTATIC /boot/config-2.6.33.3-85.fc13.x86_64:1952:warning: symbol value 'm' invalid for RT2800PCI_PCI /boot/config-2.6.33.3-85.fc13.x86_64:2744:warning: symbol value 'm' invalid for MFD_WM8350 /boot/config-2.6.33.3-85.fc13.x86_64:2745:warning: symbol value 'm' invalid for MFD_WM8350_I2C /boot/config-2.6.33.3-85.fc13.x86_64:2747:warning: symbol value 'm' invalid for AB3100_CORE /boot/config-2.6.33.3-85.fc13.x86_64:3748:warning: symbol value 'm' invalid for MMC_RICOH_MMC .config - Linux Kernel v2.6.35 Configuration qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq Linux Kernel Configuration qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x Arrow keys navigate the menu. <Enter> selects submenus --->. Highlighted letters are hotkeys. Pressing <Y> x x includes, <N> excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> for Search. x x Legend: [*] built-in [ ] excluded <M> module < > module capable x x x x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x x x General setup ---> x x x x [*] Enable loadable module support ---> x x x x -*- Enable the block layer ---> x x x x Processor type and features ---> x x x x Power management and ACPI options ---> x x x x Bus options (PCI etc.) ---> x x x x Executable file formats / Emulations ---> x x x x -*- Networking support ---> x x x x Device Drivers ---> x x x x Firmware Drivers ---> x x x x File systems ---> x x x x Kernel hacking ---> x x x x Security options ---> x x x x -*- Cryptographic API ---> x x x x [*] Virtualization ---> x x x x Library routines ---> x x x x --- x x x x Load an Alternate Configuration File x x x x Save an Alternate Configuration File x x x x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu x <Select> < Exit > < Help > x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
3-1-1.802.1QとDCBの設定
Networking support ---> Networking options ---> <M> 802.1Q VLAN Support [*] GVRP (GARP VLAN Registration Protocol) support [*] Data Center Bridging support
3-1-2.QoS周りの設定
Networking support ---> Networking options ---> [*] QoS and/or fair queueing ---> <M> Multi Band Priority Queueing (PRIO) <M> Hardware Multiqueue-aware Multi Band Queuing (MULTIQ) <M> Elementary classification (BASIC) <M> Universal 32bit comparisons w/ hashing (U32) [*] Extended Matches <M> U32 key [*] Actions <M> SKB Editing
3-1-3.FCoEモジュール周りの設定
Device Drivers ---> SCSI device support ---> SCSI low-level drivers ---> {M} LibFC module {M} LibFCoE module <M> FCoE module
3-1-4.10GbitDeviceのDCBの設定
Device Drivers ---> Network device support ---> Ethernet (10000 Mbit) ---> [*] Data Center Bridging (DCB) Support
3-1-5.BlockLayerの設定
-*- Enable the block layer ---> [*] Block layer SG support v4
3-1-6.【32bit版限定】HighMemSupportの設定
Processor type and features ---> High Memory Support (64GB) ---> (X) off ( ) 4GB ( ) 64GB
3-1-7.設定の保存
Exitにて最初の画面に戻ってください。
以下の項目を選択し保存してください。
Save an Alternate Configuration File
保存が完了したら最初の画面に戻ってExitを選択すれば、元のプロンプトに戻ります。
3-2.Linux KernelのBuild
make bzImage && make modules && make modules_install && make install
!コメント1!
ガッツリ1時間半程度掛かります。
心の準備をしておいてください。
むしろ、TeraTermでログ取得しておいて、
以下のコマンド打ってみた方が良いかも?です。
date && make bzImage && make modules && make modules_install && make install && date && shutdown -h now
3-3.起動Kernelの選択
vi /boot/grub/menu.lst
ファイルを開いたら、以下の項目を0に設定
default=1 ↓ default=0
!コメント1!
新Kernelが最初に起動されるように設定します。
Windowsライクに言うと"c:\boot.ini"を書き換える作業です。
3-4.再起動
shutdown -r now
4.scst,scstadmin,fcst,fcoeadmのインストール(コンパイル含む)
4-1.scstのインストール
cd /usr/src/scst/trunk/scst make && make install
4-2.scstadminのインストール
cd /usr/src/scst/trunk/scstadmin make && make install
4-3.fcstのインストール
cd /usr/src/scst/trunk/fcst make && make install
5.VLANやHDDの設定とModuleの読み込み
!コメント1!
Linuxに精通した方は軽く読み飛ばしてください。なお、VLAN設定はfcoe-utilsのインストール後に
"fipvlan -a"がどうしてもうまく動作せず、苦肉の策として掲載しています。
ちなみに、VLAN設定を実施しなくても、FCoE Targetとしての動作は可能です。
いわゆるTag無しVLAN(CiscoライクにはnativeVLAN)でもOKです。
5-1.VLANの設定*2
5-1-1.networkファイルの設定
vi /etc/sysconfig/network
以下の2行を追加
VLAN=yes VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
5-1-2.ifcfg-ethxの設定
vi /etc/sysconfig/network-scripts/ifcfg-eth1
ファイルを開いたら以下のように設定
# Intel Corporation 82574L Gigabit Network Connection DEVICE=eth1 HWADDR=00:1B:21:49:82:FA ONBOOT=yes BOOTPROTO=none MTU=2500
!コメント1!
MACアドレスやeth1など、適宜実環境に合わせて修正してください。
!コメント2!
MTU=2500がポイントです。
FCoEの通信時は、きちんとMTU=2112で通信されるので安心してください。
5-1-3.ifcfg-ethx.yyyの設定
vi /etc/sysconfig/network-scripts/ifcfg-eth1.100
ファイルを開いたら以下のように設定
DEVICE=eth1.100 BOOTPROTO=static ONBOOT=yes USERCONTROL="no" INTERFACETYPE="vlan" #IPADDR=192.168.100.116 #NETMASK=255.255.255.0
!コメント1!
上記はifcfg-eth1.100としていますが、
適宜、実環境に合わせて修正してください。
NIC=eth1のVLAN100という意味です。
Pcap(パケットキャプチャ)すれば、
802.1QのTag内に100が記載されています。
!コメント2!
IPアドレスやネットマスクは、"#"していますが、外しても問題ありません。
「pingとfcpingを同時に試してみたいぜ!」という方は外してください。
説明は不要かと思いますが、Etherフレームの上に乗っかるProtocolが
IPとFCなのでVLAN100上にて同時通信させても問題ありません。
但し、IPアドレスを設定した場合、項番「7-4-1.NIC動作確認」にて
正常動作時の状態か?の判別が付き難くなることがあるため、
ここでは"#"を付けた状態=IPアドレス未設定状態を想定して進めます。
5-1-4.FCoEのcfg-ethx.yyyの設定
vi /etc/fcoe/cfg-eth1.100
ファイルを開いたら、以下をコピペしてください。
## Type: yes/no ## Default: no # Enable/Disable FCoE service at the Ethernet port FCOE_ENABLE="yes" ## Type: yes/no ## Default: yes # Indicate if DCB service is required at the Ethernet port DCB_REQUIRED="no" ## Type: yes/no ## Default: yes # Indicate if VLAN discovery should be handled by fcoemon AUTO_VLAN="no"
!コメント1!
DCB_REQUIRED="no"としている点がポイントです。
今回のNICではDCBの実装はHardware的に不可能なので。
5-1-5.FCoEのconfigの設定
vi /etc/fcoe/config
ファイルを開いたら、★の行を"yes"→"no"へ修正
## Type: yes/no ## Default: no # Switch on/off debug messages (script & C code) DEBUG="no" ## Type: yes/no ## Default: yes # All the messages go to syslog and stderr (script & C code) USE_SYSLOG="yes" ★ ↓ USE_SYSLOG="no"
!コメント1!
動作的には問題無いのですが、fcoemonがdcb関連の設定ファイルを探して、
dmesや/var/log/messageにゴミLogを残すため"no"へ修正。
5-2.HDDの設定
!コメント1!
ここでは500GBのHDDのシリンダ数=60800として、
250GB*2つのパーティションに分割します。
すいません、説明は端折ります。
時間があれば詳細を記載するようにしますが、
詳細を早く知りたい方は以下のサイトなどでお勉強してください。
http://www.itmedia.co.jp/help/tips/linux/l0112.html
fdiskにて、以下のようなイメージでパーティションを切ってください。
fdisk /dev/sdb m p n p 1 30399 p 2 空Enter 空Enter p t 1 83 p t 2 83 p w sfdisk -l /dev/sdb
!コメント2!
最終的にはこんな↓感じに仕上げてください。
"/dev/sdb1"と"/dev/sdb2"の2つのパーティションで構成されている想定で進めます。sfdisk -l /dev/sdb ディスク /dev/sdb: シリンダ数 60801、ヘッド数 255、63 セクタ/トラック ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます デバイス ブート 始点 終点 #シリンダ #ブロック Id システム /dev/sdb1 0+ 30399 30400- 244187968+ 83 Linux /dev/sdb2 30400 60800 30401 244196032+ 83 Linux /dev/sdb3 0 - 0 0 0 空 /dev/sdb4 0 - 0 0 0 空
5-3.Moduleの読み込み確認
5-3-1.libfc,libfcoe,fcoeのModuleの読み込み
/etc/rc.d/init.d/fcoe start
5-3-2.scst関連Moduleの読み込み
modprobe scst && modprobe scst_vdisk && modprobe scst_disk
5-3-3.fcst関連Moduleの読み込み
modprobe fcst
!コメント1!
上記5-3-2.の後、5秒程度待ってから"modprobe fcst"してください。
流し込みのように早過ぎるとfcstだけうまく読み込まれない場合があります。
5-3-4.Moduleの確認
以下のようなイメージでModuleが読み込まれればOKです。
lsmod Module Size Used by ◆ fcst 14292 0 ◆ scst_disk 8690 0 ◆ scst_vdisk 49497 0 ◆ scst 344380 3 fcst,scst_disk,scst_vdisk ◆ fcoe 15375 0 ◆ libfcoe 10524 1 fcoe ◆ libfc 66050 3 fcst,fcoe,libfcoe ipv6 219344 22 k10temp 2443 0 i2c_nforce2 5574 0 i2c_core 20569 1 i2c_nforce2 tg3 97786 0 ★ e1000e 158454 0 microcode 10563 0 pcspkr 1342 0 serio_raw 3316 0 qla2xxx 263249 0 ★ scsi_transport_fc 33685 3 fcoe,libfc,qla2xxx pata_acpi 2235 0 ★ scsi_tgt 8506 1 scsi_transport_fc ata_generic 2359 0 sata_nv 16359 4
!コメント1!
特に重要なModuleには◆
重要なModuleには★
を付けてます。
5-3-5.一旦再起動
shutdown -r now
!コメント1!
MTUを変更してることもあり、ここいらで一旦Reboot。
と言いつつ、再起動しないと先に進んでもしくじる=検証済み。
6.SCST設定とFCoE Target有効化設定
6-1.SCST設定
6-1-1.状況確認
以下のコマンドで状況確認
/usr/libexec/fcoe/fcc.sh FC HBAs: HBA Port Name Port ID State Device
!コメント1!
このタイミングでは何も表示されなくてOK
6-1-2.Module読み込み
以下のコマンドにてModule読み込み
/etc/rc.d/init.d/fcoe start modprobe scst && modprobe scst_vdisk && modprobe scst_disk modprobe fcst
6-1-3.Module読み込み状況確認
Rebootしても5-3-4と同じだよね?ってことを確認してください。
lsmod Module Size Used by ◆ fcst 14292 0 ◆ scst_disk 8690 0 ◆ scst_vdisk 49497 0 ◆ scst 344380 3 fcst,scst_disk,scst_vdisk ◆ fcoe 15375 0 ◆ libfcoe 10524 1 fcoe ◆ libfc 66050 3 fcst,fcoe,libfcoe ipv6 219344 22 k10temp 2443 0 i2c_nforce2 5574 0 i2c_core 20569 1 i2c_nforce2 tg3 97786 0 ★ e1000e 158454 0 microcode 10563 0 pcspkr 1342 0 serio_raw 3316 0 qla2xxx 263249 0 ★ scsi_transport_fc 33685 3 fcoe,libfc,qla2xxx pata_acpi 2235 0 ★ scsi_tgt 8506 1 scsi_transport_fc ata_generic 2359 0 sata_nv 16359 4
6-1-4.状況確認その2
/usr/libexec/fcoe/fcc.sh FC HBAs: HBA Port Name Port ID State Device host7 20:64:00:1b:21:49:82:fa - Offline eth1.100
!コメント1!
Module読み込み後、HBAが認識されたことを確認してください。
また、Port Nameは次項で設定するWWPNとなるので、メモなどに控えておいてください。
6-1-5.SCST設定投入
以下のコマンドでTergetデバイスを設定
scstadmin -open_dev dev00 -handler vdisk_blockio -attributes filename=/dev/sdb1 scstadmin -add_lun 0 -driver fcst -target 20:64:00:1b:21:49:82:fa -device dev00 scstadmin -open_dev dev01 -handler vdisk_blockio -attributes filename=/dev/sdb2 scstadmin -add_lun 1 -driver fcst -target 20:64:00:1b:21:49:82:fa -device dev01
!コメント1!
簡単に説明を入れようと考えましたが、
コマンド投入後の出力結果に説明が記載されているので、
出力結果を以下に記載します。
以下のコマンド投入後、
scstadmin -open_dev dev00 -handler vdisk_blockio -attributes filename=/dev/sdb1以下のメッセージが表示されればOK
Collecting current configuration: done. -> Making requested changes. -> Opening device 'dev00' using handler 'vdisk_blockio': done. -> Done. All done.
以下のコマンド投入後、scstadmin -add_lun 0 -driver fcst -target 20:64:00:1b:21:49:82:fa -device dev00以下のメッセージが表示されればOK
Collecting current configuration: done. -> Making requested changes. -> Adding device 'dev00' at LUN 0 to driver/target 'fcst/20:64:00:1b:21:49:82:fa': done. -> Done. All done.
!コメント2!
「WWPN=20:64:00:1b:21:49:82:fa」の構成を記載しておきます。
結構重要ですw2 決まり文句(WWNNの場合は「1」) 0:64 16進数表記のVLAN番号(256*0+16*6+1*4=100)※ 00:1b:21:49:82:fa NICのMACアドレス ※ 例えば、拡張VLANの場合、 VLAN4010=f:aa({256*15}+{16*10}+{1*10}=4010)となる。
!コメント3!
「Zoningしたいぜ!」って方は、こんな感じでイケます。scstadmin -open_dev dev00 -handler vdisk_blockio -attributes filename=/dev/sdb1 scstadmin -add_group host00 -driver fcst -target 20:64:00:1b:21:49:82:fa scstadmin -add_lun 0 -driver fcst -target 20:64:00:1b:21:49:82:fa -group host00 -device dev00後はscstadminのmanやREADMEを読みつつ想像しながら格闘してください。
iscsiやqla2x00tについては、そこそこサンプルコマンドが記載されているのですが、
fcstは一切記載や説明が無く、上記はTry&Errorで確認したSyntaxなので。
でも「VLAN別ければ、Zoningしなくてもいいんじゃねぇ?」と思ってしまう。
Initiatorを明示的に指定するなら別だけど。
6-1-6.SCST設定保存
以下のコマンドで設定を保存
scstadmin -write_config /etc/scst.conf
6-1-7.SCST設定の確認
以下コマンドで保存したファイルを確認します。
vi /etc/scst.conf "/etc/scst.conf" 22L, 267C# Automatically generated by SCST Configurator v2.0.0. HANDLER vdisk_blockio { DEVICE dev00 { filename /dev/sdb1 } DEVICE dev01 { filename /dev/sdb2 } } TARGET_DRIVER fcst { TARGET 20:64:00:1b:21:49:82:fa { enabled 0 LUN 0 dev00 LUN 1 dev01 } }
6-2.FCoE Target有効化設定
6-2-1.WWPNのディレクトリ確認
ls -Fal /sys/kernel/scst_tgt/targets/fcst 合計 0 drwxr-xr-x 3 root root 0 2010-10-25 23:33 ./ drwxr-xr-x 3 root root 0 2010-10-25 23:33 ../ drwxr-xr-x 5 root root 0 2010-10-25 23:33 20:64:00:1b:21:49:82:fa/
*1:今度手順をアップしますね。
*2:VLAN Interface設定と同じ手順です。