学习Multipath多路径

前言

在之前部署的达梦DMDSC共享存储集群中,需要给共享磁盘配置多路径,然后通过UDEV绑定块设备,才能把磁盘格式化为ASM,作为共享存储。但是一直不太理解多路径的作用,后续翻阅了网上各位大神分享的文章,也算是有更深的理解,写篇文章记录一下。

多路径概念

多路径是一种存储网络技术,允许服务器通过多条物理路径访问同一个存储设备。这些路径通常是独立的光纤通道、iSCSI连接或SAS链路。换句话说,就是在服务器上配置多个链路指向同一个存储设备。如下图所示,服务器指向同一个LUN有多条链路可达。若某个网卡故障或者某台交换机故障了,也可以保证业务不中断(毕竟几台设备同时坏的可能性比较低)。

多路径配置

配置前需要先安装multipath工具

bash 复制代码
# 安装multipath
yum install -y device-mapper*
mpathconf --enable --with_multipathd y

multipath配置,是通过/etc目录下的multipath.conf文件进行配置,配置内容如下:

bash 复制代码
#配置多路径:写入 /etc/multipath.conf文件,其中wwid后的为查询出的磁盘的scsi_id
 
cat <<EOF>/etc/multipath.conf 
defaults {
    user_friendly_names yes
}
blacklist {
  devnode "^sda"
}
multipaths {
  multipath {
  wwid 36000c2960a442a26bb366de627f2c8f3
  alias "asm-dmdata"
  }
  multipath {
  wwid 36000c29b88f6b4658c0c62fae5d0e870
  alias "asm-dmarch"
  }
  multipath {
  wwid 36000c29b2ff08c69338a9c6f828ab7cb
  alias "asm-dmvote"
  }
  multipath {
  wwid 36000c294bbe5139d83453eba3ebe930f
  alias "asm-dmredo"
  }
  multipath {
  wwid 36000c29ea286f2d620ad19a395084057
  alias "asm-dmdcr"
  }
}
EOF

DM Multipath - 多路径设备

描述:若不采用 DM Multipath 那么从服务器节点到储存控制器的每一条路径都会被系统视为独立的设备,即使I/O路径连接的是相同的服务器节点到相同的储存控制器也是如此, DM Multipath提供了有逻辑的管理I/O路径的方法,即在基础设备顶端生成单一多路径设备;

WWID - 全球识别符

描述:每个多路径设备都有一个WWID(全球识别符),它是全球唯一的无法更改的号码, 默认情况下会将多路径设备的名称设定为它的WWID, 可以在多路径配置文件(/etc/multipath.conf)中设置user_friendly_names选项,该选项可将别名设为格式为mpathn的节点唯一名称也可以也可以自定义存储设备名称;

bash 复制代码
# 查看磁盘的scsi_id
/usr/lib/udev/scsi_id -g -u /dev/sdb

配置完成后,重新进行识别扫描,查看本地的设备,在/dev/mapper目录下系统会识别出绑定的多路径设备

bash 复制代码
multipath -F #清空已有的multipath记录
 
multipath -v2 #重新扫描设备
 
multipath -ll #查看multipath配置信息

UDEV绑定

在配置达梦共享集群DSC中,需要用到DMASM来管理磁盘,DMDSC 如果直接使用块设备作为共享存储来存放数据库文件,会因为块设备本身的诸多功能限制,造成 DMDSC 集群在使用、维护上并不是那么灵活方便。为了克服块设备的这些使用限制,DM 专门设计了一款分布式文件系统 DMASM,来管理块设备的磁盘和文件。DMASM 的出现为 DMDSC 灵活管理和使用块设备提供了完美的解决方案。

但是ASM无法识别通过多路径配置的链路,因此还需要通过udev来配置多路径链路的别名权限等

配置方式一般是通过脚本来完成,通过udevadm info --query=all --name=/dev/mapper/命令,获取配置了多路径的磁盘wwid,然后进行绑定,给路径设置别名以及授权等,脚本如下:

bash 复制代码
curr=$(cd "$(dirname "$0")";pwd)
rm -f $curr/88-dm-asmdevices.rules
for i in mpatha mpathb mpathc mpathd mpathe;
do
        str1="$i:`udevadm info --query=all --name=/dev/mapper/$i | grep DM_UUID`"
        str2=${str1#*=}
        echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${str2}\",SYMLINK+=\"asm-${i}\",OWNER=\"dmdba\",GROUP=\"dinstall\",MODE=\"0660\"" >>/etc/udev/rules.d/88-dm-asmdevices.rules
done

运行上述脚本后,通过下面的命令,就可以在配置的路径上查看绑定情况,后续就可以进行ASM磁盘的创建和初始化了。

bash 复制代码
udevadm control --reload-rules && sudo udevadm trigger
相关推荐
小郝 小郝2 小时前
51 与32 单片机LED控制详解
c语言·开发语言·经验分享·学习·51单片机
金山几座2 小时前
C#学习记录-类(Class)
开发语言·学习·c#
red_redemption3 小时前
自由学习记录(132)
学习
非凡ghost4 小时前
Zen Browser:基于 Firefox 的极简开源浏览器,隐私与速度兼得
前端·网络·windows·学习·开源·firefox·软件需求
WYH2874 小时前
FreeRTOS工程项目实践
c语言·单片机·嵌入式硬件·学习
Shining05964 小时前
前沿模型系列(四)《大模型前沿架构》
人工智能·学习·其他·ai·架构·大模型·infinitensor
_饭团5 小时前
指针核心知识:5篇系统梳理2
c语言·笔记·学习·leetcode·面试·改行学it
四谎真好看5 小时前
Redis学习笔记(实战篇2)
redis·笔记·学习·学习笔记
wjm0410065 小时前
ios学习路线-- swift基础2
学习·ios·swift