web-dev-qa-db-ja.com

USBペンドライブ:コピーには約3分かかりますが、アンマウントには10​​〜12分かかります。

Ubuntu 17.10を使用しています。

Windows7 USBインストーラーを準備するために、USBペンドライブをNTFSにフォーマットしました。

このペンドライブに起動可能なフラグを設定し、ファイルをコピーしました。

編集1:USBペンドライブは、udevによって自動的にマウントされます。

umount /dev/sdb1の完了には10〜12分かかります。

マウントオプションは次のとおりです。

$ mount | grep sdb
/dev/sdb1 on /media/mansfeld/Win7_USB_Installer type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

編集2:cp操作はまったく瞬時ではなく、ファイルをUSBペンドライブにコピーするのに3分かかりました。

編集3:sync操作(cpの直後に実行)が完了するまでに12分かかりました!ただし、umountは瞬時になります。

FAT32の場合(マウント中も同期が無効になっている)、同じ動作に気付きます。

NTFS USBペンドライブのアンマウントに時間がかかる理由はありますか?

6
SebMa

おそらくから苦しんでいます バッファリング キャッシング。 USBスティック(および一般的なハードディスク)への書き込みを高速化するために、Linuxはファイルシステムキャッシュを使用します。

スティックに何かを(考えて)書き込むと、まず(RAM内の)キャッシュに書き込まれ、cpコマンド(たとえば)はすぐに非常に高速な書き込み操作のふりを返します。他のことをしている間、キャッシュの内容はバックグラウンドでスティックに書き込まれます。スティックのLEDがまだ点滅していることに気付く場合があります(スティックによって異なります)。

書き込み操作の直後にumountを発行すると、umountは、データが失われないことを確認するために、すべてのファイルシステムのキャッシュコンテンツがスティックに書き込まれるまで待機します。

syncを使用すると、手動でキャッシュを空にし、スティックにデータを書き込むことができます。ただし、(syncを待つ代わりに)umountが完了するのを待つ必要があるため、これは合計経過時間を短縮しません。ただし、umountは、キャッシュが既にフラッシュされているため、すぐに戻ります。

要約すると、大きなファイルまたは多数のファイルをスティックにコピーした後、3つの選択肢があります。

  • umountそして、完了するまで10分間待ちます
  • sync、10分待ってからumount(ほぼすぐに戻ります)
  • 単に10分間(おそらくもう少し)待つだけで、何も(またはスティックに関係のない)何もせずにthen issue umountを発行します。キャッシュはバックグラウンドで自動的に書き込まれるため、umountはほぼすぐに返されます。
4
PerlDuck

ファイルをペンドライブにコピーする場合、ファイルには直接書き込まれません。アンマウントコマンドでファイルシステムの同期が行われ、アンマウントを待機している間に実際のデータが書き込まれます。 syncの前にumountを実行すると、umountは即座に実行されます。

4
Pasi Suominen