次の方法で共有


トランザクション NTFS の展開

トランザクション NTFS (TxF) は、ほとんどのトランザクション メカニズムと同様に、データ書き込みの正しい順序に依存します。 適切な書き込み順序を確保するには、データ キャッシュを明示的に制御する必要があります。 この要件を満たすために、TxF では、ディスク ドライブに、SCSI、SATA、ATA などの標準化されたドライブ インターフェイスの一部であるキャッシュ制御メカニズムを実装する必要があります。

TxF で使用されるキャッシュ制御メカニズムは、Force Unit Access (FUA) 関数と呼ばれるフラグです。 このフラグは、シグナルが完了する前に、ドライブが安定したメディア ストレージにデータを書き込む必要があることを指定します。 トランザクション内の特定の重要なポイントで、TxF は FUA を発行して、電源障害が発生した場合にトランザクションを正常にロールバックするために必要な制御データが失われないようにする必要があります。

通常、サーバー クラスのディスク ドライブ (SCSI とファイバー チャネル) では、FUA フラグがサポートされます。 Vista 以降、Windows では SCSI ディスクとファイバー チャネル ディスクに対してのみ FUA フラグがサポートされています。

コモディティ ドライブ (ATA/SATA/USB) では、TxF には、ドライブの電源障害によって TxF がトランザクションを正しくロールバックできず、ドライブの書き込みキャッシュが無効でない限りデータが不整合な状態になる可能性がある一定期間の脆弱性があります。

一部のホスト バス アダプター (HBA) とストレージ コントローラー (RAID システムなど) には、バッテリでバックアップされたキャッシュが組み込まれています。 これらのデバイスは、電源障害が発生した場合にキャッシュされたデータを保持するため、FUA フラグを遵守するために接続されているディスクは必要ありません。 また、電源モジュールが無停電電源装置 (UPS) によって保護されているディスクでは、FUA フラグを受け入れる必要はありません。 これは、UPS がディスクがキャッシュをメディアにフラッシュするのに十分な長さの電力を維持するためです。

ドライブの書き込みキャッシュを無効にすると、ドライブが FUA フラグを尊重する必要がなくなります。 IOCTL_DISK_SET_CACHE_INFORMATION制御コードをディスクに発行することで、ディスクの書き込みキャッシュを無効にすることができます。 書き込みキャッシュの状態 (オン/オフ) は、システムの再起動後も保持されます。 この制御コードを発行すると、そのディスクに発行されたすべての I/O に対して非常に大きなパフォーマンスの影響が生じ、パフォーマンスが著しく低下する可能性が高くなります。 このコントロール コードの使用は、デプロイの前に慎重に検討する必要があります。

Note

TxF が電源障害を通じてデータの整合性を一貫して保護できるようにするには、システムが次の条件の少なくとも 1 つを満たす必要があります。

  • サーバー クラスのディスク (SCSI、ファイバー チャネル) を使用します。
  • ディスクがバッテリを使用したキャッシュ HBA に接続されていることを確認します。
  • ストレージ・コントローラー (RAID システムなど) をストレージ・デバイスとして使用します。
  • ディスクの電源が UPS によって保護されていることを確認します。
  • ディスクの書き込みキャッシュ機能が無効になっていることを確認します。