テスト用に次の設定を行っています。HPMicroserver N36L(デュアルコア低電力Athlon64)8GB ECC RAM 2ポートIntelギガビットNIC 4x3TB WDグリーン(5400 RPM?)OSイメージ用の1つのsataディスク(FreeBSD 10.1)
スイッチはHP v1910-24G(マネージドL2スイッチ、24ギガビットポート)
クライアントは:DH67BLマザーボード上のCore i5 2400 24GB RAM 1 Intel Gigabit(onboard)
FreeBSDマシンはiSCSIを介してzvolを公開し、イニシエータはWindowsです。 Windowsでは、iSCSIボリュームはNTFSにフォーマットされ、VMWare Workstationはそれを他のVMのディスクとして使用します(この場合、Windows 7 VMも))。
私はzvolのいくつかの構成を試しました。主に、4kから64kまでのさまざまな値のvolblocksizeと、4から64kのNTFSクラスターサイズも試しました。私は、blocksize = cluster size、およびblock size> cluster sizeの組み合わせを試しました。
すべての場合で基本的に同じです:
順次読み取りは、110〜120MB /秒(ギガビットイーサネットの制限)です。ランダム読み取りは<5MB/sです
大きなファイルをVMの外部または内部にコピーすることは許容されます。 Windowsの起動が非常に遅い(ログイン画面への新規インストールで3分超。デスクトップではさらに1分)
これは予想される動作ですか?
この構成には、パフォーマンスの低下につながる多くのコンポーネントと設計上の決定があります。
HP Microserverはパフォーマンスの低いアイテムです。 RAMに制約のあるローエンドCPU。
Western Digital Greenドライブは低RPMであり、4kセクターのフォーマットには 特別な考慮事項 が必要です。 これが主な問題である可能性があります。
3つのディスクでRAIDZ1を使用しているようです。そのセットアップでのランダムな読み取り/書き込みパフォーマンスもかなり低いです。どちらの場合も、1つのディスクのパフォーマンスを確認してください。
書き込みキャッシュ/ ZILデバイスはありません。
Windowsソフトウェアイニシエーターへの1GbE iSCSIは素晴らしいものではありません。
VMware Workstationは間違いなく役に立ちません。
ここでは、特定のZFS属性が機能しない可能性があります。 gzip圧縮は不適切です(lz4は問題ありません)。 RAM ARCに割り当てられている量が多すぎます。
メカニカルHDDはランダムなI/Oアクセスに苦労しています。
ランダム読み取りパフォーマンスが5 MB /秒となる4x WD Greenは、予想よりもさらに優れています。
Some math: 5400 RPMの場合、1回の回転には11 msが必要であるため、半回転には約5.5 msが必要です。これは回転遅延です。さらに8msのシーク時間(アクチュエータが読み取り/書き込みヘッドを正しく配置するために必要な時間)を追加すると、合計時間は〜13msになります。つまり、単一ディスクあたりのIOPSは1000ミリ秒(1秒)/ 13ミリ秒=〜76 IOPSです。 4Kのランダム読み取りでは、これは約300 KB /秒で変換されます
ZFS RAIDZ自体がIOPSの点で非常に悪いことを考えると(設計上、ZFSはデータの安全性のためにIOPSを犠牲にしています。詳細については こちら を参照してください)5 MBあることに驚きます/ sのランダム読み取りパフォーマンス。 4KBランダム読み取りまたはそれ以上の読み取り(例:64KB)でテストしましたか?
元の問題に戻ります。これは、小さなiSCSI volblocksize/recordsize、RAIDZ vols、および4Kディスクの組み合わせだと思います。 RAIDZボリュームでは、各読み取り/書き込みはデータディスクの数で分割され、物理ディスクに転送されます。たとえば、セットアップでは、単一の8K書き込みが複数の〜3KBの書き込み(データの場合は3x 3KBの書き込み、パリティの場合は1x 3KBの書き込み)に分割され、これによりディスク自体の読み取り-変更-書き込みがトリガーされます(4Kであるため)ベースのディスク)。 Windowsの起動はランダム書き込みが重いため、ディスクの動作に影響を受ける可能性があります。
これを試す: ZPOOL/ZDEVを破棄する余裕がある場合は、それを破棄して、16Kまたは32Kのvolblocksizeで再作成します( こちら を参照)。次に、Windowsマシンを再インストールして、シナリオを再試行します。