multipath 配置各选项详解【转,SUSE】
(2014-01-09 13:28:51)分类: Multipath |
7.6配置路径故障转移策略和优先级
在 Linux 主机中,当存在多个路径到某储存控制器时,每个路径都显示为独立的块设备,导致单个 LUN
有多个块设备。设备映射程序多路径服务检测到具有同一 LUN ID 的多个路径,并使用该 ID
创建了一个新的多路径设备。例如,如果具有两个 HBA
的主机通过单个未确定区域的光纤通道交换机挂接到一个带两个端口的储存控器,则会看到四个块设备:/dev/sda、/dev/sdb、/dev/sdc
本节描述如何指定故障转移策略和配置路径的优先级。
7.6.1配置路径故障转移策略
使用带 -p 选项的
multipath devicename -p policy
将
表
7-4
7.6.2配置故障转移优先级
必须在
了解优先级组和属性
优先级组是通向同一物理 LUN 的路径的集合。默认情况下,I/O
在组中的所有路径中以循环方式分布。multipath
路径优先级是指派给一个路径的整数值。该值越高,优先级越高。将使用一个外部程序来指派每个路径的优先级。对于给定的设备,具有相同优先级的路径属于同一优先级组。
表
7-5
多路径属性 |
描述 |
值 |
---|---|---|
user_friendly_names |
指定使用
ID 还是使用/var/lib/multipath/bindings文件以 |
yes:
no: |
blacklist |
指定作为非多路径设备忽略的设备名称的列表,例如 cciss、fd、hd、md、dm、sr、scd、st、ram、raw、loop。 |
有关示例,请参见 |
blacklist_exceptions |
指定视为多路径设备(即使它们包含在黑名单中)的设备名称的列表。 |
有关示例,请参见 |
failback |
指定是否监视失败路径恢复,并指明失败路径重新使用之后组故障回复的时间。 当失败的路径恢复时,该路径会基于此设置重新添加到支持多路径的路径列表中。多路径计算优先级组,并在主路径的优先级超出备用组时更改活动优先级组。 |
immediate:
n
(>
0):
manual: |
getuid |
用于调用以获取唯一路径标识符的默认程序和自变量。应使用绝对路径指定。 |
/sbin/scsi_id -g -u -s 这是默认位置和自变量。 示例: getuid "/sbin/scsi_id -g -u -d /dev/%n" |
no_path_retry |
指定在路径失败时使用的行为。 |
n
(> 0):
fail:
queue: |
path_grouping_policy |
指定由给定控制器托管的多路径设备的路径分组策略。 |
failover:
multibus:
group_by_prio:
group_by_serial:
group_by_node_name: |
path_checker |
确定路径的状态。 |
directio:
readsector0:
tur: 一些 SAN 供应商提供了自定义的 path_checker 选项:
|
path_selector |
指定用于负载平衡的 path-selector 算法。 |
round-robin
0: 从 SUSE Linux Enterprise Server 11 开始,提供以下附加 I/O 平衡选项:
least-pending: 此策略在 SAN 环境具有异构组件时特别有用。例如,如果有一个 8GB HBA 和一个 2GB HBA 连接到同一服务器,则对于此算法最好利用 8GB HBA。
length-load-balancing:
service-time: |
pg_timeout |
指定路径组超时处理。 |
NONE(内部默认值) |
prio_callout 多路径 prio_callouts 位于/lib/libmultipath/lib*的共享库中。通过使用共享库,调用将在守护程序启动时装载到内存中。 |
指定用于确定多路径映射布局的程序和自变量。 当使用 当与 group_by_prio 的 path_grouping_policy 一起使用时,具有相同优先级的所有路径会分到一个多路径组中。具有最高聚合优先级的组成为活动组。 当一个组中的所有路径失败时,具有下一个最高聚合优先级的组成为活动组。此外,可能会向目标发送故障转移命令(由硬件处理程序确定)。 mpath_prio_* 程序也可以是由指定安装的供应商或管理员创建的自定义脚本。 命令行中的 %n 展开为 %b 展开为 %d 展开为 如果设备可热插拔,请使用 %d 标志而不是
%n。这会处理设备可用的时间和 |
如果不使用
/bin/true: 当用
mpath_prio_alua
%n:
mpath_prio_balance_units:
mpath_prio_emc
%n:
mpath_prio_hds_modular
%b:
mpath_prio_hp_sw
%n:
mpath_prio_netapp
%n:
mpath_prio_random
%n:
mpath_prio_rdac
%n:
mpath_prio_tpc
%n:
mpath_prio_spec.sh
%n: |
rr_min_io |
指定在切换到同一路径组中的下一个路径之前要路由到一个路径的 I/O 事务数,下一个路径由path_selector |
n
(>0):
1000: |
rr_weight |
指定用于路径的加权方法。 |
uniform:
priorities: |
配置循环负载平衡
所有路径都是活动的。I/O 被配置为等候数秒或一定的 I/O 事务数,再移到序列中下一个打开的路径。
配置单路径故障转移
具有最高优先级(设置值为最低)的一个路径是活动的,可以进行通讯。其他路径可用于故障转移,但在发生故障转移前不会使用。
为循环负载平衡将 I/O 路径分组
具有相同优先级的多个路径分在活动的组中。当该组中的所有路径失败时,设备会故障转移到下一个最高优先级的组。该组中的所有路径以循环负载平衡的方式共享通讯负载。
7.6.3使用脚本设置路径优先级
您可以创建与“设备映射器多路径 (DM-MPIO)”交互的脚本,从而当 LUN
设置为
首先,设置一个文本文件,列出关于每个设备的信息和要指派给每个路径的优先级值。例如,将该文件命名为/usr/local/etc/primary-paths。以下列格式为每个路径输入一行:
host_wwpn target_wwpn scsi_id priority_value
为设备上的每个路径返回一个优先级值。确保变量 FILE_PRIMARY_PATHS 解析为具有每个设备相应数据(主机 wwpn、目标 wwpn、scsi_id 和优先级值)的真实文件。
单个 LUN 有 8 个路径的
0x10000000c95ebeb4 0x200200a0b8122c6e 2:0:0:0 sdb 3600a0b8000122c6d00000000453174fc 50
0x10000000c95ebeb4 0x200200a0b8122c6e 2:0:0:1 sdc 3600a0b80000fd6320000000045317563 2
0x10000000c95ebeb4 0x200200a0b8122c6e 2:0:0:2 sdd 3600a0b8000122c6d0000000345317524 50
0x10000000c95ebeb4 0x200200a0b8122c6e 2:0:0:3 sde 3600a0b80000fd6320000000245317593 2
0x10000000c95ebeb4 0x200300a0b8122c6e 2:0:1:0 sdi 3600a0b8000122c6d00000000453174fc 5
0x10000000c95ebeb4 0x200300a0b8122c6e 2:0:1:1 sdj 3600a0b80000fd6320000000045317563 51
0x10000000c95ebeb4 0x200300a0b8122c6e 2:0:1:2 sdk 3600a0b8000122c6d0000000345317524 5
0x10000000c95ebeb4 0x200300a0b8122c6e 2:0:1:3 sdl 3600a0b80000fd6320000000245317593 51
要继续表
7-5中提及的示例,请创建一个名为
-
使用 multipath 查询时,从
/usr/local/etc/primary-paths 文件 grep 该设备及其路径。 -
向 multipath 返回该文件中该项最后一列的优先级值。
7.6.4配置 ALUA (mpath_prio_alua)
mpath_prio_alua(8)
语法
mpath_prio_alua [-d directory] [-h] [-v] [-V] device [device...]
前提条件
SCSI 设备。
选项
-
-d
目录 -
指定可以找到列出的设备节点名的 Linux 目录路径。默认目录是
/dev。使用此选项时,请仅指定要管理的一个或多个设备的设备节点名(例如 sda)。 - -h
-
显示此命令的帮助,然后退出。
- -v
-
打开详细输出以按用户可读格式显示状态。输出包含关于指定的设备属于哪个端口组及其当前状态的信息。
- -V
-
显示此工具的版本号,然后退出。
-
device
[device...] -
指定要管理的一个或多个 SCSI 设备。该设备必须是支持报告目标端口组 (sg_rtpg(8)) 命令的 SCSI 设备。对该设备节点名使用以下格式之一:
-
完整 Linux 目录路径,例如
/dev/sda。不要使用 -d 选项。 -
仅设备节点名,例如
sda。使用 -d 选项指定该目录路径。 -
设备的主号和次号,使用冒号 (:) 隔开,没有空格,例如
8:0。这会在 /dev 目录中创建一个临时设备节点,名称格式为 tmpdev-:-。例如,/dev/tmpdev-8:0-。
-
返回值
成功后,返回值 0 和该组的优先级值。表
7-6显示由
由于
发生故障时,返回值 1 到
5,表示该命令发生故障的原因。有关信息,请参见
7.6.5报告目标路径组
使用 SCSI 报告目标端口组 (sg_rtpg(8))
命令。有关信息,请参见
喜欢
0
赠金笔