ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CentOS6.5 虚拟机部署 iSCSI 存储 + multipath 多路径完整实操

CentOS6.5 虚拟机部署 iSCSI 存储 + multipath 多路径完整实操

背景

业务使用仅兼容 CentOS6.5 的老旧程序,虚拟机本地磁盘空间不足,需通过 iSCSI 挂载外部集中存储存放数据库、日志等数据。 单条存储链路易因网口、线路故障造成业务中断,还存在带宽上限;部署 multipath 多路径可实现链路故障自动切换、IO 负载均分,并将多条链路识别的重复磁盘合并为单个逻辑盘。 环境为 VMware 虚拟机,配置双网卡分网段对接存储双控制器,存储端提供双 IP 共享同一 LUN。

资源清单

资源项宿主机target机业务机
操作系统windows10/11CentOS6.5CentOS6.5
网卡 1192.168.1.1eth0:192.168.1.101eth0:192.168.1.102
网卡 2eth1:192.168.2.101eth1:192.168.2.102

详细操作

创建虚拟机

安装系统

参考博客VMware虚拟机部署CentOS6.5系统-CSDN博客

宿主机配置

修改虚拟机配置

首先点击VMware软件左上角-编辑-虚拟网络编辑器

按图下所示点击更改设置

点击添加网络

选择要添加的网络VMnet3,点击确定

按照图下所示进行配置VMnet3的网络,网段是192.168.1.0,点击应用,然后确定

然后再按照之前的步骤添加一个VMnet4的网络

这里的网段设置为192.168.2.0注意:不要勾选“将主机虚拟适配器连接到此网络

修改宿主机ip

在宿主机网络和Internet-高级网络配置这里找到VMnet3网络适配器,然后点击查看其它属性

点击编辑,修改IP分配手动IP地址设置为192.168.1.1/24

这时在电脑主机上CMD查看ip,可以看到VMnet3的网卡,ip为192.168.1.1

宿主机关闭防火墙

配置target机

配置target机网络(eth0)

先进入target虚拟机设置里面将第一个网络适配器设置为图下所示模式,点击确定

登陆target机ip add查看当前ip

vim /etc/sysconfig/network-scripts/ifcfg-eth0 //进入网卡配置文件进行编辑

原文件如图下

修改为图下所示

service network restart //重启网络服务

再次使用ip add查看网卡eth0已经成功修改为192.168.1.101/24

配置target机网络(eth1)

同理,再添加一个虚拟机网卡,配置ip为192.168.2.101

虚拟机设置-添加

选择网络适配器,点击完成

按图下所示配置虚拟机网卡

在系统中创建新增网卡eth1的配置文件(拷贝eth0文件,然后在此基础上修改)

使用命令ip a提前查看eth1网卡mac地址

修改为图下所示

重启网络服务

查看ip地址

关闭SElinux
setenforce 0 //立即生效,重启服务器失效 getenforce //输出 Permissive 代表临时关闭;Enforcing 开启 cat /etc/selinux/config | grep SELINUX= //验证永久配置是否正确 sestatus //查看完整 SELinux 状态(含模式、策略)

vim /etc/selinux/config //修改配置文件,可以永久关闭selinux

  • setenforce 0只是宽容模式,不拦截权限,但 SELinux 内核模块仍加载;
  • SELINUX=disabled是彻底禁用,重启后完全不加载 SELinux。
  • 生产环境不建议直接禁用,可配置为SELINUX=permissive只告警不拦截。
关闭防火墙
service iptables stop //临时关闭防火墙 service iptables status //查看防火墙运行状态

配置业务机

网络配置SElinux防火墙同以上target机操作即可。

网络连通性测试

target机可以ping通宿主机(192.168.1.1业务机eth0(192.168.1.102业务机eth1(192.168.2.102

业务机可以ping通宿主机(192.168.1.1target机eth0(192.168.1.101target机eth1(192.168.2.101

创建快照

建议此时创建两台虚拟机快照,以防后续实验出现问题好及时回退

target机新增存储硬盘

虚拟机设置-添加

选择硬盘-下一步

默认,下一步

默认,下一步

设置磁盘容量下一步

点击完成

可以看到新添加的15G硬盘,点击确定

后面我们用这块盘去作为iSCSI网络存储,挂载到业务机上面去使用

此时,使用lsblk命令查看下设备,无法看到新硬盘。重启一下虚拟机reboot

重启虚拟机后,可以看到15Gsdb

Finalshell远程连接

由于已经配置了宿主机和虚拟机之间互通的网段,所以可以直接通过命令行工具连接服务器。把虚拟机当成服务器来连接使用。

配置target服务端

安装target服务端
yum install -y scsi-target-utils //安装target服务端工具

# 启动服务 service tgtd start # 查看运行状态 service tgtd status # 设置开机自启(运行级别3、5) chkconfig tgtd on # 验证自启 chkconfig --list tgtd

共享裸分区/dev/sdb

编辑配置文件vim /etc/tgt/targets.conf

直接写入

<target iqn.2026-08.local:iscsi-sdb15g> backing-store /dev/sdb initiator-address ALL </target>

# 重载配置 tgt-admin --update ALL # 查看发布lun tgt-admin --show

可以看到/dev/sdb对应的LUN1已经成功发布

配置业务端

安装工具

发现无法连接target端,需要安装target工具

yum install -y iscsi-initiator-utils //客户端安装initiator工具

发现 Target 两个 Portal 地址
# 分别扫描两个存储IP iscsiadm -m discovery -t st -p 192.168.1.101:3260 iscsiadm -m discovery -t st -p 192.168.2.101:3260

登录 iSCSI LUN(两条路径全部登录)
# 登录第一条链路 iscsiadm -m node -p 192.168.1.101 -l # 登录第二条链路 iscsiadm -m node -p 192.168.2.101 -l

设置开机自动登录所有 iSCSI 节点
iscsiadm -m node -o update -n node.startup -v automatic

验证 iSCSI 会话
# 查看当前会话,能看到两条会话即为双链路成功 iscsiadm -m session # 查看块设备,会出现两块相同大小磁盘 /dev/sdb /dev/sdc fdisk -l | grep sd

现象:同一个 LUN,两条链路识别为两块独立磁盘,multipath 将聚合为一块逻辑盘。

Multipath 多路径配置(CentOS6.5 核心)

找不到命令

安装多路径依赖包
yum install -y device-mapper-multipath

初始化生成多路径配置文件
mpathconf --enable --with_multipathd y

启动并设置开机自启多路径服务
# 启动服务 service multipathd start # 开机自启 chkconfig multipathd on # 查看运行状态 service multipathd status

查看多路径映射
# 查看多路径映射 multipath -ll

修改多路径名称

可以修改/etc/multipath.conf配置文件重命名该映射(wwid是刚才用multipath -ll命令看到的括号里面的内容,alias是自定义名称)
注意:中间带空格的wwid,必须加引号才能解析识别!!!

(1)multipath -t //检查语法是否有错,输出一大段解析后的配置,无报错代表语法正确;
(2)service multipathd reload //重载 multipathd 服务,加载新配置。(reload 热重载,不会断开现有 iSCSI 磁盘业务; 若 reload 异常,才使用 restart)
(3)service multipathd restart //彻底重启服务,会短暂断开多路径设备,测试环境可以用
(4)chkconfig multipathd on //设置开机自启
(5)chkconfig --list multipathd //查看开机自启状态
(6)multipath -v2 //重新扫描磁盘路径,生成 / 更新多路径设备(-v 代表 verbosity 输出详细级别,命令本身都会执行扫描、创建 / 更新多路径设备,差别只在屏幕打印信息量。-v3 输出非常多,屏幕刷屏,生产环境日常不要用,仅排错时临时用)

多路径映射名称修改成功!

然后使用命令lsblk可以看到sdbsdc代表两条不同网络路径识别出来的同一个LUN

使用多路径存储设备

格式化、挂载多路径磁盘

注意此时我们操作设备一定是/dev/mapper/u01disk1,不要用原始的/dev/sd *设备

# 格式化,以u01disk1为例 mkfs.ext4 /dev/mapper/u01disk1 # 创建挂载点 mkdir /u01disk1 # 临时挂载 mount /dev/mapper/u01disk1 /u01disk1 df -h

配置开机自动挂载/etc/fstab

iSCSI 网络存储,不能直接写 /dev/mapper/u01disk1,要加上_netdev 参数,网络就绪后再挂载,否则开机卡启动。

/dev/mapper/u01disk1 /u01disk1 ext4 _netdev 0 0 #参数 `_netdev`:告诉系统这是网络设备,等 iscsi、multipathd 启动完成再挂载。

mount -a命令验证fstab是否正确(没有输出代表正确):

另一种挂载方式(用设备uuid挂载)

UUID 是格式化文件系统时写入到 superblock 超级块的 ID,写在磁盘文件系统内部。

1. 不受设备名字、dm 编号、mpathX 别名变化影响。
磁盘被识别成任何 sd 名字、multipath 别名顺序乱掉,UUID 不变,照样能找到文件系统。
2. 本地磁盘、iSCSI 网络盘、multipath 盘都推荐优先 UUID。

blkid /dev/mapper/u01disk1查看当前多路径设备uuid

然后编辑/etc/fstab

返回列表