配置:Linux 的 Device Mapper 多路径

概览

MD3200 系列存储阵列使用 Linux 操作系统软件框架(名为 Device Mapper(DM))以在 Linux 主机服务器上启用多路径功能。DM 多路径功能由驱动程序和公用程序的组合提供。本章介绍如何使用这些公用程序在 Linux 系统上完成启用 MD3200 系列存储阵列的过程。

Device Mapper 技术取代了名为 MPP 的早期专用技术。MPP 用于为上一代 MD 产品 MD3000 系列存储阵列启用多路径。

转 <wbr>配置:Linux <wbr>的 <wbr>Device <wbr>Mapper <wbr>多路径 注:通过在服务器上运行 MD3200 系列资源介质安装程序并选择 Full(完整)或 Host(主机)安装选项,可将所需的 Device Mapper 软件组件安装在 Linux 主机服务器上。有关详细的安装步骤,请参阅 Dell PowerVault MD3200 和 MD3220 存储阵列的《部署指南》

使用 DM 多路径功能的优点包括:

  • 检测路径故障并将 I/O 重新路由至其他可用路径

  • 在路径恢复后重新验证有故障的路径

  • 利用多个可用路径使性能最大化

  • 根据路径状态和错误条件重新配置路径使用

  • 将多个设备节点统一为单个逻辑多路径设备节点

  • 识别新的多路径 LU 并自动配置新的多路径节点

  • 在 /dev/mapper/ 下为 DM 设备提供永久的设备名称


使用 DM 多路径设备

转 <wbr>配置:Linux <wbr>的 <wbr>Device <wbr>Mapper <wbr>多路径 注:如果使用或修改多路径设备节点以外的任何节点,则可能导致阵列或文件系统故障,包括断开与阵列的通信以及文件系统损坏。避免访问多路径设备之外的任何设备。
转 <wbr>配置:Linux <wbr>的 <wbr>Device <wbr>Mapper <wbr>多路径 注:在多路径设备上创建分区之后,所有 IO 操作(包括创建文件系统、原始 I/O 和文件系统 I/O)都必须通过分区节点完成,而非通过多路径设备节点完成。

必要步骤

在继续操作前必须完成以下任务。有关步骤 1和 2 的更多信息,请参阅 MD3200 和 MD3220 存储阵列部署指南。有关步骤 3 的详细信息,请参阅创建虚拟磁盘

  1.  MD3200 系列资源介质安装主机软件 — 插入资源介质,开始安装 Modular Disk Storage Manager(MDSM)。

转 <wbr>配置:Linux <wbr>的 <wbr>Device <wbr>Mapper <wbr>多路径 注: 安装 Red Hat 5.x 时需重新安装 DVD 介质以便执行其内容。
  1. 在安装程序提示时重新引导 — 在完成安装时安装程序会提示用户重新引导主机服务器。

  2. 使用 MDSM 创建并映射虚拟磁盘 —在使用 Modular Disk Configuration Utility(MDCU)配置阵列后,运行 MDSM 创建并映射虚拟磁盘。

使用 MDSM 软件:

  1. 将主机服务器映射至 MD3200 系列存储阵列

  2. 创建虚拟磁盘

  3. 将新创建的阵列映射至主机服务器

转 <wbr>配置:Linux <wbr>的 <wbr>Device <wbr>Mapper <wbr>多路径 注: 使用 MDCU 配置的所有阵列都会自动添加至 PowerVault Modular Disk Storage Manager Enterprise Management Window(EMW)中的设备列表。

Device Mapper 配置步骤

完成 DM 多路径配置并使存储阵列可用于 Linux 主机服务器:

  1. 扫描虚拟磁盘。请参阅扫描新增的虚拟磁盘

  2. 显示多路径设备拓扑。请参阅使用多路径命令显示多路径设备拓扑

  3. 在多路径设备节点上创建分区。请参阅在多路径设备节点上新建 fdisk 分区

  4. 向 DM 添加分区。请参阅向 Device Mapper 添加新分区

  5. 在 DM 分区上创建文件系统。请参阅在 Device Mapper 分区上创建文件系统

  6. 安装 DM 分区。请参阅安装 Device Mapper 分区

以下说明显示如何完成这些步骤。

在以下命令说明中,<x> 用于指示应该进行替换的地方。在 RHEL 系统上,<x> 为分配给设备的编号。在 SLES 系统上,<x> 为分配给设备的字母。

扫描新增的虚拟磁盘

rescan_dm_devs 命令扫描主机服务器系统,查找映射至主机服务器的现有和新增的虚拟磁盘。

# rescan_dm_devs

如果有阵列虚拟磁盘(VD)稍后映射到主机服务器,则必须再次运行 rescan_dm_devices 命令,让 VD 成为操作系统的可见 LUN。

使用多路径命令显示多路径设备拓扑

多路径命令会将新扫描到的虚拟磁盘和映射的虚拟磁盘添加至 Device Mapper 表,然后在主机服务器的 /dev/mapper 目录中为其创建条目。这些设备与主机中的其他所有块设备相同。

要列出所有多路径设备,请运行以下命令。

# multipath Cll

输出应与该示例相似,以显示一个映射的虚拟磁盘的输出。

mpath1 (3600a0b80005ab177000017544a8d6b92) dm-0 DELL, MD32xx

[size=5.0G][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]

\_ round-robin 0 [prio=6][active]

\_ 97:0:0:0 sdc 8:32 [active][ready]

\_ round-robin 0 [prio=0][enabled]

\_ 4:0:0:0 sdb 8:16 [active][ghost]

其中

mpath1 是由 Device Mapper 创建的虚拟设备的名称。它位于 /dev/mapper 目录中。

DELL 是设备的供应商

MD3200 是设备型号

Sdc 是设备的所属控制器的物理路径

Sdb 是设备的非所属控制器的物理路径

SLES 输出的示例如下:

mpathb (360080e500017b2f80000c6ca4a1d4ab8) dm-21 DELL,MD32xx

[size=1.0G][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac][rw]

\_ round-robin 0 [prio=6][active]

\_ 4:0:0:22 sdx 65:112 [active][ready]

\_ round-robin 0 [prio=0][enabled]

\_ 6:0:0:22 sdcl 69:144 [active][ghost

其中

mpathb 是由 Device Mapper 创建的虚拟设备的名称。它位于 /dev/mapper 目录中。

DELL 是设备供应商

MD3200 是设备型号

Sdx 是设备所属控制器的物理路径

Sdcl 是设备的非所属控制器的物理路径

在多路径设备节点上新建 fdisk 分区

fdisk 命令可为特定文件系统创建分区空间,这些文件系统位于提供给 Device Mapper 的新扫描到的虚拟磁盘和新映射的虚拟磁盘上。

例如,使用以下命令用多路径设备节点 /dev/mapper/mpath<x> 创建分区,其中 mpath<x> 是要在其上创建分区的多路径设备节点:

# fdisk /dev/mapper/mpath<x>

  注:<x> 值是取决于字母数字操作系统的格式。使用先前运行的¹¬²æ¹命令,可看到映射的虚拟磁盘的相应值。有关 fdisk 的其他信息,请参阅操作系统文档。
向 Device Mapper 添加新分区

kpartx 命令可将 fdisk 新创建的分区添加至 Device Mapper 的可用分区列表。请参阅以下示例,其中 mpath<x> 是要在其上创建分区的设备节点。

# kpartx Ca /dev/mapper/mpath<x>

如果成功执行,则命令不会显示输出。要验证命令是否成功并查看确切的分区命名,用户可使用这些命令查看分配的完整分区名称。

# cd /dev/mapper

# ls

一般映射格式的部分示例如下:

在 RHEL 主机上,分区节点的格式为 /dev/mapper/mpath<x>p<y>,其中 <x> 是多路径设备的字母数字编号,<y> 是该设备的分区编号。

在 SLES 11.x 主机上,分区节点的格式为 /dev/mapper/mpath<x>-part<y>,其中 <x> 是分配给多路径设备的字母,而 <y> 是分区编号。

在 SLES 10.3 主机上,分区节点的格式为 /dev/mapper/mpath<x>_part<y>,其中 <x> 是分配给多路径设备的字母,而 <y> 是分区编号。

  注:在多路径设备上创建分区之后,所有 I/O 操作(包括创建文件系统、原始 I/O 和文件系统 I/O)都必须通过分区节点完成,而不是通过多路径设备节点完成。
在 Device Mapper 分区上创建文件系统

使用标准的 mkfs 命令在新建的 Device Mapper 分区上创建文件系统 例如:

# mkfs -t <filesystem type> /dev/mapper/<partition node>(# mkfs Ct <文件系统类型> /dev/mapper/<分区节点>)

其中 <分区节点> 是要在其上创建文件系统的分区。

安装 Device Mapper 分区

使用标准的 mount 命令安装 Device Mapper 分区,如下所示。

# mount /dev/mapper/<partition_node> <mounting_point>

已可使用

MD3200 系列阵列上新创建的虚拟磁盘已设置完毕,并可随时使用。之后重新引导时,会自动查找多路径设备及其分区。

有关特殊分区的重要命令

在将 Device Mapper 用于 MD3200 系列阵列时,所有物理磁盘都分配了一个磁盘设备节点。其中包括用于 MD3200 系列阵列的带内管理的特殊设备类型,其名为 Access Disk 或 Universal Xport 设备。

  小心: 特定命令(例如 lsscsi)可显示 Universal Xport 设备的一个或多个实例。不得以任何方式访问、安装或使用这些设备节点。否则会导致与存储阵列的通信中断,并可能导致存储阵列严重受损,甚至可能导致无法访问存储在阵列上的数据。

只能安装使用上面给出的命令创建的多路径设备节点和分区节点,或通过主机系统或其用户以任意方式访问这些节点。

 

表 13-1.  Device Mapper 命令

命令

说明

multipath -h

打印使用信息

multipath -ll

使用所有可用信息(sysfs、Device Mapper、路径检查程序等信息)显示当前多路径拓扑

multipath

使用简化输出重新集合多路径设备。

multipath -f <multipath_dev_node>

对特定多路径设备清除 Device Mapper。在删除基本物理设备或取消其映射时使用。

multipath -F

清除所有未使用的多路径设备映射。

rescan_dm_devs

Dell 提供的脚本。强制重新扫描主机 SCSI 总线,并根据需要集合多路径设备。适用情况:

  • LUN 动态映射至主机。
  • 有新目标添加至主机。
  • 需要恢复存储阵列的故障。

 


限制和已知问题

  • 在某些错误情况下,如果已设置 no_path_retry 或 queue_if_no_path 功能,则应用程序可能会挂起。要克服这些情况,必须为每个受影响的多路径设备输入以下命令: 

dmsetup message [device] 0 "fail_if_no_path"(dmsetup message [设备] 0 "fail_if_no_path")

其中 [设备] 是多路径设备名称(例如 mpath2,但是不指定路径)。

  • 如果在卸载卷之前删除了 Device Mapper 设备,I/O 可能会挂起。

  • 如果 scsi_dh_rdac 模块未包含在 initrd 中,设备搜索可能变得更缓慢,并且系统日志可能会写满缓冲区 I/O 错误信息。

  • 如果主机服务器或存储阵列在 I/O 活动时重新引导,则 I/O 可能会挂起。在关闭或重新引导主机服务器或存储阵列之前,应该停止存储阵列的所有 I/O。

  • 对于 MD3200 系列阵列,在恢复发生故障的路径之后,由于驱动程序无法在没有强制重新扫描的情况下自动检测设备,因此未自动完成故障恢复。运行命令 rescan_dm_devs 强制重新扫描主机服务器。由此可恢复发生故障的路径,并激活故障恢复。

  • 如果主机系统正在执行繁重的 I/O 操作,则故障恢复可能会很慢。此时若主机服务器的 CPU 利用率也很高,则会加剧该问题。

  • 如果主机系统正在执行繁重的 I/O 操作,则 Device Mapper 多路径服务可能会很慢。此时若主机服务器的 CPU 利用率也很高,则会加剧该问题。

  • 如果未将根磁盘列入 multipath.conf 文件中的黑名单,则可为根磁盘创建多路径节点。命令 multipath -ll 会列出有助于确定该问题的供应商/产品 ID。


故障排除

 

问题

解答

如何确定 multipathd 是否正在运行?

运行以下命令

/etc/init.d/multipathd status

为什么 multipath -ll 命令的输出未显示任何设备?

先请验证是否搜索到设备。命令 #cat /proc/scsi/scsi 可显示所有已搜索到的设备。

然后验证 multipath.conf 确保已用适当的设置将其更新。

此后运行 multipath。然后再运行 multipath -ll 就应显示新设备。

为什么没有为新映射的 LUN 分配多路径设备节点?

在任意目录下运行 rescan_dm_devs。由此可调出设备。

如果先前没有映射任何 LUN,然后映射了部分 LUN。则在运行 rescan-scsi-bus.sh 之后无法显示 LUN 0。

运行 rescan_dm_devs 而非 rescan-scsi-bus 以重新配置 LUN 0。

已移除 LUN,但多路径映射依然存在。

移除 LUN 后,多路径设备依然存在。运行 multipath -f <已删除 LUN 的设备节点> 以移除多路径映射。例如,如果删除与 /dev/dm-1 相关的设备,则必须运行 multipath -f /dev/dm-1 从 DM 映射表删除 /dev/dm-1。如果已停止/重新启动多路径守护程序,则应运行 multipath -F 清除所有失效的映射。

阵列未执行预期的故障恢复。

有时底层驱动程序不能自动检测随阵列回归的设备。运行 rescan_dm_devs 重新扫描主机服务器 SCSI 总线,并在多路径层重新集合设备。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值