管理驱动器
前提条件
驱动器
添加驱动器
DirectPV 必须能够访问驱动器才能配置卷。 这涉及两个步骤:
-
运行
discover命令。The
discovercommand probes for eligible drives from DirectPV nodes and stores drive information in a YAML file. 检查生成的 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命令。The
init命令创建一个请求,将选中的驱动器添加到使用该命令生成的YAML文件中discover上一步中的命令。此过程将清除所选驱动器上的所有数据。 错误的驱动器选择将导致永久性数据丢失。
在运行此命令前,请修改YAML文件将不需要的驱动器标记为
no对于select字段。以下是一个示例:
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 │
└────────┴──────┴──────┴─────────┴─────────┴─────────┴────────┘
参考列出驱动器命令更多信息。
Label drives
驱动器被标记以设置自定义标签,这些标签可用于卷配置。
# Set label 'tier' key to 'hot' value.
$ kubectl directpv label drives tier=hot
# Remove label 'tier'.
$ kubectl directpv label drives tier-
设置完成后,使用标签来安排驱动器.
参考标签驱动命令更多信息。
更换驱动器
在同一节点上用新驱动器替换故障驱动器。 在此过程中,故障驱动器中的所有卷都将迁移到新驱动器,然后该故障驱动器将从 DirectPV 中移除。 目前,DirectPV 不支持将卷上的数据迁移到新驱动器。 使用replace.sh执行驱动器更换的脚本。
以下是一个示例:
# Replace 'sdd' drive by 'sdf' drive on 'node1' node
$ replace.sh node1 sdd sdf
移除驱动器
不包含任何卷的驱动器可以被移除。
# Remove drive 'vdb' from 'node1' node
$ kubectl directpv remove --drives=vdb --nodes=node1
参考remove 命令更多信息。
修复驱动器
DirectPV 支持使用xfs_repair用于尝试修复报告XFS文件系统错误、故障或损坏的托管驱动器的实用工具。
此命令不保证能够成功或完全恢复数据。
Therepaircommand 创建一次性 KubernetesJob使用 Pod 名称作为repair-<DRIVE-ID>Kubernetes 在作业完成后五分钟自动删除此作业。
可以使用以下命令查看驱动器修复的进度和状态kubectl log命令。
在开始维修之前,您必须首先暂停驱动器.
使用repair.sh修复故障驱动器的脚本。
暂停驱动器
根据Kubernetes的设计,一个StatefulSetworkload 只有在所有 pod 都处于运行状态时才处于活动状态。 故障驱动器会阻止 StatefulSet 启动。
DirectPV 提供了一种挂起故障驱动器的工作方法,该方法会在空路径上挂载相应的卷/var/lib/directpv/tmp具有只读访问权限的目录。
这可以通过执行挂起驱动器命令。
kubectl directpv suspend drives af3b8b4c-73b4-4a74-84b7-1ec30492a6f0
一旦修复完成,通过恢复驱动器即可返回正常驱动功能。 恢复后,对应卷将恢复使用各自分配的驱动器。 这可以通过使用恢复驱动器命令。
kubectl directpv resume drives af3b8b4c-73b4-4a74-84b7-1ec30492a6f0