PowerFlex: GET_INFO - 支援套裝集合公用程式
Résumé: 「get_info.sh」會從 PowerFlex 主機收集診斷資訊 並建立壓縮的支援套裝
Instructions
“get_info.sh” [選項]
說明
「get_info.sh」是診斷公用程式,可從 PowerFlex (先前稱為 ScaleIO) 主機收集偵錯資訊。它會將收集到的資料壓縮成壓縮套裝,以供支援人員進行分析。
此公用程式會從多個來源收集資料,包括:
- PowerFlex 元件記錄、組態和追蹤檔案
- MDM/SCLI 查詢輸出和內部除錯傾印
- PowerFlex 元件內部診斷
- 作業系統組態、紀錄和執行時狀態
- 硬體清查 (儲存控制器、網路裝置、NVMe、NVDIMM 等)。
- 核心轉儲(現有和選擇性按需生成)
- 診斷資料收集器 (以下簡稱「diag_coll」) 統計資料
產生的套裝是單一壓縮歸檔 (預設為 tar/gz),可傳輸至 PowerFlex 支援,以進行進一步分析。
在指定的時間,主機上只能執行一個「get_info.sh」例項如果沒有足夠的可用空間供其輸出使用,它將拒絕運行(除非顯式跳過空間檢查)。
選項
一般選項
-
-a, --all
收集所有資料。這等同於指定「--mdm-repository」、「--collect-cores」、「--max-cores=2」、「--valgrind-cores」和「--analyse-diag-coll」。 -
-A, --analyse-diag-coll
分析診斷資料收集器 (以下稱「diag coll」) 資料 -
-b[COMPONENTS]、--collect-cores[=COMPONENTS]
收集以空格分隔的使用者土地「元件」清單的現有核心轉儲。預設值(省略“元件”時):所有使用者用地元件注意:「-b」和「元件」之間不能有空格。對於長格式,請用 = 分隔範例
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR、--output-dir=OUT_DIR
將產生的套裝儲存在目錄「OUT_DIR.“ 預設值:「<WORK_DIR>/scaleio-getinfo」(請參閱「--work-dir」)。 -
-f、--skip-mdm-login
略過 PowerFlex MDM 登入認證查詢。若使用者已手動登入,則很實用。 -
-h、--help
顯示說明訊息並退出。與「--tech」結合使用時,還會顯示技術人員選項。 -
-J、--xz
對收集的套裝使用「tar/xz」格式,而非預設的「tar/gz」。如果系統的「tar(1)」不支援「--use-compress-program」或找不到「xz(1)」,則忽略。 -
-k NUM、--max-cores=NUM
從每個元件收集最多「NUM」核心檔。預設值:All core files,代表「--collect-cores」 -
-l、--light
生成輕量束。僅收集最新一代的編號日誌檔,並且在收集核心時不包括元件可執行檔或庫。使用此選項會降低支援性,因此不鼓勵使用此選項。 -
-m NUM、--max-traces=NUM
從每個元件收集最多「NUM」個 PowerFlex 追蹤檔案。預設值:所有檔案 -
-N、--skip-space-check
在收集資料之前,略過可用磁碟空間驗證。 -
-P PATH、--collect-path=PATH
收集附加路徑「PATH」。僅接受絕對路徑。接受萬用字元;應使用萬用字元引出。可以多次指定此選項以收集多個路徑。 -
-q、--quiet、--silent
隱藏標準輸出的消息。 -
-r、--mdm-repository
收集 MDM 儲存庫檔案。 -
-s、--skip-sdbg
跳過收集 SDBG (診斷偵錯器) 輸出。 -
-S、--pause-core-generation
在資料收集期間暫停 PowerFlex 元件的核心世代。收集完成後,即會還原原始組態。 -
-w WORK_DIR、--work-dir=WORK_DIR
為暫存檔案使用目錄「WORK_DIR」。預設值:/tmp。 -
-x FILE、--output-file=FILE
將收集到的套裝儲存為名為「FILE」的檔案系統會自動新增適當的檔案名稱尾碼 (「.tgz」、「.zip」等)。如果「FILE」為「-」(破折號),請將套裝寫入標準輸出 (代表「--quiet」)。當套裝寫入標準輸出時,磁碟上不會建立套裝檔案。預設值:getInfoDump。 -
-z、--zip
對收集的套裝使用「zip」格式,而非預設的「tar/gz」。如果在系統上找不到「zip(1)」,則忽略。 -
--mdm-port=PORT
使用連接埠「PORT」以取得 SCLI 命令,連線至 MDM。預設值:scli 預設行為。 -
--overwrite-output-file
若輸出檔案已存在,請加以覆寫。當顯式指定輸出檔或目錄(使用“-x”或“-d”)時,默認行為是拒絕覆蓋;此選項將覆蓋該選項。 -
--tech
在說明訊息輸出中包含技術人員選項。
MDM 登入選項
以下選項會傳遞至 SCLI「--login」命令。其行為和預設值由 SCLI 控制。
-
-n、--use-nonsecure-communication
以不安全模式連線至 MDM。 -
-p PASSWORD、--password=PASSWORD
使用「PASSWORD」登入 PowerFlex MDM 登入。預設值:SCLI 預設行為 -
-u USERNAME、--username=USERNAME
使用 「USERNAME」登入 PowerFlex MDM 登入。預設值:SCLI 預設行為 -
--ldap-authentication
使用 LDAP 型驗證登入 PowerFlex MDM。 -
--management-system-ip=ADDRESS
連線至位於「ADDRESS」的「SSO/M&O」以進行 PowerFlex 登入。預設值:SCLI 預設行為 -
--p12-password=PASSWORD
使用「密碼」加密 PowerFlex 登入的「PKCS#12」檔案。預設值:SCLI 預設行為 -
--p12-path=FILE
將 PowerFlex 登入「PKCS#12」檔案儲存為「FILE」。預設值:SCLI 預設行為
技術人員選項
下列選項僅供支援技術人員使用,且只有在指定「--tech」時才會顯示在說明訊息中。
-
-c[COMPONENTS]、--generate-cores[=COMPONENTS]
為以空間分隔的使用者空間「元件」清單的運行進程生成核心檔(使用“gcore(1)”)。預設:所有使用者土地元件代表「--collect-executables」,且需要「gdb」和「gcore」。注意:「-c」和「元件」之間不能有空格。對於長格式,請使用“=”分隔。範例:
-c'mdm sds' --generate-cores='mdm sds'
-
-C CORE_FILE、--reference-core-file=CORE_FILE
收集與「CORE_FILE」的上次修改時間 (以下稱「mtime」) 相關的產品記錄和核心,而非執行開始時間。代表「--collect-cores」 -
-E REF_TIME、--event-time=REF_TIME
收集與「REF_TIME」 相對的產品記錄和核心,而非執行開始時間。接受“date(1)”理解的任何格式。代表「--collect-cores」。 -g[COMPONENTS]、--valgrind-cores[=COMPONENTS]
收集指定使用者土地「元件」的「valgrind」核心傾印。預設值:所有用戶用地元件。代表「--collect-executables」。注意:「-b」和「元件」之間不能有空格。對於長格式,請使用“=”分隔範例:
-g'mdm sds' --valgrind-cores='mdm sds'
-
-t MIN、--minutes-before-event=MIN
收集在參考時間前最多「MIN」分鐘產生的產品記錄和核心。預設值:15 -
-T MIN、--minutes-after-event=MIN
收集產品記錄和在參考時間後最多「最小」分鐘產生的核心。預設值:5 -
-X[COMPONENTS]、--collect-executables[=COMPONENTS]
收集指定用戶空間「元件」的元件可執行檔及其共用庫。預設值:所有使用者用地元件注意:「-b」和「元件」之間不能有空格。對於長格式,請使用“=”分隔範例:
-X'mdm sds' --collect-executables='mdm sds'
-
--keep-work-dir
在捆綁包創建後保留生成的臨時工作目錄(自動清理)。
套裝結構
輸出套裝是單一壓縮封存。
- 套裝頂層目錄是所收集系統的主機名稱。
- 一般主機命令輸出會進入「server/」子目錄。
檔案名稱為「<命令> + <引數> + 尾碼 (預設為.txt)。」 空格取代為「_」,去掉非英數字元的去線
範例:server/ip_-s_addr.txt- 輸出「IP -s 位址」 - 產品命令輸出進入元件的子目錄。「mdm/」代表「scli」、「sdc/」代表「drv_cfg」等等。
命令名稱 (「scli」、「drv_cfg」等) 會被移除。第一個 有意義的 參數成為檔名。默認情況下,檔被指定為相關後綴“.txt”。
例如:mdm/query_cluster.txt- 輸出「SCLI --query_cluster」mdm/tgt_dump.txt- 輸出「SCLI --debug_action --tgt_dump」sdc/query_mdms.txt- 輸出“drv_cfg --query_mdms”sds/sdbg.txt- SDSS的SDBG「傾倒螢幕」的輸出
- 產品元件檔案 (相對於命令輸出)、「<component>/cfg」、「<component>/logs」等
從元件目錄中複製而來,並去除首碼。
例如:mdm/cfg/conf.txt- “/opt/emc/scaleio/mdm/cfg/conf.txt”的副本sds/logs/trc.0- “/opt/emc/scaleio/sds/logs/trc.0”的複本
- 主機檔案系統檔案放置在其檔案系統路徑中,以相對於套裝根目錄。
例如:etc/os-release- “/etc/os-release”的副本var/log/messages- 複製「/var/log/messages」proc/cpuinfo- “/proc/cpuinfo”的副本
- 複製診斷收集器 (diag_coll) 檔案時會去除「/opt」前置詞,以保留內部結構。
範例:diag_coll/logs/sar.0- “/opt/diag_coll/logs/sar.0”的副本 - 隱藏檔(點前綴)通過刪除前導點來“取消隱藏”。
- 實用程式執行日誌,
get_info_run.log,直接放置在主機名>/根目錄下<
套裝目錄樹狀結構:
<hostname>/ |-- get_info_run.log Utility execution log |-- server/ General command output directory | |-- ip_-s_addr.txt | |-- uptime.txt | |-- uname_-a.txt | |-- ps_-elF.txt | |-- dmesg.txt | +-- ... (one file per collected command) | |-- mdm/ PowerFlex component data (if installed) | |-- cfg/ Configuration files (excl. PEM) | |-- logs/ Trace and log files | |-- rep/ Repository (if --mdm-repository) | |-- query_all.txt SCLI query outputs | |-- sdbg.txt SDBG screen dumps | +-- ... |-- sds/ |-- pds/ |-- dgwt/ |-- sdr/ |-- sdt/ |-- lia/ |-- sdc/ |-- gateway/ | |-- diag_coll/ Diagnostic data collector (if installed) | |-- logs/ | |-- cfg/ | +-- ... | |-- etc/ Host files | |-- os-release | |-- sysconfig/ | |-- network/ | +-- ... |-- var/ | |-- log/ | | |-- messages | | +-- ... | +-- ... |-- proc/ | |-- cpuinfo | |-- meminfo | +-- ... |-- sys/ |-- ... | |-- scaleio-getinfo-extra/ Extra diagnostic data (if present) +-- scaleio-getinfo-backup/ Backed-up configuration files (if any)
產品記錄與核心檔案篩選
本節中介紹的選項控制如何選擇 產品日誌檔 (也稱為跟蹤檔,例如“trc.0”、“trc.1”、“exp.0”)和 核心轉儲檔 以包含在收集的捆綁包中。他們通過定義 參考時間、周圍的 時間視窗 和 計數限制來做到這一點。
如果未指定篩選選項,則會收集所有產品日誌檔和(如果啟用了核心收集)所有核心轉儲檔。篩選選項會逐漸縮小此選擇範圍,如下所述。
參考時間
您可以使用「-E/--event-time」或「-C/--reference-core-file」來設定參考時間。
如果既沒有給出“--event-time”也沒有給出“--reference-core-file”,則不執行時間窗口篩選:參考時間預設為當前時間,並且僅在計數限制(“-m”或“-k”)生效時用於基於鄰近的排序(請參閱下面的計數限制)。
如果同時出現“-E”和“-C”,則命令行上的最後一項將生效。
時間視窗
當設置參考時間(使用“--event-time”或“--reference-core-file”)時,會圍繞它建立一個時間視窗。可以使用“-t/--minutes-before-event”和/或“-T/--minutes-after-event”來設置時間範圍,預設分別為15分鐘和5分鐘。只有內容與此視窗重疊的檔才有資格收集。
例如,“-E ”2020-03-20 14:30“ -t 10 -t 3” 收集涵蓋 14:20:00 到 14:33:00 期間的檔。
當「--event-time」和「--reference-core-file」皆未指定時,會忽略「--minutes-before-event」和「--minutes-after-event」。
計數限制
您可以針對記錄檔和核心檔案分別使用「-m/--max-traces」和「-k/--max-cores」來設定檔案計數限制。此限制是以每個元件來測量。
當時間視窗內的檔多於 NUM 時(如果沒有處於活動狀態的視窗,則這些檔可用),則會收集最接近參考時間的 NUM 檔。
當使用計數限制而不使用“--event-time”或“--reference-core-file”時,所有檔都是候選項(沒有時間視窗),並選擇最新的 NUM 。
濾波邏輯
檔案篩選首先應用於時間範圍,然後是計數限制:
- 建立候選人。枚舉元件的所有產品日誌檔和/或核心轉儲檔。
- 派生內容時段。產品日誌文件內容表示一個時間段。內容期限被視為從其前置任務的最後一個修改時間(“mtime”)或 UNIX 紀元開始,此時不存在前置任務;它以檔自己的“mtime”結束。核心轉儲檔表示一個時間點,即檔的“mtime”。
- 套用時間範圍 (若指定「-E」或「-C」)。內容完全超出視窗的檔將從選擇中丟棄。對於產品日誌檔,如果視窗中 沒有 檔,則會保留最接近該視窗的單個檔,以便元件的捆綁包永遠不會為空。對於核心轉儲檔,此類回退不適用。
- 套用計數限制 (若指定「-m」和/或「-k」)。在其餘檔中,最多選擇“NUM”,首選最接近參考時間的檔。參考時間之前和之後的檔均等競爭選擇。
身份驗證
如果偵測到主要 MDM 程序在預期的連接埠上接聽,公用程式會嘗試登入本機 MDM (預設:6611)
MDM 登入選項會傳遞至 SCLI「--login」命令,並由其處理。
如果登入失敗,公用程式會終止並顯示錯誤。
略過登入時,仍會嘗試 SCLI 命令(以支援使用者事先手動登入的情況)。在三次 SCLI 故障後,會顯示警告,並跳過所有進一步的 SCLI 命令。
下列情況會 略 過登入:
- 在本機主機上找不到主要 MDM 程序。
- 指定「--skip-mdm-login」選項。
登入在下列 情況失敗 :
- MDM 進程擁有者不在授權使用者清單中(預設:“root”),並且已啟用安全登錄。
- SCLI「--login」命令傳回錯誤 (例如,錯誤的登入資料)。
磁碟空間
暫存檔案和產生的套裝的磁碟空間需求可能會有很大差異。
公用程式會嘗試將暫時空間的使用降至最低;它僅限於命令輸出和收集的虛擬檔案系統(“/proc”和“/sys”)檔的副本。
套裝可使用「--output-file=-」從遠端主機串流,以有效減少 PowerFlex 主機上的磁碟空間使用量。包檔在流式傳輸時直接寫入標準輸出(「標準輸出」);它不是在磁碟上創建的。
該實用程式在收集數據之前估計臨時工作目錄和輸出捆綁包所需的磁碟空間。
如果估計的所需空間超過相關文件系統上的可用空間,則實用程式將終止並顯示錯誤。可以使用「--skip-space-check」來略過此檢查。
工作目錄和輸出目錄可能位於不同的文件系統上;每個選項皆會獨立檢查。
預估的空間需求會寫入公用程式的紀錄檔「get_info_run.log」。
離開狀態
| 0 | 順利完成 |
| 1 | 錯誤 (無效的引數、空間不足、登入失敗、另一個例項已在執行、套裝產生失敗、訊號擷取等) |
檔案
<WORK_DIR>/get_info_run.log |
執行紀錄(也在捆綁包中) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
臨時工作目錄(成功時清理) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
預設輸出套裝位置 |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
選擇額外的診斷資料目錄 |
/tmp/scaleio-getinfo-backup/ |
已修改組態檔案的暫存備份 (自動建立) |
/opt/emc/scaleio/ |
PowerFlex 安裝目錄 |
環境
事前準備作業
- 公用程式必須以「root」身分執行 (或具有讀取元件檔案、執行診斷命令及存取「/proc」、「/sys」等足夠權限的使用者)。
- 標準公用程式:
tar、gzip、stat、find、awk、sed、getopt(1)(增強),nice. - 選用:
zip(對於“--zip”),xz(對於“--xz”),gdb/gcore(適用於「--generate-cores」)
併發
一次只能執行一個「get_info.sh」例項該實用程式使用「pidof(1)」檢查現有運行中的實例,並在找到實例時終止。
訊號處理
公用程式會在資料收集期間設陷「INT」、「EXIT」及「TERM」訊號。收到信號后,它:
- 還原任何備份的配置檔(例如,核心生成設置)。
- 清理暫存目錄
- 狀態為 1 的結束
將保留執行日誌,並將其路徑列印為標準錯誤。
範例
收集標準支援套裝:
get_info.sh
透過 SSH 連線串流套裝,而不在遠端 PowerFlex 主機上建立套裝檔案:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
使用不同的工作目錄以避免填滿「/tmp」:
get_info.sh --work-dir=/var/tmp
在套裝中包含自訂路徑:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
僅收集 SDS 和 MDM 元件的最新核心傾印:
get_info.sh --collect-cores='mdm sds' --max-cores=1
以核心檔案的修改時間為中心收集資料,並具有自訂時間視窗:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2