Linux USB 驱动器写入缓存

Linux USB 驱动器写入缓存

有没有办法改变Linux内核处理外部存储和外部存储缓存的方式?每次我向其中复制一些内容时,从用户空间看到的复制过程似乎非常快。我在复制文件时多次看到这种行为,但我刚刚注意到当我直接将数据复制dd到驱动器时​​也会发生这种情况。所以这里没有安装任何东西!

复制 .iso 映像:

$ sudo dd if=/mnt/mountpoint/Fedora-Live-Workstation-x86_64-23-10.iso of=/dev/sdc
2869248+0 Datensätze ein
2869248+0 Datensätze aus
1469054976 Bytes (1,5 GB) kopiert, 13,8922 s, 106 MB/s
$ sync

第一个命令需要 13 秒,但第二个同步阶段需要 90 秒左右。

为什么缓存中保存如此多的数据(超过 1.3 GB)?有没有可能避免这种行为?

编辑:

如果这与您相关。我使用的是 Ubuntu 15.10 4.2.0-34-generic 标准内核,它是 USB 2.0 USB 驱动器。

答案1

sudo dd bs=10M oflag=direct conv=fsync if=yourfile of=/dev/sdc

oflag=direct绕过操作系统缓存,并conv=fsync确保退出前所有内容都已写入。

由于数据是直接写入磁盘的,因此您需要一次写入大量数据,以避免浪费时间逐字节写入,这是默认行为。您可以使用 控制该参数bs=yoursize

如果您的 dd 版本足够新,您甚至可以添加status=progress以获得漂亮的进度条。

相关内容