6.Advanced設定セッテイ
6-4.番外編バンガイヘン
6-4-1.FCoE DAS構成コウセイヘン
6-4-1.FCoE DAS構成編
!コメント1!
Fedora13にてFCoE TargetとFCoE Initiatorをインストールする手順です。
重要なのは、SCST+FCSTによる"FCoE Target"のインストール方法です。
検証環境やFCoEのお勉強用途として使用できるレベルと考えてください。
今回はGigabit Ethernet NICを使用した手順となるため、
IEEE DCB(別名CEEやらCisco DCEというヤツ)は、実装ジッソウされていません。
というのも、
現時点では、IEEE DCBはHardwareによる実装が必要のようで、
FCoEに加えてIEEE DCBをサポートさせるには、
IEEE DCB対応の10Gbit Ethernet NICが必須だろうと想定(※)しています。
Intel 82599が搭載トウサイされたNIC(型番:E10G42BTDAなど)
ここでは規格化途中の流動的な細かい話を追跡しても、
徒労に終わるだけなので、IEEE DCBについては除外します。
そんなことよりも、
 「Fibre ChannelをEthernetでカプセル化する技術=FCoE」
のみに的を絞って記載したいと思います。
勉強ベンキョウ用途ヨウト特化トッカしてみれば、
1.純粋ジュンスイなFCoEのみの動作ドウサ
2.DCBが実装ジッソウされたFCoEの動作ドウサ
という観点カンテンで、
Protocolの動作を把握ハアクしておくことが重要だと考えています。
また、製品化セイヒンカされた機器キキではこのアタりの実装ジッソウハナして、
動作ドウサ確認カクニンすることはムツカしいのでは?と想定ソウテイしています。
なお、私の想定では、Intel82599を搭載したNICを使用すれば、
IEEE DCBをサポートしたFCoEを動作させることも可能だと考えています。
なぜなら、Linux KernelのBuild時には、
DCBのサポート有無を選択できるようになっているためです。
今回はKernelのmenu config実行時に、確認のみですが、
IEEE DCBの項目も参照するように記載しました。
シタガって、Intel82599を搭載したNICであれば、
同じ手順でIEEE DCBもサポートできるだろう想定です。
当初トウショ、Server2とServer3(両方リョウホウともML115G5)を使ツカって動作ドウサ確認カクニンしましたが、
IntelセイE1000ケイドライバで動作ドウサするNICであれば、オオムねどの機器キキでも動作ドウサする想定ソウテイです。
タトえば、Dell Optiplex755(Intel82566DM搭載トウサイ)にて動作ドウサ確認カクニンしましたがOKでした。
!コメント2!
機器キキ接続セツゾク構成コウセイ&OSインストールのパッケージ
【Hardware:FCoE Target】
筐体:ML115G5
CPU:AMD Phenom X4 9350e
Mem:W2U800CQ-2GL5J*2
HDD:ST3160023AS OS起動用
HDD:ST3500320NS Target用
HBA:不要
NIC:intel EXPI9301CT(増設)
OS:Fedora13 x86 or Fedora13 x86_64(64bit版もOK)
Kernel:2.6.35
ML115G5のDefaultNIC(Broadcom)をIP通信用
intel EXPI9301CT(増設)をFCoE用
【Hardware:FCoE Initiator】
筐体:ML115G5
CPU:AMD Phenom X4 9350e
Mem:W2U800CQ-2GL5J*2
HDD:ST3160023AS
HBA:不要
NIC:intel EXPI9301CT(増設)
OS:Fedora13 x86 or Fedora13 x86_64(64bit版もOK)
Kernel:Fedora13からDefaultでインストールされるモノでOK
ML115G5のDefaultNIC(Broadcom)をIP通信用
intel EXPI9301CT(増設)をFCoE用
【接続構成】
FCoE TargetとInitiatorは、EXPI9301CT(IntelNIC)同士でDAS(直接チョクセツ接続セツゾク)構成としてください。
ML115G5のDefaultNICはIP疎通性があれば接続方法は何でもOKです。
【OSインストール:TargetもInitiatorも同じ】
Fedora13 x86のインストールパッケージのカスタマイズ
デスクトップ環境
全てOFF(GNOME,KDEも使わない)
アプリケーション
エディタ→vim-enhancedのみ
開発
開発ツール
開発ライブラリ
サーバー
Samba
Mustではありません。
TeraTermをWinXPで動作させている関係で、
ファイルのやり取りをCIFSでやりたかっただけです。
ベースシステム
ベースのみ
仮想化,クラスタリング,クラスタストレージ
全てOFF
!コメント3!
作業サギョウ概要ガイヨウ以下イカ記載キサイします。
A.事前準備
B.各種パッチ当て
C.KernelのBuild
D.scst,scstadmin,fcst,fcoeadmのインストール(コンパイル含む)
E.VLANやHDDの設定とModuleの読み込み
F.SCST設定とFCoE Target有効化設定
G.FCoE Initiatorのインストールと設定
H.その他
オオまかなナガれとして、
A-FがFCoE Targetのインストール方法です。
GがFCoE Initiatorのインストール方法ホウホウです。
Hは疎通ソツウ確認カクニンなどです。
Targetについては、毎度マイドのことながら少々ショウショウ敷居シキイタカいです。
FCやFCoEのモジュールにクワえ、SCSTとFCSTを使用シヨウして、
ブロックデバイスのTargetとして動作ドウサさせるために
パッチ当てやKernelのBuildが必要となります。
また、Initiatorについては、yumによりインストール可能カノウとなっており、
タトえば、RHEL6でも初期インストール時に導入可能なので、比較的容易と言えると思います。
A.事前準備
B.各種パッチ当て
C.KernelのBuild
D.scst,scstadmin,fcst,fcoeadmのインストール(コンパイル含む)
E.VLANやHDDの設定とModuleの読み込み
F.SCST設定とFCoE Target有効化設定
G.FCoE Initiatorのインストールと設定
H.その他
A.事前準備
A-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
A-2.SCSTのSrcDL
cd /usr/src
svn co https://scst.svn.sourceforge.net/svnroot/scst
B.各種パッチ当て
B-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
B-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/
!コメント1!
fcst.hなどソースを読むと解りますが、地味にCiscoが絡んでいるようです。
C.KernelのBuild
C-1.Linux KernelのMakefile設定
cd /usr/src/linux-2.6.35
make menuconfig
!コメント1!
基本的に変更する箇所はありませんので、
以下に記載する項目を確認していくという作業になります。
なお、SCST+qla2x00tgtによるFC Targetインストール時と同様に
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
C-1-1.802.1QとDCBの設定
Networking support  --->
Networking options  --->
<M> 802.1Q VLAN Support
[*]   GVRP (GARP VLAN Registration Protocol) support
[*] Data Center Bridging support
C-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
C-1-3.FCoEモジュール周りの設定
Device Drivers  --->
SCSI device support  --->
SCSI low-level drivers  --->
{M}   LibFC module
{M}   LibFCoE module
<M>   FCoE module
C-1-4.10GbitDeviceのDCBの設定(今回コンカイ確認カクニンのみ)
Device Drivers  --->
Network device support  --->
Ethernet (10000 Mbit)  --->
[*]     Data Center Bridging (DCB) Support
C-1-5.BlockLayerの設定
-*- Enable the block layer  --->
[*]   Block layer SG support v4
C-1-6.【32bit版限定】HighMemSupportの設定
Processor type and features  --->
High Memory Support (64GB)  --->
(X) off  
( ) 4GB  
( ) 64GB 
C-1-7.設定の保存
Exitにて最初の画面に戻ってください。
以下の項目を選択し保存してください。
Save an Alternate Configuration File
保存が完了したら最初の画面に戻ってExitを選択すれば、
元のプロンプトに戻ります。
C-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
C-3.起動Kernelの選択
vi /boot/grub/menu.lst
以下の項目を0に設定
default=1
default=0
!コメント1!
新Kernelが最初に起動されるように設定します。
Windowsライクに言うと"c:\boot.ini"を書き換える作業です。
C-4.再起動
shutdown -r now
D.scst,scstadmin,fcst,fcoeadmのインストール(コンパイル含む)
D-1.scstのインストール
cd /usr/src/scst/trunk/scst
make && make install
D-2.scstadminのインストール
cd /usr/src/scst/trunk/scstadmin
make && make install
D-3.fcstのインストール
cd /usr/src/scst/trunk/fcst
make && make install
D-4.fcoeadmのインストール
yum -y install fcoe-utils
!コメント1!
「yumは絶対に使わない!」という漢な方は、
/usr/src/scst/trunk/fcst/READMEの
7.Install the FCoE admin tools, including dcbd and fcoeadm.
を参照してください。
E.VLANやHDDの設定とModuleの読み込み
!コメント1!
Linuxに精通した方は軽く読み飛ばしてください。
なお、VLAN設定はfcoe-utilsのインストール後に
fipvlan -aがどうしてもうまく動作せず、
苦肉の策として掲載しています。
ちなみに、VLAN設定を実施しなくても、
FCoE Targetとしての動作は可能です。
いわゆるTag無しVLAN(CiscoライクにはnativeVLAN)でもOKです。
E-1.VLANの設定
E-1-1.networkファイルの設定
vi /etc/sysconfig/network
以下の2行を追加
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
E-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!
上記はifcfg-eth1としていますが、
適宜、実環境に合わせて修正してください。
E-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アドレスを設定した場合、項番「G-4-1.NIC動作確認」にて
正常動作時の状態か?の判別が付き難くなることがあるため、
ここでは"#"を付けた状態=IPアドレス未設定状態を想定して進めます。
E-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!
上記はifcfg-eth1.100としていますが、
適宜、実環境に合わせて修正してください。
!コメント2!
DCB_REQUIRED="no"としている点がポイントです。
先にも述べましたが、今回のNICではDCBの実装はHardware的に不可能なので。
E-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関連の設定ファイルを探して、
 dmesgや/var/log/messageにゴミLogを残すため"no"へ修正
E-2.HDDの設定
!コメント1!
500GBのHDDのシリンダ数=60800として、
250GB*2つのパーティションに分割します。
すいません、説明は端折ります。
時間があれば詳細を記載するようにしますが、
詳細を早く知りたい方は以下のサイトなどでお勉強してください。
http://www.itmedia.co.jp/help/tips/linux/l0112.html
fdisk /dev/sdb
m
p
n
p
1
##
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 
E-3.Moduleの読み込み確認
E-3-1.libfc,libfcoe,fcoeのModuleの読み込み
/etc/rc.d/init.d/fcoe start
E-3-2.scst関連Moduleの読み込み
modprobe scst && modprobe scst_vdisk && modprobe scst_disk
E-3-3.fcst関連Moduleの読み込み
modprobe fcst
!コメント1!
上記E-3-2.の後、5秒程度待ってから"modprobe fcst"してください。
流し込みのように早過ぎるとfcstだけうまく読み込まれない場合があります。
E-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には★
を付けてます。
E-3-5.一旦再起動
shutdown -r now
!コメント1!
MTUを変更してることもあり、一旦Rebootします。
と言いながら、再起動しないと先に進んでもしくじるので=検証済み。
F.SCST設定とFCoE Target有効化設定
F-1.SCST設定
F-1-1.状況確認
/usr/libexec/fcoe/fcc.sh
FC HBAs:
HBA       Port Name                Port ID   State     Device         
!コメント1!
このタイミングでは何も表示されなくてOK
F-1-2.Module読み込み
/etc/rc.d/init.d/fcoe start
modprobe scst && modprobe scst_vdisk && modprobe scst_disk
modprobe fcst
F-1-3.Module読み込み状況確認
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!
RebootしてもE-3-4と同じだよね?ってことを確認してください。
F-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となるので、メモなどにヒカえておいてください。
F-1-5.SCST設定投入
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の構成を記載しておきます。
2                   決まり文句のようです。ちなみに1だとWWNNのようです。
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については、そこそこサンプルコマンドSyntaxが記載されていますが、
fcstは一切記載や説明が無く、上記はTry&Errorで確認したSyntaxなので。
個人的コジンテキにはVLANをければ、Zoningしなくてもいのでは?とオモっています。
F-1-6.SCST設定保存
scstadmin -write_config /etc/scst.conf
F-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
}
}
F-2.FCoE Target有効化設定
F-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/
F-2-2.FCoE TargetのEnable化
cd /sys/kernel/scst_tgt/targets/fcst
LPORT=20:64:00:1b:21:49:82:fa
echo 1 > $LPORT/enabled
F-2-3.FCoE Targetの確認
/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!
このタイミングでは、Initiatorが表示されなくてOK
ちなみに、host7はサーバのHardware構成により、
host3など色々と値が変わるので、あくまでも今回の構成固有の値。
!コメント2!
以上でFCoE Target側のインストールと設定は完了です。
それでは、FCoE Initiator側のインストールと設定へ入ります。
G.FCoE Initiatorのインストールと設定
!コメント1!
ここからはInitiator側の筐体で設定していきます。
手順自体はTarget側とほとんど変わりませんが、
もう少しfcoeadmを使って設定セッテイしていきます。
G-1.FCoE Initiator(fcoeadm)のインストール
yum -y install fcoe-utils
G-2.VLANの設定
!コメント1!
Target側の設定とほぼ同一です。
MACアドレスが違うくらいです。
G-2-1.networkファイルの設定
vi /etc/sysconfig/network
以下の2行を追加
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
G-2-2.ifcfg-ethxの設定
vi /etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corporation 82574L Gigabit Network Connection
DEVICE=eth1
HWADDR=00:1B:21:57:0B:9C
ONBOOT=yes
BOOTPROTO=none
MTU=2500
G-2-3.ifcfg-ethx.yyyの設定
vi /etc/sysconfig/network-scripts/ifcfg-eth1.100
DEVICE=eth1.100
BOOTPROTO=static
ONBOOT=yes
#IPADDR=192.168.100.117
#NETMASK=255.255.255.0
USERCONTROL="no"
INTERFACETYPE="vlan"
G-2-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"
G-3.FCoEサービスの起動設定と起動
G-3-1.FCoEサービスの起動設定
chkconfig fcoe on
G-3-2.FCoEサービスの起動
/etc/rc.d/init.d/fcoe start
G-3-3.Initiatorの再起動
shutdown -r now
!コメント1!
Targetの設定時と同様に一旦再起動します。
G-4.FCoE Initiatorの動作確認
G-4-1.NIC動作確認
fcoeadm -i eth1.100
Description:      82574L Gigabit Network Connection
Revision:         00
Manufacturer:     Intel Corporation
Serial Number:    001B21570B9C
Driver:           e1000e 1.0.2-k2
Number of Ports:  1
Symbolic Name:     fcoe v0.1 over eth1.100
OS Device Name:    host7
Node Name:         0x1000001B21570B9C
Port Name:         0x2064001B21570B9C
FabricName:        0x0000000000000000
Speed:             Unknown
Supported Speed:   Unknown
MaxFrameSize:      2112
FC-ID (Port ID):   0x010102
State:             Online
!コメント1!
eth1.100にIPアドレスを設定しない場合、
Speed:とSupported Speed:がUnknownになります。
eth1.100にIPアドレスを設定した場合、
Speed:とSupported Speed:が1G bitになります。
ちなみに、eth1.100にIPアドレスを設定していないにも関わらず、
Speed:とSupported Speed:が1G bitと表示されるときは
概ねうまく行かない場合(※)がほとんどなので、
Initiatorを一発再起動してください。
次項に記載するfcoeadm -t eth1.100やfcoeadm -l eth1.100を打っても
・何も表示されない
・Target情報は表示されても、Device情報が表示されない
といった事象を確認しています。
稀に以下のコマンドでOKなときもありますが、
現段階では一発再起動が手っ取り早いです。
eth1.100のReset
fcoeadm -r eth1.100
eth1.100にてTargetを再スキャン eth1.100のReset
fcoeadm -S eth1.100
G-4-2.Target情報の確認
fcoeadm -t eth1.100
Interface:        eth1.100
Roles:            FCP Target, FCP Initiator
Node Name:        0x1000001B214982FA
Port Name:        0x2064001B214982FA
Target ID:        0
MaxFrameSize:     2112
OS Device Name:   rport-7:0-0
FC-ID (Port ID):  0x010101
State:            Online
LUN ID  Device Name   Capacity   Block Size  Description
------  -----------  ----------  ----------  ----------------------------
   0  /dev/sdb      232.88 GB      512     SCST_BIO dev00 (rev  210)
   1  /dev/sdc      232.88 GB      512     SCST_BIO dev01 (rev  210)
!コメント1!
fcoeadm -r eth1.100やfcoeadm -S eth1.100でOKだったとしても、
fcoeadm -t eth1.100を打ったときに、
上記のCapacity=1574.59PBなどと表示されることがあり、
そんなときもInitiatorを一発再起動をしてください。
あくまでもTarget側でfdiskした容量が正確に表示されないときは、
「Initiatorで再起動」が有効なようです。
G-4-3.LUNの確認
fcoeadm -l eth1.100
Interface:        eth1.100
Roles:            FCP Target, FCP Initiator
Node Name:        0x1000001B214982FA
Port Name:        0x2064001B214982FA
Target ID:        0
MaxFrameSize:     2112
OS Device Name:   rport-7:0-0
FC-ID (Port ID):  0x010101
State:            Online
LUN #0 Information:
OS Device Name:     /dev/sdb
Description:        SCST_BIO dev00 (rev  210)
Ethernet Port FCID: 0x010102
Target FCID:        0x010101
Target ID:          0
LUN ID:             0
Capacity:           232.88 GB
Capacity in Blocks: 488375936
Block Size:         512 bytes
Status:             Attached
LUN #1 Information:
OS Device Name:     /dev/sdc
Description:        SCST_BIO dev01 (rev  210)
Ethernet Port FCID: 0x010102
Target FCID:        0x010101
Target ID:          0
LUN ID:             1
Capacity:           232.88 GB
Capacity in Blocks: 488392064
Block Size:         512 bytes
Status:             Attached
!コメント1!
Status:Attachedと表示されていればOKです。
ここまでくれば、後はInitiator側にHDDを追加したときと同じです。
fdisk、mkfs、mount、fstabなどが可能カノウです。
!コメント2!
検証環境やお勉強目的での実用性について確認するため、
fdiskでパーティションを切った後、
hdparm -ft /dev/sdb1を600回以上繰り返してみました。
特にエラー表示や途中で止まってしまうこともなく、
63〜64MB/secくらいという結果を出してました。
G-4-4.FCoE Target側でのステータス確認コマンド
/usr/libexec/fcoe/fcc.sh
FC HBAs:
HBA       Port Name                Port ID   State     Device
host7     20:64:00:1b:21:49:82:fa  01:01:01  Online    eth1.100
host7 Remote Ports:
Path      Port Name                Port ID   State     Roles
7:0-1     20:64:00:1b:21:57:0b:9c  01:01:02  Online    FCP Initiator
!コメント1!
PortIDが付与され、State=OnlineとなっていればOK
G-4-5.FCoE Target側でのセッション確認コマンド
scstadmin -list_sessions
Collecting current configuration: done.
Driver/Target: fcst/20:64:00:1b:21:49:82:fa
  Session: 20:64:00:1b:21:57:0b:9c
  Attribute           Value                       Writable      KEY
  -----------------------------------------------------------------
  active_commands     0                           Yes           No
  commands            0                           Yes           No
  initiator_name      20:64:00:1b:21:57:0b:9c     Yes           No
All done.
!コメント1!
initiator_nameにInitiator側のWWPNが表示され、
Writable=YesとなっていればOK。
KEY=Noについては、恐らくきちんとZoningを実施して、
Initiator側のWWPNを明示的に指定すれば、KEY=Yesと表示されるかもです。
H.その他
H-1.FCoE Targetマシンの自動起動と自動Target有効化設定
!コメント1!
chkconfigを使用してTargetの自動起動と有効化する設定を記載します。
H-1-1./etc/scst.confの修正
★の付いた行を"enabled 0"→"enabled 1"へ変更して保存
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 1
LUN 0 dev00
LUN 1 dev01
}
}
H-1-2.scst起動スクリプトの修正
vi /etc/rc.d/init.d/scst
38行目くらいにSCST_MODULESの変数定義をしている。
以下のようにfcstを追加する。
SCST_MODULES="scst scst_disk scst_vdisk"
SCST_MODULES="scst scst_disk scst_vdisk fcst"
H-1-3.chkconfigにてscstを追加
chkconfig --add scst
H-1-4.chkconfigにてscstとfcoeの自動起動有効化
chkconfig scst on
chkconfig fcoe on
上記コマンド投入後、以下のコマンドで確認
chkconfig --list | grep scst
scst            0:off   1:off   2:on    3:on    4:on    5:on    6:off
chkconfig --list | grep fcoe
fcoe            0:off   1:off   2:on    3:on    4:on    5:on    6:off
H-1-5.scstとfcoeの起動順序入れ替え
mv /etc/rc3.d/S13scst /etc/rc3.d/S21scst
mv /etc/rc3.d/S21fcoe /etc/rc3.d/S20fcoe
!コメント1!
 scst起動スクリプトにfcstを加えた関係で、
 fcstがmodprobeされる前に
 fcoe起動スクリプトに定義されている
 libfcをmodprobeしておきたいので。
H-1-6.Targetマシン再起動
shutdown -r now
!コメント1!
再起動&Target有効化後は、以下のコマンドでTarget側のステータスを確認
/usr/libexec/fcoe/fcc.sh
また、以下のコマンドでInitiator側のステータスを確認
fcoeadm -i eth1.100
fcoeadm -t eth1.100
fcoeadm -l eth1.100
ちなみに、Initiatorで以下のコマンドを打った場合の出力を記載します。
Targetと異なるのは、Device情報が表示される点です。
/usr/libexec/fcoe/fcc.sh
FC HBAs:
HBA       Port Name                Port ID   State     Device
host7     20:64:00:1b:21:57:0b:9c  01:01:02  Online    eth1.100
host7 Remote Ports:
Path      Port Name                Port ID   State     Roles
7:0-0     20:64:00:1b:21:49:82:fa  01:01:01  Online    FCP Target, FCP Initiator
host7 LUNs:
Path       Device     Size   Vendor          Model                State
7:0:0:0    sdb      250 GB   SCST_BIO        dev00                running
7:0:0:1    sdc      250 GB   SCST_BIO        dev01                running
H-2.疎通確認など
fcping -h eth1.100 -F 010102 -c 5
sending echo to 0x10102
echo    1 accepted                        0.194 ms
echo    2 accepted                        0.132 ms
echo    3 accepted                        0.170 ms
echo    4 accepted                        0.129 ms
echo    5 accepted                        0.167 ms
5 frames sent, 5 received 0 errors, 0.000% loss, avg. rt time 0.158 ms
!コメント1!
-h=Interfaceを指定(正確セイカクにはHBAを指定シテイする場合バアイの「-h」という意味イミ)
-F=Port IDを指定 ※
-c=fcpingの回数を指定
Port IDは以下のコマンドで表示されます。
/usr/libexec/fcoe/fcc.sh
FC HBAs:
HBA       Port Name                Port ID   State     Device
host7     20:64:00:1b:21:49:82:fa  01:01:01  Online    eth1.100
host7 Remote Ports:
Path      Port Name                Port ID   State     Roles
7:0-1     20:64:00:1b:21:57:0b:9c  01:01:02  Online    FCP Initiator
TargetからInitiatorへfcpingする場合=010102
InitiatorからTargetへfcpingする場合=010101
その他のOptionは"fcping -h"で調べてください。
H-3.VLAN100上で、FC,IP,IPv6の同時通信をPcapしてみる
!コメント1!
実際にやってみた感触として、やはりeth1.100にIPv4アドレスを設定すると
FCoE通信時にRejectされることが多く見受けられるので、試す程度にした方が無難。
PcapはFCoE Target側にてtsharkを実行します。
以下のSrcがInitiatorで、DstがTargetにて通信を開始します。
■FCoE Target側のIP,IPv6設定
ifconfig eth1.100
eth1.100  Link encap:Ethernet  HWaddr 00:1B:21:49:82:FA
inet addr:192.168.100.116  Bcast:192.168.100.255  Mask:255.255.255.0
inet6 addr: fe80::21b:21ff:fe49:82fa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:2500  Metric:1
■FCoE Initiator側のIP,IPv6設定
ifconfig eth1.100
eth1.100  Link encap:Ethernet  HWaddr 00:1B:21:57:0B:9C
inet addr:192.168.100.117  Bcast:192.168.100.255  Mask:255.255.255.0
inet6 addr: fe80::21b:21ff:fe57:b9c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:2500  Metric:1
■FCoE TargetとInitiatorのPort ID
/usr/libexec/fcoe/fcc.sh
FC HBAs:
HBA       Port Name                Port ID   State     Device
host7     20:64:00:1b:21:49:82:fa  01:01:01  Online    eth1.100
host7 Remote Ports:
Path      Port Name                Port ID   State     Roles
7:0-1     20:64:00:1b:21:57:0b:9c  01:01:02  Online    FCP Initiator
■Ping結果
ping 192.168.100.116
PING 192.168.100.116 (192.168.100.116) 56(84) bytes of data.
64 bytes from 192.168.100.116: icmp_seq=1 ttl=64 time=0.146 ms
64 bytes from 192.168.100.116: icmp_seq=2 ttl=64 time=0.137 ms
64 bytes from 192.168.100.116: icmp_seq=3 ttl=64 time=0.115 ms
64 bytes from 192.168.100.116: icmp_seq=4 ttl=64 time=0.126 ms
■Ping6結果
ping6 -I eth1.100 fe80::21b:21ff:fe49:82fa
PING fe80::21b:21ff:fe49:82fa(fe80::21b:21ff:fe49:82fa) from fe80::21b:21ff:fe57:b9c eth1.100: 56 data bytes
64 bytes from fe80::21b:21ff:fe49:82fa: icmp_seq=1 ttl=64 time=0.166 ms
64 bytes from fe80::21b:21ff:fe49:82fa: icmp_seq=2 ttl=64 time=0.130 ms
64 bytes from fe80::21b:21ff:fe49:82fa: icmp_seq=3 ttl=64 time=0.128 ms
64 bytes from fe80::21b:21ff:fe49:82fa: icmp_seq=4 ttl=64 time=0.127 ms
■fcping結果
fcping -h eth1.100 -F 010101
sending echo to 0x10101
echo    1 accepted                        0.172 ms
echo    2 accepted                        0.175 ms
echo    3 accepted                        0.154 ms
echo    4 accepted                        0.169 ms
!コメント2!
結果はLinkしてあるpcapファイルを参照のこと。
fcoe_ping.pcap
VLAN100上に異なるProtocol(IPv4,IPv6,FCoE)が乗っていることがわかります。
近い未来の現場で採取したPcapファイルは、
こんな感じなのかもしれません。