【多路径】CentOS7.7下使用Openfiler+Multipath+UDEV

2021-05-07 10:20:13 浏览数 (1)

Openfiler是一款网络存储软件,在Oracle RAC部署的时候,可以用来模拟共享存储,并实现多路径(Multipath)。多路径简单来说,就是连接磁盘的多条链路,避免单条链路中断导致的数据库不可用,另外多条链路间还能实现负载均衡。

一、场景

现在需要在VM虚拟机上搭建一套测试RAC集群(CentOS7.7 11.2.0.4),计划使用Openfiler软件模拟共享存储及实现多路径,共享磁盘的规划如下:

磁盘名称

说明

大小

数量

OCR

集群注册表和表决磁盘

3G

1Gx3

DATA

数据文件、control file、spfile、redo log

20G

1

FRA

归档

5G

1

Openfiler两块网卡IP:

192.168.10.55

10.10.10.15

本篇客户端为CentOS 7,操作均验证过

二、Openfiler安装

1.下载

代码语言:txt复制
--下载地址,目前可下载到 openfileresa-2.99.1-x86_64-disc1.iso
https://www.openfiler.com/community/download

2.安装

使用VMware安装前配置

  1. 打开【VMware Workstation 15 Pro】
  2. 点击【创建新的虚拟机】
  3. 点击【自定义(高级)】
  4. 【硬件兼容性】选择【Workstation 15.x】
  5. 选择【稍后安装操作系统】
  6. 选择【Linux】,版本选择【其他 Linux 2.6.x 内核64位】,因为Openfier的iso内核是2.6
  7. 设置虚拟机名称及位置
  8. 设置【处理器数量】2【每个处理器的内核数量】2
  9. 设置【此虚拟机的内存】4096M
  10. 设置网络连接NAT
  11. I/O控制器类型【LSI Logic(推荐)】
  12. 虚拟磁盘类型【SCSI】
  13. 【创建新的虚拟磁盘】
  14. 最大磁盘大小【20G】【将虚拟磁盘存储为单个文件】
  15. 磁盘文件名称,我用默认
  16. 完成
  17. 编辑虚拟机设置
  18. 添加【网络适配器】选择仅主机模式模式,这是第二块网卡
  19. 添加【硬盘】,加3块20G硬盘,勾选【独立】【永久】
  20. CD/DVD选择刚才下载好的镜像
  21. 点击开启此虚拟机,开始安装

安装步骤

image.pngimage.png
image.pngimage.png
image.pngimage.png
image.pngimage.png
image.pngimage.png

这里使用sda作为系统安装盘:swap 4096M,/boot 1024M /剩下所有

image.pngimage.png
image.pngimage.png
image.pngimage.png
image.pngimage.png

下面就开始正式安装了,几分钟就装好,reboot后显示登陆页面

账号:root

密码:刚才设置的

image.pngimage.png

到此就完成了Openfiler的安装,可以使用WEB界面访问:

  • 登陆地址 https://192.168.10.55:446/
  • 默认账号密码 openfiler /password
image.pngimage.png

三、Openfiler配置

一般的配置流程是:pv->raid)->vg->lv->map,不用raid可以跳过

1.创建PV-物理卷(Physical Volume)

点击Edit Disk下面的sbdsbcsdd进去创建物理卷,这里可以设置RAID array member,如果要创建RAID,可以点右侧【Software RAID】

image.pngimage.png
image.pngimage.png

三个盘PV都创建完成可见

image.pngimage.png

2.创建VG-卷组(Volume Group)

image.pngimage.png
image.pngimage.png

3.创建LV-逻辑卷(Logical Volume)

点击【Volumes】-右侧【Add Volume】

输入逻辑卷的名称、描述、设置大小,Filesystem / Volume type选择block,最后create

我们按照之前的规划添加逻辑卷

image.pngimage.png

创建完成

image.pngimage.png

4.服务端配置

  • 启动iscsi_target服务,并设置开机启动
image.pngimage.png
  • 将逻辑卷映射到主机
image.pngimage.png

再点击【ISCSI Targets】里的【LUN Mapping】

image.pngimage.png
  • 配置访问控制 导航栏选择【SYSTEM】-最下方【Network Access Configuration】,如下添加
image.pngimage.png
image.pngimage.png
  • 配置network acl
image.pngimage.png

到这里服服务端配置完成。

四、ISCSI客户端配置

1.检查安装包

代码语言:txt复制
--需要安装iscsi-initiator-utils、device-mapper及device-mapper-multipath(这里带着多路径的包一起装了)
--检查是否安装
rpm -qa |grep iscsi
rpm -qa |grep device-mapper    

--安装
yum install iscsi-initiator* 
yum install device-mapper device-mapper-event device-mapper-multipath device-mapper-multipath-libs

--iscsi、iscsid服务控制
systemctl start iscsi.service
systemctl start iscsid.service

systemctl status iscsi.service
systemctl status iscsid.service

2.客户端发现多路径

代码语言:txt复制
iscsiadm --mode discovery --type sendtargets --portal 192.168.10.55:3260
iscsiadm --mode discovery --type sendtargets --portal 10.10.10.15:3260  

--简写方式,man iscsiadm 可查看具体用法
iscsiadm -m discovery -t st -p 192.168.10.55
iscsiadm -m discovery -t st -p 10.10.10.15

--查看发现记录
iscsiadm --mode node
image.pngimage.png

3.存储器登陆

执行完上一步,使用fdisk -l还是查看不到磁盘,执行下面登陆命令就能看到磁盘了

代码语言:txt复制
--全部登陆
iscsiadm -m node --loginall=all

--单条链路登陆,简写就不在这放了,iqn在WEB管理页面volumns-LUN Mapping下
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 192.168.10.55:3260 --login
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 10.10.10.15:3260 --login

--链路逐个登出
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 192.168.10.55:3260 --logout
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 10.10.10.15:3260 --logout

----链路全部登出
iscsiadm -m node --logoutall=all

--新增加iscsi存储目标后刷新
iscsiadm -m session -R

执行完login,在fdisk -l就能看到,两条链路每个链路对应5块盘,系统一共显示10块,实际上还是5块,下图上的sdh和sdi实际上就是1块

image.pngimage.png

另外有iscsi需要了解:

代码语言:txt复制
--iscsi主目录
/var/lib/iscsi/

--查看发现的路径
/var/lib/iscsi/send_targets

--节点信息
/var/lib/iscsi/nodes
image.pngimage.png

五、Multipath多路径配置

上阶段完成后,可以到系统多了一些磁盘,两条链路,每条5个,共10个盘。我们现在使用多路径就能让两块模拟成一块,并且多路径还有负载均衡的作用

image.pngimage.png

1.查看状态并创建配置文件

代码语言:txt复制
--查看多路径状态,提示配置文件不存在,多路径软件已经在第四部分开头装过了
multipath –ll
image.pngimage.png

根据提示创建

代码语言:txt复制
--创建
/sbin/mpathconf --enable

--查询状态已经没有报错提示了
multipath –ll

3.多路径软件添加至内核模块中

代码语言:txt复制
--检查是否已经在内核中
lsmod |grep multipath

--添加到内核
modprobe dm-multipath
modprobe dm-round-robin
modprobe dm-service-time

4.multipathd服务

代码语言:txt复制
--查看状态
systemctl status multipathd

--启动
systemctl start multipathd

--设置开机启动
systemctl enable multipathd

--查看开机启动列表
systemctl list-unit-files|grep multipathd

--重新加载
systemctl reload multipathd

5.编辑/etc/multipath.conf配置文件

刚才生成的配置文件中有示例,可以参照添加,另外具体的参数说明,红帽有中文配置文档,文章最后有下载链接

下面是这个环境我的配置:

代码语言:txt复制
--下面配置中的wwid是根据SCSI标准,每个SCSI磁盘都有的一个唯一ID,类似于网卡的MAC地址
--获取wwid方式:/usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb
--vi /etc/multipath.conf

defaults {
    user_friendly_names yes
    find_multipaths  yes              --多路径忽略本地磁盘  
    path_grouping_policy multibus
    failback immediate
    no_path_retry fail
}

blacklist {
    devnode "^sda"
}

multipaths {
    multipath {
		wwid	14f504e46494c45524174344177492d424f53682d4b4e6f6c
		alias	mpatha
	}
    
    multipath {
		wwid	14f504e46494c45524d39495237512d706d7a4c2d30326a43
		alias	mpathb
	}

    multipath {
		wwid	14f504e46494c455256416b3755742d6e7666472d37516b62
		alias	mpathc
	}

    multipath {
		wwid	14f504e46494c45526f67444277622d6257744e2d6e566e44
		alias	mpathd
	}

    multipath {
		wwid	14f504e46494c4552666a325731562d766455382d394c6a4d
		alias	mpathe
	}
}

devices {
	device {
		vendor			"COMPAQ  "
		product			"HSV110 (C)COMPAQ"
		path_grouping_policy	multibus
		getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
		path_checker		readsector0
		path_selector		"round-robin 0"
		hardware_handler	"0"
		failback		15
		rr_weight		priorities
		no_path_retry		queue
	}
}

修改完重启服务,不生效的话再重启系统init 6

6.负载均衡测试

代码语言:txt复制
--下面使用dd命令进行测试
dd  if=/dev/zero  of=/dev/mapper/mpatha

--新开tab页执行,可见实现负载均衡
iostat  2

--在vm中断掉第二块网卡,再次执行上面dd 可以看到就1个链路了,但是可以正常使用
image.pngimage.png
代码语言:txt复制
--查看多路径状态,可见链路状态,wwid,聚合情况
multipath -ll
image.pngimage.png

说明:

  • 其中/dev/mapper/mpathn 是软件虚拟出来的多路径设备,可以被我们用来挂载使用
  • /dev/dm-n 这个是软件自身使用的,不能被软件以外使用,不可挂载,但是rac是使用这个配置UDEV

六、UDEV绑定

不用分区!

代码语言:txt复制
--查看磁盘大小
lsblk|grep mpath|sort|uniq  

--获取名称和ID,下面是两种方式
cat /etc/multipath/bindings |grep -v '#' 
udevadm info --query=all --name=/dev/mapper/mpatha |grep -i DM_UUID

--创建UDEV规则文件
cd /etc/udev/rules.d
touch 99-oracle-asmdevices.rules

--配置方式1(见下方截图):
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45524174344177492d424f53682d4b4e6f6c",SYMLINK ="asmdisk1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45524d39495237512d706d7a4c2d30326a43",SYMLINK ="asmdisk2",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c455256416b3755742d6e7666472d37516b62",SYMLINK ="asmdisk3",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45526f67444277622d6257744e2d6e566e44",SYMLINK ="asmdisk4",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c4552666a325731562d766455382d394c6a4d",SYMLINK ="asmdisk5",OWNER="grid",GROUP="asmadmin",MODE="0660"

--配置方式2(见下方截图):
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45524174344177492d424f53682d4b4e6f6c",RUN ="/bin/sh -c 'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1'"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45524d39495237512d706d7a4c2d30326a43",RUN ="/bin/sh -c 'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2'"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c455256416b3755742d6e7666472d37516b62",RUN ="/bin/sh -c 'mknod /dev/asmdisk3 b $major $minor; chown grid:asmadmin /dev/asmdisk3; chmod 0660 /dev/asmdisk3'"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c45526f67444277622d6257744e2d6e566e44",RUN ="/bin/sh -c 'mknod /dev/asmdisk4 b $major $minor; chown grid:asmadmin /dev/asmdisk4; chmod 0660 /dev/asmdisk4'"
KERNEL=="dm-*",ENV{DM_UUID}=="mpath-14f504e46494c4552666a325731562d766455382d394c6a4d",RUN ="/bin/sh -c 'mknod /dev/asmdisk5 b $major $minor; chown grid:asmadmin /dev/asmdisk5; chmod 0660 /dev/asmdisk5'"

--配置方式3(这个方式是找sd开头的设备,看视频有人是这么配置,不太明白已经聚合链路为什么还用sd*,留个坑):
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block",  PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",  RESULT=="14f504e46494c45523143594e70582d5777694a2d7a4c6657", RUN ="/bin/sh -c 'mknod /dev/asm-arch002 b  $major $minor; chown grid:asmdba /dev/asm-arch002; chmod 0660 /dev/asm-arch002'"

--【非生产操作】配置完成,重启UDEV(新装环境可以这么操作,但是生产环境不能直接重启)
systemctl restart systemd-udevd.service
udevadm control --reload-rules
udevadm trigger

--【生产操作】生产环境操作,触发变更!
/sbin/udevadm trigger --type=devices --action=change
image.pngimage.png
image.pngimage.png

七、总结

  1. 存储多路径配置一般是由存储工程师完成,交给DBA配置就行,但是这不代表DBA不应该掌握;
  2. 学习这块知识暴露出对存储、网络知识的不足,应该单独拿出时间学习整理一下(HBA、SAN、PCIE、ISCSI等等);
  3. Multipath配置有红帽官方文档,6到7版本都有,深入学习应参照;
  4. 本篇已经尽可能按照标准方式整理过程,但是不代表完全没有错误,还请发现问题或者有疑问的朋友尽可能提出。
透明2.png透明2.png
全透明背景.png全透明背景.png

0 人点赞