CentOS 7存储多路径配置实战:从零构建高可用存储架构
在企业的数据中心里,存储系统的可靠性和性能直接关系到核心业务的连续性。想象一下这样的场景:你的数据库服务器通过两条光纤链路连接到存储阵列,突然其中一条链路因为交换机故障而中断。如果没有多路径技术,整个数据库服务可能就会瞬间瘫痪,导致业务中断和数据丢失。这就是为什么在SAN存储环境中,多路径配置不是“锦上添花”,而是“雪中送炭”的关键技术。
对于使用CentOS 7的系统管理员来说,掌握Device Mapper Multipath的配置和管理,意味着能够为企业级应用提供真正的高可用存储基础架构。本文将从实战角度出发,不仅告诉你如何配置,更会深入解析配置背后的原理,分享我在实际项目中积累的避坑经验,帮助你构建既稳定又高效的存储环境。
1. 理解多路径技术:不仅仅是冗余那么简单
在深入配置之前,我们需要先搞清楚多路径技术到底解决了什么问题。传统的服务器连接存储时,通常是一块硬盘对应一条物理路径,这种一对一的关系简单直接,但也脆弱——路径一旦中断,存储访问就立即失败。
而在SAN环境中,情况变得复杂而有趣。服务器通过多个HBA卡(主机总线适配器)连接到存储网络,存储阵列也提供多个控制器端口,这就形成了多对多的连接关系。从操作系统的视角看,每一条物理路径都会被视为一个独立的磁盘设备,比如/dev/sdb、/dev/sdc等,但实际上它们都指向同一个物理LUN(逻辑单元号)。
多路径软件的核心价值体现在三个层面:
-
故障切换与自动恢复:当某条路径发生故障时,I/O操作能够无缝切换到其他可用路径,整个过程对上层应用完全透明。更智能的是,当故障路径恢复后,系统能够自动将其重新纳入可用路径池。
-
负载均衡与性能优化:多条路径可以同时承载I/O流量,通过轮询(round-robin)或其他智能算法分配请求,显著提升存储访问的吞吐量。我在一个Oracle RAC环境中实测过,启用多路径负载均衡后,数据库的IOPS提升了约40%。
-
设备虚拟化与统一视图:多路径软件将多个物理路径聚合为一个逻辑设备(如
/dev/mapper/mpatha),对应用和文件系统来说,它们操作的是一个统一的存储设备,无需关心底层路径的复杂性。
CentOS 7自带的Device Mapper Multipath是一个成熟的开源解决方案,它通过内核模块dm_multipath和用户空间守护进程multipathd协同工作。与某些厂商专用的多路径软件相比,它的优势在于通用性强,能够支持大多数主流存储设备,而且完全免费。
注意:虽然DM-Multipath是通用解决方案,但不同存储厂商可能会有特定的优化要求。例如,某些高端存储阵列的ALUA(非对称逻辑单元访问)特性需要特定的优先级算法支持。在配置前,最好查阅存储厂商的兼容性列表。
2. 环境准备与基础安装
开始配置前,我们需要确保环境准备就绪。假设你已经有一台运行CentOS 7的服务器,并通过光纤或iSCSI连接到了存储设备。首先,让我们验证存储设备是否已被系统识别。
2.1 存储设备识别与验证
连接存储后,第一步是扫描SCSI总线,让系统发现新设备:
# 扫描所有SCSI主机适配器
for host in /sys/class/scsi_host/host*; do
echo "- - -" > $host/scan
done
这个命令会触发所有HBA卡重新扫描连接的设备。执行后,使用fdisk -l或lsblk查看新出现的磁盘设备。你应该能看到多个大小相同的磁盘,比如:
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─centos-root 253:0 0 50G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 500G 0 disk # 第一条路径
sdc 8:32 0 500G 0 disk # 第二条路径
sdd 8:48 0 500G 0 disk # 第三条路径
注意sdb、sdc、sdd显示为独立的500G磁盘,但实际上它们可能是同一个LUN的不同路径。这正是我们需要配置多路径的原因。
2.2 安装Multipath软件包
CentOS 7的默认仓库中包含了所需的软件包。安装过程很简单:
# 安装核心软件包
yum install -y device-mapper-multipath
# 安装额外的工具和库(推荐)
yum install -y device-mapper-multipath-libs device-mapper-persistent-data
这里有个细节值得注意:device-mapper-persistent-data包提供了mpathconf工具,它能大大简化初始配置。我建议总是安装这个包,即使你现在可能用不到它。
验证安装是否成功:
# 检查软件包是否已安装
rpm -qa | grep device-mapper-multipath
# 预期输出类似:
# device-mapper-multipath-0.4.9-131.el7.x86_64
# device-mapper-multipath-libs-0.4.9-131.el7.x86_64
2.3 加载内核模块并启动服务
安装完成后,需要加载必要的内核模块:
# 加载多路径核心模块
modprobe dm-multipath
# 加载轮询调度算法模块(最常用的负载均衡算法)
modprobe dm-round-robin
# 验证模块是否加载成功
lsmod | grep dm_multipath
如果一切正常,你会看到类似这样的输出:
dm_multipath 27811 0
dm_round_robin 12870 1 dm_multipath
dm_mod 123303 11 dm_multipath,dm_round_robin,dm_log,dm_mirror
现在启动multipathd服务并设置开机自启:
# 启动服务
systemctl start multipathd
# 设置开机自启
systemctl enable multipathd
# 检查服务状态
systemctl status multipathd
服务状态应该显示为active (running)。如果遇到启动失败,通常是因为配置文件不存在或格式错误,我们接下来就会解决这个问题。
3. 配置文件深度解析与定制
/etc/multipath.conf是多路径配置的核心,理解它的结构比记住具体配置更重要。这个文件采用分层的配置方式,优先级从高到低是:multipaths部分 > devices部分 > defaults部分。
3.1 初始配置生成
如果你没有现成的配置文件,可以使用mpathconf工具快速生成一个基础版本:
# 生成启用多路径的基本配置
mpathconf --enable --with_module y --with_multipathd y
这个命令会创建/etc/multipath.conf文件,并设置基本的默认值。不过,我通常建议不要完全依赖自动生成的配置,而是基于它进行定制化修改。
3.2 配置文件结构详解
让我们深入分析一个典型的生产环境配置。下面是一个结构完整的配置文件示例,我添加了详细的注释说明:
# /etc/multipath.conf
# 黑名单部分:指定哪些设备不应该由多路径管理
blacklist {
# 排除本地磁盘,通常以sda开头
devnode "^sda"
# 排除所有以ram、loop、fd开头的设备
devnode "^ram"
devnode "^loop"
devnode "^fd"
# 通过WWID排除特定设备(如果需要)
# wwid 3600508b1001c044c39717726236c68d5
# 通过设备类型排除
device {
vendor "ATA" # 排除ATA/SATA本地磁盘
product "*"
}
}
# 默认设置部分:适用于所有多路径设备的全局配置
defaults


1万+

被折叠的 条评论
为什么被折叠?



