lsを使用してファイルをすぐにコピーすることが表示されないのはなぜですか?

lsを使用してファイルをすぐにコピーすることが表示されないのはなぜですか?

メモリバッファリングのためですか?これで進行状況を監視しましたがcp /network/large_file . &ls -lh約400 MBになるまでファイルは表示されませんでした。 Linux 2.6カーネル、Bash 4、4GBスワップスペース、16GB RAM。

答え1

これは、基本ファイルシステム、HDDバッファ、Raidコントローラバッファ(Raidを使用している場合)などによって異なります。ファイルがコピーされると、まずメモリーからストリームを開始し、保留中の書き込み操作があることをディスクに通知します。その後、ディスクはそのタスクを処理します。書き込みは「完了」しましたが、ファイルが実際にはまだディスクに書き込まれている場合が非常に一般的です。 ZFSのようにこれらの「遅延」を防ぐファイルシステムがあり、私はBtrFSを信じています(これを記録中のコピーと呼びます)。他のファイルシステムは、実際には完了していないにもかかわらず、コピー/書き込み操作が完了したことを報告します。これにより、停電などが発生するとファイルが破損する可能性があります。 ZFSとBtrFSは、ファイル書き込み操作が完了するまで、オペレーティングシステムにファイル書き込み操作の完了を報告しません。完全に完了しました。これが起こらないようにしてください。

これをテストするには、お気に入りのディストリビューションのDVD isoなどの大きなものをあるディレクトリから別のディレクトリにコピーします。コマンドラインはすぐにプロンプ​​トに戻りますが、コマンドをsyncすぐに入力して送信すると、書き込み操作が完全に完了するまでコマンドラインで停止することがわかります。 (ディスクアクティビティインジケータがある場合はまだ点滅していることがわかります)

関連情報