输入/输出策略
我们可以设置 I/O 策略以跨存储数组的多个路径分配负载。
I/O 策略记录在文件 /etc/vx/dmppolicy.info 中。
不要手动编辑此文件。
可以配置的 I/O 策略有:
adaptive balanced minimumq priority round-robin singleactive
在数组上设置所需的策略:
# vxdmpadm setattr enclosure enc1 iopolicy=[policy]
要在机箱上显示设置的策略:
# vxdmpadm getattr enclosure Disk iopolicy ENCLR_NAME DEFAULT CURRENT -------------------------------------- Disk MinimumQ Balanced
设置命名方案
根据我们在 VxVM 中的命名方案,为磁盘分配设备名称。
有 2 种命名方案可用:
- 操作系统原生
- 基于shell
要检查命名方案,请使用:
# vxddladm get namingscheme NAMING_SCHEME PERSISTENCE LOWERCASE USE_AVID ============================================================ OS Native No Yes Yes
通过命令行更改命名方案
# vxddladm set namingscheme=ebn # vxddladm get namingscheme NAMING_SCHEME PERSISTENCE LOWERCASE USE_AVID ============================================================ Enclosure Based Yes Yes Yes
显示有关机柜的信息
要列出有关系统中所有机柜的信息:
# vxdmpadm listenclosure all ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS ARRAY_TYPE LUN_COUNT ================================================================================ Disk Disk DISKS CONNECTED Disk 6 SENA0 SENA 508002000001d660 CONNECTED A/A 57 enc0 T3 60020f20000001a90000 CONNECTED A/P 30
要显示有关特定机箱的信息:
# vxdmpadm listenclosure enc0 ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS ARRAY_TYPE LUN_COUNT ============================================================================= enc0 T3 60020f20000001a90000 CONNECTED A/P 30
显示有关路径的信息
要显示 DMP 已知的所有子路径:
# vxdmpadm getsubpaths NAME STATE[A] PATH-TYPE[M] DMPNODENAME ENCLR-NAME CTLR ATTRS ======================================================================= c1t65d0s2 ENABLED(A) - Disk_1 Disk c1 c1t66d0s2 ENABLED(A) - Disk_2 Disk c1 c2t65d0s2 ENABLED(A) - Disk_1 Disk c2 c2t66d0s2 ENABLED(A) - Disk_2 Disk c2
要获取有关连接到同一 HBA 卡控制器的所有子路径的信息:
# vxdmpadm getsubpaths ctlr=c2 NAME STATE[-] PATH-TYPE[-] CTLR-NAME ENCLR-TYPE ENCLR-NAME ATTRS ====================================================================== c2t1d0s2 ENABLED(A) PRIMARY c2t1d0s2 ACME enc0 c2t2d0s2 ENABLED(A) PRIMARY c2t2d0s2 ACME enc0 c2t3d0s2 DISABLED SECONDARY c2t3d0s2 ACME enc0 c2t4d0s2 ENABLED SECONDARY c2t4d0s2 ACME enc0
同样,要获取有关连接到相同机箱和 portid 的子路径的信息:
# vxdmpadm getsubpaths enclosure=enc0 portid=1A NAME STATE[A] PATH-TYPE[M] DMPNODENAME ENCLR-NAME CTLR ATTRS ======================================================================= c1t65d0s2 ENABLED(A) PRIMARY c1t65d0s2 enc0 c1 c1t66d0s2 ENABLED(A) PRIMARY c1t66d0s2 enc0 c1
要通过 WWN 列出通过数组端口的所有子路径:
# vxdmpadm getsubpaths pwwn=20:00:00:E0:8B:06:5F:19 NAME STATE[A] PATH-TYPE[M] DMPNODENAME ENCLR-NAME CTLR ATTRS ======================================================================= c1t65d0s2 ENABLED(A) PRIMARY c1t65d0s2 HDS9500-ALUA0 c1 c1t66d0s2 ENABLED(A) PRIMARY c1t66d0s2 HDS9500-ALUA0 c1
如何检查Veritas 是否启用了 DMP
- 检查 DMP 是否启用最简单的方法是检查 vxdisk path 命令:
# vxdisk path SUBPATH DANAME DMNAME GROUP STATE c1t0d0s2 c1t0d0s2 mydg01 mydg ENABLED c4t0d0s2 c1t0d0s2 mydg01 mydg ENABLED c1t1d0s2 c1t1d0s2 mydg02 mydg ENABLED c4t1d0s2 c1t1d0s2 mydg02 mydg ENABLED
如我们所见,2 个磁盘 mydg01 和 mydg02 中的每一个都有 2 个路径。
- 另一种方法是在单个磁盘上检查多路径:
# vxdisk list c2t0d0s2 Device c2t0d0 devicetag c2t0d0 type sliced hostid system01 . . . Multipathing information: numpaths: 2 c2t0d0s2 state=enabled type=primary c1t0d0s2 state=disabled type=secondary
numpath 参数显示磁盘有 2 条路径。
- 或者,我们也可以使用以下命令来检查多路径:
# vxdmpadm getsubpaths dmpnodename=devicename
# vxdmpadm getsubpaths dmpnodename=c2t66d0s2 NAME STATE[A] PATH-TYPE[M] CTLR-NAME ENCLR-TYPE ENCLR-NAME ATTRS ======================================================================= c2t66d0s2 ENABLED(A) PRIMARY c2 ACME enc0 c1t66d0s2 ENABLED PRIMARY c1 ACME enc0
Veritas Dynamic Multi-Pathing (DMP) 为系统上的本机设备提供多路径功能。
DMP 创建 DMP 元设备(DMP 节点)来表示到同一物理 LUN 的所有设备 e 路径。
显示 I/O 统计信息
vxdmp iostat 命令可用于收集和显示特定路径、DMP 节点或者机箱上的 I/O 统计信息。
开始收集统计信息:
# vxdmpadm iostat start
要显示所有路径的 I/O 统计信息和累积 r/w 操作:
# vxdmpadm iostat show all cpu usage = 7952us per cpu memory = 8192b OPERATIONS KBYTES AVG TIME(ms) PATHNAME READS WRITES READS WRITES READS WRITES c0t0d0 1088 0 557056 0 0.00 0.00 c2t118d0 87 0 44544 0 0.00 0.00 c3t118d0 0 0 0 0 0.00 0.00 c2t122d0 87 0 44544 0 0.00 0.00
要显示有关特定路径名、DMP 节点名和机箱名称的 I/O 统计信息:
# vxdmpadm iostat show pathname=c3t115d0s2 cpu usage = 8132us per cpu memory = 4096b OPERATIONS BYTES AVG TIME(ms) PATHNAME READS WRITES READS WRITES READS WRITES c3t115d0s2 0 0 0 0 0.00 0.00
# vxdmpadm iostat show dmpnodename=c0t0d0s2 cpu usage = 8501us per cpu memory = 4096b OPERATIONS BYTES AVG TIME(ms) PATHNAME READS WRITES READS WRITES READS WRITES c0t0d0s2 1088 0 557056 0 0.00 0.00
# vxdmpadm iostat show enclosure=Disk cpu usage = 8626us per cpu memory = 4096b OPERATIONS BYTES AVG TIME(ms) PATHNAME READS WRITES READS WRITES READS WRITES c0t0d0s2 1088 0 57056 0 0.00 0.00
为 iostat 命令指定间隔和示例:
# vxdmpadm iostat show dmpnodename=emc_clariion0_342 interval=1 count=2
要将 I/O 统计计数器重置为零:
# vxdmpadm iostat reset
要禁用收集 I/O 统计信息:
# vxdmpadm iostat stop
显示有关控制器的信息
要显示系统上可用的所有 HBA 控制器:
# vxdmpadm listctlr all CTLR-NAME ENCLR-TYPE STATE ENCLR-NAME =================================================== c1 OTHER ENABLED other0 c2 X1 ENABLED jbod0 c3 ACME ENABLED enc0 c4 ACME ENABLED enc0
要列出特定机箱下的控制器:
# vxdmpadm listctlr enclosure=enc0 CTLR-NAME ENCLR-TYPE STATE ENCLR-NAME ====================================================== c2 ACME ENABLED enc0 c3 ACME ENABLED enc0
获取 DMP 节点信息
要列出所有机箱下的所有 DMP 节点:
# vxdmpadm list dmpnode all
要列出特定机箱 enc0 下的所有 DMP 节点:
# vxdmpadm getdmpnode enclosure=enc0 NAME STATE ENCLR-TYPE PATHS ENBL DSBL ENCLR-NAME ========================================================= c2t1d0s2 ENABLED T300 2 2 0 enc0 c2t1d1s2 ENABLED T300 2 2 0 enc0 c2t1d2s2 ENABLED T300 2 2 0 enc0 c2t1d3s2 ENABLED T300 2 2 0 enc0
要获取有关特定 DMP 节点的信息:
# vxdmpadm getdmpnode nodename=c0t5006016041E03B33d0s2 NAME STATE ENCLR-TYPE PATHS ENBL DSBL ENCLR-NAME ==================================================================== emc_clariion0_16 ENABLED EMC_CLARiiON 6 6 0 emc_clariion0
DMP 的工作原理
VxVM 使用 DMP 元节点(DMP 节点)访问连接到系统的磁盘设备。
对于每个磁盘,DMP 将一个节点映射到连接到磁盘的一组路径。
原始设备和块设备分别在目录 /dev/vx/rdmp 和 /dev/vx/dmp 中创建。