| V7000存储虚拟化测试方案 |
| 2013/3/22 |
前端两台RAC服务器,双口HBA卡
部署两台光纤交换机
两台V7000光纤存储
一台Infortrend光纤存储
业务数据从外挂存储迁移到两台v7000(镜像),并通过固态硬盘进行自动热点数据迁移
通过测试模拟检查各种故障:光纤链路、光纤交换机、控制器、存储设备分别出现中断时对前端RAC应用及数据的影响。
2测试拓扑图
正常写入时间如下:
dd以2k Byte的块写入3G大小的文件所需时间为:357.358秒
数据库以每条约5k Byte大小写入2万条记录(数据块大小为4k),所需时间为:188.69秒
3测试内容
3.1光纤链路中断测试
如下图,将RAC1连接第一台光纤交换机的链路中断,分别从系统OS及数据库层面进行测试:
3.1.1写入文件系统时断开一条路径写入时间。
与正常时间相差为387.553-357.385 = 30.168秒
3.1.2写入数据库时断开一条路径写入时间。
与正常时间相差为205.78-188.69 = 17.09
3.2SAN网络中断测试
如下图,将第一台光纤交换机关闭,分别从系统OS及数据库层面进行测试:
3.2.1写入文件系统时关闭交换机写入时间。
与正常时间相差为378.628-357.385 = 21.243秒
3.2.2写入数据库时断关闭交换机写入时间。
与正常时间相差为212.10-188.69 = 23.41秒
3.3控制器故障测试
如下图,将第一台存储的A断开一条线,分别从系统OS及数据库层面进行测试:
3.3.1写入文件系统时断开控制器一条路径写入时间.
与正常时间相差为359.341-357.385=1.956秒
3.3.2写入数据库时断断开控制器一条路径写入时间.
与正常时间相差为185.59-188.69=负3.1秒(舍去,表明此场景下路径切换时间小于统计的写入时间误差)。
3.3.3写入文件系统时断开控制器写入时间.
与正常时间相差372.781-357.385= 15.396秒
3.3.4写入数据库时断断开控制器写入时间
与正常时间相差190.-188.69 = 1.95秒
3.4存储故障测试
如下图,将第一台存储整个关闭,分别从系统OS及数据库层面进行测试:
3.4.1写入文件系统时关闭存储与正常写入时间对比.
节点1、2丢失,节点3、4处于启动状态,cluster IP无法访问
RAC1、RAC2两台主机重启,数据库当掉,重启后尝试文件系统可读不可写:
[root@RAC1 test]# ls
3G.file
lost+found
[影www.dygod.cn]?禄-cd1.rmvb.filepart
灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E03.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E05.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb.filepart
灞屼笣濂冲+.Knallerfrauen.S01E06.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E07.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E08.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb
[root@RAC1 test]# rm *.rmvb
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb'? y
rm: cannot remove `灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb': Read-only file system
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E03.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb'? y
rm: cannot remove `灞屼笣濂冲+.Knallerfrauen.S01E03.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb': Read-only file system
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E06.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb'?
关闭第二个柜:
Cluster仍可访问
Node1、2处于活动状态,3、4丢失
文件系统已经无法写,可读
[root@RAC1 test]# ls
3G.file
lost+found
灞屼笣濂冲+.Knallerfrauen.S01E01.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E03.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E05.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb.filepart
灞屼笣濂冲+.Knallerfrauen.S01E06.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E07.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb
灞屼笣濂冲+.Knallerfrauen.S01E08.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb
[root@RAC1 test]# rm *.rmvb
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E01.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb'? y
rm: cannot remove `灞屼笣濂冲+.Knallerfrauen.S01E01.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb': Read-only file system
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb'? y
rm: cannot remove `灞屼笣濂冲+.Knallerfrauen.S01E02.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.V2.rmvb': Read-only file system
rm: remove regular file `灞屼笣濂冲+.Knallerfrauen.S01E03.Chi_Ger.HDTVrip.720X400-Infinity&YYeTs.rmvb'?
恢复过程:
恢复过程
恢复完毕
3.4.2写入数据库时断关闭存储与正常写入时间对比.
3.5外挂存储及热点迁移测试
如下图所示,正常业务数据在外挂存储上,现接入V7000设备,测试业务数据的透明迁移功能
对部分业务数据进行大量的操作,检查v7000的热点数据迁移功能:
附:
dd测试脚本
#!/bin/bash
echo `date +%s`
echo -e 'openssl rand 3221225472 > /dev/shm/3G.file'
openssl rand 3221225472 > /dev/shm/3G.file
echo `date +%s`
echo -e 'dd conv=fsync oflag=direct,nonblock if=/dev/shm/3G.file of=/root/test/3G.file bs=2048 count=15728 '
dd conv=fsync oflag=direct,nonblock if=/dev/shm/3G.file of=/root/test/3G.file bs=2048 count= 15728
echo `date +%s`
写入数据库脚本
drop table test cascade constraints;
create table test (a number,b varchar2(4000),c varchar2(4000),d timestamp);
drop table write cascade constraints;
create table write (i varchar2(4000),w number);
drop table read cascade constraints;
create table read (i varchar2(4000),r number);
create table chk (i varchar2(4000),r number);
create or replace procedure PROC_WRT (i in varchar2)
as
c number;
Begin
Insert into write values (i,dbms_utility.get_time);
Commit;
for c in 1..1000000
Loop
Begin
Insert into test values (c,dbms_random.string('x',2500),dbms_random.string('x',2500),sysdate);
End;
If mod(c,1000) = 0 then
Commit;
End if;
End loop;
Insert into write values (i,dbms_utility.get_time);
Commit;
End;
begin
proc_wrt('&i');
end;
create or replace procedure PROC_RD (i in varchar2)
as
C number;
Begin
Insert into read values (i,dbms_utility.get_time);
Commit;
Select count(*) into C from test;
Insert into read values (i,dbms_utility.get_time);
Commit;
insert into chk values (i,C);
commit;
End;
begin
PROC_RD(&i);
end;下载本文