Red Hat Training

A Red Hat training course is available for RHEL 8

第 20 章 删除存储设备

您可以从正在运行的系统中安全地删除存储设备,这有助于防止系统内存过载和数据丢失。

注意

在删除存储设备前,您必须确定您在 I/O 清除过程中因为系统内存负载增加而您有足够的可用内存。使用 vmstat 1 100 命令查看系统当前的内存负载。您还可以使用 free 命令查看系统可用内存。红帽不推荐在以下系统中删除存储设备:

  • 空闲内存低于内存总量的 5%,每 100 个超过 10 个样本。
  • 交换空间是活跃的(vmstat 命令输出中的非零 siso 列)。

20.1. 安全删除存储设备

从正在运行的系统安全地删除存储设备需要采用从顶层开始的顶层方法,通常是应用程序或文件系统,并面向底部(即物理设备)。

您可以通过多种方式使用存储设备,它们可以在物理设备上具有不同的虚拟配置。例如:您可以将虚拟设备配置为多路径设备,使其成为 RAID 的一部分,也可以使其成为 LVM 组的一部分。或者,可以通过文件系统访问设备,也可以直接访问设备(作为"raw"设备)。

从顶层工作,您必须确保您要删除的设备不在使用中,所有待处理设备的 I/O 都会清除,操作系统不会引用存储设备。

20.2. 删除块设备

您可以从正在运行的系统中安全地删除块设备,以帮助防止系统内存过载和数据丢失。

警告

重新扫描 SCSI 总线或执行更改操作系统状态的任何其他操作(不遵循此处记录的流程)可能会导致 I/O 超时、意外删除的设备或数据丢失而延迟。

先决条件

  • 如果您要删除多路径设备,且您无法访问其路径设备,请禁用多路径设备的队列:

    # multipathd disablequeueing map <multipath-device>

    这可让设备的 I/O 失败,允许使用该设备的应用程序关闭。

流程

  1. 确定没有其他应用程序或服务正在使用您要删除的设备。
  2. 备份您要删除的设备中的数据。
  3. 使用 umount 命令卸载在该设备中挂载的任何文件系统。
  4. md RAID 阵列或者它所属的 LVM 卷中删除该设备。例如:如果该设备是 LVM 组的成员,且它是一个多路径设备:

    1. 将数据移动到另一个设备中:

      # pvmove -b /dev/mapper/<from-multipath-device> /dev/mapper/<to-multipath-device>
    2. 从卷组中删除该设备:

      # vgreduce <volume-group> /dev/mapper/<from-multipath-device>
    3. (可选)从物理设备中删除 LVM 元数据:

      # pvremove /dev/mapper/<from-multipath-device>
  5. 如果您要删除多路径设备:

    1. 使用以下命令查看该设备的所有路径:

      # multipath -l

      稍后需要这个命令的输出。

    2. 清除 I/O 并删除多路径设备:

      # multipath -f <multipath-device>
  6. 如果该设备没有配置为多路径设备,或者该设备被配置为多路径设备,且您之前已将 I/O 传递给其单独的路径,则清除所有未完成的 I/O 到所有使用的设备路径:

    # blockdev --flushbufs <device>

    这对于 umountvgreduce 命令没有清除 I/O 时,对设备的直接访问很重要。

  7. 如果您要删除 SCSI 设备,请完成以下步骤:

    1. 删除对设备路径名称的任何引用,例如: /dev/sd/dev/disk/by-path 或者 major:minor 号、系统中的应用程序、脚本或者工具。这样可保证以后添加的不同设备不会为当前的设备错误。
    2. 从 SCSI 子系统中删除该设备的每个路径:

      # echo 1 > /sys/block/<device-name>/device/delete

      其中,<device-name> 是从第 5 步的 multipath -l 命令的输出中获得,如果设备以前作为多路径设备使用。

  8. 删除物理设备形成运行的系统。请注意,当您删除此设备时,I/O 到其它设备不会停止。

其它资源

  • multipathpvmovevgreduce blockdev、和 umount man page。