PowerFlex:已說明在主機上執行指令檔 (又稱為作業系統修補) 功能
Summary: 此功能用於在託管 MDM 或 SDS 元件的伺服器上執行使用者提供的指令檔。 此功能可用於 PowerFlex 系統外部的任何用途,例如執行一組 Linux shell 命令、修補作業系統等。
Instructions
UI - Pre-PFMP (PowerFlex 4.x)
先決條件
必填 - 主指令檔位於 /opt/emc/scaleio/lia/bin/ 目錄 (具有執行權限)。
- 指令檔名稱必須為 patch_script
選填 - 驗證指令檔位於 /opt/emc/scaleio/lia/bin/ 目錄 (具有執行權限)。
- 指令檔名稱必須為 verification_script
> 僅有 Linux 支援此功能 (RHEL 與 SLES)。
>此功能會檢查在執行結束時結束代碼是否為 0 (零)。
>您可以在 LIA 記錄中找到結束代碼和指令檔執行。
>在使用閘道執行程序之前先測試 patch_script 和 verification_script 是客戶的責任。
> 功能位置:維護 → 系統記錄和分析 → 在主機上執行指令檔。
步驟和流程
執行指令檔於:
1.整個系統 - 所有 PowerFlex 節點
指令檔預設在第一個主機的保護網域 (PD) 上執行,然後再移至第二個,依此類推。
以並行方式在不同的保護網域上停用 - 預設為清除核取方塊。
已啟用「並行在不同的保護網域上」- 選取此選項後,patch_script 將以並行方式在所有 PD 上執行。
沒有 MDM 的 PD 最先執行,叢集節點最後執行。
2.保護網域 - 特定 PD
沒有 MDM 的 PD 最先執行,MDM 叢集節點最後執行。
3.故障集 - 特定 FS。
沒有 MDM 的 FS 最先執行,MDM 叢集節點最後執行。
4.SDS - 單一 SDS 節點
執行組態:
1.在指令檔失敗時停止程序。
1.1 已啟用「指令檔失敗時停止程序」- 預設為勾選此核取方塊。
當 patch_script (如果選取,則為 verification_script) 結束時,出現 0 (零) 以外的其他任何代碼,則整個執行將會失敗並停止。
1.2 已停用「在指令檔失敗時停止程序」。
當 patch_script 失敗時,該節點的執行將會失敗,系統將移至下一個節點,並在該節點上執行 patch_script。
2.指令檔逾時 - 等待 patch_script 完成需要多少時間?
執行指令檔具有可設定的逾時,該逾時由使用者選擇。
預設設定為 15 分鐘 → 由於錯誤,在 PowerFlex 3.6 之前的版本中,逾時已強制編碼為 15 分鐘。
指令碼執行逾時後,整個執行將會失敗並停止。
3.驗證指令檔 - 是否要在執行 patch_script 後執行 verification_script?
3.1 執行 - patch_script 將會執行,執行完成後,verification_script 將會根據 patch_script 後續動作是否為重新開機來執行 (區段 #4)。
3.2 不執行 - patch_script 將會執行,執行完成後,整個執行將會停止並成功完成。
4.後續指令檔動作 - 是否要在執行 patch_script 後將節點重新開機?
4.1 重新開機 - patch_script 完成執行並以代碼 0 (零) 結束後,節點將會重新開機,並根據是否選擇執行 verification_script 來停止或繼續 (區段 #3)。
如果閘道在要重新開機的節點上,它將不會重新開機,作業會成功,並會顯示快顯訊息提醒我們手動將其重新開機。
4.2 不重新開機 - 在 patch_script 完成執行並以代碼 0 (零) 結束後,節點將不會重新開機,並根據是否選擇執行 verification_script 來停止或繼續 (區段 #3)。
在主機上執行指令檔:
按下「在主機上執行指令檔」 -->驗證階段開始。
此階段會向節點的每個 LIA 傳送驗證 patch_script 與 verification_script (若選取) 檔案是否存在於以下位置的要求 /opt/emc/scaleio/lia/bin/。
代碼邏輯會選取要在其上執行之節點的隨機清單 (根據前述條件)。
開始執行階段:
按「開始執行階段」按鈕。
1.閘道會進行下列驗證:
a. 檢查是否沒有失敗的容量。
b.檢查有效的備用容量。
c.檢查有效的叢集狀態。
d.檢查是否沒有其他 SDS 處於維護模式。
2.使 SDS 進入維護模式。
3.執行 patch_script - 成功執行後,檔案會遭到刪除,並會在同一目錄上建立其備份檔案。
名稱為 backup_patch_script
4.將主機重新開機 (若選取)
5.執行 verification_script (若選取) - 成功執行後,檔案會遭到刪除,並會在同一目錄上建立其名為 backup_verification_script 的備份檔案。
6.使 SDS 結束維護模式。
7.作業已成功完成。
RESTAPI - Post-PFMP (PowerFlex 4.x)
- 在所有或部分系統節點上執行修補程式指令檔,並可選擇重新開機和選擇驗證指令檔。作業具有一定程度的並行性。
- 指令檔應儲存在節點的以下資料夾中:/opt/emc/scaleio/lia/bin 或者,它們可由 GW 上傳到節點。指令檔可從 GW 本機資料夾取得,或從 HTTP/HTTPS 共用下載。
- 可以提供 SdsIds 和/或 mdmIds 的清單,以明確選擇要在其上執行的節點。
- 檔案名稱是強制編碼的,無法變更:patch_script 與 verification_script
REST 命令
- /im/types/Configuration/actions/liaRunOsPatching
必需參數
- 下列任一參數為必填:pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- 在屬於以下保護網域 (PD Id) 一部分的所有節點上以十進位格式執行fsIds- 在屬於以下故障集 (FS Id) 一部分的所有節點上以十進位格式執行sdsIds- 在 Id 列出的所有 SDS 上以十進位格式執行mdmIds- 在 Id 列出的所有 MDM 上以十進位格式執行executeOnAllSdss- 在所有 SDS 上執行 (true/false)executeOnAllMdms- 在所有 MDM 上執行 (true/false)
選填參數
isRebootRequired- 每個節點是否應在執行修補程式指令檔後重新開機 (值:true/false)isVerificationScriptRequired- 是否應在每個節點上執行驗證指令檔 (值:true/false)isRunningInParallelOnPds- 作業是否應在屬於不同 PD 的節點上以並行方式執行 (值:true/false)isStopProcessingOnScriptFailure- 如果指令檔失敗,整個作業是否應該停止 (值:true/false)TimeoutMs- 執行修補程式指令檔的逾時 (以毫秒為單位)isUploadFileNeeded- GW 是否應將指令檔上傳到節點 (值:true/false)
以下欄位在以下情況時為相關 isUploadFileNeeded 為「true」:
patchScriptFilePath- 修補程式指令檔的本機資料夾名稱或 http/https URLverificationScriptFilePath- 驗證指令檔的本機資料夾名稱或 http/https URLmaintenanceModeType- 維護模式類型 (值:IMM/PMM)verificationScriptTimeoutSec- 驗證指令檔逾時 (以秒為單位)rebootTimeoutSec- 節點重新開機逾時 (以秒為單位)
請注意,在執行 liaRunOsPatching 命令之前,您應該先登入並取得系統組態,請參閱以下範例。
命令範例
*token 變數包含從 /auth/login 或 /api/gatewayLogin 傳回的 Keycloak 權杖。
**<ip-address> - 包含要執行之指令檔的 http 伺服器的 IP 位址
取得系統組態的 json,這將是修補程式命令的裝載 (必須手動將 liaPassword 和 mdmPassword 從 null 更換為某個字串)。
將此命令的輸出 (包含固定密碼) 插入 config.json 檔案:
curl -s -X POST -k -H "Content-Type: application/json" -d '{ "mdmIps":["1.2.3.4","5.6,7,8"], "mdmUser":"<mdm_username>", "mdmPassword":"<mdm_password>", "securityConfiguration":{ "allowNonSecureCommunicationWithMdm":"true", "allowNonSecureCommunicationWithLia":"true", "disableNonMgmtComponentsAuth":"false" } }' -H "Authorization: Bearer ${token}" https://<m&o-ip-address>/im/types/Configuration/instances
執行修補程式命令:
curl -v -k -X -i POST -H "Content-Type:application/json" -H "Authorization: Bearer ${token}"
"https:/<m&o-ip-address>/im/types/Configuration/actions/liaRunOsPatching?executeOnAllSdss=true &isRebootRequired=true&isVerificationScriptRequired=true&patchScriptFilePath=https://<ip-address>/patch_script&verificationScriptFilePath=https://<ip-address>/verification_script&maintenanceModeType=IMM&rebootTimeoutSec=30" -d @config.json
Additional Information
記錄
閘道:
- /opt/emc/scaleio/gateway/logs/scaleio.log
- /opt/emc/scaleio/gateway/logs/scaleio-trace.log
LIA:
/opt/emc/scaleio/lia/logs/trc.x
提示- 特殊交換器,可在故障診斷或測試時將指令檔保留在節點中:
- 編輯檔案 /opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.properties
- 找到欄位「ospatching.delete.scripts=false」
- 變更為 true 以進行故障診斷 (預設為 false)