我正在使用 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
是的,我知道这是一个广告,但如果除了我之外还有一个人能发现这个工具有用,我就会非常高兴!