☰
DS4800 存储调试笔记:LUN 屏蔽、映射与在线扩容避坑
2026/10/28 19:51:59 网站建设 项目流程

简介:面向存储运维人员与IBM DS系列存储初学者,这份IBM存储DS STORAGE MANAGER文档围绕DS4000/DS4800的日常管理与调试展开,帮助读者理解存储分区、LUN屏蔽和在线扩容等核心操作。资源包仅含1个doc文件,大小约1019KB,篇幅集中于一份专题文档,便于按主题检索和离线查阅。目前已有452人学习或下载,适合作为入门梳理与操作前参考。文档具体讲解Storage Partition对主机或主机组的LUN限定、与光纤交换机Zoning的配合关系,以及扩容、新增主机和扩展分区数量时的在线维护思路;同时以DS4800为例梳理图形界面创建磁盘组、逻辑盘、热备盘、Mapping View映射与主机分组,并提及串口命令行排错可获取更多信息。

1. LUN 屏蔽不是可选项:一台 Windows 主机把 Linux 的盘签了名之后

机柜里接手一台二手 DS4800 时,上一家留下的 Windows 主机还在正常扫盘,它把 Linux 业务机正在用的那块 LUN 当成了“未初始化磁盘”,顺手写了签名,分区表当场被改,恢复花掉整整两天。事后复盘,根因不在操作系统,而在控制器侧少配了一层 Storage Partition——IBM DS Storage Manager 里最不起眼、也最不该省的那个开关。它做的是 LUN Masking:让每台主机只看得见分配给自己的逻辑盘,别人的盘在 SCSI 报告里根本不出现。习惯用光纤交换机 Zoning 的人容易觉得这层多余,实际上 Zoning 只决定“谁能连上存储”,Partition 才决定“连上之后能碰哪几块盘”。一份完整的 DS 系列存储调试笔记,价值就在把这条从建卷、映射到隔离的链路讲透,适合正在接手 DS4000/DS4800、或者准备给老存储做一次规范整理的人。

2. Storage Partition 的两道闸:Zoning 管到端口,LUN Masking 管到卷

2.1 Zoning 和 Storage Partition 各管一段,谁也不能替代谁

光纤交换机上的 Zoning,作用域是端口和 WWN。划完 Zone,主机 HBA 只和指定的存储前端端口互见,总线上看不到别的阵列,这是第一道闸。问题在于共享存储场景里,多台主机本来就要划进同一个 Zone,这时候它们看到的 LUN 列表是一模一样的——Zoning 到此为止,管不了更细的粒度。Storage Partition 是控制器侧的第二道闸:控制器记录“这个 WWN 属于哪个 Host、这个 Host 属于哪个 Host Group、这个 Host Group 被允许访问哪几个 LUN”,不在名单里的 LUN 直接不参与 SCSI 枚举。

打个不严谨但好记的比方,Zoning 是“能不能进这栋楼”,Partition 是“进了楼能开哪几扇门”。现场只做 Zoning 就以为隔离完成的例子并不少见,等到一台 Windows 主机把 Linux 的 LUN 签了名,或者两台主机同时往同一块盘写导致文件系统互相覆盖,才发现少了一层。

这里有两个必须记住的映射粒度:共享盘映射到 Host Group 级别,独占盘映射到 Host 级别。Host 的身份在 FC 环境里就是 HBA 的 WWN 号,一台主机有几个端口就要录几次,少录一个端口,那条路径上的盘就看不见。这个细节在后面第四章会展开,先记住结论:Partition 的粒度不是“机器”,是“WWN 集合”。

2.2 两种划法:按主机切,还是按组切

官方手册里给了两种可选方案,实际选型时看的是三件事:有没有共享盘、License 预算、后续维护的人是谁。

方案一,一个 Host Group 里只放一台主机,或者放两台装了集群软件的主机。共享的逻辑盘分配给 Host Group,两台机器各自独占的盘分配给单个 Host。好处是共享和独占能同时表达,逻辑清楚,扩容时改哪一条一目了然。代价是 License 消耗按主机数量走,机器多的时候授权成本上去了。

方案二,一个 Host Group 里塞多台 Host,逻辑盘直接分配给每个 Host,不经过组这一层。省 License,但表达不了“这两台共享一块、那两块各自独占”的混合需求。适合一台存储只服务一种角色、每台主机各拿各的盘、彼此没有共享关系的场景。

对比项方案一:单机/双机成组方案二:多机同组直分
共享盘表达能力支持,映射到 Host Group不支持,只能各分各的
独占盘表达能力支持,映射到 Host支持
License 消耗按主机或主机对计数,偏多按组计数,偏少
维护清晰度高,改一处不影响其他主机中,组内主机多时容易看花眼
典型场景数据库集群、双机热备一批同构应用服务器各拿各的盘

选型建议很直接:只要存在“两台机器要看到同一块盘”的需求,就走方案一,别为了省授权把共享盘拆成两份各自映射,那等于人为制造双写。纯独占场景走方案二,把组当成一个管理边界,命名带上业务域,别全堆在 Default Group 里。

2.3 集群场景的前提:协调层必须在跑

两台主机共享所有逻辑盘,这个配置本身不产生任何保护。真正防止争用的是跑在操作系统之上的协调层——高可用集群套件负责心跳和仲裁,并行文件系统让多节点同时挂载同一文件系统并统一管理锁。集群软件没起来的时候,两台机器对同一块 LUN 的写就是裸奔,块级覆盖没有任何机制拦得住。

所以做方案一时,顺序是先在主机侧把集群软件装好、心跳跑通、仲裁盘确认,再到控制器侧把共享 LUN 映射到 Host Group。顺序反了,映射完成到集群起来之间那段时间就是风险窗口,业务一旦提前挂上去写数据,后面很难解释清楚谁写坏了谁。

还有一点容易忽略:集群软件的心跳盘和仲裁盘不要和业务数据盘混在同一批 LUN 上。心跳 IO 是持续的小包,仲裁盘要求强一致,混在业务卷里既影响性能,出问题时也难定位。单独划两块小 LUN,映射到 Host Group,主机侧单独建卷,这是常见做法。

2.4 一次完整的规划推演

假设场景:两台数据库服务器做双机集群,需要共享数据盘两块各 500G,各自本地日志盘 200G,另有一台备份服务器独占 1T。按方案一推演。

对象类型内容映射目标
db_clusterHost Group数据库集群组共享数据 LUN ×2
db-node1Host(WWN1、WWN2)节点一,双口 HBA日志 LUN 200G
db-node2Host(WWN3、WWN4)节点二,双口 HBA日志 LUN 200G
backup_srvHost Group备份服务器备份 LUN 1T

这样算下来是 2 个 Host Group、3 个 Host 条目、4 个 WWN。共享盘挂在组上,节点各自看不见对方的日志盘,备份机看不到数据库盘。如果后面要加第三个数据库节点,只需要新建 Host、录 WWN、把共享 LUN 的映射关系扩展到组里,已有的映射不动,这个过程是在线的。

提示:规划表建议在动手前落成文档,包含 WWN、LUN 编号、容量、映射目标四列。后面扩容、换 HBA 卡、排查“为什么看不到盘”的时候,这张表比任何日志都快。

3. DS4800 图形化开局:从 PING 控制器到第一个逻辑盘

3.1 三种连接方式,先选对入口

DS4800 支持的管理通道有三种,用途不一样,别混着用。

以太网管理口是最常用的。控制器出厂默认地址一般是 192.168.128.101 和 192.168.128.102,两个控制器各一个。控制台机器配一个同网段地址,比如 192.168.128.50/24,直连或者过交换机都行,配完先 PING 两个地址确认通。

HBA 光纤方式是带内管理,控制台机器装好 HBA 卡,确认卡的指示灯状态正常,客户端软件可以直接在 Fabric 上扫到控制器。适合管理网段不方便拉的机房,缺点是扫不到的时候排查链条长——HBA 驱动、Zone 配置、控制器前端口状态,任何一环出问题都表现为“找不到存储”。

串口方式是原厂工程师排障时最常用的,Console 线接控制器,终端工具进去敲专有命令。图形界面能做的它都能做,图形界面看不到的内部状态、日志、控制器事件,它能拿到。日常管理不必走串口,但遇到控制器起不来、管理口失联、RAID 状态异常这类问题,串口是唯一还能说话的通道。

方式前提优点适用
以太网管理口控制台与控制器同网段最直观,扫描稳定日常建卷、映射、扩容
HBA 光纤HBA 正常、Zone 已通不用管理网段机房网络受限时
串口Console 线、终端工具能拿到 GUI 看不到的信息故障排查、控制器异常

3.2 扫描发现与建卷的完整动作序列

客户端软件装完必须重启机器,服务要注册进去,跳过重启经常出现“软件打开但扫不到控制器”的玄学现象。下面这条链路是我一般会走的顺序,每一步都给出判断依据。

# 控制台侧网络准备,以 Linux 控制台为例 sudo ip addr add 192.168.128.50/24 dev eth1 sudo ip link set eth1 up # 分别确认两个控制器管理口可达 ping -c 4 192.168.128.101 ping -c 4 192.168.128.102 # 看 ARP 表,确认 MAC 已经学到,排除网线/交换侧问题 arp -n | grep 192.168.128.10

这段命令的逻辑很直白:先给控制台配一个和控制器同网段的地址,两个控制器分别 PING,都通才说明管理链路没问题。ARP 表那一步是给“PING 不通”准备的后悔药——如果 ARP 里根本没有对应条目,问题在二层,不用去折腾存储;如果 ARP 有但 PING 不通,才怀疑控制器管理口或路由。

链路通了之后打开客户端,走自动扫描,界面右下角有进度条,扫到控制器后右侧列表会列出来。双击进入,开始建逻辑盘。

建卷这一步有几个界面元素容易卡住人:

步骤界面动作判断依据
选择 RAID 级别按业务选 RAID 0/1/3/5/6/10数据库优先 RAID10 或 RAID5,备份可 RAID6
多卷时的选盘方式选 Manual 手工添加硬盘自动模式会吞掉所有空闲盘,后面想留盘做热备就没了
计算容量点 Calculate Capacity不点这一步,下一步按钮是灰的,很多人卡在这
确认提示弹窗点 OK提示内容是接下来要设卷属性
划分区大小与命名输入容量、卷名命名带业务域,别用默认 LUN0、LUN1
属性设置选手动设置自动设置会套默认条带,未必匹配应用
条带块大小8K 到 256K 之间选见 3.3 的对应表
主机操作系统类型选 AIX / Windows / Linux 等影响控制器对主机行为的适配参数

完成之后控制器会应用所有设置,然后问要不要继续建下一个逻辑分区,选是就重复上面的流程。整个过程中 Calculate Capacity 那一步是纯界面逻辑,不点就没法往下走,第一次上手的人经常在这里怀疑软件卡死。

3.3 条带块大小:选错不会报错,只会慢慢变慢

条带块(stripe unit)是控制器往单块物理盘上写一次的数据量。这个参数选错不会产生任何告警,只会在业务跑起来之后表现为写延迟高、可用容量掉得比预期快。手册里给的范围是 8K 到 256K,选型依据是这块卷上跑的是什么 IO。

应用类型典型 IO 特征建议条带块原因
OLTP 数据库随机小 IO,单次几 K8K~16K小块写避免读-改-写整条带
数据仓库顺序扫描、大块读64K~128K减少控制器轮循次数
文件服务混合,大小文件都有64K折中
多媒体/视频顺序大文件,单文件几百 M128K~256K一次条带尽量装满
日志卷顺序小 IO,追加写8K~16K与数据库卷对齐

具体到数字上:一块卷的条带块设成 256K,数据库写一条 7K 的记录,控制器要么读整条带再改再写回,要么直接占掉 256K 的空间,两种结果都不划算。反过来,存 200MB 的多媒体文件,条带块设成 8K,控制器要切两万多次条带,轮循开销全花在寻址上。所以“数据库选最小、多媒体选最大”这句话是对的,但要知道为什么对。

3.4 热备盘的容量红线

逻辑盘建完之后顺手把热备盘配上,这一步花不了几分钟,但有一条硬约束:热备盘的容量必须大于或等于阵列中最大的那块盘,否则真出故障时热备顶不上去,RAID 会一直停在降级状态。

操作上就是选中一块空闲盘,标记为热备。全局热备可以被任意阵列使用,专用热备只服务指定阵列。盘数够的话配全局热备,省心;盘位紧张就按阵列配专用。热备盘平时不承载业务 IO,所以不要把它算进可用容量里做规划。

注意:后续扩容混插了大容量盘之后,原来那块小容量热备盘可能就不再满足“大于等于最大盘”的条件,每次扩容完顺手核对一遍热备盘容量,比等故障时发现顶不上要便宜得多。

4. Mapping View 与主机组:WWN 录错一位,盘就少一条路径

4.1 Host Group 的命名是一份长期资产

存储上存放的全是数据,维护过程中因为主机建得杂乱无章而误操作,丢数据的代价没人愿意承担。命名这件事看着琐碎,实际上是后面所有排查的地基。

我一般按“业务域_环境_序号”的格式来,比如 ora_prod_01、bk_prod_01。组的命名对应业务角色,主机的命名对应物理机器,两者不要混。Default Group 里不要堆东西——默认组是所有未归类主机的落点,堆多了之后一眼看不出哪台是哪台,改映射的时候点错一个就是生产事故。

规划的时候先想清楚组这一层表达什么:如果这个组代表一个集群,那组内主机是共享关系;如果这个组只是为了省 License 把一堆无关主机塞在一起,那它就没有语义,后面必然混乱。第二章里说的方案一和方案二,落到命名上就能看出来——有语义的组名通常对应方案一。

4.2 WWN 的采集与录入

FC 环境里主机身份就是 HBA 端口的 WWN。双口卡就是两个 WWN,四口卡就是四个,每个都要录。采集在主机侧做,Linux 下读 sysfs 最直接。

# 列出所有 FC 主机端口,输出形如 0x20000000xxxxxxxx for f in /sys/class/fc_host/host*/port_name; do echo "$f: $(cat $f)" done # 同时看端口状态,确认链路是 online 而不是 linkdown for f in /sys/class/fc_host/host*/port_state; do echo "$f: $(cat $f)" done

第一段循环把每个 HBA 端口的 WWN 打出来,格式是带 0x 前缀的十六进制。录入客户端界面时按界面的格式要求处理,有的版本要 0x,有的不要,录完核对一遍长度——WWN 是 16 位十六进制,少一位多半是复制的时候截断了。

第二段看 port_state,必须是 Online。如果某个端口是 Linkdown,说明光纤链路本身有问题,这时候把 WWN 录进去也没用,盘照样出不来。先解决链路,再谈映射,这个顺序不能反。

录入界面上,选中主机后打开主机设置页面,添加 HBA。一台主机有多个端口就添加多次,每次填一个 WWN。这一步漏一个端口,主机侧的多路径就只剩一条,业务能跑,但没有冗余,等那条路径的光纤或交换机端口出问题时才发现,就晚了。

4.3 映射的两种入口与主机侧验证

映射可以在 Mapping View 里做,右键 Default Group 选 Define Additional Mapping,选目标 Host 或 Host Group,勾选逻辑盘;也可以在逻辑盘侧选中之后反向分配给主机。两种入口效果一样,习惯哪个用哪个。多块盘属于同一主机时,一次勾选多个比一块一块加快,也少出错。

映射做完不等于主机能看到盘。主机侧要主动重扫 SCSI 总线,Linux 下的标准做法:

# 触发所有 SCSI 主机端口重扫,新映射的 LUN 会在这之后出现 for h in /sys/class/scsi_host/host*/scan; do echo "- - -" > $h done # 列出识别到的 SCSI 设备,确认新盘出现 lsscsi -s # 多路径环境下确认每条 LUN 的路径数,正常应是 HBA 端口数 × 控制器端口数 multipath -ll

第一段往每个 scsi_host 的 scan 属性写通配符,让内核重新走一遍目标/通道/LUN 的枚举,这是不重启识别新盘的标准动作。第二段 lsscsi 看设备有没有出来,容量对不对。第三段 multipath -ll 是关键:一条 LUN 应该对应多条路径,如果只显示一条,回去查 HBA 端口是不是漏录了 WWN,或者交换机 Zone 是不是只划了一个口。

映射完成后的核对清单,我一般会逐项过:

检查项正常表现异常时的方向
控制器侧映射关系Mapping View 里 LUN 与 Host 一一对应回看是否映射到了 Default Group
主机侧设备数lsscsi 数量与规划一致重扫、查 Zone
多路径条数等于 HBA 端口数 × 控制器前端口数查漏录的 WWN
容量与建卷时设定一致查是否映射错 LUN
隔离效果每台主机只看到自己的盘查 Partition 是否生效、License 是否存在

最后一项是这套东西存在的意义,也是最容易被跳过的一项。上线前找一台不同操作系统的测试机接进去,确认它看不到生产 LUN,这个动作花十分钟,能省掉第一章里那两天。

5. 避坑实录:五个把在线操作做成停机的瞬间

5.1 坑一:License 没生效,Partition 建了但形同虚设

现象:两台操作系统不同的主机同时接进来,都能看到同一批 LUN,控制器界面上 Host Group 建得好好的,映射关系也对。

原因:Storage Partition 是单独授权的功能,未授权时控制器不做 LUN 屏蔽,或者只允许一个默认组生效。界面上能建组、能建主机,看起来一切正常,实际隔离层没起作用。

解决:采购 DS4000/DS4800 时把 Storage Partition 授权写进清单,这条在原文里就说得很明确。上线前用一台异构测试主机做可见性验证,别信界面,信主机实际扫到的盘数。

5.2 坑二:热备盘比阵列盘小,故障时顶不上去

现象:RAID 组里一块盘故障,换了新盘,重建进度一直不动,热备盘状态是可用但没参与重建。

原因:热备盘容量小于故障盘所在阵列的单盘容量,控制器判定无法替换。混插过不同容量盘的阵列特别容易出这个问题。

解决:配热备时按阵列内最大单盘容量取齐,扩容混插大盘之后重新核对。盘位允许的话,热备盘直接按最大规格配,省掉后续每次扩容都要复查。

5.3 坑三:条带块拍脑袋选 256K 存数据库

现象:数据库上线后写入延迟偏高,阵列侧看写放大明显,卷的可用容量掉得比估算快。

原因:OLTP 的随机小 IO 落在 256K 条带上,控制器每次写都要读整条带、改、写回,IO 次数和空间占用都翻倍。

解决:按 3.3 的表选,数据库走 8K~16K。已经建好的卷改条带块只能重建加迁移,所以建卷时多花三十秒想清楚应用类型,比事后迁移便宜得多。

5.4 坑四:WWN 漏录一个端口,多路径变成单路径

现象:主机能看到盘,业务也跑起来了,multipath -ll 里每条 LUN 只有一条路径,另一块 HBA 卡像是没工作。

原因:双口 HBA 只录了一个端口的 WWN,或者录入时复制截断了一位。主机侧另一条路径在控制器看来不属于任何 Host,自然不给它分配 LUN。

解决:按 4.2 的循环把 port_name 全部打出来逐个核对,录入后在主机侧重扫并复查 multipath 条数。这个坑最阴的地方在于业务能用,没有告警,等单路径故障时才暴露。

5.5 坑五:扩容新建 LUN 没加进原 Partition,主机扫不到盘

现象:控制器侧新 LUN 建好了,主机侧重扫多次,lsscsi 里就是不出现。

原因:新建的 LUN 默认落在 Default Group,没有映射到目标 Host 或 Host Group,Partition 里没有它,主机自然看不见。

解决:扩容流程固定成“建 LUN → 改映射 → 主机重扫 → 核对数量”,映射这一步不能省。扫描前后对比 lsscsi 的输出条数,比凭感觉判断可靠。

5.6 坑六:Calculate Capacity 没点,以为软件卡死

现象:建卷向导走到容量那一步,下一步按钮一直是灰的,怎么点都没反应。

原因:向导要求先点 Calculate Capacity 计算可用容量,没执行这一步,后续步骤被锁死。这不是故障,是界面逻辑。

解决:按顺序走,看到按钮灰先找当前页面有没有必填动作没做。这类问题在第一次上手时最容易怀疑是客户端 bug,重装软件解决不了。

6. 在线扩容与上机前验证:两条路径怎么选、验证清单怎么过

扩容有两条路径,选哪条取决于主机侧文件系统能不能在线扩。

路径 A 是动态卷扩容,直接在控制器侧把已有 LUN 加大。控制器侧的操作是在线的,不影响主机对现有数据的访问,但主机侧还要多做一步——Linux 下要重扫设备容量、扩分区、扩文件系统或逻辑卷,Windows 下要 rescan 之后扩卷。这条路省 LUN 编号,缺点是文件系统得支持在线扩容,而且扩错了回退麻烦。

路径 B 是新建 LUN,然后修改该主机的 Storage Partition,把新 LUN 映射给它,主机扫盘后当成新设备用。这条路对文件系统没有要求,新盘可以独立建卷、独立挂载点,出问题影响面小。多划一个 LUN 编号的成本,换来的是操作可回退。

我的习惯是:能走 B 就走 B,尤其是生产库。A 路径留给那种文件系统明确支持在线扩、并且已经演练过的场景。两条路径的操作都是在线完成的,主机数量增加后定义新的 Storage Partition 也是在线操作,不影响已经定义的 Partition,这一点在原文里说得很清楚,但“在线”不等于“无风险”,映射改错一样会出事。

扩容之后的上机验证,我固定过一遍这张表:

验证项命令或位置通过标准
控制器侧容量逻辑盘属性页与规划容量一致
映射关系Mapping View新 LUN 挂在正确 Host/Host Group
主机侧识别lsscsi -s新设备出现,容量正确
多路径multipath -ll路径数与 HBA 端口数匹配
文件系统df -h / mount新容量或新挂载点可见
隔离性异构测试机扫盘看不到不属于它的 LUN

这套流程是从一次扩容事故里长出来的。当时新 LUN 建完直接让业务侧扫盘,扫了三次没出来,最后发现映射还停在 Default Group,中间隔了四十分钟,业务方一直在问什么时候好。从那以后,我每次扩容都把“改映射”写成流程里的独立一步,做完打勾,再让主机侧动作。希望帮到你。

本文还有配套的精品资源,点击获取

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

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

立即咨询