device-mapper-multipath在Linux上的应用
chiver
|
1#
chiver 发表于 2008-04-07 10:36
device-mapper-multipath在Linux上的应用
这两天一直在测试IBM OpenPower上运行RedFlag DC5.0 for pSeries是不是能够正常连接EMCCLARiiON CX系列存储。同时也测试了基于device-mapper的device-mapper-multipath工具。
下面是我的测试手记,大家look一下: 测试目的: 测试在 OpenPower环境下,通过红旗DC5.0连接上EMC CX存储,并使用系统自带device-mapper-multipath软件来测试多路径的冗余和负载均衡功能,以保证用户数据的高可用性和高可靠性。 测试方法: 为了保证用户数据的可用性和可靠性,测试方法如下: 1.可用性测试:OpenPower通过光纤交换机与EMC存储正确连接,并能在OpenPower上的红旗Linux正确识别,正确读写数据。 2.可靠性测试:通过MPIO(MultiPath IO,即多路径IO),对EMC 存储进行数据读写,以获取相关IO传输状态的数据。并且,在数据读写过程中,分别拔掉光纤线和连接EMC 存储的当前活动控制器的光纤线,造成路径失败,以考察路径切换性能,随后再重新接入光纤线,以考察路径“愈合”性能。 测试结果 通过一天紧张的测试,达到本次测试预期目标,测试成功。 在OpenPower机型上,使用红旗Linux系统,能够做到: 1.正确访问EMC CX存储。 2.通过使用系统自带的device-mapper-multipath软件,能够以负载均衡的方案访问EMC CX存储。 3.当一条光纤或者EMC CX存储的单个控制器失效时,系统自动切换路径,并能持续读写存储设备,保证数据的可靠性。 测试环境: 服务器:OpenPower 710 (1CPU/1G Mem/73.4G) 光纤卡: Emulex lp10000 HBA卡两块 交换机:Brocade 2400 一台,McData 140M一台 存储: EMC CX500 Realease 19 (双控制器) 操作系统:RedFlag DC 5.0 for IBM pSeries 测试步骤 1.部署测试环境,主机上两块Emulex光线卡连接到光纤交换机,通过光纤交换机再连接到EMC CX存储,形成SAN拓扑结构。并划分1个100G的LUN分配给主机。 2.主机安装操作系统(测试前准备),安装最新版的device-mapper-multipath软件包。 通过device-mapper-multipath用户工具来验证多路径的负载均衡及路径失效切换功能: 使用fdisk命令能看到系统识别出来的4个磁盘设备,这是多条路径得到的设备名,实际上指向存储上的同一个LUN,这说明红旗操作系统已经正确识别到了EMC CX存储划分出来的LUN,并为下一步多路径管理作准备。命令及输出如下: #fdisk -l Disk /dev/sdf: 103 GB, 107374182400 bytes 64 heads, 32 sectors/track, 102400 cylinders Units = cylinders of 2048 0* 512 = 107374182400 bytes Disk /dev/sdf doesn't contain a valid partition table Disk /dev/sdh: 103 GB, 107374182400 bytes 64 heads, 32 sectors/track, 102400 cylinders Units = cylinders of 2048 0* 512 = 107374182400 bytes Disk /dev/sdh doesn't contain a valid partition table Disk /dev/sdj: 103 GB, 107374182400 bytes 64 heads, 32 sectors/track, 102400 cylinders Units = cylinders of 2048 0* 512 = 107374182400 bytes Disk /dev/sdj doesn't contain a valid partition table Disk /dev/sdl: 103 GB, 107374182400 bytes 64 heads, 32 sectors/track, 102400 cylinders Units = cylinders of 2048 0* 512 = 107374182400 bytes Disk /dev/sdl doesn't contain a valid partition table 实际上这4个设备对应的是一个LUN,只是通过不同的路径看到的。 3.启动多路径管理软件 # modprobe dm-multipath (加载dm-multipath内核模块) 说明:系统启动时缺省地不加载这个模块。如果应用部署需要,可以在系统启动时定制。 # /etc/init.d/multipathd start (启动multipath daemon服务) # multipath –v3 (装配多路径设备) # multipath -ll (显示当前多路径拓扑结构) 3600601604b991100f4e5b5c83ef5da11 [size=100 GB][features="1 queue_if_no_path"][hwhandler="1 emc"] \_ round-robin 0 [active] \_ 1:0:2:1 sdf 8:80 [ready ][active] \_ 2:0:1:1 sdl 8:176 [ready ][active] \_ round-robin 0 [enabled] \_ 1:0:3:1 sdh 8:112 [ready ][active] \_ 2:0:0:1 sdj 8:144 [ready ][active] 这里的设备被分成了两组,实际上就是通过两个控制器看到的设备,其中一组的状态为[active],表示这是当前的活动控制器。接下来的对设备的读写都会通过该控制器下的/dev/sdf和/dev/sdl来进行操作。而只有当[active]控制器发生了故障或者执行了Tresspass后才会启用目前处于[enabled]状态的控制器下面的设备/dev/sdh,/dev/sdj。后面的测试会来证实这点。 4.在EMC CX存储上创建测试需要的分区 #pvcreate /dev/dm-0 ( 创建物理卷) #vgcreate vgtest /dev/dm-0 (创建一个卷组) Volume group "vgtest" successfully created #lvcreate -L+50G -n lvtest1 vgtest Logical volume "lvtest1" created 5.负载均衡测试 使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下: #dd if=/dev/zero of=/dev/vgtest/lvtest1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 3.47 48.51 47.52 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 sdf 756.57 6044.44 0.00 5984 0 sdh 0.00 0.00 0.00 0 0 sdj 0.00 0.00 0.00 0 0 sdl 334.34 2682.83 0.00 2656 0 通过上述输出,我们看到,在对/dev/vgtest/lvtest1读写时,实际上是通过对/dev/md-0包含的当前active的所有设备,即/dev/sdf,/dev/sdl这2条路径来完成对实际的LUN的写过程。 6.路径切换测试 首先,我们拔掉服务器上A口的光纤线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sdl切换到了另外一条路径/dev/sdf上。其输出样本如下: #iostat 1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 6.47 46.77 46.27 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.98 0.00 7.84 0 8 sdf 1709.80 13678.43 0.00 13952 0 sdh 0.00 0.00 0.00 0 0 sdj 0.00 0.00 0.00 0 0 sdl 0.00 0.00 0.00 0 0 接着,我们重新接入光纤线,这次也是不到10秒(此值可以设置),验证了路径“愈合”。其输出样本如下: #iostat 1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 3.48 48.76 47.26 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 sdf 504.00 4024.00 0.00 4024 0 sdh 0.00 0.00 0.00 0 0 sdj 0.00 0.00 0.00 0 0 sdl 594.00 4760.00 0.00 4760 0 同样的测试结果可以在服务器上另外一块光纤卡上重现。 7.控制器切换测试 使用同样的方法,拔掉目前处于Active的EMC CX存储控制器上的一根光纤线,能够看到下面的输出: #iostat 1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 6.47 46.77 46.27 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.98 0.00 7.84 0 8 sdf 1609.80 13670.2 0.00 14972 0 sdh 0.00 0.00 0.00 0 0 sdj 0.00 0.00 0.00 0 0 sdl 0.00 0.00 0.00 0 0 从输出结果能够看出,路径也从失效的/dev/sdl切换到了/dev/sdf,和把掉一根连接到服务器上的光纤线上是同样的效果。 接下来,我们重新插入光纤,不到10秒种,我们可以看到下面的输出信息 #iostat 1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 3.48 48.76 47.26 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 sdf 504.00 4024.00 0.00 4024 0 sdh 0.00 0.00 0.00 0 0 sdj 0.00 0.00 0.00 0 0 sdl 594.00 4760.00 0.00 4760 0 这表明路径已经成功的愈合了。 最后,我们同时拔掉目前处于active状态的控制器连接的光纤。大约10秒钟后,输出的信息如下: #iostat 1 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 7.50 46.00 46.00 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 sdf 0.00 0.00 0.00 0 0 sdh 1910.00 15264.00 1552.00 15264 1552 sdj 149.00 976.00 15024.00 976 15024 sdl 0.00 0.00 0.00 0 0 同时查看CX300的信息,发现CX300已经成功的执行了Tresspass,而这个功能的实现是通过系统自带的dm-emc.ko内核模块来触发CX300来执行的,这点和EMC的PowerPath软件达到的目的基本一致。 同样的测试结果可以在第二个控制器上重现。 测试结论 根据以上的测试步骤和输出信息,能够得到以下结论: 在OpenPower机型上,安装红旗Linux DC 5.0 系统,连接EMC CX存储,可以保证以下几点: 1.红旗Linux操作系统能够正确访问EMC CX存储设备,并能正确使用。 2.通过使用红旗Linux系统自带的device-mapper-multipath软件,能够以负载均衡的MPIO方案访问EMC CX存储设备。 3.当一条光纤或者EMC CX存储的单个控制器失效时,系统自动切换路径,并能持续读写存储设备,保证数据的可靠性。 |