USB 闪存盘:复制大约需要 3 分钟,但卸载需要很长时间:10 到 12 分钟

USB 闪存盘:复制大约需要 3 分钟,但卸载需要很长时间:10 到 12 分钟

我正在使用 Ubuntu 17.10。

我将 USB 笔式驱动器格式化为 NTFS,以准备 Windows7 USB 安装程序。

我在此 U 盘上设置了可启动标志,并将文件复制到其中。

编辑 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操作根本不是即时的,需要3分钟才能将文件复制到USB笔式驱动器。

编辑 3:该sync操作(在 之后立即完成cp)需要 12 分钟才能完成!但随后 将umount是即时的。

对于 FAT32,(安装期间也禁用同步),我注意到相同的行为。

知道为什么卸载 NTFS USB 驱动器要花这么长时间吗?

答案1

你可能遭受缓冲缓存为了加快写入 USB 记忆棒(和一般硬盘)的速度,Linux 使用了文件系统缓存:

当您(假设您)将某些内容写入记忆棒时,该内容首先被写入缓存(在 RAM 中),然后命令cp(例如)立即返回,假装是一个非常快速的写入操作。当您执行其他操作时,缓存的内容随后会在后台写入记忆棒。您可能会注意到,记忆棒上的 LED 仍在闪烁,显示写入操作(取决于您的记忆棒),尽管没有发生任何明显的变化。

当您umount在写入操作后立即发出命令时,请umount等待直到文件系统的所有缓存内容都写入到棒中,以确保不会丢失任何数据。

使用 ,sync您可以手动强制清空缓存并将数据写入棒。但是,这不会加快总耗时,因为您必须等待sync完成(而不是等待umount)。但是umount会立即返回,因为缓存已被刷新。

总之,将大文件或大量文件复制到U盘后,您有三种选择:

  • umount等待 10 分钟完成
  • sync,等待 10 分钟完成,然后umount(几乎立即返回)
  • 只需等待 10 分钟(也许更久一点),什么也不做(或者做一些与棍子无关的事情),然后然后问题umount。由于缓存会在后台自动写入,umount因此也会几乎立即返回。

答案2

当您将文件复制到 U 盘时,它们不会直接写入其中。文件系统同步发生在卸载命令上,实际数据是在等待卸载时写入的。如果您sync在之前执行umount,则umount立即执行。

答案3

附注:如果您想将某些内容复制到 USB 驱动器然后检查sync,您可以使用我的小工具usbcp

https://github.com/satk0/usbdrivetools

例子:

usbcp file mounted/pendrive

是的,我知道这是一个广告,但如果除了我之外还有一个人能发现这个工具有用,我就会非常高兴!

相关内容