ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

SAN存储LUN屏蔽与Storage Partition实战避坑

SAN存储LUN屏蔽与Storage Partition实战避坑 简介围绕 IBM DS 系列存储管理展开的 DOC 文档面向存储运维工程师、系统集成技术人员及备考相关认证的学习者重点解决存储分区规划、LUN 屏蔽配置与设备调试中的实操疑惑。正文系统梳理 DS Storage Manager 的两大核心能力Storage Partition 与 LUN Masking并对比光纤交换机 Zoning 的边界说明主机与主机组划分的两种方案及 License 取舍同时覆盖在线扩容、主机数量增加、分区数量升级等维护场景并以 DS4800 为例讲解图形界面划分磁盘组、卷与映射以及串口命令行排障的差异。资源包共 1 个 DOC 文件约 1019KB篇幅紧凑适合作为随查随用的操作参考。已有 452 人学习说明其在 IBM 存储入门与日常运维中具备一定参考价值。读者可从中获得分区设计思路、热备盘与映射操作要点以及故障排查的入手方向。1. 一块“被看见”的磁盘Storage Partition 到底在防什么一台正在跑业务的 Linux 主机它的 LUN 被同一条光纤上的另一台 Windows 主机“看见”了几秒钟随后 Linux 侧文件系统报错、目录变成乱码。很多人第一反应是硬件故障其实这是一次合法的写入Windows 识别到一块自己不认识的磁盘时会习惯性地往盘头写一个磁盘签名。几秒钟几十个字节落在别人的数据区上数据就没了。在 IBM 存储的管理体系里DS Storage Manager 提供的 Storage Partition存储分区就是给这件事上锁的机制业界更通用的叫法是 LUN Masking。理解了它你才能明白阵列控制器是如何决定“哪台主机能看见哪些盘”的——这是 SAN 环境里所有数据安全的最后一道闸门。2. LUN Masking 的作用域Zoning 管“到不到得了”Storage Partition 管“看得见哪块盘”2.1 三道闸门物理链路、Zone 隔离、LUN 映射主机要读写一块盘中间要过三道关。第一道是物理连通HBA 卡插好、光纤跳线通、光模块亮绿灯、端口速率协商一致。第二道是光纤交换机的 Zoning把某些 HBA 端口和某些阵列 target 端口划进同一个 zone只有同 zone 内的设备才能完成登录和名称服务查询不同 zone 之间连 SCSI 命令都发不过去。第三道才轮到阵列控制器当主机发起 Report LUNs控制器按自己维护的映射表回答“你能看到 1 号、3 号 LUN”其余的 LUN 在主机侧根本不存在。这三道关的分工用一句话概括就是Zoning 回答“你能不能跟这个 target 端口说话”Storage Partition 回答“说完话之后你被允许看哪几块盘”。很多人把两者混为一谈实际粒度差了一个数量级——Zoning 的粒度是端口一个 target 端口下面可能挂了几十上百个 LUNStorage Partition 的粒度是 LUN同一个 target 端口对不同发起方可以返回完全不同的 LUN 列表。层级执行者隔离粒度越权后果物理链路HBA / 光纤 / 交换机端口端口链路不通无法登录Zoning光纤交换机固件交换机端口或 WWN无法完成 fabric 登录Storage Partition阵列控制器固件单个 LUN主机可见错误 LUN可能写坏数据表格里最后一行是关键前两道关失效最坏结果是业务中断第三道关失效最坏结果是数据损坏。中断可以重连损坏没有后悔药。2.2 Host、Host Group 与 LUN控制器侧的映射表长什么样DS Storage Manager 的 Mapping View 里只有三种对象Host一台主机由一组 HBA 端口的 WWN 定义、Host Group主机容器、Logical Drive逻辑盘也就是 LUN。映射动作的本质是把某个 LUN 的访问权限授予某个 Host 或某个 Host Group。控制器内部维护的映射关系等价于下面这样的结构{ partitionName: Oracle_data, hostGroup: Oracle_data, hosts: [ {alias: oracle-rac1, ports: [20:00:00:1B:32:xx:xx:xx]}, {alias: oracle-rac2, ports: [20:00:00:1B:32:yy:yy:yy]} ], luns: [ {id: 1, capacityGB: 100, access: shared} ], defaultGroupHosts: [] }partitionName是这个分区的名字通常与业务对应hosts里每个ports数组装的是一块 HBA 端口的 WWN一块双端口卡就要写两条四端口卡写四条少写一条那条链路就看不见盘luns里access标注是共享还是独占这个字段决定了同一个 LUN 是挂在 Host Group 上还是挂在单个 Host 上defaultGroupHosts是还没被任何分区收纳的主机它们默认待在 Default Group 里这是一个必须盯紧的地方——新建 Host 时如果忘了挪出去它会带着默认权限留在原地。提示一台主机有多个 HBA 端口时映射表里必须把它们全部登记。只登记一个端口多路径软件会报一半路径失效看起来像链路故障实际是配置漏项。2.3 为什么屏蔽必须落在阵列侧有人会问既然光纤交换机已经有 Zoning为什么不能在那里把 LUN 也隔离掉答案是做不到。交换机的 zone 只能控制端口之间的通信许可它不解析 SCSI 协议里的 LUN 字段也不知道某个 LUN 归属于哪个业务。即使你把每台主机单独划一个 zone只要它们都连着同一个阵列 target 端口控制器依然会把该端口下的所有 LUN 报给每一台主机。真正的隔离点只能在阵列控制器。因为只有控制器知道每个 LUN 是从哪个磁盘组切出来的、当前映射给了谁、有没有被快照或卷复制引用。屏蔽逻辑固化在控制器固件里主机侧无论换驱动、换多路径软件、换操作系统都绕不过去。这也是为什么采购 DS4000 这类阵列时Storage Partition 的 License 是需要单独下单的——它不是可选装饰而是把“共享的物理端口”切成“逻辑上互不相见的私有存储”的唯一手段。顺带说一个容易被忽略的推论分区数量受 License 限制而分区是按 Host 或 Host Group 计算的。这意味着你的 License 预算实际决定了拓扑能做到多细后面第 3 章的两种方案取舍根子就在这里。3. 两种分区方案的取舍License 数量、共享需求与群集软件的三角关系3.1 方案一一台主机或一对群集节点一个 Partition第一种做法是给每台主机单独建一个 Storage Partition如果是双机群集就把这两台主机放进同一个 Host Group让它们共享同一个分区。分配逻辑盘时按用途区分两台主机都要访问的共享盘挂到 Host Group 上各自独占的盘挂到单个 Host 上。这套做法的好处是语义极其清晰。你打开 Mapping View看到的是一个分区对应一个业务、一个 Host Group 对应一组群集节点共享和独占在同一个分区内部分层表达扩容时往对应分区里加 LUN 就行不会波及别的业务。原文把它列为建议方式理由也在这里维护成本低误操作面小。代价是 License 消耗大。N 台主机就要 N 个分区群集对算一个如果环境里有几十台主机License 成本会明显上去。所以这个方案适合核心业务、主机数量可控、对隔离要求高的场景。3.2 方案二一个 Host Group 里塞多台主机第二种做法是把多台主机塞进同一个 Host Group分配逻辑盘的时候不挂到组上而是直接挂到组内每台 Host。因为分区是按 Host Group 计的这样能显著节省 License。省钱的代价是表达能力受限。这个结构里没有“组级共享”这一层所有 LUN 都必须精确落到具体主机上。一旦出现“A、B 两台要共享一块盘同时各自还有独占盘”的需求这个模型就卡住了——你没法用一条映射同时表达“这两台共享这块”和“这台独占那块”。要么拆分区要么放弃共享。维度一主机/群集一 Partition一个 Host Group 多主机License 消耗高按主机数线性增长低多台主机共用一个共享 独占混合原生支持组级共享、主机级独占不支持只能全独占扩容操作往对应分区加 LUN影响面小逐台主机加映射容易漏适用场景核心业务、群集、多业务混跑主机多、每台一盘、结构简单选哪个不是喜好问题是先把业务拓扑画出来再倒推如果未来一年内会出现共享盘需求就别为了省 License 走方案二后面迁移分区的成本远高于 License 费用。3.3 共享 LUN 的并发写谁来协调这里必须澄清一个常见误解Storage Partition 只做可见性控制不做并发控制。它让两台主机都能看见同一个 LUN然后就撒手不管了。如果这两台主机上没有跑群集软件双方都会认为自己是这块盘的唯一所有者各自缓存文件系统元数据各自往同一片区域写 inode 和位图最终结果就是文件系统结构互相覆盖修复工具都救不回来。所以原文那句话是硬约束一组机器共享同一个分区时它们必须有群集软件或并行文件系统来协调访问靠心跳检测节点状态、靠分布式锁仲裁写权限、靠 fencing 机制把失联节点隔离出去。没有这层软件多主机共享 LUN 就是一场事故的倒计时。我一般会这么理解这套设计Storage Partition 提供的是“物理层面的可见性”群集软件提供的是“逻辑层面的互斥性”两者是叠加关系不是替代关系。指望阵列去解决文件系统级的并发问题属于让固件干操作系统的活方向就错了。4. 从 Ping 通到 Create Logical DriveStorage Manager 调试链路里的关键决策4.1 带外以太网与串口 CLI两条管理通道的分工DS4800 这类阵列有两种管理接入方式。第一种是带外控制器有两个管理网口默认地址分别是 192.168.128.101 和 192.168.128.102把管理终端的网卡配到同一网段先用 ping 验证连通性再打开 Storage Manager 让它自动扫描发现设备。如果走 HBA 光纤的带内方式前提是 HBA 端口指示灯状态正常、链路已经登录软件同样能扫到控制器。第二种是串口。用终端工具连进去进的是命令行界面能做的事和图形界面基本重合但多出一类东西扩展的诊断命令。图形界面对普通用户足够友好而串口能拉出更细的控制器状态、事件日志和内部计数器——这就是黑匣子的入口。日常划分卷、建映射用图形界面效率最高一旦遇到“图形界面报错但看不出原因”的情况就得换到命令行去挖。批量操作时命令行的价值更明显。脚本引擎的调用形态大概是这样# 通过带外管理口下发脚本命令先查帮助再执行具体命令 SMcli 192.168.128.101 -c show storageSubsystem; -o SMcli 192.168.128.101 -c show allLogicalDrives; -o # 参数说明 # 第一个参数是控制器管理 IPA 控 101 / B 控 102 # -c 后面跟一条或多条分号分隔的命令 # -o 表示输出到标准输出便于重定向存档这段的重点不在命令字本身——不同固件版本的具体命令名会有差异执行前应该先查该版本的命令帮助——而在于这种形态带来的能力映射关系可以被导出成文本做变更前后对比。人工在图形界面点十几次很容易漏掉某台主机的第二个 HBA 端口导出成文本逐行 diff漏项一眼就能看出来。4.2 建卷的三个决策RAID、条带块、文件系统类型Create Logical Drive 的向导里连着要做三个决策它们共同决定了这块盘未来的性能特征。第一个是 RAID 级别。RAID 5 写一次要读旧数据、读旧校验、写新数据、写新校验随机写场景下写惩罚是 4 次 IORAID 10 是 2 次。数据库这类小 IO 随机写密集的业务RAID 10 的收益是实打实的归档、备份、多媒体存放这类以顺序读写为主的场景RAID 5 的空间利用率更划算。第二个是条带块segment size可选范围从 8K 到 256K。这个参数的逻辑很直白# 条带块大小对随机小写入的实际占用放大 segment_kb 256 # 逻辑盘条带块可选 8K ~ 256K record_kb 7 # 数据库一次随机写入的有效数据量 waste (segment_kb - record_kb) / segment_kb print(f单次 {record_kb}KB 写入落在 {segment_kb}KB 条带块上空间浪费 {waste:.1%}) # 顺序大文件场景写入 200MB 时控制器需要切分/寻址的次数 file_mb 200 for seg in (8, 64, 256): print(f条带块 {seg:3}KB 时200MB 需要 {file_mb * 1024 // seg} 次条带操作)record_kb代表业务单次写入的有效数据量waste是块内未被利用的比例。跑出来的结论是7KB 的记录写进 256KB 的条带块超过 97% 的块空间是空的而且控制器每次都得搬运整整一个条带块。反过来200MB 的大文件如果用 8K 条带块要切分成两万多次控制器轮循寻址的开销会吃掉带宽。所以数据库分区选最小档多媒体、大文件存储选大档文件服务器这类混合负载取中间值。第三个是文件系统类型和分区用途。这个选项不是装饰它会影响控制器对预读策略、写缓存刷盘行为的默认设定。选错不会立刻出事但性能会长期偏离预期。4.3 热备盘与重建容量约束和“重建窗口”逻辑盘建完之后要配热备盘。规则只有一条但极管用热备盘的容量必须大于或等于阵列中容量最大的那块硬盘。否则真出事的时候热备盘顶不上去重建根本启动不了——这不是配置警告是硬性限制。热备生效的时机是 RAID 组内某块盘被判为故障。控制器自动把热备盘加入该组开始按校验数据重建。重建是一次全盘顺序读加全盘写入期间整组的 IO 能力都会下降而 RAID 5 在大容量盘上重建窗口可能长达数小时。这段窗口里如果再坏一块盘数据就整体丢失了。所以实际部署里我一般会坚持两条热备盘专用不要让它同时参与别的阵列RAID 5 组不要跨越太多块大容量盘重建风险与盘数正相关。这两条不是保守是用血泪经验换来的。5. 避坑与排查映射错一次数据就没了5.1 主机看不见盘先查 WWN再查分区现象新上架的主机在系统里死活扫不到 LUN重启、重扫 HBA 都没用。原因九成是映射侧的登记问题具体分三种——Host 对象建了但没添加 HBA 端口加了端口但 WWN 抄错一位SAN 环境里主机的身份就是 WWN抄错等于换了个人主机是多端口卡只登记了其中一个端口恰好扫盘走的是另一条路径。解决在主机侧用 HBA 管理工具读出真实 WWN与 Mapping View 里登记的逐字符比对。多端口卡要全部登记一条都不能省。改完映射后主机侧执行一次 SCSI 总线重扫不要靠重启碰运气。5.2 Windows 一上线Linux 的数据就坏了现象新增一台 Windows 主机接入后另一台 Linux 主机正在使用的 LUN 出现文件系统损坏时间点高度吻合。原因Windows 看到未签名的磁盘会主动写入磁盘签名而这块盘当时同时暴露给了两台主机——要么两台主机都在 Default Group 里没做分区隔离要么误把同一个 LUN 映射给了两个不同分区。解决这是最不可接受的一类事故因为它直接损坏数据。正确顺序永远是先做隔离、再接入主机新主机上架前先在阵列侧确认它被收进独立分区且分区内的 LUN 列表与业务规划一致然后才允许它扫盘。Windows 主机尤其要放在最后接入或者干脆先在交换机侧把它的 zone 关掉等映射确认无误再开。注意Default Group 是这类事故的高发区。所有未分组的主机都待在里面默认能看到分配给该组的 LUN。新建 Host 后第一时间把它挪进目标分区别让它过夜。5.3 扩容之后文件系统还是原来的大小现象在阵列侧把 LUN 从 100G 扩到 200G主机侧df看到的还是 100G。原因LUN 扩容只改了阵列侧的容量边界主机侧的操作系统还缓存着旧的容量信息卷管理器和文件系统都没有感知到变化。真正要用上新增空间需要三步主机重扫磁盘识别新容量、扩展卷组或物理卷、扩展逻辑卷和文件系统。解决按顺序执行中间任何一步跳过都会卡住。Linux 下先重扫 SCSI 设备再pvresize、lvextend、resize2fs或xfs_growfsAIX 下走卷组和文件系统的扩容命令。扩容前务必确认文件系统支持在线扩不支持的要安排停机窗口。5.4 热备盘不接管故障盘就那么坏着现象阵列里一块盘报故障指示灯变黄但热备盘纹丝不动RAID 组一直是降级状态。原因热备盘容量小于故障盘所在阵列的最大盘容量控制器判定它无法承担重建或者这块盘名义上配了热备实际还被别的阵列占用着再或者配置时只是插上了盘没有在管理界面里把它标记为 hot spare。解决先核对容量热备盘容量必须大于等于阵列内最大单盘容量再检查热备的归属确认它是全局热备还是专属某个阵列最后确认状态标记。改完配置后手动触发一次重建验证别等到真故障时才发现热备是摆设。5.5 管理软件扫不到控制器现象Storage Manager 打开后扫描进度条走完设备列表空空如也。原因管理终端和控制器不在同一网段控制器管理口 IP 被改过而终端还按默认地址找中间有网络设备拦了管理端口走带内方式时 HBA 链路没登录成功或主机侧管理代理没装。解决先用 ping 打通网络层这是最基本也最容易被跳过的一步。带外方式确认终端网卡与控制器同网段、子网掩码一致带内方式确认 HBA 端口指示灯状态、fabric 登录正常。如果 ping 通但软件扫不到换串口进去看控制器自身状态很多时候是控制器还在启动或处于某种锁定状态。6. 在线操作的边界扩容、加主机与 License 升级凭什么不断业务把第 3 章到第 5 章的内容串起来看会发现一个反复出现的词在线。改分区、加 LUN、扩容量、加主机、升 License 数量原文都明确写了不影响正在运行的应用。这个“在线”不是营销话术它有明确的实现基础——控制器对映射表的修改是增量式的新增一条映射记录不会导致已有记录重算或重建主机侧看到的 LUN 列表只是多了一项原有 LUN 的句柄、队列、缓存全部保持不动。但“在线”有边界踩过线就是事故。判断口径可以归成一张表操作是否在线主机侧是否需配合主要风险新增 LUN 并加入已有分区是重扫磁盘分区归属填错暴露给错误主机定义新的 Storage Partition是无新主机提前扫盘导致签名写入扩展现有 LUN 容量是重扫 扩卷组/文件系统主机侧不扩容量白扩升级分区 License 数量是无无更改 RAID 级别 / 重建否视方案而定性能骤降重建窗口内二次故障这张表真正的价值不在“是/否”这一列而在第三列。所有在线操作的共同前提是阵列侧改完之后主机侧一定要有一次主动的重新发现。阵列把新容量、新 LUN 交出去了操作系统不收等于没做。很多所谓的“扩容失败”根子就在这里。再往深一层看设计取舍为什么扩容要做成“加新 LUN 改分区”和“扩已有 LUN”两条路而不是只留一条因为前者对主机完全透明加完重扫就多一块盘可以把新盘加进卷组做条带化性能还能提升后者省事但要求文件系统支持在线扩而且扩容后同一块盘的条带宽度没变性能不会改善。这两条路对应的是两种运维偏好——稳妥派选前者图省事选后者没有绝对优劣取决于业务能不能接受一次重扫。我自己的习惯是任何一次分区或映射变更动手前先把当前映射关系导出成文本存档改完再导一次逐行 diff。这个动作花不了两分钟但它能在“某台主机突然看不见盘”的时候让你三秒钟定位到是哪一行变了而不是对着图形界面一页页翻。从那以后我每次碰 Mapping View 之前都强制走一遍导出和 diff宁可麻烦一点也不想再经历一次在机房对着报警灯猜原因的夜晚。希望帮到你。本文还有配套的精品资源点击获取
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表