管理磁碟機
先決條件
-
運作中的 DirectPV 外掛程式。
若要安裝外掛程式,請參閱外掛程式安裝指南。
-
在 Kubernetes 中運作的 DirectPV CSI 驅動程式。
若要安裝驅動程式,請參閱驅動程式安裝指南。
磁碟機
新增磁碟機
DirectPV 必須有權存取磁碟機才能配置卷冊。這涉及兩個步驟的流程
-
執行
discover
命令。discover
命令會探查 DirectPV 節點中符合條件的磁碟機,並將磁碟機資訊儲存在 YAML 檔案中。檢查產生的 YAML 檔案,並將您要新增的每個磁碟機的select
欄位設定為yes
。如果您不想新增特定磁碟機,請將其select
值設定為no
。DirectPV 預設會將所有已探索到的磁碟機的
select
欄位設定為yes
。您必須手動取消選取 DirectPV 不應格式化和使用的任何已探索到的磁碟機。仔細檢閱產生的 YAML 檔案。以下是
discover
命令的範例# Probe and save drive information to drives.yaml file. $ kubectl directpv discover Discovered node 'master' ✔ Discovered node 'node1' ✔ ┌─────────────────────┬────────┬───────┬─────────┬────────────┬──────┬───────────┬─────────────┐ │ ID │ NODE │ DRIVE │ SIZE │ FILESYSTEM │ MAKE │ AVAILABLE │ DESCRIPTION │ ├─────────────────────┼────────┼───────┼─────────┼────────────┼──────┼───────────┼─────────────┤ │ 252:16$ud8mwCjPT... │ master │ vdb │ 512 MiB │ - │ - │ YES │ - │ │ 252:16$gGz4UIuBj... │ node1 │ vdb │ 512 MiB │ - │ - │ YES │ - │ └─────────────────────┴────────┴───────┴─────────┴────────────┴──────┴───────────┴─────────────┘ Generated 'drives.yaml' successfully. # Show generated drives.yaml file. $ cat drives.yaml version: v1 nodes: - name: master drives: - id: 252:16$ud8mwCjPTH8147TysmiQ2GGLpffqUht6bz7NtHqReJo= name: vdb size: 536870912 make: "" select: "yes" - name: node1 drives: - id: 252:16$gGz4UIuBjQlO1KibOv7bZ+kEDk3UCeBneN/UJdqdQl4= name: vdb size: 536870912 make: "" select: "yes"
-
執行
init
命令。init
命令會建立一個要求,以新增上一步中使用discover
命令產生的 YAML 檔案中所選取的磁碟機。此流程會清除所選磁碟機上的所有資料。不正確的磁碟機選取會導致永久性資料遺失。
在執行此命令之前,請修改 YAML 檔案,將任何不想要的磁碟機標記為
select
欄位的no
。以下是
init
命令的範例$ kubectl directpv init drives.yaml ███████████████████████████████████████████████████████████████████████████ 100% Processed initialization request 'c24e22f5-d582-49ba-a883-2ce56909904e' for node 'master' ✔ Processed initialization request '7e38a453-88ed-412c-b146-03eef37b23bf' for node 'node1' ✔ ┌──────────────────────────────────────┬────────┬───────┬─────────┐ │ REQUEST_ID │ NODE │ DRIVE │ MESSAGE │ ├──────────────────────────────────────┼────────┼───────┼─────────┤ │ c24e22f5-d582-49ba-a883-2ce56909904e │ master │ vdb │ Success │ │ 7e38a453-88ed-412c-b146-03eef37b23bf │ node1 │ vdb │ Success │ └──────────────────────────────────────┴────────┴───────┴─────────┘
如需更多詳細資訊和選用參數,請參閱discover 命令和init 命令。
列出磁碟機
若要從 DirectPV 取得磁碟機的相關資訊,請執行 list drives
命令。
$ kubectl directpv list drives
┌────────┬──────┬──────┬─────────┬─────────┬─────────┬────────┐
│ NODE │ NAME │ MAKE │ SIZE │ FREE │ VOLUMES │ STATUS │
├────────┼──────┼──────┼─────────┼─────────┼─────────┼────────┤
│ master │ vdb │ - │ 512 MiB │ 506 MiB │ - │ Ready │
│ node1 │ vdb │ - │ 512 MiB │ 506 MiB │ - │ Ready │
└────────┴──────┴──────┴─────────┴─────────┴─────────┴────────┘
請參考 list drives 命令 以取得更多資訊。
標記磁碟機
磁碟機會被標記以設定自訂標籤,這些標籤可用於配置磁碟區。
# Set label 'tier' key to 'hot' value.
$ kubectl directpv label drives tier=hot
# Remove label 'tier'.
$ kubectl directpv label drives tier-
設定後,請使用標籤來排程磁碟機。
請參考 label drives 命令 以取得更多資訊。
更換磁碟機
在同一個節點上,使用新的磁碟機更換故障的磁碟機。在此過程中,故障磁碟機上的所有磁碟區都會移至新的磁碟機,然後將故障的磁碟機從 DirectPV 中移除。目前,DirectPV 不支援將磁碟區上的資料移至新的磁碟機。請使用 replace.sh 腳本來執行磁碟機更換。
以下為範例
# Replace 'sdd' drive by 'sdf' drive on 'node1' node
$ replace.sh sdd sdf node1
移除磁碟機
不包含任何磁碟區的磁碟機可以被移除。
# Remove drive 'vdb' from 'node1' node
$ kubectl directpv remove --drives=vdb --nodes=node1
請參考 remove 命令 以取得更多資訊。
修復磁碟機
DirectPV 支援使用 xfs_repair
工具來嘗試修復回報 XFS 檔案系統錯誤、故障或損毀的受管理磁碟機。此命令無法保證成功或完全復原。
repair
命令會建立一個名為 repair-<DRIVE-ID>
的一次性 Kubernetes Job
,其中 pod 名稱會是此名稱。Kubernetes 會在完成後五分鐘自動移除此 Job。
可以使用 kubectl log
命令檢視磁碟機修復的進度和狀態。
在開始修復之前,您必須先暫停磁碟機。
使用 repair.sh 腳本來修復故障的磁碟機。
暫停磁碟機
根據 Kubernetes 設計,只有在其所有 pod 都處於執行狀態時,StatefulSet 工作負載才會處於活動狀態。故障的磁碟機將會阻止 StatefulSet 啟動。
DirectPV 提供一種解決方案來暫停故障的磁碟機,該方案會將各自的磁碟區掛載在空的 /var/lib/directpv/tmp
目錄上,並且僅具有唯讀存取權。這可以透過執行 suspend drives 命令來完成。
kubectl directpv suspend drives af3b8b4c-73b4-4a74-84b7-1ec30492a6f0
修復後,請恢復磁碟機以回到正常的功能。恢復後,對應的磁碟區將返回使用各自配置的磁碟機。這可以使用 resume drives 命令來完成。
kubectl directpv resume drives af3b8b4c-73b4-4a74-84b7-1ec30492a6f0