管理驱动器

前提条件

驱动器

添加驱动器

DirectPV 必须能够访问驱动器才能配置卷。 这涉及两个步骤:

  1. 运行discover命令。

    Thediscovercommand 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"
    
  2. 运行init命令。

    Theinit命令创建一个请求,将选中的驱动器添加到使用该命令生成的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