基于USB3.0 USAP的Linux RAID1双盘阵列写入速度探究

问题

最近为了数据安全,把包含有数据的Linux机器的/home目录挂载到了USB3.0的RAID1阵列上,到底写入性能可以到什么程度呢? 下面就来测试一下

测试环境

机器是CPU是1037U,内存4G,系统为Ubuntu 18.04, 硬盘为两块外置ST4000LM024移动硬盘,使用了支持UASP的主控芯片。看网上评测裸盘写入最高速度150MB/s,但是使用USB3.0的情况下应该会有些损失。使用Linux构建软RAID1阵列,然后添加到LVM物理卷,再分配逻辑卷并格式化为ext4格式。分区空闲区域超过60%。

测试方法

这里使用dd进行测试,使用以下命令来得到写入平均速度

替换bs_size和write_count使之乘积为大致的定值来进行每项测试。同时使用iostat来观察磁盘的平均tps

测试数据

经过测试后,得到了下面的数据

数据块尺寸(KB) 传输速率(MB/s) 磁盘平均每秒事务(tps) CPU占用率
4 16.7 ~4300 41%
8 30.6 ~4000 37%
16 46.5 ~3000 35%
32 71.9 ~2400 29%
64 88.7 ~1400 20%
128 95.1 ~720 20%
256 97.8 ~380 12%
512 96.5 ~200 9%
1024 98.8 ~200 6%
2048 97.6 ~200 6%
4096 95.0 ~200 5%
8192 98.5 ~200 5%
16384 96.8 ~200 4%

基本上可以得出一个结论,USB3.0+UASP下,如果数据块较小,IOPS较高,USB的中断处理对于CPU的压力还是很大的。双盘阵列接近9000的每秒中断处理会将CPU吃到了41%。而在数据块变大之后,我们可以观察到由于USB中断导致的CPU消耗显著降低。并且由于数据快变大导致磁盘实际写入性能也提升到接近100MB/s。用来存储照片与视频以及大量的归档文件,综合性能还是不错的。

结论

近年来大容量移动硬盘价格普遍降低,虽然有关于高容量SMR方案导致性能与可靠性的争论,但通过冗余方案提供可靠性完全可以规避掉相关问题。实际看基于USB3.0 UASP的廉价Linux RAID1阵列具有很高的实用性。