简介:面向存储运维人员与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_cluster | Host Group | 数据库集群组 | 共享数据 LUN ×2 |
| db-node1 | Host(WWN1、WWN2) | 节点一,双口 HBA | 日志 LUN 200G |
| db-node2 | Host(WWN3、WWN4) | 节点二,双口 HBA | 日志 LUN 200G |
| backup_srv | Host 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,单次几 K | 8K~16K | 小块写避免读-改-写整条带 |
| 数据仓库 | 顺序扫描、大块读 | 64K~128K | 减少控制器轮循次数 |
| 文件服务 | 混合,大小文件都有 | 64K | 折中 |
| 多媒体/视频 | 顺序大文件,单文件几百 M | 128K~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,中间隔了四十分钟,业务方一直在问什么时候好。从那以后,我每次扩容都把“改映射”写成流程里的独立一步,做完打勾,再让主机侧动作。希望帮到你。
本文还有配套的精品资源,点击获取