ZFS は、プールデバイス上の書き込みキャッシュを有効化して、システム電源喪失時にキャッシュのフラッシュを安全に処理します。ただし、データが安定したストレージにまだコミットされていないときに、リセット時電源オン条件が発生する可能性があります。
単一点障害がない場合は、次回のデータ読み取り時にこのような状況が ZFS によって自動的に検出されて修正されます。プールの定期的なプール消し込みによって、失われた書き込みの検出および修復が増加する可能性があります。
単一点障害のある環境では、この問題がデータ損失につながる可能性があります。
この問題は、クラスタ化構成からエクスポートされた LUN にアクセスするときに起こりやすくなります。クラスタのフェイルオーバー時は、動作しているヘッド上の SCSI ターゲットによって明示的に送信されたリセット時電源オンイベントが原因で、問題のあるヘッドによってキャッシュされたデータが失われるおそれがあります。このような状況では、単一点障害のないプールであっても影響を受けることがあります。
この問題の症状としては、永続的なチェックサムエラーがまとまって発生します。fmdump –eV からの出力を使用すると、チェックサムエラーが永続的であると診断されたかどうかを判断できます。fmdump –eV の出力内の zio_txg エントリは、データのブロックが書き込まれた時間を表します。永続的なチェックサムエラーというパターンは、デバイス、ソフトウェア、またはハードウェアの障害の症状としてもあり得ます。
回避方法: クラスタからエクスポートされた LUN に依存するシステムや、単一点障害のあるシステムの場合は、システム上のデバイスの書き込みキャッシュを無効にすることを検討してください。
SCSI (sd) または FC (ssd) デバイスの書き込みキャッシュを無効にし、キャッシュのフラッシュを抑制するには、次の手順を実行します。
ストレージデバイスに応じて、/kernel/drv/sd.conf ファイルまたは /kernel/drv/ssd.conf ファイルを /etc/driver/drv ディレクトリにコピーします。
/etc/driver/drv/sd.conf ファイルまたは /etc/driver/drv/ssd.conf ファイルを編集して、書き込みキャッシュを無効にし、キャッシュのフラッシュを抑制します。
VID、PID、または SUN COMSTAR の値を、 sd (7D) のマニュアルページの説明のように適切な値で置換するための行を追加します。
SPARC システム:
sd-config-list="SUN COMSTAR","disable-cache-suppress-flush"; disable-cache-suppress-flush=1,0x40010,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
x64 システム:
sd-config-list="SUN COMSTAR","disable-cache-suppress-flush"; disable-cache-suppress-flush=1,0x40008,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
システムをリブートし、高速リブートオプションをオーバーライドします。
# reboot -p