web-dev-qa-db-ja.com

CitrixXenServerとLinuxiSCSIストレージ間のネットワークパフォーマンスが低い

2台の10GBit Intel X540-T2 NICによって直接接続された(スイッチなしの)2台のSuperMicroサーバーがあります。 1台のサーバーはCitrixXenServer 6.2を実行し、もう1台はDebian7を実行します。

次に、open-iscsiとiscsitargetをDebianシステムにインストールし、12 GByte RAMディスクを構成し、XenServerにiSCSIストレージとしてマウントし、VMの1つに12GByte仮想ディスクを提供しました。そのXenServerで実行されています。

約290MByte/sを超えることはできません。

root@s1002:~# dd if=/dev/zero of=/dev/xvdb bs=16M
dd: writing `/dev/xvdb': No space left on device
737+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 42.6216 s, 290 MB/s
root@s1002:~# dd if=/dev/xvdb of=/dev/null bs=16M
736+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 46.0591 s, 268 MB/s

次に、商用ストレージで同じテストを繰り返したところ、物理ディスクを使用している場合でも、約450 MByte/sの転送速度が得られました。

LinuxサーバーをRAMディスクで使用する場合、同等またはそれ以上の速度を期待していましたが、iscsitarget構成またはネットワーク構成のいずれかが最適ではないようです。ネットワークはジャンボフレームで構成されています(両端でping -M do -s 8972 ipaddrでテスト済み)。 targetcliの設定は、ほとんどデフォルトの構成です。

/> ls
o- / ....................................................................................................................... [...]
  o- backstores ............................................................................................................ [...]
  | o- fileio ................................................................................................. [0 Storage Object]
  | o- iblock ................................................................................................. [0 Storage Object]
  | o- pscsi .................................................................................................. [0 Storage Object]
  | o- rd_dr .................................................................................................. [0 Storage Object]
  | o- rd_mcp ................................................................................................. [1 Storage Object]
  |   o- ramdisk ............................................................................................. [ramdisk activated]
  o- iscsi ........................................................................................................... [1 Targets]
  | o- iqn.2003-01.org.linux-iscsi.server85.x8664:sn.f63360d26dd2 ........................................................ [1 TPG]
  |   o- tpgt1 ......................................................................................................... [enabled]
  |     o- acls .......................................................................................................... [0 ACL]
  |     o- luns .......................................................................................................... [1 LUN]
  |     | o- lun0 ..................................................................................... [rd_mcp/ramdisk (ramdisk)]
  |     o- portals .................................................................................................... [1 Portal]
  |       o- 10.0.12.85:3260 ................................................................................................ [OK]
  o- loopback ......................................................................................................... [0 Target]
  o- tcm_fc ........................................................................................................... [0 Target]
/>

IscsitargetやNICを構成して、商用ストレージと一致するようにネットワークパフォーマンスを向上させるにはどうすればよいですか?

2
nn4l

まず、RAMディスクと呼ばれていても、実際には回転するプラッターを使用している可能性があります。最近は多くの種類のRamDiskがあり、tmpfsの種類はRAMだけでなくハードディスクも使用できることがわかりました。 12GBのスピニングプラッターファイルバッキングストアに対するテストを確認したいと思います。多分同じ速度。

次に、ディスクの終わりを上書きし、12GBをはるかに超えて書き込んでいる可能性があります。それが私の経験です。通常のディスクとは異なり、dd(またはカーネルの可能性が高い)は、RAMディスクの最後に到達しても停止しません。 bs=1GB count=12を追加して、ddが書き込む量に制限を設定します。

ローカルホストでtargetcliを使用して4GiBRamDiskバッキングストアを作成し、iscsiadmを使用して接続を開始することにより、上書きをテストします。次に、ddを使用して4GBをはるかに超える書き込みをテストします。

# targetcli ls backstores/ramdisk/

o- ramdisk.............................................。 ................................................。 ... [ストレージオブジェクト:1]
o- RamDisk4GB........................................。 ................................................。 ... [(4.0GiB)アクティブ化]

3GBを安全に書く:

時間ddif =/dev/zero of =/mnt/sddbs = 1GB count = 3
3 +0レコードイン3+ 0レコードアウト3000000000バイト(3.0 GB)コピー、4.41983秒、679MB /秒

real    0m6.692s
user    0m0.000s
sys     0m4.333s

しかし、5GB、6GB、8GB、16GB、さらには32GBを4GBのスペースに書き込むときにエラーがない場合はショックを受けます:

時間ddif =/dev/zero of =/mnt/sddbs = 1GB count = 16

16+0 records in
16+0 records out
16000000000 bytes (16 GB) copied, 36.671 s, 436 MB/s

real    0m38.301s
user    0m0.002s
sys     0m13.591s

64GBを4GBのRamDiskに書き込もうとするまで、エラーは報告されませんでした。私の/パーティションのサイズである50Gでエラーが発生したようです。

時間ddif =/dev/zero of =/mnt/sddbs = 1GB count = 64
dd:errorwriting '/ mnt/sdd':デバイスにスペースが残っていません
49 +0レコード
48 +0レコードアウト
48838684672バイト(49 GB)コピー、122.821秒、398 MB/s

real    2m4.682s
user    0m0.002s
sys     0m38.257s

ウィッシュ Datera.io および/または linux-iscsi.org はこれについて警告し、tmpfsまたは新しいramdiskタイプオプションの1つを提供します。私のセットアップはCentOS7なので、実際には github.com/open-iscsi/ の無料のブランチを使用しています。

1
rjt