ページ ツリー
メタデータの末尾にスキップ
メタデータの先頭に移動

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が使えなくなるという問題があるので注意してください。



コメントを書く…