ESXi 5とiSCSI接続のネットワークストレージを備えたサーバーがあります。ストレージサーバーには、Freenas 8.0.4のRaid-Zに4x1Tb SATA IIディスクがあります。これらの2台のマシンは、ギガビットイーサネットで相互に接続されており、他のものすべてから隔離されています。間にスイッチはありません。 SANボックス自体は、3 GHzのIntel Pentium Dと2 GBのメモリを搭載した1U supermicroサーバーです。ディスクは統合コントローラー(Intel何か?)に接続されています。
Raid-zボリュームは3つの部分に分かれています。iscsiで共有される2つのzvolと、nfsなどと共有されるzfsのすぐ上にあります。
私はfreeNASボックスにsshして、ディスクのいくつかのテストを行いました。 dd
を使用して、ディスクの3番目の部分をテストしました(ZFSの真上)。 4GB(RAMの2倍の容量)のブロックを/ dev/zeroからディスクにコピーしました。速度は80MB/sでした。
その他のiSCSI共有zvolは、ESXiのデータストアです。 time dd ..
で同様のテストを行いました。そこのdd
は速度を与えなかったので、転送されたデータの量を時間ショーで割り、time
で割りました。結果は約30〜40 MB /秒でした。それはfreeNASホストからの速度の約半分です!
次に、IO on a VM running on the same ESXi Host。VM was a light CentOS 6.0 machine 、その時点では実際には何も実行していませんでした。その時点でサーバー上で実行されている他のVMはなく、ディスクアレイの他の2つの「部分」は使用されませんでした。同様のdd
テストで私の結果は約15〜20 MB/sです。これは、下位レベルの結果の約半分です。
もちろん、これはraid-z-> zfs-> zvolume-> iSCSI-> VMFS-> VMのオーバーヘッドですが、それほど大きくはないと思います。私のシステムに何か問題があるに違いない。
FreeNASのiSCSIのパフォーマンスが悪いと聞いたことがありますか?他の「大きな」SAN OSをボックスで実行することができませんでした(NexentaSTOR、openfiler))。
私のセットアップに明らかな問題がありますか?
これをスピードアップするには、より多くのRAMが必要になります。私はこれらのいくつかの漸進的な改善から始めます。
まず、ファイルシステムを高速化します。1)ZFSには、ARCキャッシュを使用する必要があるよりもはるかに多くのRAMが必要です。それ以上の数が望ましいです。少なくとも8GB以上に増やすことができる場合は、かなりの改善が見られるはずです。
2)次に、ZILログディスク、つまり約20GBの小さなSSDドライブを追加します。 MLCではなくSLCタイプを使用します。冗長性のために2つのZILディスクを使用することをお勧めします。これにより、書き込みが大幅にスピードアップします。
3)L2ARCディスクを追加します。これは、適切なサイズのSSDで構成できます。 250GB MLCドライブが適しています。技術的には、L2ARCは必要ありません。ただし、通常は、プライマリRAMよりも高速のSSDストレージを大量に追加する方が安価です。ただし、RAMから始めて、最初に当てはめることができます。
一般にzfsのチューニングに役立つと主張しているウェブサイトは多数あり、これらのパラメーター/変数はGUIを介して設定できます。調べる/試す価値がある。
また、freenasフォーラムを参照してください。ここよりも良いサポートを受けることができます。
次に、ネットワークを高速化できます。スーパーマイクロサーバーに複数のNIC=インターフェースがある場合。それらをチャネルボンディングして、ネットワークスループットをほぼ2倍にして、ある程度の冗長性を持たせることができます。 http://kb.vmware .com/selfservice/microsites/search.do?language = en_US&cmd = displayKC&externalId = 1004088
いくつかの提案。
FreeNASシステムでの直接テストでは、80メガバイト/秒は遅いと私は主張します。ディスクに問題がある可能性があります。 「Advanced Format」または4Kセクターのディスクを使用していますか?その場合、パフォーマンスに影響する パーティションアライメントの問題 が発生する可能性があります。
私は現在、サーバーに接続されていない2つのRaid 5 sSataアレイでFreeNas 8を使用しています。サーバーには、8GBのRAMと2つのシングルコアインテルXeonプロセッサーが搭載されています。
私のパフォーマンスは、他の人が経験したものとはかなり異なっていました。
NICでMPIOまたはロードバランシングを使用していません。単一のIntel GIGE 10/100/1000サーバーNIC。
両方のアレイには5つの2.0TBドライブがあり、およそ7.5 TBスペースRAID5に相当)です。
私はこれら2つの配列を2つの異なる機能に利用しています。
1)アレイ#1は、Centos 5.8およびPostGresを実行しているIntel HPCサーバーに接続されています。ファイルシステムはext4です。このアレイで800 Mbps /秒のピークを得ることができました。
2)アレイ#2はCitrix Xenserver 6 Centos VMに使用されています。これらの200GBドライブパーティションは、卓越したパフォーマンスを提供します。各VMはリアルタイムで実行されていますSIP 500〜1000 CPSで5〜10Kの同時呼び出しをサポートするシグナリングサーバー。ローカルデータベースは、メインデータベースサーバーがコピーする前にこれらのパーティションにCDRを書き込みますまた、このアレイでは800 Mbps /秒のピークを得ることができました。
今、私はFreeNas iSCSIアレイを大規模なデータベースパーティションの主なソリューションとして使用することをお勧めしません。 10K RPMで実行していますSASデータベースサーバーのRAID 10パーティション。
しかし、単純なスイッチドイーサネットネットワークを介してFreeNASを実行している合理的に構成されたサーバーにデータトラフィックを送信できず、GIGEの理論的なピーク時に送信できないという理由はまったくありません。
まだ読み取りスループットをテストする必要はありませんが、RAID5は読み取り速度が遅くなります。ですから、それはそれ以上に良いはずです。
FreeNASは、より多くのトラフィック要求がそれから作られるので、一貫して適切にスケーリングします。 CentOS 5.8サーバーは、独自のキャッシュを使用してデータをバッファリングしてから、iSCSIアレイに送信します。したがって、VMホストに十分なメモリがあることを確認してください。そうすれば、パフォーマンスに満足できます。
私の意見では、データベースアプリケーションとリアルタイムトラフィックアプリケーションよりも優れたテクノロジーをテストするものはありません。
システムメモリーライトスルーキャッシュ機能を追加することは有益だと私も思いますが、私のパフォーマンスの数値は、FreeNASとiSCSIが優れたパフォーマンスを発揮していることを示しています!
それは良くなるだけです。
おそらく表示されているのは、変換オーバーヘッドではなく、アクセスパターンの違いによるパフォーマンスの低下です。 ZFSボリュームへの順次書き込みは、基本的な物理ディスクに書き込まれるほぼ順次のデータストリームを作成するだけです。 ZFSボリュームの上にあるVMFSデータストアへの順次書き込みは、VMFSファイルシステム構造のメタデータ更新とこのメタデータに対する頻繁な同期/キャッシュフラッシュ要求によって「ピアス」されるデータストリームを作成します。クライアント内から仮想ディスクに順次書き込みを行うと、ゲストのファイルシステムメタデータにより、順次ストリームの「ピアリング」がさらに追加されます。
これらの状況で通常処方される治療法は、キャッシュフラッシュ要求を無視する書き込みキャッシュを有効にすることです。これにより、ランダム書き込みと同期の問題が軽減され、VMゲストで表示されるパフォーマンスが向上します。ただし、キャッシュで対応できない場合、データの整合性が失われる可能性があることに注意してください。停電/突然の再起動後も持続します。
FreeNASボックスでiostat -xd 5
のようなものを発行して、基になる物理デバイスのキューサイズと使用率統計を確認することで、ディスクの制限に達しているかどうかを簡単にテストできます。 esxtop
をdisk device
モードで実行すると、ESX側からディスク使用率の統計を表示することで、何が起こっているかについての手掛かりを得るのにも役立ちます。
まず、VMwareのパフォーマンスは、iSCSI(FreeNAS上)、NFS 3、CIFS(Windows)プロトコルの問題ではなく、XFSファイルシステムの書き込みと「同期」ステータスの問題です。
FreeNASには「同期」と呼ばれるプロパティがあり、オンまたはオフに設定できます。 「zfs sync = always」はデフォルトで設定されており、すべての書き込みがフラッシュされます。これにより、パフォーマンスは劇的に低下しますが、ディスクへの書き込みは保証されます。たとえば、VMware ESXI 5.5およびFreeNASを最新の機器(3.x GHZ CPU、Seagate 7200 HD、1GigEネット)で無負荷で実行すると、通常、VMwareクローンまたはWindows robocopyまたはその他の「書き込み」操作で4〜5MB /秒のパフォーマンスが得られます。 。 「zfs sync = disabled」を設定すると、書き込みパフォーマンスは簡単に40MBになり、80Mbs(1秒あたりのメガバイト)にもなります。同期を無効にすると、10〜20倍高速になり、期待どおりの結果になります。しかし、書き込みは安全ではありません。
SO、大量のクローンやシグニフィケーションロボコピーなどを実行する場合は、sync = disabled 'temporarily'を使用します。次に、sync = alwaysを「標準」にリセットしますVM操作。
FreeNASには、ディスク上のすべてのバイトを検証する「スクラブ」があります... 12TBで約8時間かかります。私は、sync = disabled中に書き込まれたバイトが正常であることを確認するためのフォローアップとして週に1回実行します。