フラッシュドライブを取り出すのに非常に長い時間がかかります

フラッシュドライブを取り出すのに非常に長い時間がかかります

私はDebian 8を新規インストールしていますが、フラッシュドライブを取り出すまでに途方もない時間(1分から10分、15分)待たされることがよくあります。その間、エラーが表示されるため、ドライブに関連するものにアクセスできません。An operation is already pending.

フラッシュドライブのフォーマット (FAT、ext4、NTFS を試しました) では何も問題がないようですが、そこにファイルを置き始めると問題が発生するようです。(ただし、重いものではなく、約 500 MB です)。

この問題の原因は何でしょうか? 排出を高速化するために何かできることはありますか?

答え1

これがあなたの質問に対する実際の説明/解決策であるかどうかはわかりませんが、これは USB 全般の問題であると思います。

大きなファイルや多数のファイルをコピーする場合、USB デバイスはホストに「これらのファイルを送信します」というメッセージを送信します。その後、デバイスはすべてのファイルを非同期で送信し、必要な時間をかけます。つまり、コピーを実行すると、デバイスはcp /my/flash/drive/foo.txt /home/bar/foo.txtオペレーティング システムにファイルがコピー中であることを通知し、ファイルを送信することになります。

すべてのデータが実際に転送されたかどうかを確認する唯一の方法は、syncフラッシュ ドライブ上のファイルをコピー/移動または削除するコマンドを実行した後に入力することです。同期コマンドは、ドライブがデータ転送を完了するまでブロックします。その後は、USB フラッシュ ドライブを安全にアンマウント/取り出すことができます。


[編集]: チェックこの郵便受け操作の進行状況を確認するにはsync、実行時に表示される数字を確認します。

watch grep -e Dirty: -e Writeback: /proc/meminfo

バックグラウンドでのデータ転送が行われると、ゼロまで減少します。完了すると、sync完了し、フラッシュドライブが取り出されます。


USB ストレージ デバイスの取り出しに関するもう 1 つの一般的な問題は、少なくとも Debian では、フラッシュ ドライブ上のファイル/フォルダで現在作業中のプログラム、ターミナルなどがある場合、取り出しが許可されないことです。したがって、ターミナルでフラッシュ ドライブ上のフォルダにディレクトリを変更し、別のターミナルを使用してフラッシュ ドライブを取り出そうとすると、最初のターミナルでフラッシュ ドライブ以外の場所にディレクトリを変更するまで、取り出しは許可されません。

答え2

これは、デバイスにまだ書き込まれていないキャッシュされた書き込みが蓄積されているためである可能性があります。「USB スティックの致命的な停止問題」

回避策としてはダーティメモリの量を制限する未処理のIOのため:

echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes

関連情報