CentOS6.5 虚拟机部署 iSCSI 存储 + multipath 多路径完整实操
背景
业务使用仅兼容 CentOS6.5 的老旧程序,虚拟机本地磁盘空间不足,需通过 iSCSI 挂载外部集中存储存放数据库、日志等数据。 单条存储链路易因网口、线路故障造成业务中断,还存在带宽上限;部署 multipath 多路径可实现链路故障自动切换、IO 负载均分,并将多条链路识别的重复磁盘合并为单个逻辑盘。 环境为 VMware 虚拟机,配置双网卡分网段对接存储双控制器,存储端提供双 IP 共享同一 LUN。
资源清单
| 资源项 | 宿主机 | target机 | 业务机 |
|---|---|---|---|
| 操作系统 | windows10/11 | CentOS6.5 | CentOS6.5 |
| 网卡 1 | 192.168.1.1 | eth0:192.168.1.101 | eth0:192.168.1.102 |
| 网卡 2 | eth1:192.168.2.101 | eth1: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.1)、target机eth0(192.168.1.101)、target机eth1(192.168.2.101)
创建快照
建议此时创建两台虚拟机快照,以防后续实验出现问题好及时回退
target机新增存储硬盘
虚拟机设置-添加
选择硬盘-下一步
默认,下一步
默认,下一步
设置磁盘容量,下一步
点击完成
可以看到新添加的15G硬盘,点击确定
后面我们用这块盘去作为iSCSI网络存储,挂载到业务机上面去使用
此时,使用lsblk命令查看下设备,无法看到新硬盘。重启一下虚拟机reboot
重启虚拟机后,可以看到15G的sdb了
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可以看到sdb和sdc代表两条不同网络路径识别出来的同一个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
