BTRFSプールで多数のディスクが一緒に実行されているファイルサーバーがあり、キャッシュ用のSSDを追加したいと考えています。私は主に物事をスピードアップした後ではありませんが、頻繁に使用されていない時間のほとんどでハードディスクをシャットダウンできるように定期的な小さなアクセスをキャッチしたいと思います(24時間年中無休で実行しないとエネルギーが節約され、ディスクは長持ちします)。
私の知る限り、Linuxには現在dm-cacheとbcacheの2つのSSDキャッシング手法が実装されています。 dm-cacheはまだより効率的であると言われていますが、両方の開発が進行中であり、絶対的な最大効率に調整する必要はありません。
bcacheのドキュメント を読んで、私はこれらのオプションに出くわしました:
writeback_delay:ダーティデータがキャッシュに書き込まれ、以前は何も含まれていなかった場合、ライトバックを開始する前に数秒待機します。デフォルトは30です。
writeback_percent:ゼロ以外の場合、bcacheは、バックグラウンドライトバックを抑制し、PD =レートをスムーズに調整するコントローラー。
writeback_running:オフの場合、ダーティデータのライトバックはまったく行われません。ダーティデータは、ほとんどいっぱいになるまでキャッシュに追加されます。ベンチマークのみを目的としています。デフォルトはオンです。
writeback_delay
に十分な大きさの値を設定すると、私にとってはうまくいくようです。1時間に1回だけ、または(これが発生すると思いますが)キャッシュがいっぱいになっている場合にのみ書き戻します。
これは合理的な設定ですか?ディスクのスピンダウンに成功するために他に何か検討したことがありますか?まったく別のルートを使用しても問題ありませんそれが私の要件を満たしている場合。
@gorkyplは 同様の問題について別の解決策を探しています のようですが、要件と環境が異なり、まだ回答を受け取っていません。
あなたのアプローチは複雑すぎると思います。
キャッシュの読み取り:ここでは何もしません。十分なRAMがある場合、これはLinuxで自動的に実行されます。
書き込みキャッシュ基本的にこれはあなたが望むものです。しかし、書き込みが最終的にディスクに送られると、ウェイクアップも発生します。
したがって、影響を受けるファイルシステムを直接ram-disk/dev/shmまたはssdに置くことができます。
省電力:頻繁なスピンダウン/アップで省電力になるとは思いません。逆に、ディスクが早く死ぬ可能性があるため、製造プロセスに追加のエネルギー消費があります。また、スピンアップは非常に電力を消費します。