PPAからインストールされた「ZFS on Linux」でネイティブZFSを使用しています here 。セットアップは問題なく、私は2台のWD 4TB Red HDDを備えたミラー構成でそれを使用しています。残念ながら、ディスクアレイにwriteすると、パフォーマンスの問題が発生します。読書時のパフォーマンスはOKです。
アレイへの大量の書き込み中に、rsyncによって報告されるように、コピープロセスが〜5秒ごとに〜5-10MB /秒に停止するという問題が発生しています。ストールの間の速度は〜75MB /秒で、これは他のファイルシステムやシステムに期待されるものと同じです(私はbtrfsを試しましたが、これは〜85MB /秒を取得しました)。 iotop
を見ると、コピーストールがtxg_sync
の実行/ I/Oの処理と一致していることがわかりました。この問題は、ZFSの一般的な問題と思われる「バースト」I/Oの問題のようです( ここ および ここ を参照)。最初のリンクからオプションを適用しました
options zfs zfs_prefetch_disable=1
これはパフォーマンスの問題にはある程度役立ちましたが、解決しませんでした。 txg_sync
の5秒間隔は、vfs.zfs.txg.timeout = "5"(たとえば、5秒)の間隔であるように見えます。これは、LinuxのZFSのデフォルト設定です。
これは正常な動作ですか、それとも他の設定を試すことができますか?もしそうなら、何か提案はありますか?両方のリンクで多くのオプションを見つけることができなかったことに注意してください...
EDIT 2:少しフォローアップするために:私が使用しているシステムは、HP ProLiant Microserver N36Lで、8GB ECC RAMにアップグレードしました。ここでは、ZFSボリュームの作成に使用したコマンドを示します。私が-o ashift=12
を使用していることに注意してください(zfsonlinux FAQにあります)。これにより、ZFSが4096バイトのAdvanced Format Diskのブロックでニースを再生できるようになります。
$ zpool create -o ashift=12 -m /zpools/tank tank mirror ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E0871252 ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E3PKP1R0
$ zfs set relatime=on tank
$ zfs set compression=lz4 tank
$ zfs create -o casesensitivity=mixed tank/data
zfs_prefetch_disable
オプションを/etc/modprob.d/zfs.conf
に追加して、変更を永続的にしました。
options zfs zfs_prefetch_disable=1
そのため:
$ cat /sys/module/zfs/parameters/zfs_prefetch_disable
1
EDIT 1:要求に応じて、zpool get all
出力を追加しました。プールで圧縮をオンにしたことを忘れてしまったことに注意してください...
$ zpool get all
NAME PROPERTY VALUE SOURCE
tank size 3.62T -
tank capacity 39% -
tank altroot - default
tank health ONLINE -
tank guid 12372923926654962277 default
tank version - default
tank bootfs - default
tank delegation on default
tank autoreplace off default
tank cachefile - default
tank failmode wait default
tank listsnapshots off default
tank autoexpand off default
tank dedupditto 0 default
tank dedupratio 1.00x -
tank free 2.21T -
tank allocated 1.42T -
tank readonly off -
tank ashift 12 local
tank comment - default
tank expandsize 0 -
tank freeing 0 default
tank feature@async_destroy enabled local
tank feature@empty_bpobj active local
tank feature@lz4_compress active local
Pacoman、ミラーに2つのWD-REDドライブが2つあるため、IO ZILコンシステンシグループをディスクに書き込むと、IOが高くなります。ZIL(Write-キャッシュ)。LOGデバイスがない場合、ログデバイスはプール自体にあり、最大書き込み速度* 5秒まで大きくなる可能性があります。おそらくZILから読み取り、データを永続ストレージにコミットします。 5秒。質問:
私の推奨は、プール以外の場所にSLOGを作成することです(フラッシュしないことを前提として、ブートデバイスでも、どこにもないよりも優れています)。この方法では、5秒ごとにミラーに対して集中的に読み取りや書き込みを行うことはありません。