我有一台笔记本电脑,当电脑装有Windows 10操作系统时,即使没有读写任何数据,U盘插入电脑后也会变得非常热。
但是,在安装了 Linux 的同一台计算机上,情况就完全不同了。当我密集地从闪存驱动器写入和读取数据时,这个闪存驱动器会变得稍微热一些。
发现这个现象后,我在台式机、笔记本……上测试了各种U盘,都是同样的Linux和Windows系统,情况都差不多。
在Linux环境中,我使用
dd if=/dev/urandom of=/path/to/my/flash/parent/folder/test.bin bs=1024M count=4
测试大文件写入。为了测试写入大量小文件,我使用:
parallel dd if=/dev/urandom of=/path/to/my/flash/parent/test-{}.bin bs=1M count=1 ::: {0001..4096}
在 Windows 10 环境中,我只需插入 USB 闪存驱动器即可,无需执行任何操作(故意不运行 I/O 密集型应用程序),只需等待 10 分钟。注意:所有测试计算机上的 Windows 10 环境都是新安装的,没有第三方应用程序(我使用教育版,并且在测试前启动机器时禁用了实时保护。但是,我只是取消了 Windows 图形设置管理器中的复选框。我不知道是否需要重新启动才能使更改生效)。
更新 1:
可能是U盘本身的问题,下面是我这次测试用的U盘型号。(这不是广告,我对这些产品没有态度)
更新2:
有一个答案考虑了Linux系统缓冲区的影响。
但对于我使用的 Linux 发行版,当 DD 完成时,我输入了代码sync
,它几乎不花任何时间执行。因此,这样做的效果并不显著。
为什么?这是因为 Windows 总是对闪存驱动器进行一些无用的访问吗?
另外当我必须使用 Windows 时,有没有什么实用的方法可以让 USB 闪存驱动器更凉爽?
答案1
答案2
Windows 确实有“可以使用 USB 记忆棒来加速计算机”的功能。它通过使用未使用的记忆棒内存作为缓存来减少磁盘 I/O。这种额外的活动可能会产生过多的热量。
可以通过以下方式测试离开这个选项,看看棒子是否还会变热
答案3
这里有几种可能性。
- Windows 确实有更多软件可以自动扫描、完整性检查、电源管理,并且通常使用 USB 记忆棒。这会导致驱动器在 Windows 中的活动比在 Linux 中更多(假设两者都是默认安装)。
- Linux 驱动程序可能将驱动器用作 USB 2.x 连接磁盘,而 Windows 可能有 3.x 驱动程序,并且可能是 3.x 端口。这会增加使用速度和热量。
- Windows 认为更大的磁盘需要通过 USB 端口供电,因此通过端口提供更多电量(即使没有必要)。更准确地说,设备从端口请求的电量超过了所需电量。这种情况不太可能发生,但可能发生如果主板固件允许,并且主板和/或相关设备的驱动程序软件有错误/无法正常运行。我见过这种情况发生在较旧的主板和一些非品牌 USB 设备上。如果涉及 USB 扩展或加密狗并且电缆内部损坏,或者在直接连接时,接口板本身出现问题,也可能发生这种情况。理论上,Windows 10 会捕获此情况并通知端口上的电涌,特别是如果电缆损坏,但它并不总是能成功停用端口。
- 当驱动器未使用时,Windows 防病毒软件可能会对其进行扫描。
答案4
另一种可能性是 Linux 和 Windows 处理可移动驱动器写入的方式不同。默认情况下,Windows 会强制尽快进行所有写入,以防您移除驱动器。另一方面,Linux 要求您在移除驱动器之前卸载驱动器,因此会在内存中保留写入缓存。
因此,在 Linux 下,您的驱动器在特定时间内实际上可能使用得较少,因为写入会更加分散,甚至可能需要更少的写入(如果您修改尚未写入驱动器的文件。)