我有一个带有2TB HDD的廉价2盘位NAS。为了防止磁盘故障,我正在考虑购买第二个2TB HDD,并将其放入带有Linux mdadm的RAID1中。文件系统是ext4。
这会增加还是降低NAS的性能?读或写性能如何?
网上似乎对此有很多意见,但没有达成共识。
谢谢。
编辑:
因此,我已经有了三个不同的答案:“更快一点”,“您不会注意到”和“将降低性能(如果有的话)”。(我主要对读取性能感兴趣。)维基百科说:“读取性能可以大致按副本数量的线性倍数提高”。哪一个?
编辑2:
我发现越来越多的证据支持RAID1提高读取性能,包括MD手册页:
更改将并行写入所有设备。从任何一台设备读取数据。驱动程序尝试在所有设备上分配读取请求,以最大程度地提高性能。
我还发现了MD的RAID10 with --layout=f2
,它提供RAID1的冗余和RAID0的读取性能,并且只能与两个驱动器一起使用。但是,由于顺序写入涉及两个驱动器在驱动器的较远部分之间来回搜索,因此写入性能会降低。man md
有关详细信息。
是的,只要同时执行两个单独的磁盘读取操作,Linux的RAID1实现将磁盘读取操作的速度提高了两倍。这意味着在RAID1上读取一个10GB文件不会比在单个磁盘上快,但是读取两个不同的10GB文件*会更快。
为了演示它,只需使用读取一些数据dd
。在执行任何操作之前,请使用清除磁盘读取缓存sync && echo 3 > /proc/sys/vm/drop_caches
。否则hdparm
将要求超快速读取。
单个文件:
# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s
两个文件:
# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s
读取10 GB数据花费了65秒,而读取10 GB + 10 GB = 20 GB数据总共花费了68.7秒,这意味着Linux上的RAID1极大地受益于多个磁盘读取。skip=$COUNT
部分非常重要。第二个过程从10 GB的偏移量读取10 GB的数据。
参考http://www.unicom.com/node/459的Jared的答案和ssh的评论是错误的。那里的基准测试证明磁盘读取不能从RAID1中受益。但是,该测试是使用bonnie ++基准测试工具执行的,该工具不会一次执行两次单独的读取。作者明确指出bonnie ++无法用于对RAID阵列进行基准测试(请参阅readme)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句