简单RAID磁盘阵列测试
2014-04-24 by dongnan
开始之前
整理笔记,发现早期的raid测试笔记,整理并记录帮助有需要的朋友。
RAID5
硬件: Dell r610 perc 6i卡 4 * 300G 15k sas 硬盘(0,1,2,3)。
特性: RAID5 不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,
并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。
测试
- 拔掉 2号硬盘virtual disk仍然存在,可以正常进入VmWare ESXi系统。
- 更换新硬盘后将,自动 rebuild重建,重建期间可以重启计算机。
小结
RAID5 只允许一块硬盘损坏,所以热备盘总是和RAID5阵列对应起来,当某个硬盘损坏热备盘将自动启用。
RAID10
硬件: Dell r610 perc 6i卡 4 * 300G 15k sas 硬盘(0,1,2,3)。
特性: RAID10 将自动创建 span0 与 span1 两个组,硬盘 0、1 分在 span0 组,2、3 分在 span1组。
测试
- 拔掉 span0组磁盘1,span1组virtual disk仍然存在,可以正常进入VmWare ESXi系统。
- 拔掉 span0组磁盘0、1, 提示virtual disk丢失,不能进入VmWare ESXi系统。
- 更换新硬盘后将,自动 rebuild重建,重建期间可以重启计算机。
小结
RAID10是先做镜象然后再做条带(先做两个raid1 然后再把两个 raid1 做成 raid0)
,允许不同span组各坏掉1块硬盘,但同span组硬盘不能同时坏掉。
RAID重建与全局热备
硬件: Dell r710 perc 6i卡 4 * 1T 7.2k sas 硬盘(0,1,2,3)0-2 三块硬盘做 Raid5,3号硬盘做hotspare 热备盘。
设置方法
将新的硬盘设置为 global hot spare(全局热备), 稍等片刻将自动开启 rebuild 。
热备盘测试
- 拔掉 0号硬盘virtual disk仍然存在,raid 5允许一块硬盘损坏。
- 3号硬盘(- hotspare)开始自动- rebuild,- rebuild期间可以重启计算机。
- 重建结束后,硬盘(1、2、3)组成新的virtual disk,其中3号硬盘原为hotspare热备盘。
- 0号硬盘位插入一块新硬盘,- 0号硬盘与- 3号硬盘开始替换,- 0号硬盘与- 3号硬盘灯狂闪。
- 在PD Mgmt(物理磁盘管理界面)中可以看到0号硬盘state为Replacing(替换),右下角可以看到Replacing PD --:00:03(0与3号硬盘)。
- 替换结束后,virtual disk仍由硬盘最初的0、1、2三块硬盘组成,3号硬盘仍然做hotspare热备盘。
重建时间
以本次测试的Raid5为例,重建时间大概是4-5小时,磁盘越大重建的时间越长,相反磁盘越小重建时间越段。
小结
当某个硬盘损坏,hotspare热备盘将自动Rebuild,等待rebuild结束后可以将损坏的硬盘替换成新硬盘,
新硬盘与热备盘开始Replacing,这样hotsapre 始终存在,安全性大大增加。
磁盘状态是Foreign
硬件: Dell r610 perc 6i卡 4 * 300G 15k sas 硬盘(0,1,2,3)。
数据重要先备份数据,恢复步骤如下:
- 在 controller 0上按F2,选择foreign config-import硬盘即可。
RAID缓存策略测试
支持两种缓存策略: write-through 与 write-back 
硬件配置
磁盘: 300GB SAS 15K * 6块
Raid: Dell Perc6i /256MB Cache/级别 5/条带 1MB
CPU: XEON E5405 * 2颗,共8核心
内存: 16GB
网络: BCM 5709(GB) * 4块,双网卡绑定,模式0
操作系统: CentOS 6.5 amd64
软件:NFS
write-through 测试
设置,级别:RAID5 写缓存:关闭
顺序写
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 530.59 s, 40.5 MB/s
real    9m27.210s
user    0m0.017s
sys    0m33.575s
顺序读
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 154.403 s, 139 MB/s
real    2m34.419s
user    0m0.010s
sys    0m13.937s
设置,级别:RAID10 写缓存:关闭
顺序写
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 71.7583 s, 299 MB/s
real    1m11.760s
user    0m0.010s
sys    0m28.234s
顺序读
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 81.5824 s, 263 MB/s
real    1m21.587s
user    0m0.011s
sys    0m14.700s
write-back 测试
设置,级别:RAID5 写缓存:开启
顺序写
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 44.1236 s, 487 MB/s
real    0m44.135s
user    0m0.016s
sys    0m29.396s
顺序读
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 138.335 s, 155 MB/s
real    2m18.355s
user    0m0.015s
sys    0m14.481s
设置,级别:RAID10 写缓存:开启
顺序写
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 69.1151 s, 311 MB/s
real    1m9.117s
user    0m0.005s
sys    0m28.306s
顺序读
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 81.6012 s, 263 MB/s
real    1m21.612s
user    0m0.005s
sys    0m14.880s
小结
- RAID10级别 write-through与write-back顺序读/写差距并不是非常大。
- RAID5级别 write-through与write-back顺序写相差10倍还多,顺序读相差不大。
- write-back模式下,RAID5 比 RAID10 顺序写更快。
- write-back模式下,RAID10 比 RAID5 顺序读更快。
硬件决定IO吞吐量
环境
物理机
DELL PowerEdge R730XD 服务器
CPU: E5-2620V4 8核16线程 2.1G * 2
内存: 160G 16GB * 10
磁盘: 300G SAS硬盘 * 10
RAID: H730P 1G缓存(Raid级别 10,条带/写缓存默认)
电源: 750W 热插拔电源 * 2
系统: XenServer 7.2 版本
虚拟机
# 此虚拟机独享宿主机全部资源
4vcpu 
8GB内存 
1TB磁盘
测试
顺序写
# 第1次测试
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 22.7536 s, 944 MB/s
real    0m23.531s
user    0m0.007s
sys    0m13.385s
# 第2次测试
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 22.2226 s, 966 MB/s
real    0m23.273s
user    0m0.009s
sys    0m13.574s
# 第3次测试
time dd if=/dev/zero of=testio bs=1M count=20480
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 22.6108 s, 950 MB/s
real    0m22.745s
user    0m0.005s
sys    0m12.449s
顺序写3次测试平均值: 953.3 MB/s
顺序读
# 第1次测试
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 24.831 s, 865 MB/s
real    0m24.870s
user    0m0.011s
sys    0m8.821s
# 第2次测试
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 24.7821 s, 867 MB/s
real    0m24.799s
user    0m0.008s
sys    0m8.758s
# 第3次测试
time dd if=testio of=/dev/null bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 24.7333 s, 868 MB/s
real    0m24.743s
user    0m0.006s
sys    0m8.808s
顺序读3次测试平均值: 867.0 MB/s
小结
在本次测试样例中,相同的条件下(详见环境),RAID10 顺序写入速度大于顺序读取速度。