conv = fsyncを設定しないと、コンピュータの電源を切るとコピーが不完全になる可能性がありますか?

conv = fsyncを設定しないと、コンピュータの電源を切るとコピーが不完全になる可能性がありますか?

したがって、私が知っている限り、conv = fsyncは、ddが終了する前にキャッシュが完全に書き込まれたことを意味します。しかし、これはddが終了したときに書き込みがまだ完了していないことを意味しますか?たとえば、コンピュータをシャットダウンすると(ddが完了したように見えた後)、ファイルが不完全になる可能性がありますか?

ddを使用してハードドライブにすべて0を書き込むのはどうですか?

ベストアンサー1

dd conv=fsyncddが終了する前に書き込んでいるファイルのオペレーティングシステムキャッシュをフラッシュするようにします。

通常、このオプションがないと、オペレーティングシステムが記録するすべてのデータを承認するとddが終了します。オペレーティングシステムをシャットダウンすると、終了する前にコンテンツをディスクにフラッシュし、ファイルシステムをマウント解除します。

したがって、正常にシャットダウンする場合は、fsyncオプションを使用するのと大きく変わりません。ただし、ddなしで実行して完了するのを待ってからプラグを抜くと、すべてのベットがキャンセルされます。もちろん、fsyncオプションを使用しても、これは状況が正しく進行しない可能性がありますが、少なくともddの出力はディスクに残ります。

dd conv=fsync繰り返しますが、これがリムーバブルドライブの場合、fsyncを使用してからディスクを取り出したり、使用せずにディスクを取り出すことには違いはありません。フラッシュバッファゾーン。ただし、リムーバブルディスクを取り出さずに取り出すと、すべてのバッファに書き込む機会があるかどうかはわかりません。

ここで最大の違いは、おそらくfsyncオプションを使用すると、dd(またはpop)が完了するのを待っている間に、OSがすぐにバッファをフラッシュするように強制することです。それ以外の場合、バッファはバックグラウンドで機会的にフラッシュされ、カーネルは他のIのためにバッファフラッシュを遅延させる可能性があります。まずフラッシュしてください。 /O。

ここで重要なのは、カーネルが他のより重要なI / O(たとえば、同じデバイスへの読み取りまたは別の書き込み)のためにいくつかの書き込みを延期することです。 fsync(または取り出し)を使用すると、この特定のI / Oが最も重要であることをカーネルに知らせ、今完了します。

ここでは、データソースは重要ではなく、データが作成された場所と待機時間のみが重要です。

おすすめ記事