Linux USB Flash直写/写缓存

Linux USB Flash直写/写缓存

最近我一直在使用USB2闪存驱动器向我的公司传输大量数据。

将数据复制到闪存驱动器时,我注意到数据没有直接写入驱动器。它以 200MB/秒的速度写入缓存(?)。然后我umountsync驱动器,需要几个小时才能将数据实际写入驱动器。

我也尝试使用cpNautilus 代替,但它具有相同的行为。dd不是复制普通文件的选项。

有没有办法让Linux在写入USB存储设备时直接写入数据而不进行缓存?或者也许减少缓存,这样我在卸载驱动器时就不必等待几个小时?

最让我烦恼的是,进度条复制完成,然后我必须等待一个未指定的时间才能sync写入数据。

我使用的是 Fedora 25 机器。

[更新]试图澄清我的问题。

[更新2]发现一个类似的问题没有答案:减少闪存设备的缓存大小

答案1

可以直接干dd法。听起来是时候使用mk2fs.-fs-of-your-choice 重新格式化您的驱动器了。

man mkf2s

dd 路线很简单。

在插入驱动器之前运行一次。 lsblk

还有一次之后。

注意您设备的输出。

然后要复制文件,您可以创建一个新设备,如下所示: dd if=/dev/zero of=~/my-files.dd.img bs=1G mkfs.ext4 ~/my-files.dd.img losetup /dev/loop0 ~/my-files.dd.img

注意如果您希望在计算机重新启动后重新安装它,请将以上行添加到 rc.local 文件中。 vi /etc/rc.local

使用以下命令安装设备: mkdir /mnt/amazing mount -o loop=/dev/loop0 ~/my-files.dd.img /mnt/mymountpoint

要检查文件是否已挂载,可以使用 df 命令: df -h | grep mymountpoint /dev/loop0 976M 1.3M 924M 1% /mnt/mymountpoint where `bs=` a value greater than the output of: `ls -lh ./your-file-here`

完成卸载设备后: umount /mnt/mymountpoint losetup -d /dev/loop0

还没有测试过,但我想这就是它应该如何工作。

干杯里瓦诺夫

相关内容