web-dev-qa-db-ja.com

2つの異なるSSD(サイズとメーカー)上のソフトウェアRAID1(mdadm)に関するTRIMの問題

RAID1の2つのSSD(OSとブート用)とRAID5の3つのHDD(データ用)のサーバーを使用する予定です。 mdadmを使用するすべてのLinux(CentOS7)。

私たちはオフィスに2つの残りのSSDを持っていますが、それらは製造元が異なり、容量も異なります(120Gと250G)。

最近、SSD上のRAID1について読んでいますが、心配なことは次のとおりです。

  1. 私がレイドを作成するとき、mdadmはそれを同期することを主張します。

    1. 以前は両方のSSDが使用されていました。 2つのSSDのセルに異なるデータが含まれている場合、mdadmは正確に何を同期しますか?
    2. なぜその同期が必要なのですか?
    3. SSDの寿命を縮めますか(すべてのセルに書き込みます)?
  2. fstrimコマンドは、RAID1となる/のマウントポイントとなる/dev/md0で毎週cronジョブによって発行されます。最近のバージョンのmdadmは、トリムを通過して個々のハードディスク自体に到達します。ただし、SSDが異なれば、トリミング時の戦略も異なる可能性があることを読みました。たとえば、1つのSSDがすぐにセルをゼロで満たす場合がありますが、他のSSDはできません。これは、2つのディスクが同期していないことを意味します。現在、mdadmには、デフォルトで定期的に実行され、RAID1アレイの整合性をチェックするcronジョブがあります。 トリム動作が異なるためにレポートの失敗をチェックしますか?

2
Pavel Tankov

--assume-cleanオプションを使用して初期同期を無効にすることができますが、 通常の状況ではこれを使用しないことを強くお勧めします
これは、ブロックをゼロとメタデータで埋めるmdadm配列に割り当てられた各ブロックを読み取ることです。これにより、すべてのブロックが一度タッチされ、すべてのブロックが無傷であることも保証されます。したがって、実際に初期同期を実行する必要があります。
各ブロックは1回タッチされるため、SSDの寿命が短くなります。ただし、各ブロックの1回の書き込みがSSDの有効期間の終わりに達する可能性があることを心配している場合は、新しいブロックを取得する時期です。

トリミング時のfstrim戦略に関しては、fstrimとメーカー固有のウェアレベリングを混同していると思います

  • fstrimはオペレーティングシステム/ファイルシステム操作であり、特定のブロックを解放できることをブロックデバイスに示します。通常、ファイルを削除すると、inodeとディレクトリエントリのみが参照解除されます。 fstrimは、そのファイルによって割り当てられたすべてのブロックも解放します。
  • wear-levelingは、SSD自体がfstrimで示される解放されたブロックを処理する方法です。一部の製造元は、ブロックにゼロをすぐに書き込みませんが、より多くの操作を収集し、パフォーマンスへの影響を低く保つために時間をかけてそれらを分散する場合があります。このプロセスはOSにも表示されないため、ディスクに問題やバグがない限り、エラーにはなりません。
1
Thomas