web-dev-qa-db-ja.com

瓦礫ディスク上で最速のLinuxファイルシステム

瓦礫のドライブにはかなりの関心があります。これらはデータトラックを非常に接近させているため、次のトラックを壊さずに1つのトラックに書き込むことはできません。これにより、容量が20%程度増加する可能性がありますが、ライトアンプリフィケーションの問題が発生します。 Shingledドライブ用に最適化されたファイルシステムで進行中の作業があります。たとえば、次を参照してください。 https://lwn.net/Articles/591782/

Seagate 8TBアーカイブなどの一部のシングルディスクには、ランダムな書き込み用のキャッシュ領域があり、汎用ファイルシステムで適切なパフォーマンスを実現します。一部の一般的なワークロードでは、ディスクは非常に高速で、最大で約200MB /秒の書き込みが可能です。ただし、ランダム書き込みキャッシュがオーバーフローすると、パフォーマンスが低下する可能性があります。おそらく、一部のファイルシステムは、一般的にランダム書き込みを回避するか、そのようなドライブで見つかった書き込みキャッシュをオーバーフローする可能性が高いランダム書き込みのパターンを回避する方が優れています。

Linuxカーネルの主流のファイルシステムは、ext4よりもシングルディスクのパフォーマンスの低下を回避するのに優れていますか?

13
gmatht

直感的にコピーオンライトとログ構造のファイルシステムは、ランダム書き込みの削減を減らすことにより、シングルディスクでより良いパフォーマンスを提供するかもしれません。ベンチマークはこれをある程度サポートしていますが、これらのパフォーマンスの違いは、シングルディスクに固有のものではありません。これらは、コントロールとして使用される単一のディスクでも発生します。したがって、シングルディスクへの切り替えは、選択したファイルシステムとあまり関係がない場合があります。

Nilfs2ファイルシステムは、SMRディスクで非常に優れたパフォーマンスを発揮しました。ただし、これは8 TBのパーティション全体を割り当てたためであり、ベンチマークは〜0.5 TBしか書き込まなかったため、nilfsクリーナーを実行する必要はありませんでした。パーティションを200GBに制限したとき、nilfsベンチマークは正常に完了しませんでした。 Nilfs2は、すべてのデータとスナップショットを永久にディスクに書き込んだアーカイブディスクとして「アーカイブ」ディスクを実際に使用する場合、パフォーマンス面での良い選択である場合があります。これにより、nilfsクリーナーを実行する必要がなくなります。


8TBのシーゲイトST8000AS0002-1NA17Zテストに使用したドライブには 〜20GB キャッシュ領域があります。デフォルトのファイルベンチファイルサーバー設定を変更して、ベンチマークセットが最大125GBになり、シェルリングされていないキャッシュ領域よりも大きくなるようにしました。

set $meanfilesize=1310720
set $nfiles=100000
run 36000

次に、実際のデータについて説明します。 opsの数は「全体的な」ファイルサーバーのパフォーマンスを測定し、ms/opはランダムな追加のレイテンシーを測定し、ランダムな書き込みのパフォーマンスの大まかなガイドとして使用できます。

$ grep Rand *0.out | sed s/.0.out:/\ / |sed 's/ - /-/g' |  column -t
SMR8TB.nilfs   appendfilerand1   292176ops 8ops/s   0.1mb/s   1575.7ms/op    95884us/op-cpu [0ms - 7169ms]
SMR.btrfs      appendfilerand1  214418ops  6ops/s   0.0mb/s  1780.7ms/op  47361us/op-cpu  [0ms-20242ms]
SMR.ext4       appendfilerand1  172668ops  5ops/s   0.0mb/s  1328.6ms/op  25836us/op-cpu  [0ms-31373ms]
SMR.xfs        appendfilerand1  149254ops  4ops/s   0.0mb/s  669.9ms/op   19367us/op-cpu  [0ms-19994ms]
Toshiba.btrfs  appendfilerand1  634755ops  18ops/s  0.1mb/s  652.5ms/op   62758us/op-cpu  [0ms-5219ms]
Toshiba.ext4   appendfilerand1  466044ops  13ops/s  0.1mb/s  270.6ms/op   23689us/op-cpu  [0ms-4239ms]
Toshiba.xfs    appendfilerand1  368670ops  10ops/s  0.1mb/s  195.6ms/op   19084us/op-cpu  [0ms-2994ms]

シーゲイトは5980RPMであるため、東芝が20%高速になると素朴に予想するかもしれません。これらのベンチマークは、約3倍(200%)高速であることを示しているため、これらのベンチマークは、単一のパフォーマンスペナルティに達しています。シングル(SMR)ディスクは、シングル(PMR)ディスクのパフォーマンスext4とまだ一致しないことがわかります。最高のパフォーマンスは、8TBパーティションのnilfs2を使用した場合でした(したがって、クリーナーを実行する必要はありませんでした)が、それでも、ext4を使用した東芝よりも大幅に低速でした。

上記のベンチマークをより明確にするために、各ディスクのext4のパフォーマンスに関連してベンチマークを正規化すると役立つ場合があります。

                ops     randappend
SMR.btrfs:      1.24    0.74
SMR.ext4:       1       1
SMR.xfs:        0.86    1.98
Toshiba.btrfs:  1.36    0.41
Toshiba.ext4:   1       1
Toshiba.xfs:    0.79    1.38

SMRディスクでは、btrfsがext4での全体的な操作に対してほとんどの利点を持っていることがわかりますが、ランダムな追加のペナルティは比率ほど劇的ではありません。これにより、SMRディスク上のbtrfsに移動する可能性があります。一方、低レイテンシのランダム追加が必要な場合、このベンチマークは、特にSMRでxfsが必要であることを示唆しています。 SMR/PMRはファイルシステムの選択に影響を与える可能性がありますが、最適化対象のワークロードを検討することがより重要であるように見えます。

屋根裏部屋ベースのベンチマークも実行しました。屋根裏部屋の実行時間(8TB SMRフルディスクパーティション上)は次のとおりです。

ext4:  1 days 1 hours 19 minutes 54.69 seconds
btrfs: 1 days 40 minutes 8.93 seconds
nilfs: 22 hours 12 minutes 26.89 seconds

どちらの場合も、屋根裏リポジトリには次の統計があります。

                       Original size      Compressed size    Deduplicated size
This archive:                1.00 TB            639.69 GB            515.84 GB
All archives:              901.92 GB            639.69 GB            515.84 GB

同じ1の2番目のコピーを追加するTBディスクをatticに追加するには、これらの3つのファイルシステムのそれぞれで4.5時間かかりました。ベンチマークとsmartctl情報の生のダンプは、次の場所にあります- http://Pastebin.com/tYK2Uj76https://github.com/gmatht/joshell/tree/master/benchmarks/SMR

4
gmatht

rsyncfrom SMRドライブの場合は、ファイルシステムがread-onlyまたはnoatimeオプションでマウントされていることを確認してください。

そうしないと、SMRドライブはrsyncが読み取るファイルごとにタイムスタンプを書き込む必要があり、パフォーマンスが大幅に低下し(ここでは、約80 mb/sから3〜5 mb/sに)、ヘッドウェア/クリックノイズが発生します。

パフォーマンスの低いrsyncジョブをすでに実行している場合は、停止する必要はありません。ソースファイルシステムを再マウントできます。

Sudo mount -o remount,ro  /path/to/source/fs

効果はすぐには見られません。ドライブがバッファに残っているすべてのデータの書き込みを完了するまで、しばらくお待ちください。10〜20分待ちます。このアドバイスは試され、テストされています。


これは、rsyncing to SMRドライブの場合、つまりファイルが完全にディスクに書き込まれた後にファイルシステムがタイムスタンプを更新しようとした場合にも当てはまる可能性があります。これにより、シーケンシャルワークロードがジッターし、膨大なデータバンドが継続的に書き換えられ、ドライブの摩耗につながります。次のmayヘルプ:

Sudo mount -t fs_type -o rw,noatime device /path/to/dest/fs

これは、rsyncを実行する前に実行する必要があります。他の要因により、このオプションは重要ではなくなる可能性があります。つまり、バッファなしのFAT/MFT更新、ファイルシステムが主にSSD用に最適化されている場合の並列書き込みなどです。


とにかくファイルシステム全体をバックアップする場合は、dd bs=32Mを使用してSMRターゲットのファイルシステムのサイズを変更します(この場合、ファイルシステムをマウントしてrsyncを実行し、すべてのファイルを転送する必要はありません)。


使用されている実際のハードウェアは、Seagateドライブ管理のSMR 8tbコンシューマードライブでした。マイレージは他のハードウェアによって異なる場合があります。

1
Read only