跳转至

简单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 将自动创建 span0span1 两个组,硬盘 01 分在 span0 组,23 分在 span1组。

测试

  • 拔掉 span0组磁盘1span1virtual 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)开始自动rebuildrebuild 期间可以重启计算机。
  • 重建结束后,硬盘(1、2、3)组成新的virtual disk,其中3号硬盘原为hotspare 热备盘。
  • 0号硬盘位插入一块新硬盘,0号硬盘与3号硬盘开始替换,0号硬盘与3号硬盘灯狂闪。
  • PD Mgmt(物理磁盘管理界面)中可以看到 0号硬盘stateReplacing(替换),右下角可以看到 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-throughwrite-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-throughwrite-back 顺序读/写差距并不是非常大。
  • RAID5级别 write-throughwrite-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 顺序写入速度大于顺序读取速度。

回到页面顶部