VMware ESXi6.5ではSRPを純粋にはサポートしていないので、6.0向けのMellanoxOFEDを利用する必要があります。
また、HCAもConnectX2/X3のいずれかを利用する必要があります。(CX4やCX5には対応していません)
設定手順
Inboxドライバの削除
SRPを利用するには、InboxのIB系ドライバをすべて削除する必要があります。
#/bin/sh for a in nrdma nrdma_vmkapi_shim nmlx4_rdma vmkapi_v2_3_0_0_rdma_shim vrdma ; do esxcli system module set --enabled=false -m=$a done for b in net-mlx4-en net-mlx4-core nmlx4-rdma nmlx4-en nmlx4-core nmlx5-core ; do esxcli software vib remove -n $b done
OFED 1.8.2.5のインストール
MLNX-OFED-ESX-1.8.2.5-10EM-600.0.0.2494585.zipをインストールします。ググると多分出てきます。SCPなどで/に転送します。(場所は任意の場所でOKですが、例として)
esxcli software vib install -d /MLNX-OFED-ESX-1.8.2.5-10EM-600.0.0.2494585.zip
インストールが終わったら再起動します。
IB関連モジュールのチューニング
SCSTターゲットに接続する際に、デフォルトだと以下の問題があるので諸々のチューニングします。
- 何故かSCSTのエクスポートしたLUNがローカルディスク(VMW_SATP_LOCAL)と認識されてしまいMPIO(マルチパス)ができない
- 5.5の頃からある問題ですが
- SCSTの問題ではないですが、HCAのキュー長が128に対してLUN1つへのキュー長が8になっている
- DSNROを8以上に設定できないのでBigLUNを組んでその上でVMをたくさん動かしたときに性能が落ちます
- IPoIBでmtu_4k使いたい
- 何故か自分の環境だと4kで動きませんでしたが…(誰か2044のやつがいるっぽい)
SCSTのターゲットにマルチパス接続をする
scstのデバイスはgsan.hogehogeと認識するので、その接続にはMRU/ラウンドロビンを使うように設定します
#MRU(最近の使用)を使う場合 esxcli storage nmp satp rule add -R gsan -s VMW_SATP_DEFAULT_AA -P VMW_PSP_MRU #1IOPごとにRR(ラウンドロビン)を使う場合 esxcli storage nmp satp rule add -R gsan -s VMW_SATP_DEFAULT_AA -P VMW_PSP_RR -O iops=1
どちらが早いかというと、SRPのような高速IFの場合HBAのスイッチングコストが高いらしく、接続が切れない限りパスを変えないMRUのほうがいい結果が出やすいです。
この辺は実際の環境と合わせてください。
SRPのキュー長を増やす
デフォルトではHCA全体(srp_can_queue)で128、LUNごと(srp_cmd_per_lun)は8になっているので、LUNをたくさん作って分散させる場合は不要だと思いますが、
1つの大きなLUNにVMをたくさん動かす場合はLUNへのキューを増やしたほうが性能劣化を防げます。
esxcli system module parameters set -m ib_srp -p "srp_can_queue=256 srp_cmd_per_lun=256"
IPoIBで4kを使いたい
ただしSMや他のマシンとの兼ね合いで必ずしも4kが使えるとは限らないですが
esxcli system module parameters set -m=mlx4_core -p="mtu_4k=1 msi_x=1"
再起動
モジュールのチューニングが終わったら再起動します。
LUNへのDSNROを増やす
DiskSchedNumReqOutstanding(DSNRO)を変更するには、対象のLUNごとに変更を行う必要があります。
ESX5.5ではHBA/HCAのキュー長に関係なく変更できましたが、6.xではまずLUNに対するキュー長(srp_can_queue)を増やす必要があります。
HBA/HCAのキュー長が増えたら、対象のディスクを確認し、DSNROを増やします。
#ディスクの確認 ~ # esxcli storage core device list (snip) eui.6334303735626264 Display Name: scst-srp1 Has Settable Display Name: true Size: 12288000 Device Type: Direct-Access Multipath Plugin: NMP Devfs Path: /vmfs/devices/disks/eui.6334303735626264 Vendor: SCST_FIO Model: srp1 Revision: 340 SCSI Level: 6 Is Pseudo: false Status: on Is RDM Capable: true Is Local: false Is Removable: false Is SSD: false Is Offline: false Is Perennially Reserved: false Queue Full Sample Size: 0 Queue Full Threshold: 0 Thin Provisioning Status: unknown Attached Filters: VAAI Status: supported Other UIDs: vml.01000100006334303735626264737270312020 Is Local SAS Device: false Is USB: false Is Boot USB Device: false No of outstanding IOs with competing worlds: 32 # eui.6334303735626264がSCSTのLUNでNo of outstanding IOs with competing worldsがDSRNOの深さなので、変更する ~ # esxcli storage core device set -d eui.6334303735626264 -O 128 #確認 ~ # esxcli storage core device list -d eui.6334303735626264 eui.6334303735626264 Display Name: scst-srp1 Has Settable Display Name: true Size: 12288000 Device Type: Direct-Access Multipath Plugin: NMP Devfs Path: /vmfs/devices/disks/eui.6334303735626264 Vendor: SCST_FIO Model: srp1 Revision: 340 SCSI Level: 6 Is Pseudo: false Status: on Is RDM Capable: true Is Local: false Is Removable: false Is SSD: false Is Offline: false Is Perennially Reserved: false Queue Full Sample Size: 0 Queue Full Threshold: 0 Thin Provisioning Status: unknown Attached Filters: VAAI Status: supported Other UIDs: vml.01000100006334303735626264737270312020 Is Local SAS Device: false Is USB: false Is Boot USB Device: false No of outstanding IOs with competing worlds: 128
その後、esxtopからuを押し、LUNモードに切り替えたあとDQLENが変更されていることを確認します
DEVICE PATH/WORLD/PARTITION DQLEN WQLEN ACTV QUED %USD LOAD CMDS/s READS/s WRITES/s MBREAD/s MBWRTN/s DAVG/cmd KAVG/cmd GAVG/cmd QAVG/cmd eui.6334303735626264 - 126 - 0 0 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
変更したMTUが正しく反映されているか確認する
GUIからIPoIBのVMkernelスイッチのMTUを4092に変更し、28バイトのIPヘッダを除いた4064でpingが通るか確認します。
vmkping -d -s 4064 他のVMのIP
まあ自分の環境だと2016(2044)のMTUまでしか通りませんでしたが。他に2kMTUを使っているホストがいる場合、IBの性質上「一番MTUが低いやつに合わせる」となるため、
2kMTUを使っているやつがいたらそれを変更→各ホストの再起動が必要になるうえ、また2kMTUのやつが紛れ込むと4kが使えなくなるという問題があるので注意してください。
Related articles
0 Comments