弹出闪存盘需要*非常*长时间

弹出闪存盘需要*非常*长时间

我正在 Debian 8 上运行全新安装,并且我经常要等待很长时间才能弹出闪存驱动器(从 1 到 10.. 15 分钟)。在此期间,我无法访问与驱动器相关的任何内容,因为我收到错误An operation is already pending.

似乎与闪存驱动器格式无关(我尝试过 FAT、ext4、NTFS),但当我开始在其中放入文件时它似乎也会启动。(不过文件不大,~500Mb)。

是什么原因导致了这个问题?我能做些什么来加快弹射速度吗?

答案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 存储设备的另一个常见问题是,如果当前有程序、终端或类似程序正在处理闪存驱动器上的文件/文件夹,Debian 至少不会允许弹出。因此,如果您在终端中将目录更改为闪存驱动器上的文件夹,然后尝试使用另一个终端弹出闪存驱动器,则除非您在第一个终端中将目录更改为闪存驱动器以外的其他位置,否则 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

相关内容