Linux多路径的使用及介绍
时间:2009-03-23 来源:sjhf
作者:kent 出自:http://kentfang.blog.sohu.com/ 多路径(multi-path)软件的介绍普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择,如下图:![]() 多路径软件包的构成device-mapper-1.02.13-6.9.i586.rpm 该软件运行在底层,主要进行设备虚拟化和映射。 multipath-tools-0.4.7-34.18.i586.rpm,这个软件包可以在 多路径的管理和监控工具,主要进行路径状态的检测,管理工作多路径软件包的安装Rpm –ivh device-mapper-1.02.13-6.9.i586.rpm Rpm –ivh multipath-tools-0.4.7-34.18.i586.rpm 安装完成后,使用命令modprobe dm_multipath来加载相应的模块,可以使用lsmod |grep dm_multipath来检查安装是否正常。配置文件的修改及创建接下来的工作就是要创建一个multipath.conf的配置文件,该文件在安装后不会自动创建。不过有一个模板可以使用,使用如下命令可以创建一个multipath.conf的文件了 cp /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic /etc/multipath.conf 然后再该文件的最后一段加上如下配置: devices { device { vendor "EMC" //厂商名称 product "CaXXXXX" //产品型号 path_grouping_policy group_by_prio //默认的路径组策略 getuid_callout "/sbin/scsi_id -p 0x80 -g -u -s /block/%n" //获得唯一设备号使用的默认程序 prio_callout "/sbin/acs_prio_alua %d" //获取有限级数值使用的默认程序 hardware_handler "1 acs" //确认用来在路径切换和IO错误时,执行特定的操作的模块。 path_checker hp_sw //决定路径状态的方法 path_selector "round-robin 0" //选择那条路径进行下一个IO操作的方法 failback immediate //故障恢复的模式 no_path_retry queue //在disable queue之前系统尝试使用失效路径的次数的数值 rr_min_io 100 //在当前的用户组中,在切换到另外一条路径之前的IO请求的数目 } } 编辑modprobe.conf文件,用来设置驱动程序的参数。 /etc/modprobe.conf.local 增加一行 "options scsi_mod dev_flags=Accusys:ACS92102:0x1000"重新编译引导文件"cp -f /boot/initrd-2.6.[kernel_version].img ./initrd-2.6.[k_v].img.bak" "mkinitrd" 做完上述操作后,注意要将操作系统重新启动磁盘的分区及使用创建多路径设备的分区,这里主要一下,多路径的分区只适合使用kpartx工具,不要使用fdisk进行分区。 --------------------------------- Step2, kpartx -l /dev/dm-0 //lists all partitions on this device Step3, kpartx -a /dev/dm-0 //create all device node on this device kpartx -a /dev/mapper/ //多路径的设备不可以使用fdisk进行分区,必须使用kpartx -a进行分区后,再进行格式化。查看映射关系Suse3:/sbin # ls -la /dev/disk/by-name/ total 0 drwxr-xr-x 2 root root 200 Aug 1 09:01 . drwxr-xr-x 7 root root 140 Jul 31 18:05 .. lrwxrwxrwx 1 root root 10 Aug 1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677 -> ../../dm-5 lrwxrwxrwx 1 root root 10 Aug 1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677-part1 -> ../../dm-7 lrwxrwxrwx 1 root root 10 Aug 1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf -> ../../dm-4 lrwxrwxrwx 1 root root 10 Aug 1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf-part1 -> ../../dm-6 lrwxrwxrwx 1 root root 10 Aug 1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3 -> ../../dm-0 lrwxrwxrwx 1 root root 10 Aug 1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3-part1 -> ../../dm-1 lrwxrwxrwx 1 root root 10 Jul 31 18:08 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c -> ../../dm-2 lrwxrwxrwx 1 root root 10 Jul 31 18:10 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c-part1 -> ../../dm-3几个比较有用的命令1.start/stop multipathd process "service multipathd start/stop" 2.display the multipath topology "multipath -ll" //非常有用的命令。 3.display the multipath debug info "multipath -v3" 4.Scan the HD "fdisk -l" 5.view the FC wwn " cat /sys/class/fc_host/host1/node_name " 下面是举例: multipath -ll Successful info: SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102 [size=20G][features=1 queue_if_no_path][hwhandler=1 acs] \_ round-robin 0 [prio=400][active]----//表示当前的正在使用控制器 \_ 1:0:1:0 sdc 8:32 [active][ready] \_ 1:0:2:0 sdd 8:48 [active][ready] \_ 2:0:1:0 sdg 8:96 [active][ready] \_ 2:0:2:0 sdh 8:112 [active][ready] ----//c,d,g,h可以理解为路径 \_ round-robin 0 [prio=0][enabled]-----//备份控制器 \_ 1:0:0:0 sdb 8:16 [active][ghost] \_ 1:0:3:0 sde 8:64 [active][ghost] \_ 2:0:0:0 sdf 8:80 [active][ghost] \_ 2:0:3:0 sdi 8:128 [active][ghost] // faulty info: sdc: checker msg is "hp_sw checker reports path is down" //路径出现故障 sdd: checker msg is "hp_sw checker reports path is down" //路径出现故障 sdh: checker msg is "hp_sw checker reports path is down" //路径出现故障 SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102 [size=20G][features=1 queue_if_no_path][hwhandler=1 acs] \_ round-robin 0 [prio=0][enabled] ---- //两个都是enabled状态,一控制器故障,另外一个控制器没有failover。 \_ 1:0:1:0 sdc 8:32 [failed][faulty] \_ 1:0:2:0 sdd 8:48 [failed][faulty] \_ 2:0:1:0 sdg 8:96 [failed][faulty] \_ 2:0:2:0 sdh 8:112 [failed][faulty] \_ round-robin 0 [prio=0][enabled] ---- \_ 1:0:0:0 sdb 8:16 [active][ghost] \_ 1:0:3:0 sde 8:64 [active][ghost] \_ 2:0:0:0 sdf 8:80 [active][ghost] \_ 2:0:3:0 sdi 8:128 [active][ghost] 控制器重新启动后,Suse有时候需要重新启动才可以使用。 multipath -ll SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102 [size=20G][features=1 queue_if_no_path][hwhandler=1 acs] \_ round-robin 0 [prio=200][active] \_ 1:0:0:0 sdb 8:16 [active][ready] \_ 1:0:1:0 sdc 8:32 [active][ready] \_ 2:0:0:0 sdd 8:48 [active][ready] \_ 2:0:1:0 sde 8:64 [active][ready] multipath的所有的相关的文件 -rwxr--r-- 1 root root 2554 Jun 30 16:26 /etc/init.d/boot.multipath -rwxr--r-- 1 root root 3700 Jun 30 16:26 /etc/init.d/multipathd drwxr-xr-x 2 root root 0 Jun 30 16:26 /etc/udev drwxr-xr-x 2 root root 0 Jun 30 16:26 /etc/udev/rules.d -rw-r--r-- 1 root root 1185 Jun 30 16:26 /etc/udev/rules.d/71-multipath.rules -rw-r--r-- 1 root root 262 Jun 30 16:26 /etc/udev/rules.d/72-multipath-compat.rules -rwxr-xr-x 1 root root 4872 Jun 30 16:26 /sbin/devmap_name -rwxr-xr-x 1 root root 22824 Jun 30 16:26 /sbin/kpartx -rwxr-xr-x 1 root root 1114 Jun 30 16:26 /sbin/kpartx_id -rwxr-xr-x 1 root root 296 Jun 30 16:26 /sbin/mpath_id -rwxr-xr-x 1 root root 8404 Jun 30 16:26 /sbin/mpath_prio_alua -rwxr-xr-x 1 root root 7852 Jun 30 16:26 /sbin/mpath_prio_balance_units -rwxr-xr-x 1 root root 4208 Jun 30 16:26 /sbin/mpath_prio_emc -rwxr-xr-x 1 root root 5492 Jun 30 16:26 /sbin/mpath_prio_hds_modular -rwxr-xr-x 1 root root 5984 Jun 30 16:26 /sbin/mpath_prio_netapp -rwxr-xr-x 1 root root 3284 Jun 30 16:26 /sbin/mpath_prio_random -rwxr-xr-x 1 root root 4184 Jun 30 16:26 /sbin/mpath_prio_tpc -rwxr-xr-x 1 root root 121888 Jun 30 16:26 /sbin/multipath -rwxr-xr-x 1 root root 146996 Jun 30 16:26 /sbin/multipathd drwxr-xr-x 2 root root 0 Jun 30 16:26 /usr/share/doc/packages/multipath-tools -rw-r--r-- 1 root root 49 Nov 11 2005 /usr/share/doc/packages/multipath-tools/AUTHOR -rw-r--r-- 1 root root 25284 Nov 11 2005 /usr/share/doc/packages/multipath-tools/COPYING -rw-r--r-- 1 root root 195 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/ChangeLog -rw-r--r-- 1 root root 15 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/README -rw-r--r-- 1 root root 9238 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.annotated -rw-r--r-- 1 root root 1499 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic -rw-r--r-- 1 root root 424 Jun 30 16:26 /usr/share/man/man8/devmap_name.8.gz -rw-r--r-- 1 root root 544 Jun 30 16:26 /usr/share/man/man8/kpartx.8.gz -rw-r--r-- 1 root root 2048 Jun 30 16:26 /usr/share/man/man8/mpath_prio_alua.8.gz -rw-r--r-- 1 root root 979 Jun 30 16:26 /usr/share/man/man8/multipath.8.gz -rw-r--r-- 1 root root 489 Jun 30 16:26 /usr/share/man/man8/multipathd.8.gz drwx------ 2 root root 0 Jun 30 16:26 /var/cache/multipath小技巧存储添加映射或者做了修改,主机不用重新启动的方法 echo 1 > /sys/class/fc_host/host1/issue_lip echo 1 > /sys/class/fc_host/host2/issue_lip echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan 重启服务,让配置文件生效的方法: 1. Stop the multipathd service. 2. Clear old multipath bindings by entering /sbin/multipath -F 3. Create new multipath bindings by entering /sbin/multipath -v2 -l Start the multipathd service. //更改配置文件后需要做上面的操作才可以让配置文件的更改生效。 如果连接一切都正常,但是suse在操作系统下看不到磁盘。这时可能需要重新启动存储系统。 |
相关阅读 更多 +