Sun Cluster 軟體安裝指南 (適用於 Solaris 作業系統)

在叢集中建立磁碟集

本節說明如何為叢集配置建立磁碟集。在 Sun Cluster 環境中建立 Solaris Volume Manager 磁碟集時,磁碟集會自動使用 Sun Cluster 軟體註冊為 svm 類型的裝置群組。若要建立或刪除 svm 裝置群組,就必須使用 Solaris Volume Manager 指令和公用程式來建立或刪除基本的裝置群組磁碟集。


備註 –

若要建立 Solaris Volume Manager for Sun Cluster 磁碟集以供 Oracle RAC 使用,請勿使用這些程序。請改而執行「Sun Cluster Data Service for Oracle RAC Guide for Solaris OS」中的「How to Create a Multi-Owner Disk Set in Solaris Volume Manager for Sun Cluster for the Oracle RAC Database」內的程序。


下表列出建立磁碟集所要執行的作業。

表 4–2 作業說明:安裝和配置 Solaris Volume Manager 軟體

作業 

指示 

1. 使用 metaset 指令建立磁碟集。

如何建立磁碟集

2. 將磁碟機增加至磁碟集。 

如何將磁碟機增加至磁碟集

3. (可選擇) 重新分割磁碟集中的磁碟機,以便為不同的磁碟片段分配空間。

如何重新分割磁碟集中的磁碟機

4. 列出 DID 虛擬驅動程式對映,並定義 /etc/lvm/md.tab 檔案中的磁碟區。

如何建立 md.tab 檔案

5. 初始化 md.tab 檔案。

如何啟動磁碟區

Procedure如何建立磁碟集

請執行此程序建立磁碟集。


備註 –

此程序中提供的 Sun Cluster 指令都使用較長的格式。大多數指令還有簡短的格式。這些指令除了指令名稱的格式不同外,其他都是相同的。如需查看這些指令與其簡短格式的清單,請參閱「Sun Cluster 系統管理指南(適用於 Solaris 作業系統)」中的附錄 A「Sun Cluster 以物件為導向的指令」


  1. SPARC:(Solaris 9) 建立新磁碟集後,請確定叢集是否含有三個以上的磁碟集。

    • 如果叢集的磁碟集不超過三個,請跳至步驟 9

    • 如果叢集的磁碟集超過三個,請繼續執行步驟 2,以準備叢集。無論是第一次安裝磁碟集,還是在完全配置好的叢集中增加更多磁碟集,均必須執行此作業。

    • 如果叢集在 Solaris 10 作業系統上執行,Solaris Volume Manager 會自動進行必要的配置變更。請跳至步驟 9

  2. 在叢集的任何節點上,檢查 md_nsets 變數值,該變數值位於 /kernel/drv/md.conf 檔中。

  3. 如果叢集中的磁碟集總數大於現有的 md_nsets 值減去一,則增加 md_nsets 值,以達到所需的值。

    許可磁碟集數目上限比 md_nsets 的配置值小一。md_nsets 的最大可能值為 32,因此,您可以建立的最大許可磁碟集數目為 31。

  4. 確定 /kernel/drv/md.conf 檔在叢集的每個節點上都相同。


    Caution – Caution –

    未遵循此準則會導致嚴重的 Solaris Volume Manager 錯誤並可能會有資料流失。


  5. 如果您已變更任一節點上的 md.conf 檔案,則請執行以下步驟,以使變更生效。

    1. 在節點登入為超級使用者。

    2. 在某一個節點上關閉叢集。


      phys-schost# cluster shutdown -g0 -y
      
    3. 重新啟動叢集的每個節點。

      • 在基於 SPARC 的系統上,執行下列動作︰


        ok boot
        
      • 在基於 x86 的系統上,執行下列動作︰

        當螢幕顯示 GRUB 功能表時,請選取合適的 Solaris 項目然後按下 Enter。GRUB 功能表會以類似以下的方式顯示:


        GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
        +-------------------------------------------------------------------------+
        | Solaris 10 /sol_10_x86                                                  |
        | Solaris failsafe                                                        |
        |                                                                         |
        +-------------------------------------------------------------------------+
        Use the ^ and v keys to select which entry is highlighted.
        Press enter to boot the selected OS, 'e' to edit the
        commands before booting, or 'c' for a command-line.

        如需有關以 GRUB 為基礎的啟動之更多資訊,請參閱「System Administration Guide: Basic Administration」中的第 11 章「GRUB Based Booting (Tasks)」

  6. 在叢集中的每個節點上,執行 devfsadm(1M) 指令。

    您可以在叢集的所有節點上同時執行此指令。

  7. 從一個叢集節點更新全域裝置名稱空間。


    phys-schost# cldevice populate
    

    請參閱「cldevice(1CL) 線上手冊」以得知更多資訊。

  8. 請先在每個節點上驗證指令已完成處理,然後再建立磁碟集。

    即使指令是從一個節點執行,但其會在每個節點上以遠端方式執行。若要判定指令是否已經完成作業,請在叢集的每個節點上執行下列指令。


    phys-schost# ps -ef | grep scgdevs
    
  9. 請確保您要建立的磁碟集符合以下一項條件。

    • 如果磁碟集配置為只有兩個磁碟串聯,則該磁碟集必須只連線至兩個節點,並只使用兩個仲裁者主機。這些仲裁者主機必須與磁碟集使用的兩個主機相同。請參閱配置雙串聯仲裁者,以取得有關如何配置雙串聯仲裁者的詳細資訊。

    • 如果磁碟集配置為兩個以上的磁碟集列,請確定任何兩個磁碟集列 S1 和 S2 上的磁碟機數目總和要超過第三個組列 S3 上的磁碟機數目。以公式表示則需求為 count(S1) + count(S2) > count(S3)。

  10. 確定本機狀態資料庫複本是否存在。

    如需說明,請參閱如何建立狀態資料庫複本

  11. 成為主控磁碟集的叢集節點上的超級使用者。

  12. 建立磁碟集。

    以下指令建立磁碟集,並將磁碟集註冊為 Sun Cluster 裝置群組。


    phys-schost# metaset -s setname -a -h node1 node2
    
    -s setname

    指定磁碟集名稱。

    -a

    增加 (建立) 磁碟集。

    -h node1

    指定主控磁碟集的主節點名稱。

    node2

    指定主控磁碟集的次要節點名稱


    備註 –

    當您執行 metaset 指令來配置叢集上的 Solaris Volume Manager 裝置群組時,依預設指令會指定一個次要節點。在建立裝置群組後,您可以使用 clsetup 公用程式在裝置群組中變更想要的次要節點數目。請參閱「Sun Cluster 系統管理指南(適用於 Solaris 作業系統)」中的「管理裝置群組」,以取得如何變更 numsecondaries 特性的更多資訊。


  13. 若要配置已複製的 Solstice DiskSuite 或 Solaris Volume Manager 裝置群組,請設定裝置群組的複製特性。


    phys-schost# cldevicegroup sync device-group-name
    

    如需資料複製的更多資訊,請參閱「Sun Cluster 系統管理指南(適用於 Solaris 作業系統)」中的第 4 章「資料複製方法」

  14. 驗證新磁碟集的狀態。


    phys-schost# metaset -s setname
    
  15. 若有需要,請設定裝置群組特性。


    phys-schost# cldevicegroup set -p name=value devicegroup
    
    -p

    指定裝置群組特性。

    name

    指定特性的名稱。

    value

    指定特性的值或設定。

    devicegroup

    指定裝置群組的名稱。裝置群組的名稱和磁碟集名稱是相同的。

    請參閱 cldevicegroup(1CL) 以得知裝置群組特性的相關資訊。


範例 4–6 建立磁碟集

下列指令建立兩個磁碟集 dg-schost-1dg-schost-2,並將節點 phys-schost-1phys-schost-2 指定為潛在主節點。


phys-schost# metaset -s dg-schost-1 -a -h phys-schost-1 phys-schost-2
phys-schost# metaset -s dg-schost-2 -a -h phys-schost-1 phys-schost-2

接下來的步驟

將磁碟機增加至磁碟集。請至將磁碟機增加至磁碟集

將磁碟機增加至磁碟集

將磁碟機增加至磁碟集後,磁碟區管理軟體將按以下所示重新分割磁碟機,以便磁碟集的狀態資料庫可以放置在磁碟機上。

Procedure如何將磁碟機增加至磁碟集

開始之前

確定已建立磁碟集。如需說明,請參閱如何建立磁碟集

  1. 成為超級使用者。

  2. 列出 DID 對應。


    phys-schost# cldevice show | grep Device
    
    • 選擇將主控或可能主控磁碟集的叢集節點共用的磁碟機。

    • 將磁碟機增加到磁碟集時,請使用完整的 DID 裝置名稱,其格式為 /dev/did/rdsk/dN

    在下列範例中,DID 裝置 /dev/did/rdsk/d3 的項目指出磁碟機被 phys-schost-1phys-schost-2 所共用。


    === DID Device Instances ===                   
    DID Device Name:                                /dev/did/rdsk/d1
      Full Device Path:                               phys-schost-1:/dev/rdsk/c0t0d0
    DID Device Name:                                /dev/did/rdsk/d2
      Full Device Path:                               phys-schost-1:/dev/rdsk/c0t6d0
    DID Device Name:                                /dev/did/rdsk/d3
      Full Device Path:                               phys-schost-1:/dev/rdsk/c1t1d0
      Full Device Path:                               phys-schost-2:/dev/rdsk/c1t1d0
    …
  3. 成為磁碟集的所有者。


    phys-schost# cldegivegroup switch -n node devicegroup
    
    -n node

    指定要擁有裝置群組的節點。

    devicegroup

    指定裝置群組名稱,該名稱與磁碟集名稱相同。

  4. 將磁碟機增加至磁碟集。

    使用完整的 DID 路徑名稱。


    phys-schost# metaset -s setname -a /dev/did/rdsk/dN
    
    -s setname

    指定磁碟集名稱,其與裝置群組名稱相同。

    -a

    將磁碟機增加至磁碟集。


    備註 –

    將磁碟機增加至磁碟集時,請使用低階裝置名稱 (cNtXdY)。因為低階裝置名稱是本機名稱,在叢集中並非唯一,使用此名稱可能會導致 metaset 無法切換。


  5. 驗證磁碟集與磁碟機的狀態。


    phys-schost# metaset -s setname
    

範例 4–7 將磁碟機增加至磁碟集

metaset 指令將磁碟機 /dev/did/rdsk/d1/dev/did/rdsk/d2 增加至磁碟集 dg-schost-1


phys-schost# metaset -s dg-schost-1 -a /dev/did/rdsk/d1 /dev/did/rdsk/d2

接下來的步驟

若要重新分割磁碟機,以用於磁碟區,請至如何重新分割磁碟集中的磁碟機

否則,請至如何建立 md.tab 檔案,以使用 md.tab 檔案來定義中介裝置或磁碟區。

Procedure如何重新分割磁碟集中的磁碟機

metaset(1M) 指令會重新分割磁碟集中的磁碟機,以便將每個磁碟機的一小部分保留以供 Solaris Volume Manager 軟體使用。以 Volume Table of Contents (磁碟區目錄) (VTOC) 標示的裝置中,使用磁碟片段 7。以 可延伸韌體介面 (EFI) 標示的裝置中,使用磁碟片段 6。每個磁碟機的剩餘空間皆會置於磁碟片段 0。若要更有效率地使用磁碟機,請使用此程序修改磁碟配置。若已分配空間給 VTOC 磁碟片段 1 到 6,或 EFI 磁碟片段 1 到 5,則可以在設定 Solaris Volume Manager 磁碟區時使用這些磁碟片段。

  1. 成為超級使用者。

  2. 使用 format 指令變更磁碟集中每個磁碟機的磁碟分割。

    重新分割磁碟機時,必須滿足以下條件,以防止 metaset(1M) 指令重新分割磁碟機。

    • 建立始於磁柱 0 的磁碟片段 7 (適用於 VTOC) 或磁碟片段 6 (適用於 EFI ),並確保其大小足以容納狀態資料庫複本。請參閱「Solaris Volume Manager Administration Guide」,以確定您所擁有的磁碟區管理員軟體版本之狀態資料庫複本的大小。

    • 設定目標磁碟片段的 Flag 欄位為 wu (讀寫、可卸載)。請勿將它設成唯讀。

    • 請勿讓目標磁碟片段與磁碟機上的任何其他磁碟片段重疊。

    請參閱「format(1M) 線上手冊」,以取得詳細資訊。

接下來的步驟

使用 md.tab 檔案定義磁碟區。請至如何建立 md.tab 檔案

Procedure如何建立 md.tab 檔案

在叢集的每一個節點建立 /etc/lvm/md.tab 檔。使用 md.tab 檔案為已建立的磁碟集定義 Solaris Volume Manager 磁碟區。


備註 –

若使用本機磁碟區,請確定本機磁碟區名稱與形成磁碟集所使用的裝置 ID 名稱不同。例如,若在磁碟集中使用裝置 ID 名稱 /dev/did/dsk/d3,則請勿將名稱 /dev/md/dsk/d3 用於本機磁碟區。此條件不適用於共用磁碟區,因其採用的命名慣例為 /dev/md/setname/{r}dsk/d#


  1. 成為超級使用者。

  2. 建立 md.tab 檔時,請列出 DID 對應以作為參照。

    使用 md.tab 檔案中的完整 DID 裝置名稱,來替代較低層級的裝置名稱 (cN tXdY)。DID 裝置名稱的格式為 /dev/did/rdsk/dN


    phys-schost# cldevice show | grep Device
    

    === DID Device Instances ===                   
    DID Device Name:                                /dev/did/rdsk/d1
      Full Device Path:                               phys-schost-1:/dev/rdsk/c0t0d0
    DID Device Name:                                /dev/did/rdsk/d2
      Full Device Path:                               phys-schost-1:/dev/rdsk/c0t6d0
    DID Device Name:                                /dev/did/rdsk/d3
      Full Device Path:                               phys-schost-1:/dev/rdsk/c1t1d0
      Full Device Path:                               phys-schost-2:/dev/rdsk/c1t1d0
    …
  3. 建立 /etc/lvm/md.tab 檔案,並使用您偏好的文字編輯器進行編輯。


    備註 –

    若在將用於子鏡像的磁碟機上有現有資料,則必須在設定磁碟區之前備份這些資料。然後將資料回復至鏡像。


    為了避免在叢集環境中不同節點上的本機磁碟區之間可能導致混淆,所使用的命名機制應該要讓每個本機磁碟區名稱在整個叢集中是唯一的。例如,針對節點 1,選擇 d100 d199 之間的名稱。針對節點 2,使用 d200d299 之間的名稱。

    請參閱您的 Solaris Volume Manager 文件與「md.tab(4) 線上手冊」,以取得有關如何建立 md.tab 檔案的詳細資訊。


範例 4–8 md.tab 檔案範例

下列 md.tab 檔案範例定義名為 dg-schost-1 的磁碟集。md.tab 檔案中各行的順序並不重要。


dg-schost-1/d0 -m dg-schost-1/d10 dg-schost-1/d20
    dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0
    dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0

md.tab 檔案範例結構如下。

  1. 第一行將裝置 d0 定義為磁碟區 d10d20 的鏡像。-m 表示該裝置為鏡像裝置。


    dg-schost-1/d0 -m dg-schost-1/d0 dg-schost-1/d20
  2. 第二行將磁碟區 d10 (d0 的第一個子鏡像) 定義為單向磁條塊。


    dg-schost-1/d10 1 1 /dev/did/rdsk/d1s0
  3. 第三行將磁碟區 d20 (d0 的第二個子鏡像) 定義為單向磁條塊。


    dg-schost-1/d20 1 1 /dev/did/rdsk/d2s0

接下來的步驟

啟動 md.tab 檔案中定義的磁碟區。請至如何啟動磁碟區

Procedure如何啟動磁碟區

執行此程序可啟動 md.tab 檔案中定義的 Solaris Volume Manager 磁碟區。

  1. 成為超級使用者。

  2. 確定 md.tab 檔位於 /etc/lvm 目錄中。

  3. 確定您對執行指令的節點上的磁碟集擁有所有權。

  4. 取得磁碟集的所有權。


    phys-schost# cldevicegroup switch -n node devicegroup
    
    -n node

    指定取得所有權的節點。

    devicegroup

    指定磁碟集名稱。

  5. 啟動在 md.tab 檔案中為磁碟集定義的磁碟區。


    phys-schost# metainit -s setname -a
    
    -s setname

    指定磁碟集名稱。

    -a

    啟動 md.tab 檔案中的所有磁碟區。

  6. 對叢集中的每個磁碟集重複步驟 3步驟 5

    必要時,請從連接至磁碟機的其他節點執行 metainit(1M) 指令。 對叢集對拓樸而言,此步驟是必要的,但並非所有節點均可在此拓樸上存取磁碟機。

  7. 檢查磁碟區的狀態。


    phys-schost# metastat -s setname
    

    請參閱「metastat(1M) 線上手冊」,以取得更多資訊。

  8. (可選擇) 擷取磁碟分割資訊以備未來不時之需。


    phys-schost# prtvtoc /dev/rdsk/cNtXdYsZ > 檔案名稱
    

    將檔案儲存在叢集以外的位置。若您變更了任何磁碟配置,請再次執行此指令來擷取變更後的配置。若磁碟故障需要更換,就可以使用此資訊來復原磁碟分割區配置。如需更多資訊,請參閱「prtvtoc(1M) 線上手冊」。

  9. (可選擇) 為叢集配置建立備份。叢集配置的歸檔備份有助於更容易回復叢集配置。如需更多資訊,請參閱「Sun Cluster 系統管理指南(適用於 Solaris 作業系統)」中的「如何備份叢集配置」


範例 4–9 啟動 md.tab 檔案中的磁碟區

在下列範例中,啟動在 md.tab 檔案中為磁碟集 dg-schost-1 定義的所有磁碟區。


phys-schost# metainit -s dg-schost-1 -a

接下來的步驟

如果叢集包含的磁碟集配置為只有兩個磁碟附件和兩個節點,則增加雙串聯仲裁者。請至配置雙串聯仲裁者

否則,請至如何建立叢集檔案系統,以建立叢集檔案系統。