Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2794880
  • 博文数量: 423
  • 博客积分: 7770
  • 博客等级: 少将
  • 技术积分: 4766
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 11:58
个人简介

Oracle/DB2/Postgresql/Mysql/Hadoop/Greenplum/Postgres-xl/Mongodb

文章分类

全部博文(423)

文章存档

2019年(3)

2018年(6)

2017年(27)

2016年(23)

2015年(30)

2014年(16)

2013年(31)

2012年(73)

2011年(45)

2010年(14)

2009年(30)

2008年(30)

2007年(63)

2006年(32)

分类: LINUX

2007-03-19 15:24:17

[不指定 2006/06/15 15:13 | by ]
 继续昨天的话题,还是mdadm的使用。之前,我们一直都是用mdadm创建RAID阵列。其实,mdadm还有一个选项:multipath。它可以实现硬件支持的多I/O路径指向单SCSI LUNs的功能,用于创建多路径访问的磁盘设备。
一、原理
 多路径存储是为了实现当有硬件损坏或单个SCSI LUNs饱和时,仍可以对数据进行访问。要实现multipath,前提是必须有对应的硬件支持。
 举个例:我们有一个光纤盘柜,主机通过2块HBA卡通过光纤交换机连接到盘柜上,通过配置光纤交换机实现这样的结果:
引用
/dev/sdb-
            |--光纤交换机--200G(盘柜上的同一个空间)
/dev/sdc-

 也就是说,在系统中是看到虽然是分别看到sdb和sdc,但其实他们都是通过光纤交换机,指向同一个盘柜空间。只是访问的路径不同而已。
 有了上述的硬件支持,我们就可以通过mdadm进行配置了。

二、创建
mdadm -C /dev/md0 --level=multipath --raid-devices=2 /dev/sd[bc]1

--level=multipath,会告诉linux内核的md层,在出现I/O路径故障的时候,选择新的访问路径。
echo DEVICE /dev/sd[bc]1 >> /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

修改/etc/mdadm.conf文件,方便以后识别。
mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Wed Jun 14 14:58:54 2006
Raid Level : multipath
Array Size : 1044096 (1019.63 MiB 1069.15 MB)
Raid Devices : 1
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Wed Jun 14 15:44:59 2006
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1

   Number   Major   Minor   RaidDevice State
      0       8       49        0      active sync   /dev/sdb1
      1       8       17        1      spare   /dev/sdc1
          UUID : 8aca2297:510fe735:0b224387:33e20925
        Events : 0.1

※请注意差别。看上去这些命令和建立RAID1很像。但其实有很大差别:在做RAID时,每个sd设备号都是代表不同的物理磁盘;但在做Multipath时,使用到的sd设备号都是指向相同的公用磁盘驱动器。

三、代替
 今后,我们通过访问/dev/md0,即可对公用的SCSI LUN进行访问,Linux内核会通过每个路径检测到共享的驱动器。当出现硬件故障,或但SCSI LUNs饱和时,即会切换到另一条链路进行访问。
 该方法可替代未能实现failover的HBA卡驱动问题。
 
 
阅读(1533) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~