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.下载
代码语言:javascript复制--下载地址,目前可下载到 openfileresa-2.99.1-x86_64-disc1.iso
https://www.openfiler.com/community/download
2.安装
使用VMware安装前配置:
- 打开【VMware Workstation 15 Pro】
- 点击【创建新的虚拟机】
- 点击【自定义(高级)】
- 【硬件兼容性】选择【Workstation 15.x】
- 选择【稍后安装操作系统】
- 选择【Linux】,版本选择【其他 Linux 2.6.x 内核64位】,因为Openfier的iso内核是2.6
- 设置虚拟机名称及位置
- 设置【处理器数量】2【每个处理器的内核数量】2
- 设置【此虚拟机的内存】4096M
- 设置网络连接NAT
- I/O控制器类型【LSI Logic(推荐)】
- 虚拟磁盘类型【SCSI】
- 【创建新的虚拟磁盘】
- 最大磁盘大小【20G】【将虚拟磁盘存储为单个文件】
- 磁盘文件名称,我用默认
- 完成
- 编辑虚拟机设置
- 添加【网络适配器】选择仅主机模式模式,这是第二块网卡
- 添加【硬盘】,加3块20G硬盘,勾选【独立】【永久】
- CD/DVD选择刚才下载好的镜像
- 点击开启此虚拟机,开始安装
安装步骤:
这里使用sda作为系统安装盘:swap 4096M,/boot 1024M /剩下所有
下面就开始正式安装了,几分钟就装好,reboot后显示登陆页面 账号:root 密码:刚才设置的
到此就完成了Openfiler的安装,可以使用WEB界面访问:
- 登陆地址 https://192.168.10.55:446/
- 默认账号密码 openfiler /password
三、Openfiler配置
一般的配置流程是:pv->raid)->vg->lv->map,不用raid可以跳过
1.创建PV-物理卷(Physical Volume)
点击Edit Disk下面的sbdsbcsdd进去创建物理卷,这里可以设置RAID array member,如果要创建RAID,可以点右侧【Software RAID】
三个盘PV都创建完成可见
2.创建VG-卷组(Volume Group)
3.创建LV-逻辑卷(Logical Volume)
点击【Volumes】-右侧【Add Volume】 输入逻辑卷的名称、描述、设置大小,Filesystem / Volume type选择block,最后create 我们按照之前的规划添加逻辑卷
创建完成
4.服务端配置
- 启动iscsi_target服务,并设置开机启动
- 将逻辑卷映射到主机
再点击【ISCSI Targets】里的【LUN Mapping】
- 配置访问控制 导航栏选择【SYSTEM】-最下方【Network Access Configuration】,如下添加
- 配置network acl
到这里服务端配置完成。
四、ISCSI客户端配置
1.检查安装包
代码语言:javascript复制--需要安装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.客户端发现多路径
代码语言:javascript复制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
3.存储器登陆
执行完上一步,使用fdisk -l还是查看不到磁盘,执行下面登陆命令就能看到磁盘了
代码语言:javascript复制--全部登陆
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块
另外有iscsi需要了解:
代码语言:javascript复制--iscsi主目录
/var/lib/iscsi/
--查看发现的路径
/var/lib/iscsi/send_targets
--节点信息
/var/lib/iscsi/nodes
五、Multipath多路径配置
上阶段完成后,可以到系统多了一些磁盘,两条链路,每条5个,共10个盘。我们现在使用多路径就能让两块模拟成一块,并且多路径还有负载均衡的作用
1.查看状态并创建配置文件
代码语言:javascript复制--查看多路径状态,提示配置文件不存在,多路径软件已经在第四部分开头装过了
multipath –ll
根据提示创建
代码语言:javascript复制--创建
/sbin/mpathconf --enable
--查询状态已经没有报错提示了
multipath –ll
3.多路径软件添加至内核模块中
代码语言:javascript复制--检查是否已经在内核中
lsmod |grep multipath
--添加到内核
modprobe dm-multipath
modprobe dm-round-robin
modprobe dm-service-time
4.multipathd服务
代码语言:javascript复制--查看状态
systemctl status multipathd
--启动
systemctl start multipathd
--设置开机启动
systemctl enable multipathd
--查看开机启动列表
systemctl list-unit-files|grep multipathd
--重新加载
systemctl reload multipathd
5.编辑/etc/multipath.conf配置文件
刚才生成的配置文件中有示例,可以参照添加,另外具体的参数说明,红帽有中文配置文档,文章最后有下载链接 下面是这个环境我的配置:
代码语言:javascript复制--下面配置中的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.负载均衡测试
代码语言:javascript复制--下面使用dd命令进行测试
dd if=/dev/zero of=/dev/mapper/mpatha
--新开tab页执行,可见实现负载均衡
iostat 2
--在vm中断掉第二块网卡,再次执行上面dd 可以看到就1个链路了,但是可以正常使用
代码语言:javascript复制--查看多路径状态,可见链路状态,wwid,聚合情况
multipath -ll
说明:
- 其中/dev/mapper/mpathn 是软件虚拟出来的多路径设备,可以被我们用来挂载使用
- /dev/dm-n 这个是软件自身使用的,不能被软件以外使用,不可挂载,但是rac是使用这个配置UDEV
六、UDEV绑定
不用分区!
代码语言:javascript复制--查看磁盘大小
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
七、总结
- 存储多路径配置一般是由存储工程师完成,交给DBA配置就行,但是这不代表DBA不应该掌握;
- 学习这块知识暴露出对存储、网络知识的不足,应该单独拿出时间学习整理一下(HBA、SAN、PCIE、ISCSI等等);
- Multipath配置有红帽官方文档,6到7版本都有,深入学习应参照;
- 本篇已经尽可能按照标准方式整理过程,但是不代表完全没有错误,还请发现问题或者有疑问的朋友尽可能提出。