私は比較的大きなファイルをアーカイブするために、SATA から USB へのブリッジを介して Mac に接続された SSD を使用しています。SSD に転送した後、マウントを解除してプラグを抜きます。
この SSD には DRAM キャッシュがあります。私の理解では、このキャッシュは書き込みをキャッシュし、ファイル マッピングのコピーを保存するために使用されます。アンマウントせずに、または書き込み中に取り外すと、DRAM にキャッシュされているデータが失われる可能性が非常に高く、マッピングで変更されたデータへのポインターも失われるため、ファイルも失われる可能性があります。
私の質問は次のとおりです:ドライブをアンマウントし、正常にアンマウントされた後すぐにプラグを抜くと、DRAM の内容がディスクに書き込まれる前に SSD の電源が切れてしまう可能性はありますか?
OS / APFS は DRAM を管理し、アンマウントされる前にフラッシュされるようにしますか、それとも SSD のファームウェアがこれを実行しますか?
答え1
SSD 上の DRAM はファームウェアによって管理されますが、OS は「バリア」関数呼び出しを使用して、保留中のすべてのデータを安定したストレージにフラッシュするようにファームウェアに指示できます。また、OS は書き込みキャッシュを有効にするかどうかを SSD に指示することもできます。
ドライブを正常にアンマウントすると、OS は必要な関数呼び出しを発行して、すべてのデータが完全に書き込まれたことを確認します。
書き込み中に、正常にアンマウントせずにプラグを抜くと、すべてが台無しになり、結果は SSD ファームウェア、ファイル システム、およびその他のさまざまな要因によって異なります。
答え2
オペレーティング システムによって制御されるホストと、SSD のファームウェアによって制御される SSD 内の DRAM の両方に DRAM が関与しています。
他の回答で述べたように、適切に取り出すと、ホストと SSD 間のアクションを同期するための SATA および USB プロトコルの一部である明確に定義されたメカニズムによってすべてが処理されるはずです。
書き込み中に取り出すと、ホストのDRAMとSSDの両方のデータが書き込まれないままになる可能性が高く、書き込まれていないデータがホストのDRAMにあったかSSDのDRAMにあったかはどちらにしても失われるため、あまり意味がありません。その状況では、おそらくデータさえもの上ホストによって送信されたが、まだ SSD によって受信されていないバス。