问题
最近为了数据安全,把包含有数据的Linux机器的/home
目录挂载到了USB3.0的RAID1阵列上,到底写入性能可以到什么程度呢? 下面就来测试一下
测试环境
机器是CPU是1037U,内存4G,系统为Ubuntu 18.04, 硬盘为两块外置ST4000LM024
移动硬盘,使用了支持UASP的主控芯片。看网上评测裸盘写入最高速度150MB/s,但是使用USB3.0的情况下应该会有些损失。使用Linux构建软RAID1阵列,然后添加到LVM物理卷,再分配逻辑卷并格式化为ext4格式。分区空闲区域超过60%。
测试方法
这里使用dd
进行测试,使用以下命令来得到写入平均速度
1 2 |
dd if=/dev/zero of=test.dbf bs=[bs_size] count=[write_count] oflag=direct status=progress |
替换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阵列具有很高的实用性。