我注意到我的备份非常慢,因此我使用 sysbench 进行了速度测试,如下所示:
$ mkdir benchmark
$ cd benchmark
$ sysbench fileio prepare
$ sysbench fileio --file-test-mode=rndrw run
以下是结果:
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Extra file open flags: 0
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
reads/s: 72.23
writes/s: 48.16
fsyncs/s: 153.46
Throughput:
read, MiB/s: 1.13
written, MiB/s: 0.75
General statistics:
total time: 10.0039s
total number of events: 2741
Latency (ms):
min: 0.03
avg: 3.65
max: 86.83
95th percentile: 12.30
sum: 9991.70
Threads fairness:
events (avg/stddev): 2741.0000/0.00
execution time (avg/stddev): 9.9917/0.00
该硬盘是新款 4TB 西部数据硬盘,位于 Nisuta USB 3 盒内。
驱动器中只有分区是空的并且是 EXT4。
为什么这么慢?
答案1
我记得在 Linux 机器上看到过关于 Seagate 4TB 硬盘性能不佳的消息。我有一个这样的硬盘,当你开始复制大量文件时,它就变得很慢。我等了好几个小时才复制了大约 60GB 的文件。
我买硬盘后不久就研究了这个问题,并意识到了这一点。据我所知,我拥有的 4TB 外置硬盘采用 SMR 技术,并带有缓存,有助于掩盖性能问题。但是,一旦你执行写入密集型任务,比如尝试一次复制多个大文件,你就会注意到性能急剧下降。我看到每次复制都下降到 500kb/s。所有副本之间的总传输速率比我的互联网连接还慢。
当我第一次尝试弄清楚发生了什么时,我发现了对 SMR 的一个很好的解释:
https://blocksandfiles.com/2020/04/15/seagate-2-4-and-8tb-barracuda-and-desktop-hdd-smr/
为什么 SMR 驱动器不适合写入密集型工作负载
叠瓦式磁记录通过部分重叠写入轨道,使其中的读取轨道保持清晰,从而将更多数据写入磁盘板。读取 IO 速度不受影响,但数据重写需要使用新数据编辑读取的轨道块并将其重写为新块。与传统记录驱动器相比,这大大延长了数据重写时间。
写入密集型工作负载受 SMR 延迟的影响比读取密集型工作负载更严重。因此,SMR 驱动器通常用于存档类型的应用程序,而不是实时混合或路由密集型用例。
将写入缓存到驱动器的非瓦片区域并在空闲时间将其写入瓦片扇区将有效地隐藏缓慢的重写速度 - 直到重写 IO 请求仍在传入时缓存已填满。
然后刷新缓存并将所有数据写入驱动器的瓦片区域,在此过程中可能会导致可能需要几秒钟的暂停。
你也可以去 Mac 论坛看看。我也用 Ubuntu,但我们的情况是一样的。
https://hardforum.com/threads/seagate-3tb-slow-write-speeds-drive-failing.1924143/