16. 檔案和區塊儲存空間叢集啟動程序

預計完成時間:3 小時

可操作的元件擁有者:FILE

技能設定檔:部署工程師

本頁面提供操作說明,說明如何使用 NetApp ONTAP 為叢集設定檔案和區塊儲存空間。

16.1. 設定 ONTAP 叢集交換器

  1. 檢查密碼 switch-xx-ad-stgesw01-adminswitch-xx-ad-stgesw02-admin (兩者值相同)。如果沒有密碼,請初始化憑證並產生新的隨機密碼。透過控制台登入交換器,設定管理員密碼:

    # configure terminal
    # username ADMIN_USER password PASSWORD
    # exit
    # copy running-config startup-config
    
  2. 將憑證儲存於密鑰,並附加至 cell.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: netapp-ontap-cluster-switch-credential
      namespace: gpc-system
    type: Opaque
    stringData:
      username: ADMIN_USER
      password: PASSWORD
    
  3. 執行下列指令,取得儲存空間交換器的名稱:

    kubectl get storageswitch -n gpc-system
    

    畫面會顯示類似以下的輸出:

    NAME             AGE   MANAGEMENTIP
    kb-ab-stgesw01   10d   192.0.2.0
    kb-ab-stgesw02   10d   192.0.2.1
    

    針對每個切換器執行下列步驟,並使用切換器的名稱。

  4. 執行下列指令,從 switchstaticconfig CR 擷取交換器設定:

    kubectl get switchstaticconfigs -n gpc-system $SWITCH_NAME-static-config -o yaml | /root/release/scripts/yq_linux_amd64 '.spec.config'
    

    畫面會顯示類似以下的輸出:

    banner motd !
    ******************************************************************************
    * NetApp Reference Configuration File (RCF)
    *
    * Switch   : Nexus N9K-C9336C-FX2
    * Filename : Nexus-9336C-RCF-v1.8-Cluster.txt
    * Date     : 11-01-2021
    * Version  : v1.8
    *
    * Port Usage:
    * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
    * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
    * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    * Ports 35-36: Intra-Cluster ISL Ports, int e1/35-36
    *
    * Dynamic breakout commands:
    * 10G: interface breakout module 1 port <range> map 10g-4x
    * 25G: interface breakout module 1 port <range> map 25g-4x
    *
    * Undo breakout commands and return interfaces to 40/100G configuration in config mode:
    * no interface breakout module 1 port <range> map 10g-4x
    * no interface breakout module 1 port <range> map 25g-4x
    * interface Ethernet <interfaces taken out of breakout mode>
    * inherit port-profile CLUSTER
    * priority-flow-control mode auto
    * service-policy type qos type input ROCE_QOS
    * exit
    *
    * This RCF supports Clustering, HA, RDMA, and DCTCP using a single port profile.
    *
    ******************************************************************************
    !
    conf t
    !
    interface breakout module 1 port 1-3 map 10g-4x
    interface breakout module 1 port 4-6 map 25g-4x
    !
    feature lacp
    feature lldp
    feature ssh
    feature sftp-server
    feature scp-server
    !
    vlan 17,18
    exit
    !
    cdp enable
    cdp advertise v1
    cdp timer 5
    system default switchport
    no system default switchport shutdown
    snmp-server community cshm1! group network-operator
    errdisable recovery interval 30
    port-channel load-balance src-dst ip-l4port-vlan
    no ip domain-lookup
    logging console 1
    !
    !
    class-map type qos match-any HA
    match dscp 40
    match cos 5
    !
    class-map type qos match-any RDMA
    match dscp 16
    match cos 2
    !
    class-map type qos match-any CT
    match dscp 0
    match cos 0
    !
    policy-map type qos ROCE_QOS
    class type qos HA
      set qos-group 5
    class type qos RDMA
      set qos-group 2
    class type qos class-default
      set qos-group 0
    !
    class-map type network-qos HA_NETQOS
    match qos-group 5
    !
    class-map type network-qos RDMA_NETQOS
    match qos-group 2
    !
    class-map type network-qos CT_NETQOS
    match qos-group 0
    !
    policy-map type queuing ROCE_QUEUING
    class type queuing c-out-8q-q7
      priority level 1
    class type queuing c-out-8q-q6
      bandwidth remaining percent 0
    class type queuing c-out-8q-q5
      bandwidth remaining percent 43
      random-detect threshold burst-optimized ecn
    class type queuing c-out-8q-q4
      bandwidth remaining percent 0
    class type queuing c-out-8q-q3
      bandwidth remaining percent 0
    class type queuing c-out-8q-q2
      random-detect threshold burst-optimized ecn
      bandwidth remaining percent 28
    class type queuing c-out-8q-q1
      bandwidth remaining percent 0
    class type queuing c-out-8q-q-default
      bandwidth remaining percent 28
      random-detect threshold burst-optimized ecn
    !
    policy-map type network-qos NETQOS
    class type network-qos HA_NETQOS
      pause pfc-cos 5
      mtu 9216
    class type network-qos RDMA_NETQOS
      pause pfc-cos 2
      mtu 9216
    class type network-qos CT_NETQOS
      mtu 9216
    !
    system qos
    service-policy type network-qos NETQOS
    service-policy type queuing output ROCE_QUEUING
    !
    copp profile strict
    !
    !
    !********** Port Profiles **********
    !
    port-profile type ethernet CLUSTER
    description 10/25/40/1000GbE Intra-Cluster/HA Nodes
    switchport mode trunk
    switchport trunk allowed vlan 1,17-18
    spanning-tree port type edge trunk
    spanning-tree bpduguard enable
    mtu 9216
    state enabled
    exit
    !
    !
    !********** Interfaces **********
    !
    interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    inherit port-profile CLUSTER
    priority-flow-control mode auto
    service-policy input ROCE_QOS
    exit
    !
    !********** Intra-Cluster ISL ports **********
    !
    interface Ethernet1/35
    description Intra-Cluster Switch ISL Port 1/35 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface Ethernet1/36
    description Intra-Cluster Switch ISL Port 1/36 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface port-channel1
    service-policy input ROCE_QOS
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    no shutdown
    !
    !********** Set management ip **********
    !
    interface mgmt0
    ip address 172.28.2.10/29
    !
    vrf context management
    ip route 0.0.0.0/0 mgmt0 172.28.2.9
    !
    hostname kb-ad-stgesw01
    !
    end
    !
    !********** Save config *******
    copy run start
    !
    
  5. 使用序列埠線或主控台伺服器,將取得的交換器設定複製並貼到交換器,然後部署到交換器。

    這項設定假設:

    • A250:儲存裝置上的 e0c/e0d 會使用分接線連接至連接埠 4-6。
    • A400:儲存裝置上的 e3a/e3b 會使用 40GbE 或 100GbE (非分接) 纜線連接至連接埠 7-34。
    • A800:儲存裝置上的 e0a/e1a 會使用 40GbE 或 100GbE (非分接) 纜線連接至連接埠 7-34。

    不過,實際情況可能並非如此。在許多安裝作業中,儲存裝置會連接至連接埠 4 至 6,即使裝置是 A400 或 A800 也是如此。 如果 A400 或 A800 連接埠 4 至 6,請調整交換器設定,移除下列幾行,然後再套用:

      interface breakout module 1 port 1-3 map 10g-4x
      interface breakout module 1 port 4-6 map 25g-4x
    

    然後取代這行:

      interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    

    使用:

      interface e1/1-34
    

    完成這些變更後,所有連接埠 1 至 34 都會設定為 40GbE 或 100GbE (非分接) 纜線。

    此外,請從設定的 MOTD 橫幅部分移除下列程式碼行,以免日後發生混淆:

    
      * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
      * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
      * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    

    將這些行換成:

      * Ports  1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34
    
  6. 確認 ManagementSwitch 物件 CR。

    查看啟動程序 KIND 叢集 ManagementSwitch 物件,找出代表儲存裝置所在交換器的正確 CR。找出管理交換器上與儲存交換器實體連線的實體交換器連接埠,並確認 lacpGroups 中的 ManagementSwitch CR 存在這些連線。

    舉例來說,如果儲存空間交換器的管理連線已連至管理交換器的連接埠 10 和 11,請確認下列資訊存在:

    kind: ManagementSwitch
    spec:
      ...
      serverNetwork:
        ...
        lacpGroups:
        - - 10
        - - 11
    

    使用下列指令取得 lacpGroups:

    kubectl get ManagementSwitchinternal <switch-name> --namespace=gpc-system -o=jsonpath='{.spec.serverNetwork.lacpGroups}'
    

    輸出內容應如下所示,方便您確認連接埠是否存在:

    [[1],[2],[3],[4],[5],[6]]
    

16.2. 初始化 ONTAP 裝置

針對 AFF 250/400/800 系統上的每個控制器,重複執行下列步驟。每個系統都有兩個控制器或節點。

  1. 使用序列埠控制台和預設使用者名稱 admin 連線至儲存空間控制器節點。

  2. 確認 NetApp ONTAP 系統版本。

    • 請執行 version 指令。
    • NetApp ONTAP 系統版本必須為 9.15.1。如果版本低於 9.15.1,請先將節點升級至 9.15.1,再啟動機構管理員叢集。詳情請參閱「升級指南」。
  3. 設定叢集互連 IP 介面位址。

    首先,請在 cellcfg 中找出目前 StorageNode 的預期 .spec.network.clusterInterconnectIP 值。

    # Note, this command relies on yq, which can be downloaded from https://github.com/mikefarah/yq.
    # If you do not want to install yq, you can manually inspect cellcfg/*-storage.yaml to determine the IPs.
    cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.clusterInterconnectIP)'
    

    執行上述指令會輸出所有 StorageNode 的名稱和 .spec.network.clusterInterconnectIP 值。例如:

    aa-ad-stge01-01
    169.254.0.1
    ---
    aa-ad-stge01-02
    169.254.0.3
    ---
    aa-ad-stge02-01
    169.254.0.5
    ---
    aa-ad-stge02-02
    169.254.0.7
    ---
    aa-ad-stge03-01
    169.254.0.9
    ---
    aa-ad-stge03-02
    169.254.0.11
    

    以上例來說,節點 aa-ad-stge03-01 的 IP 169.254.0.9169.254.0.10 會用於後續步驟。這是因為 169.254.0.9 是為節點 aa-ad-stge03-01 的 cellcfg 定義的 IP,而 169.254.0.10169.254.0.9 之後的下一個 IP (以數值來說)。

    接著,請檢查目前節點的實際叢集互連 IP 值。

    network interface show
    

    您應該會看到兩個以 169.254 開頭的網路介面, 類似下列輸出內容:

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.19.166/16  localhost     e3a     true
                 clus2        up/up    169.254.19.167/16  localhost     e3b     true
    

    如果 clus1 介面的位址與 cellcfg 中定義的值相符,且 clus2 介面的位址是 clus1 位址 (以數值表示) 後的下一個 IP,則可跳過這個步驟的其餘部分,直接前往下一個步驟。

    如果叢集 vserver 只有 1 個介面,請執行 net port show,確認第二個連接埠是否已啟動並執行。如果是這樣,表示您錯過其中一個介面,有兩種方法可以修正:

    • 選項 1:使用下列指令手動新增互連網路 IP:

        net interface create -vserver Cluster -lif clus2 -role cluster -address <interconnect-ip> -netmask 255.255.0.0 -home-node localhost -home-port <port>
      
      • interconnect-ip:選擇下一個 IP (以數字表示),也就是目前節點 cellcfg 中指定的叢集互連 IP。舉例來說,如果目前節點的 cellcfg 中指定的叢集互連網路 IP 是 169.254.0.3,請選擇 169.254.0.4

      • 通訊埠:通訊埠可能因 ONTAP 型號而異。 請選擇前述輸出內容中未顯示介面的連接埠。

        • A250:請選擇 e0c 和 e0d。
        • A400:請選擇 e3a 或 e3b。
        • 如果是 A800,請選擇 e0a 和 e1a。
    • 方法 2:重設 ONTAP 節點 (這涉及 ONTAP 開機選單中的設定 9a 和 9b)。重設後再次執行指令,確認有 2 個 IP。請注意,建議先嘗試選項 1,只有在無法正常運作時才改用選項 2。

    接著,請將 clus1 互連 IP 更新為 cellcfg 中目前節點指定的值 clusterInterconnectIP

    net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>
    
    • interconnect-ip:目前節點的 cellcfg 中指定的 clusterInterconnectIP 值。

    接著,請更新 clus2 互連 IP,使其成為 cellcfg 中目前節點指定的 clusterInterconnectIP 值之後的下一個 IP (以數值表示)。

    net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>
    
    • next-interconnect-ip:選擇目前節點 cellcfg 中指定的叢集互連 IP 之後的下一個 IP (以數字表示)。舉例來說,如果目前節點的 cellcfg 中指定的叢集互連網路 IP 為 169.254.0.3,請選擇 169.254.0.4

    最後,請檢查目前節點的實際叢集互連 IP 值,是否與 cellcfg 中預期的值相符。

    network interface show
    

    您應該會看到兩個以 169.254 開頭的網路介面, 類似下列輸出內容。clus1 介面的位址應與 cellcfg 中定義的值相符。clus2介面的位址應為 clus1 位址後的下一個 IP (以數字表示)。

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.0.1/16  localhost     e3a     true
                 clus2        up/up    169.254.0.2/16  localhost     e3b     true
    

    選用:驗證叢集間連線。

    ping -lif clus2 -vserver Cluster -destination <interconnect-ip-other-node>
    

    interconnect-ip-other-node:從其他節點選擇叢集間 IP。如果連線正常,連線偵測 (ping) 應會回覆。

  4. 設定管理員密碼 (所有節點都應使用相同密碼,並在填寫密碼時使用)。請確認密碼符合複雜度規定,否則系統會顯示不符規定的使用者帳戶警告。

     ::> security login password
    
     Enter your current password: Current password is empty, press Enter
     Enter a new password: Enter NEW_PASSWORD
     Enter it again: Enter NEW_PASSWORD
    
  5. 設定管理 IP 和閘道。請參閱下方的操作說明,瞭解如何取得必要資訊。

    ::> cluster setup
    
    Type yes to confirm and continue: yes
    Enter the node management interface port: e0M
    Enter the node management interface IP address: IP_ADDRESS
    for this node
    Enter the node management interface netmask: NETMASK for
    this IP
    Enter the node management interface default gateway:
    GATEWAY
    

    輸入 ctrl+c 設定預設閘道後,即可退出叢集設定精靈。

    執行下列指令,取得子網路資訊:

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageCluster") | (.spec.network.clusterManagement.netmask)'
    

    畫面會顯示類似以下的輸出:

    203.0.113.0
    

    執行下列指令來取得閘道資訊:

    kubectl get subnetclaim -n root kb-ad-mgmtsw01-stge-os-subnet -o jsonpath={.status.ipv4SubnetStatus.gateway} ; echo
    

    畫面會顯示類似以下的輸出:

    203.0.113.1
    

    以下是取得 IP 資訊的範例:

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.managementIP)'
    kb-ad-stge01-01
    203.0.113.0
    ---
    kb-ad-stge01-02
    203.0.113.0
    ---
    kb-ad-stge02-01
    203.0.113.0
    ---
    kb-ad-stge02-02
    203.0.113.0
    
  6. 為管理員使用者啟用 SSH:

      security login create -user-or-group-name admin -application ssh -authentication-method password -role admin
    
  7. 將節點重新命名為 cell.yaml 中指定的名稱。

    system node rename -node localhost -newname NODE_NAME
    
  8. 確認磁碟設定正確無誤。

    1. 執行 storage aggregate show -fields uses-shared-disks,並確認 aggr0 是否傳回 true。輸出內容範例:

      ::> storage aggregate show -fields uses-shared-disks
      aggregate uses-shared-disks
      --------- -----------------
      aggr0     true
      
    2. 執行 run -node * sysconfig -r,並確認裝置名稱結尾為 P3。 這是為了確保磁碟有 3 個磁碟分割區。輸出內容範例:

      ::> run -node * sysconfig -r
      1 entry was acted on.
      
      Node: localhost
      Aggregate aggr0 (online, raid_dp) (block checksums)
        Plex /aggr0/plex0 (online, normal, active, pool0)
          RAID group /aggr0/plex0/rg0 (normal, block checksums)
      
            RAID Disk Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
            --------- ------  ------------- ---- ---- ---- ----- --------------    --------------
            dparity   0n.18P3 0n    0   18         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            parity    0n.19P3 0n    0   19         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.20P3 0n    0   20         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.21P3 0n    0   21         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.22P3 0n    0   22         0 SSD-NVM   N/A 63849/16345536    63857/16347584
      
    3. 執行 run -node local disk show -n,確認磁碟分區為 Not Owned,且有 2 * <number of disks> 個分區。 這個範例顯示 12 個磁碟的 24 個未擁有磁碟分區。

      ::> run -node local disk show -n
        DISK       OWNER                    POOL   SERIAL NUMBER         HOME                    DR HOME
      ------------ -------------            -----  -------------         -------------           -------------
      0n.21P1      Not Owned                  NONE   S5Y0NA0T100941NP001
      0n.21P2      Not Owned                  NONE   S5Y0NA0T100941NP002
      0n.22P1      Not Owned                  NONE   S5Y0NA0T100944NP001
      0n.22P2      Not Owned                  NONE   S5Y0NA0T100944NP002
      0n.18P1      Not Owned                  NONE   S5Y0NA0T101588NP001
      0n.18P2      Not Owned                  NONE   S5Y0NA0T101588NP002
      0n.20P1      Not Owned                  NONE   S5Y0NA0T100947NP001
      0n.20P2      Not Owned                  NONE   S5Y0NA0T100947NP002
      0n.3P1       Not Owned                  NONE   S5Y0NA0T100942NP001
      0n.3P2       Not Owned                  NONE   S5Y0NA0T100942NP002
      0n.1P1       Not Owned                  NONE   S5Y0NA0T100943NP001
      0n.1P2       Not Owned                  NONE   S5Y0NA0T100943NP002
      0n.5P1       Not Owned                  NONE   S5Y0NA0T101314NP001
      0n.5P2       Not Owned                  NONE   S5Y0NA0T101314NP002
      0n.2P1       Not Owned                  NONE   S5Y0NA0T100946NP001
      0n.2P2       Not Owned                  NONE   S5Y0NA0T100946NP002
      0n.23P1      Not Owned                  NONE   S5Y0NA0T100939NP001
      0n.23P2      Not Owned                  NONE   S5Y0NA0T100939NP002
      0n.19P1      Not Owned                  NONE   S5Y0NA0T101608NP001
      0n.19P2      Not Owned                  NONE   S5Y0NA0T101608NP002
      0n.0P1       Not Owned                  NONE   S5Y0NA0T100873NP001
      0n.0P2       Not Owned                  NONE   S5Y0NA0T100873NP002
      0n.4P1       Not Owned                  NONE   S5Y0NA0T101609NP001
      0n.4P2       Not Owned                  NONE   S5Y0NA0T101609NP002
      
    4. 如果任何步驟失敗,請將系統恢復原廠設定。

16.3. 設定網路時間通訊協定

取得在啟動叢集中執行的 NTP 中繼伺服器 IP:

  kubectl get ntpservers -n ntp-system -o jsonpath='{.items[*].status.managementIP}{"\n"}'

針對每個 NTP 伺服器,在第一個 ONTAP 節點上執行下列指令:

  cluster time-service ntp server create -server NTP_SERVER_IP

舉例來說,如果 ONTAP 節點為 kb-ad-stge01-01kb-ad-stge01-02kb-ad-stge02-01kb-ad-stge02-02,請在 kb-ad-stge01-01 節點上執行指令。

16.4. 檢查 cellcfg 資料夾

如要擷取檔案儲存空間的儲存空間使用者名稱和密碼值,請使用專為儲存空間設計的硬體供應商檔案,例如 WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx

16.4.1. 驗證管理員密碼

找出 /CELLCFG/file-storage.yaml 參照的 ONTAP 密鑰名稱,如下所示:StorageCluster.spec.adminSecretName

找出對應的 Secret,並確認已填入值。如果不是,請替換管理員使用者名稱和密碼:

  apiVersion: v1
  kind: Secret
  metadata:
    name: SECRET_NAME
    namespace: gpc-system
  type: Opaque
  stringData:
    netapp_username: admin
    netapp_password: PASSWORD

16.4.2. 驗證 ONTAP 授權

ONTAP 軟體授權必須由硬體廠商提供。

/cellcfg/af-storage.yaml 資料夾中找到 StorageCluster.spec.licenses 欄位,並確認授權已填入。 如果沒有,請在欄位中填入執照:

  apiVersion: ontap.netapp.storage.private.gdc.goog/v1alpha1
  kind: StorageCluster
  metadata:
    creationTimestamp: null
    name: zl-stge-clus-01
    namespace: gpc-system
  spec:
  ...
    licenses:
      - LICENSE_1
      - LICENSE_2
      - LICENSE_3

以下範例說明授權項目在儲存格設定中的顯示方式:

  licenses:

  ABGITNWODUEVQELPECCAAAAAAAAA
  AHJJWYTTTXKZOFKVBTBAAAAAAAAA
  AHZTHBPQACAAAAKVBTBAAAAAAAAA
  ALTXOYXSVDDCMADPECCAAAAAAAAA
  ANWFPBPQACAAAAKVBTBAAAAAAAAA
  APLKENWODUEVQELPECCAAAAAAAAA
  ARIHVQFAHJMIWBDPECCAAAAAAAAA
  AXFTCRFAHJMIWBDPECCAAAAAAAAA

16.5. 預檢驗證

執行驗證指令:

gdcloud system check-config --config PATH_TO_CELL_CONFIG --artifacts-directory PATH_TO_ARTIFACTS \
    --scenario FileBlockStorage

如果記錄中有任何錯誤,請按照訊息修正問題,然後再次執行驗證。

16.5.1. 潛在問題

本節列出對檔案區塊儲存裝置執行預檢驗證時,可能遇到的問題。

16.5.1.1. StorageAggregate 的 NumDisks

忽略磁碟數量不正確的驗證失敗情形,但請手動驗證 StorageAggregate CR 中的 NumDisks 值。StorageAggregate 定義在 xx-storage.yaml 檔案中。

為一個檔案區塊設備設定的 StorageAggregates 磁碟總數,必須與設備中顯示的磁碟數減去備用磁碟數相符。最佳做法是每 12 個磁碟保留一個備用磁碟。

如要計算 NumDisks 的值,請使用下列公式:

NumDisks = (Total_Disks/2) - ceil(Total_Disks/12)

如果您將公式套用至本節所述的 (24/2) - ceil(24/12) 範例,NumDisks 等於 10

16.6. 執行安裝

執行安裝指令:

  gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG

這項指令會執行以下作業:

  • 設定 NetApp 叢集並新增可用節點
  • 建立匯總
  • 在資料連接埠上設定 LACP 和 VLAN
  • 設定授權
  • 設定監控工作
  • 設定外部金鑰管理機制

作業完成後,請在 ONTAP 控制台上執行 node show,確認沒有類似下列的警告:

kb-stge-clus-01::> node show
Node      Health Eligibility Uptime        Model       Owner    Location
--------- ------ ----------- ------------- ----------- -------- ---------------
kb-ad-stge01-01
          true   true         5 days 02:49 AFF-A250
kb-ad-stge01-02
          true   true         6 days 18:24 AFF-A250
kb-ad-stge02-01
          true   true         5 days 01:52 AFF-A800
kb-ad-stge02-02
          true   true         5 days 01:52 AFF-A800
kb-ad-stge03-01
          true   true         7 days 00:15 AFF-A400
kb-ad-stge03-02
          true   true         7 days 00:26 AFF-A400

Warning: Cluster operation (cluster join) for node "kb-ad-stge03-01" is not complete and the node is not fully functional.
         Run "cluster join" on that node to complete the operation.
6 entries were displayed.

如有,請按照操作說明登入這些節點,並執行對應的 cluster join 指令,確保作業完成後節點消失。

16.7. 更新安全性設定

  1. 設定登入橫幅:

    security login banner modify -vserver <cluster name> -message "<banner>"
    
  2. 將 CLI 工作階段逾時時間限制為十分鐘:

    system timeout modify 10
    
  3. 針對管理員角色強制執行密碼複雜度和登入嘗試次數上限:

    security login role config modify -vserver CLUSTER_NAME -role admin -passwd-minlength 15 -passwd-min-special-chars 1 -passwd-min-lowercase-chars 1 -passwd-min-uppercase-chars 1 -passwd-min-digits 1 -disallowed-reuse 25 -max-failed-login-attempts 3
    
  4. 將 UI 工作階段逾時時間限制為十分鐘:

    ::> set diag
    
    Warning: These diagnostic commands are for use by NetApp personnel only.
    Do you want to continue? {y|n}: y
    
    ::> cluster application-record create -name sysmgr.inactivitytimeout -value 10 -vserver <cluster name>
    
  5. 調整使用者鎖定設定:

    ::> security login role config modify -vserver * -max-failed-login-attempts 3 -lockout-duration 1 -role *
    ::> security ssh modify -vserver * -max-authentication-retry-count 3
    
  6. 停用 USB 連接埠 (必須重新啟動裝置,變更才會生效):

    ::> set diag
    ::*> system node usb-ports modify -node * -is-disabled-next-boot true
    
  7. 移除啟動程序憑證。

    1. 找出 bootstrap-web-ca 憑證:

        ::> security certificate show-user-installed
      

      如果 bootstrap-web-ca 憑證存在,輸出結果會如下所示:

      Vserver    Serial Number   Certificate Name                       Type
      ---------- --------------- -------------------------------------- ------------
      aa-aa-stge01
                45B86E1B5CF1CC144B874C80A39D2A99
                                bootstrap-web-ca                       server-ca
          Certificate Authority: bootstrap-web-ca
                Expiration Date: Mon Feb 19 22:55:03 2029
      
  8. 如要重新啟動節點,請使用下列指令一次重新啟動一個節點:

    ::> system node reboot -node <node-name> -inhibit-takeover true
    

16.8. 儲存緊急存取使用者

設定期間,系統會自動建立四個緊急存取帳戶,並以 Kubernetes 密碼的形式儲存。

  • storage-root-level1
  • storage-root-level1-backup
  • storage-root-level2
  • storage-root-level2-backup

如要儲存及保護 storage-root-level2storage-root-level2-backup 憑證,請按照以下規定以紙本形式儲存:

  1. 使用下列指令從密鑰取得使用者名稱和密碼,並將 SECRET_NAME 換成您要使用的密鑰:

    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.username}' | base64 --decode
    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.password}' | base64 --decode
    
  2. 取得 ONTAP 叢集的名稱:

      ::> cluster identity show
    
  3. 注意是否有任何非預期使用者具備管理員權限:

      ::> useradmin user list
    
    1. 選用:在基礎架構營運商核准後刪除。一律對實際工作環境和客戶工作負載執行:
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application amqp
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application console
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application http
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ontapi
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application service-processor
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ssh
      ```
    
  4. 刪除上一個步驟中建立的 NetApp 管理使用者。

        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application amqp
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application console
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application http
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ontapi
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application service-processor
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ssh
    
  5. 基礎架構作業 (IO) 負責人應在不同的紙張上清楚寫下每個設備的使用者名稱和密碼。他們會將紙張摺疊起來,確保內容不會外洩,並標示紙張內容,例如「TOR 交換器 1 的根憑證」,然後交給 L1 工程師妥善保管。

  6. 在 IO 負責人監督下,L1 工程師將紙本文件存放在實體保險箱。

  7. IO 會在密鑰中新增註解,標記密鑰已儲存在安全位置。

    kubectl annotate secrets storage-root-level2 -n gpc-system disk.gdc.goog/persisted=''
    

    16.9. 更新 NTP 伺服器

安裝管理員叢集後,請執行下列步驟:

  1. 取得管理員叢集執行 NTP 中繼服務的新 NTP 伺服器 IP:

    kubectl get ntpservers -n gpc-system
    
  2. 在 ONTAP 中,刪除所有現有的 NTP 伺服器:

    cluster time-service ntp server show
    cluster time-service ntp server delete -server NTP_SERVER_IP
    
  3. 將新的 NTP 伺服器新增至 ONTAP:

    cluster time-service ntp server create -server NTP_SERVER_IP