避坑)
簡介圍繞 IBM DS 系列存儲管理展開的 DOC 文檔面向存儲運維工程師、系統(tǒng)集成技術(shù)人員及備考相關(guān)認證的學習者重點解決存儲分區(qū)規(guī)劃、LUN 屏蔽配置與設(shè)備調(diào)試中的實操疑惑。正文系統(tǒng)梳理 DS Storage Manager 的兩大核心能力Storage Partition 與 LUN Masking并對比光纖交換機 Zoning 的邊界說明主機與主機組劃分的兩種方案及 License 取舍同時覆蓋在線擴容、主機數(shù)量增加、分區(qū)數(shù)量升級等維護場景并以 DS4800 為例講解圖形界面劃分磁盤組、卷與映射以及串口命令行排障的差異。資源包共 1 個 DOC 文件約 1019KB篇幅緊湊適合作為隨查隨用的操作參考。已有 452 人學習說明其在 IBM 存儲入門與日常運維中具備一定參考價值。讀者可從中獲得分區(qū)設(shè)計思路、熱備盤與映射操作要點以及故障排查的入手方向。1. 一塊“被看見”的磁盤Storage Partition 到底在防什么一臺正在跑業(yè)務(wù)的 Linux 主機它的 LUN 被同一條光纖上的另一臺 Windows 主機“看見”了幾秒鐘隨后 Linux 側(cè)文件系統(tǒng)報錯、目錄變成亂碼。很多人第一反應(yīng)是硬件故障其實這是一次合法的寫入Windows 識別到一塊自己不認識的磁盤時會習慣性地往盤頭寫一個磁盤簽名。幾秒鐘幾十個字節(jié)落在別人的數(shù)據(jù)區(qū)上數(shù)據(jù)就沒了。在 IBM 存儲的管理體系里DS Storage Manager 提供的 Storage Partition存儲分區(qū)就是給這件事上鎖的機制業(yè)界更通用的叫法是 LUN Masking。理解了它你才能明白陣列控制器是如何決定“哪臺主機能看見哪些盤”的——這是 SAN 環(huán)境里所有數(shù)據(jù)安全的最后一道閘門。2. LUN Masking 的作用域Zoning 管“到不到得了”Storage Partition 管“看得見哪塊盤”2.1 三道閘門物理鏈路、Zone 隔離、LUN 映射主機要讀寫一塊盤中間要過三道關(guān)。第一道是物理連通HBA 卡插好、光纖跳線通、光模塊亮綠燈、端口速率協(xié)商一致。第二道是光纖交換機的 Zoning把某些 HBA 端口和某些陣列 target 端口劃進同一個 zone只有同 zone 內(nèi)的設(shè)備才能完成登錄和名稱服務(wù)查詢不同 zone 之間連 SCSI 命令都發(fā)不過去。第三道才輪到陣列控制器當主機發(fā)起 Report LUNs控制器按自己維護的映射表回答“你能看到 1 號、3 號 LUN”其余的 LUN 在主機側(cè)根本不存在。這三道關(guān)的分工用一句話概括就是Zoning 回答“你能不能跟這個 target 端口說話”Storage Partition 回答“說完話之后你被允許看哪幾塊盤”。很多人把兩者混為一談實際粒度差了一個數(shù)量級——Zoning 的粒度是端口一個 target 端口下面可能掛了幾十上百個 LUNStorage Partition 的粒度是 LUN同一個 target 端口對不同發(fā)起方可以返回完全不同的 LUN 列表。層級執(zhí)行者隔離粒度越權(quán)后果物理鏈路HBA / 光纖 / 交換機端口端口鏈路不通無法登錄Zoning光纖交換機固件交換機端口或 WWN無法完成 fabric 登錄Storage Partition陣列控制器固件單個 LUN主機可見錯誤 LUN可能寫壞數(shù)據(jù)表格里最后一行是關(guān)鍵前兩道關(guān)失效最壞結(jié)果是業(yè)務(wù)中斷第三道關(guān)失效最壞結(jié)果是數(shù)據(jù)損壞。中斷可以重連損壞沒有后悔藥。2.2 Host、Host Group 與 LUN控制器側(cè)的映射表長什么樣DS Storage Manager 的 Mapping View 里只有三種對象Host一臺主機由一組 HBA 端口的 WWN 定義、Host Group主機容器、Logical Drive邏輯盤也就是 LUN。映射動作的本質(zhì)是把某個 LUN 的訪問權(quán)限授予某個 Host 或某個 Host Group??刂破鲀?nèi)部維護的映射關(guān)系等價于下面這樣的結(jié)構(gòu){ 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是這個分區(qū)的名字通常與業(yè)務(wù)對應(yīng)hosts里每個ports數(shù)組裝的是一塊 HBA 端口的 WWN一塊雙端口卡就要寫兩條四端口卡寫四條少寫一條那條鏈路就看不見盤luns里access標注是共享還是獨占這個字段決定了同一個 LUN 是掛在 Host Group 上還是掛在單個 Host 上defaultGroupHosts是還沒被任何分區(qū)收納的主機它們默認待在 Default Group 里這是一個必須盯緊的地方——新建 Host 時如果忘了挪出去它會帶著默認權(quán)限留在原地。提示一臺主機有多個 HBA 端口時映射表里必須把它們?nèi)康怯洝V坏怯浺粋€端口多路徑軟件會報一半路徑失效看起來像鏈路故障實際是配置漏項。2.3 為什么屏蔽必須落在陣列側(cè)有人會問既然光纖交換機已經(jīng)有 Zoning為什么不能在那里把 LUN 也隔離掉答案是做不到。交換機的 zone 只能控制端口之間的通信許可它不解析 SCSI 協(xié)議里的 LUN 字段也不知道某個 LUN 歸屬于哪個業(yè)務(wù)。即使你把每臺主機單獨劃一個 zone只要它們都連著同一個陣列 target 端口控制器依然會把該端口下的所有 LUN 報給每一臺主機。真正的隔離點只能在陣列控制器。因為只有控制器知道每個 LUN 是從哪個磁盤組切出來的、當前映射給了誰、有沒有被快照或卷復(fù)制引用。屏蔽邏輯固化在控制器固件里主機側(cè)無論換驅(qū)動、換多路徑軟件、換操作系統(tǒng)都繞不過去。這也是為什么采購 DS4000 這類陣列時Storage Partition 的 License 是需要單獨下單的——它不是可選裝飾而是把“共享的物理端口”切成“邏輯上互不相見的私有存儲”的唯一手段。順帶說一個容易被忽略的推論分區(qū)數(shù)量受 License 限制而分區(qū)是按 Host 或 Host Group 計算的。這意味著你的 License 預(yù)算實際決定了拓撲能做到多細后面第 3 章的兩種方案取舍根子就在這里。3. 兩種分區(qū)方案的取舍License 數(shù)量、共享需求與群集軟件的三角關(guān)系3.1 方案一一臺主機或一對群集節(jié)點一個 Partition第一種做法是給每臺主機單獨建一個 Storage Partition如果是雙機群集就把這兩臺主機放進同一個 Host Group讓它們共享同一個分區(qū)。分配邏輯盤時按用途區(qū)分兩臺主機都要訪問的共享盤掛到 Host Group 上各自獨占的盤掛到單個 Host 上。這套做法的好處是語義極其清晰。你打開 Mapping View看到的是一個分區(qū)對應(yīng)一個業(yè)務(wù)、一個 Host Group 對應(yīng)一組群集節(jié)點共享和獨占在同一個分區(qū)內(nèi)部分層表達擴容時往對應(yīng)分區(qū)里加 LUN 就行不會波及別的業(yè)務(wù)。原文把它列為建議方式理由也在這里維護成本低誤操作面小。代價是 License 消耗大。N 臺主機就要 N 個分區(qū)群集對算一個如果環(huán)境里有幾十臺主機License 成本會明顯上去。所以這個方案適合核心業(yè)務(wù)、主機數(shù)量可控、對隔離要求高的場景。3.2 方案二一個 Host Group 里塞多臺主機第二種做法是把多臺主機塞進同一個 Host Group分配邏輯盤的時候不掛到組上而是直接掛到組內(nèi)每臺 Host。因為分區(qū)是按 Host Group 計的這樣能顯著節(jié)省 License。省錢的代價是表達能力受限。這個結(jié)構(gòu)里沒有“組級共享”這一層所有 LUN 都必須精確落到具體主機上。一旦出現(xiàn)“A、B 兩臺要共享一塊盤同時各自還有獨占盤”的需求這個模型就卡住了——你沒法用一條映射同時表達“這兩臺共享這塊”和“這臺獨占那塊”。要么拆分區(qū)要么放棄共享。維度一主機/群集一 Partition一個 Host Group 多主機License 消耗高按主機數(shù)線性增長低多臺主機共用一個共享 獨占混合原生支持組級共享、主機級獨占不支持只能全獨占擴容操作往對應(yīng)分區(qū)加 LUN影響面小逐臺主機加映射容易漏適用場景核心業(yè)務(wù)、群集、多業(yè)務(wù)混跑主機多、每臺一盤、結(jié)構(gòu)簡單選哪個不是喜好問題是先把業(yè)務(wù)拓撲畫出來再倒推如果未來一年內(nèi)會出現(xiàn)共享盤需求就別為了省 License 走方案二后面遷移分區(qū)的成本遠高于 License 費用。3.3 共享 LUN 的并發(fā)寫誰來協(xié)調(diào)這里必須澄清一個常見誤解Storage Partition 只做可見性控制不做并發(fā)控制。它讓兩臺主機都能看見同一個 LUN然后就撒手不管了。如果這兩臺主機上沒有跑群集軟件雙方都會認為自己是這塊盤的唯一所有者各自緩存文件系統(tǒng)元數(shù)據(jù)各自往同一片區(qū)域?qū)?inode 和位圖最終結(jié)果就是文件系統(tǒng)結(jié)構(gòu)互相覆蓋修復(fù)工具都救不回來。所以原文那句話是硬約束一組機器共享同一個分區(qū)時它們必須有群集軟件或并行文件系統(tǒng)來協(xié)調(diào)訪問靠心跳檢測節(jié)點狀態(tài)、靠分布式鎖仲裁寫權(quán)限、靠 fencing 機制把失聯(lián)節(jié)點隔離出去。沒有這層軟件多主機共享 LUN 就是一場事故的倒計時。我一般會這么理解這套設(shè)計Storage Partition 提供的是“物理層面的可見性”群集軟件提供的是“邏輯層面的互斥性”兩者是疊加關(guān)系不是替代關(guān)系。指望陣列去解決文件系統(tǒng)級的并發(fā)問題屬于讓固件干操作系統(tǒng)的活方向就錯了。4. 從 Ping 通到 Create Logical DriveStorage Manager 調(diào)試鏈路里的關(guān)鍵決策4.1 帶外以太網(wǎng)與串口 CLI兩條管理通道的分工DS4800 這類陣列有兩種管理接入方式。第一種是帶外控制器有兩個管理網(wǎng)口默認地址分別是 192.168.128.101 和 192.168.128.102把管理終端的網(wǎng)卡配到同一網(wǎng)段先用 ping 驗證連通性再打開 Storage Manager 讓它自動掃描發(fā)現(xiàn)設(shè)備。如果走 HBA 光纖的帶內(nèi)方式前提是 HBA 端口指示燈狀態(tài)正常、鏈路已經(jīng)登錄軟件同樣能掃到控制器。第二種是串口。用終端工具連進去進的是命令行界面能做的事和圖形界面基本重合但多出一類東西擴展的診斷命令。圖形界面對普通用戶足夠友好而串口能拉出更細的控制器狀態(tài)、事件日志和內(nèi)部計數(shù)器——這就是黑匣子的入口。日常劃分卷、建映射用圖形界面效率最高一旦遇到“圖形界面報錯但看不出原因”的情況就得換到命令行去挖。批量操作時命令行的價值更明顯。腳本引擎的調(diào)用形態(tài)大概是這樣# 通過帶外管理口下發(fā)腳本命令先查幫助再執(zhí)行具體命令 SMcli 192.168.128.101 -c show storageSubsystem; -o SMcli 192.168.128.101 -c show allLogicalDrives; -o # 參數(shù)說明 # 第一個參數(shù)是控制器管理 IPA 控 101 / B 控 102 # -c 后面跟一條或多條分號分隔的命令 # -o 表示輸出到標準輸出便于重定向存檔這段的重點不在命令字本身——不同固件版本的具體命令名會有差異執(zhí)行前應(yīng)該先查該版本的命令幫助——而在于這種形態(tài)帶來的能力映射關(guān)系可以被導(dǎo)出成文本做變更前后對比。人工在圖形界面點十幾次很容易漏掉某臺主機的第二個 HBA 端口導(dǎo)出成文本逐行 diff漏項一眼就能看出來。4.2 建卷的三個決策RAID、條帶塊、文件系統(tǒng)類型Create Logical Drive 的向?qū)Ю镞B著要做三個決策它們共同決定了這塊盤未來的性能特征。第一個是 RAID 級別。RAID 5 寫一次要讀舊數(shù)據(jù)、讀舊校驗、寫新數(shù)據(jù)、寫新校驗隨機寫場景下寫懲罰是 4 次 IORAID 10 是 2 次。數(shù)據(jù)庫這類小 IO 隨機寫密集的業(yè)務(wù)RAID 10 的收益是實打?qū)嵉臍w檔、備份、多媒體存放這類以順序讀寫為主的場景RAID 5 的空間利用率更劃算。第二個是條帶塊segment size可選范圍從 8K 到 256K。這個參數(shù)的邏輯很直白# 條帶塊大小對隨機小寫入的實際占用放大 segment_kb 256 # 邏輯盤條帶塊可選 8K ~ 256K record_kb 7 # 數(shù)據(jù)庫一次隨機寫入的有效數(shù)據(jù)量 waste (segment_kb - record_kb) / segment_kb print(f單次 {record_kb}KB 寫入落在 {segment_kb}KB 條帶塊上空間浪費 {waste:.1%}) # 順序大文件場景寫入 200MB 時控制器需要切分/尋址的次數(shù) file_mb 200 for seg in (8, 64, 256): print(f條帶塊 {seg:3}KB 時200MB 需要 {file_mb * 1024 // seg} 次條帶操作)record_kb代表業(yè)務(wù)單次寫入的有效數(shù)據(jù)量waste是塊內(nèi)未被利用的比例。跑出來的結(jié)論是7KB 的記錄寫進 256KB 的條帶塊超過 97% 的塊空間是空的而且控制器每次都得搬運整整一個條帶塊。反過來200MB 的大文件如果用 8K 條帶塊要切分成兩萬多次控制器輪循尋址的開銷會吃掉帶寬。所以數(shù)據(jù)庫分區(qū)選最小檔多媒體、大文件存儲選大檔文件服務(wù)器這類混合負載取中間值。第三個是文件系統(tǒng)類型和分區(qū)用途。這個選項不是裝飾它會影響控制器對預(yù)讀策略、寫緩存刷盤行為的默認設(shè)定。選錯不會立刻出事但性能會長期偏離預(yù)期。4.3 熱備盤與重建容量約束和“重建窗口”邏輯盤建完之后要配熱備盤。規(guī)則只有一條但極管用熱備盤的容量必須大于或等于陣列中容量最大的那塊硬盤。否則真出事的時候熱備盤頂不上去重建根本啟動不了——這不是配置警告是硬性限制。熱備生效的時機是 RAID 組內(nèi)某塊盤被判為故障。控制器自動把熱備盤加入該組開始按校驗數(shù)據(jù)重建。重建是一次全盤順序讀加全盤寫入期間整組的 IO 能力都會下降而 RAID 5 在大容量盤上重建窗口可能長達數(shù)小時。這段窗口里如果再壞一塊盤數(shù)據(jù)就整體丟失了。所以實際部署里我一般會堅持兩條熱備盤專用不要讓它同時參與別的陣列RAID 5 組不要跨越太多塊大容量盤重建風險與盤數(shù)正相關(guān)。這兩條不是保守是用血淚經(jīng)驗換來的。5. 避坑與排查映射錯一次數(shù)據(jù)就沒了5.1 主機看不見盤先查 WWN再查分區(qū)現(xiàn)象新上架的主機在系統(tǒng)里死活掃不到 LUN重啟、重掃 HBA 都沒用。原因九成是映射側(cè)的登記問題具體分三種——Host 對象建了但沒添加 HBA 端口加了端口但 WWN 抄錯一位SAN 環(huán)境里主機的身份就是 WWN抄錯等于換了個人主機是多端口卡只登記了其中一個端口恰好掃盤走的是另一條路徑。解決在主機側(cè)用 HBA 管理工具讀出真實 WWN與 Mapping View 里登記的逐字符比對。多端口卡要全部登記一條都不能省。改完映射后主機側(cè)執(zhí)行一次 SCSI 總線重掃不要靠重啟碰運氣。5.2 Windows 一上線Linux 的數(shù)據(jù)就壞了現(xiàn)象新增一臺 Windows 主機接入后另一臺 Linux 主機正在使用的 LUN 出現(xiàn)文件系統(tǒng)損壞時間點高度吻合。原因Windows 看到未簽名的磁盤會主動寫入磁盤簽名而這塊盤當時同時暴露給了兩臺主機——要么兩臺主機都在 Default Group 里沒做分區(qū)隔離要么誤把同一個 LUN 映射給了兩個不同分區(qū)。解決這是最不可接受的一類事故因為它直接損壞數(shù)據(jù)。正確順序永遠是先做隔離、再接入主機新主機上架前先在陣列側(cè)確認它被收進獨立分區(qū)且分區(qū)內(nèi)的 LUN 列表與業(yè)務(wù)規(guī)劃一致然后才允許它掃盤。Windows 主機尤其要放在最后接入或者干脆先在交換機側(cè)把它的 zone 關(guān)掉等映射確認無誤再開。注意Default Group 是這類事故的高發(fā)區(qū)。所有未分組的主機都待在里面默認能看到分配給該組的 LUN。新建 Host 后第一時間把它挪進目標分區(qū)別讓它過夜。5.3 擴容之后文件系統(tǒng)還是原來的大小現(xiàn)象在陣列側(cè)把 LUN 從 100G 擴到 200G主機側(cè)df看到的還是 100G。原因LUN 擴容只改了陣列側(cè)的容量邊界主機側(cè)的操作系統(tǒng)還緩存著舊的容量信息卷管理器和文件系統(tǒng)都沒有感知到變化。真正要用上新增空間需要三步主機重掃磁盤識別新容量、擴展卷組或物理卷、擴展邏輯卷和文件系統(tǒng)。解決按順序執(zhí)行中間任何一步跳過都會卡住。Linux 下先重掃 SCSI 設(shè)備再pvresize、lvextend、resize2fs或xfs_growfsAIX 下走卷組和文件系統(tǒng)的擴容命令。擴容前務(wù)必確認文件系統(tǒng)支持在線擴不支持的要安排停機窗口。5.4 熱備盤不接管故障盤就那么壞著現(xiàn)象陣列里一塊盤報故障指示燈變黃但熱備盤紋絲不動RAID 組一直是降級狀態(tài)。原因熱備盤容量小于故障盤所在陣列的最大盤容量控制器判定它無法承擔重建或者這塊盤名義上配了熱備實際還被別的陣列占用著再或者配置時只是插上了盤沒有在管理界面里把它標記為 hot spare。解決先核對容量熱備盤容量必須大于等于陣列內(nèi)最大單盤容量再檢查熱備的歸屬確認它是全局熱備還是專屬某個陣列最后確認狀態(tài)標記。改完配置后手動觸發(fā)一次重建驗證別等到真故障時才發(fā)現(xiàn)熱備是擺設(shè)。5.5 管理軟件掃不到控制器現(xiàn)象Storage Manager 打開后掃描進度條走完設(shè)備列表空空如也。原因管理終端和控制器不在同一網(wǎng)段控制器管理口 IP 被改過而終端還按默認地址找中間有網(wǎng)絡(luò)設(shè)備攔了管理端口走帶內(nèi)方式時 HBA 鏈路沒登錄成功或主機側(cè)管理代理沒裝。解決先用 ping 打通網(wǎng)絡(luò)層這是最基本也最容易被跳過的一步。帶外方式確認終端網(wǎng)卡與控制器同網(wǎng)段、子網(wǎng)掩碼一致帶內(nèi)方式確認 HBA 端口指示燈狀態(tài)、fabric 登錄正常。如果 ping 通但軟件掃不到換串口進去看控制器自身狀態(tài)很多時候是控制器還在啟動或處于某種鎖定狀態(tài)。6. 在線操作的邊界擴容、加主機與 License 升級憑什么不斷業(yè)務(wù)把第 3 章到第 5 章的內(nèi)容串起來看會發(fā)現(xiàn)一個反復(fù)出現(xiàn)的詞在線。改分區(qū)、加 LUN、擴容量、加主機、升 License 數(shù)量原文都明確寫了不影響正在運行的應(yīng)用。這個“在線”不是營銷話術(shù)它有明確的實現(xiàn)基礎(chǔ)——控制器對映射表的修改是增量式的新增一條映射記錄不會導(dǎo)致已有記錄重算或重建主機側(cè)看到的 LUN 列表只是多了一項原有 LUN 的句柄、隊列、緩存全部保持不動。但“在線”有邊界踩過線就是事故。判斷口徑可以歸成一張表操作是否在線主機側(cè)是否需配合主要風險新增 LUN 并加入已有分區(qū)是重掃磁盤分區(qū)歸屬填錯暴露給錯誤主機定義新的 Storage Partition是無新主機提前掃盤導(dǎo)致簽名寫入擴展現(xiàn)有 LUN 容量是重掃 擴卷組/文件系統(tǒng)主機側(cè)不擴容量白擴升級分區(qū) License 數(shù)量是無無更改 RAID 級別 / 重建否視方案而定性能驟降重建窗口內(nèi)二次故障這張表真正的價值不在“是/否”這一列而在第三列。所有在線操作的共同前提是陣列側(cè)改完之后主機側(cè)一定要有一次主動的重新發(fā)現(xiàn)。陣列把新容量、新 LUN 交出去了操作系統(tǒng)不收等于沒做。很多所謂的“擴容失敗”根子就在這里。再往深一層看設(shè)計取舍為什么擴容要做成“加新 LUN 改分區(qū)”和“擴已有 LUN”兩條路而不是只留一條因為前者對主機完全透明加完重掃就多一塊盤可以把新盤加進卷組做條帶化性能還能提升后者省事但要求文件系統(tǒng)支持在線擴而且擴容后同一塊盤的條帶寬度沒變性能不會改善。這兩條路對應(yīng)的是兩種運維偏好——穩(wěn)妥派選前者圖省事選后者沒有絕對優(yōu)劣取決于業(yè)務(wù)能不能接受一次重掃。我自己的習慣是任何一次分區(qū)或映射變更動手前先把當前映射關(guān)系導(dǎo)出成文本存檔改完再導(dǎo)一次逐行 diff。這個動作花不了兩分鐘但它能在“某臺主機突然看不見盤”的時候讓你三秒鐘定位到是哪一行變了而不是對著圖形界面一頁頁翻。從那以后我每次碰 Mapping View 之前都強制走一遍導(dǎo)出和 diff寧可麻煩一點也不想再經(jīng)歷一次在機房對著報警燈猜原因的夜晚。希望幫到你。本文還有配套的精品資源點擊獲取