☰
Linux底层存储路由配
2026/10/14 22:59:40 网站建设 项目流程

文章目录

  • 场景2:DM-Multipath 多路径存储路由(SAN存储,重点)
    • 完整部署(Ubuntu/CentOS通用)
      • 1. 安装multipath工具
      • 2. 生成multipath主配置文件
      • 3. 加载内核模块,启动服务
      • 4. 扫描存储LUN,生成多路径虚拟设备
      • 5. 查看存储路由信息
    • 场景3:纯dmsetup手动自定义DM映射(原生底层,不推荐生产,适合学习)
  • 存储路由常用排查命令汇总
# 场景1:LVM(dm-linear,最常用本地存储路由) LVM底层就是`dm-linear`,把多个物理磁盘PV组织成VG卷组,再划分LV逻辑卷(DM虚拟设备 `/dev/mapper/vgname-lvname`)。 IO路由:应用→文件系统→LV(dm) →映射到多个PV磁盘。 ### 步骤 1. 准备裸磁盘,例如 `/dev/sdb /dev/sdc`(无分区、无文件系统) ```bash # 创建PV(物理卷) pvcreate /dev/sdb pvcreate /dev/sdc # 创建VG卷组,把2块盘加入 vgcreate vg_data /dev/sdb /dev/sdc # 创建LV逻辑卷(例如20G) lvcreate -L 20G -n lv_data vg_data

生成虚拟块设备:/dev/mapper/vg_data-lv_data

  1. 查看DM底层存储路由映射表
dmsetup table vg_data-lv_data

输出示例:

0 41943040 linear 8:16 0

含义:从逻辑块0开始,总41943040块,线性映射到设备主从号8:16(/dev/sdb),偏移0。如果跨多块盘,会有多条映射条目。

  1. 格式化+挂载使用
mkfs.ext4 /dev/mapper/vg_data-lv_datamkdir/datamount/dev/mapper/vg_data-lv_data /data
  1. 开机自动挂载(写入/etc/fstab)
/dev/mapper/vg_data-lv_data /data ext4 defaults 0 0

扩容场景:新增磁盘做成PV,vgextend加到VG,lvextend扩容LV,DM会自动更新存储路由映射表。

场景2:DM-Multipath 多路径存储路由(SAN存储,重点)

适用:服务器HBA卡连SAN,同一个存储LUN,多条光纤链路,系统识别出多个sd设备(/dev/sdb /dev/sdc),实际是同一个LUN。
multipath内核模块dm-multipath:多条物理路径合并为1个虚拟设备 /dev/mapper/mpathX,配置路径调度策略(轮询/主备)实现存储路由负载均衡、链路故障自动切换。

完整部署(Ubuntu/CentOS通用)

1. 安装multipath工具

# Ubuntuaptinstallmultipath-tools-y# CentOS/RHELdnfinstalldevice-mapper-multipath-y

2. 生成multipath主配置文件

# CentOSmpathconf--enable# Ubuntu默认自带 /etc/multipath.conf,如不存在手动新建

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

defaults { user_friendly_names yes # 使用mpathX友好命名 path_selector "round-robin 0" # 路由策略:round-robin轮询;failover主备 path_grouping_policy multibus failback immediate no_path_retry fail } # 识别你的存储厂商LUN,可添加blacklist屏蔽本地磁盘,防止本地盘被误纳入multipath blacklist { devnode "^(sr|hd|vd|nvme)" }
  • path_selector存储路由策略:
    • round-robin 0:轮询,IO请求轮流分发所有可用链路,存储负载均衡;
    • failover:主备,只用优先级最高主路径,主链路断,自动切备用链路(数据库SAN常用)。

3. 加载内核模块,启动服务

modprobe dm-multipath modprobe dm-round-robin systemctlenable--nowmultipathd

4. 扫描存储LUN,生成多路径虚拟设备

multipath-v2

5. 查看存储路由信息

# 查看多路径拓扑(重点,查看每条路径状态)multipath-ll# 查看dm-multipath底层映射表dmsetup table mpath0

输出可以看到:虚拟设备mpath0,后端多条路径,IO按照path_selector策略路由分发。

之后,使用/dev/mapper/mpath0作为存储设备,不要直接使用底层/dev/sdb、/dev/sdc。
可以在mpath之上继续做LVM:pvcreate /dev/mapper/mpath0,叠加多层存储路由。

场景3:纯dmsetup手动自定义DM映射(原生底层,不推荐生产,适合学习)

直接用dmsetup手动编写存储路由映射表,不依赖LVM工具。
示例:把/dev/sdb前10G映射为虚拟设备myvol

# 创建映射:起始块0,块数量20971520,linear映射 /dev/sdb,偏移0echo"0 20971520 linear /dev/sdb 0"|dmsetup create myvol# 查看路由表dmsetup table myvol# 删除映射dmsetup remove myvol

这种方式配置不会持久化,重启失效;生产用LVM/multipath,自动管理dm映射。

存储路由常用排查命令汇总

lsblk# 查看块设备拓扑,识别dm虚拟设备dmsetupls# 列出所有dm设备dmsetup table[设备名]# 查看底层IO映射路由(最重要)multipath-ll# 查看SAN多路径路由状态cat/proc/dmstats# DM IO统计iostat /dev/mapper/xxx# 查看虚拟设备IO负载blktrace# 抓底层bio请求,追踪IO路由链路

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询