热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Openfiler是一款网络存储软件,在OracleRAC部署的时候,可以用来模拟共享存储,并实现多路径(Multipath)。多路径简单来说,就是连接磁盘的多条链路,避免单条链

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


一、场景

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































磁盘名称说明大小数量
+OCR集群注册表和表决磁盘3G1Gx3
+DATA数据文件、control file、spfile、redo log20G1
+FRA归档5G1

Openfiler两块网卡IP:

192.168.10.55

10.10.10.15

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


二、Openfiler安装


1.下载

--下载地址,目前可下载到 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.png

image.png

image.png

image.png

image.png

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

image.png

image.png

image.png

image.png

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

账号:root

密码:刚才设置的

image.png

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



  • 登陆地址 https://192.168.10.55:446/

  • 默认账号密码 openfiler /password

image.png


三、Openfiler配置

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


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

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

image.png

image.png

三个盘PV都创建完成可见

image.png


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

image.png

image.png


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

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

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

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

image.png

创建完成

image.png


4.服务端配置



  • 启动iscsi_target服务,并设置开机启动

image.png



  • 将逻辑卷映射到主机

image.png

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

image.png



  • 配置访问控制

    导航栏选择【SYSTEM】-最下方【Network Access Configuration】,如下添加

image.png

image.png



  • 配置network acl

image.png

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


四、ISCSI客户端配置


1.检查安装包

--需要安装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.客户端发现多路径

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.png


3.存储器登陆

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

--全部登陆
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.png

另外有iscsi需要了解:

--iscsi主目录
/var/lib/iscsi/
--查看发现的路径
/var/lib/iscsi/send_targets
--节点信息
/var/lib/iscsi/nodes

image.png


五、Multipath多路径配置

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

image.png


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

--查看多路径状态,提示配置文件不存在,多路径软件已经在第四部分开头装过了
multipath –ll

image.png

根据提示创建

--创建
/sbin/mpathconf --enable
--查询状态已经没有报错提示了
multipath –ll

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

--检查是否已经在内核中
lsmod |grep multipath
--添加到内核
modprobe dm-multipath
modprobe dm-round-robin
modprobe dm-service-time

4.multipathd服务

--查看状态
systemctl status multipathd
--启动
systemctl start multipathd
--设置开机启动
systemctl enable multipathd
--查看开机启动列表
systemctl list-unit-files|grep multipathd
--重新加载
systemctl reload multipathd

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

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

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

--下面配置中的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.负载均衡测试

--下面使用dd命令进行测试
dd if=/dev/zero of=/dev/mapper/mpatha
--新开tab页执行,可见实现负载均衡
iostat 2
--在vm中断掉第二块网卡,再次执行上面dd 可以看到就1个链路了,但是可以正常使用

image.png

--查看多路径状态,可见链路状态,wwid,聚合情况
multipath -ll

image.png

说明:



  • 其中/dev/mapper/mpathn 是软件虚拟出来的多路径设备,可以被我们用来挂载使用

  • /dev/dm-n 这个是软件自身使用的,不能被软件以外使用,不可挂载,但是rac是使用这个配置UDEV


六、UDEV绑定

不用分区!

--查看磁盘大小
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.png

image.png


七、总结



  1. 存储多路径配置一般是由存储工程师完成,交给DBA配置就行,但是这不代表DBA不应该掌握;

  2. 学习这块知识暴露出对存储、网络知识的不足,应该单独拿出时间学习整理一下(HBA、SAN、PCIE、ISCSI等等);

  3. Multipath配置有红帽官方文档,6到7版本都有,深入学习应参照;

  4. 本篇已经尽可能按照标准方式整理过程,但是不代表完全没有错误,还请发现问题或者有疑问的朋友尽可能提出。

透明2.png


透明背景.png




推荐阅读
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
author-avatar
Pissa_lo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有