23.2. 删除块设备和相关的元数据


要从正在运行的系统中安全地删除块设备,以防止系统内存过载和数据丢失,您需要首先从它们中删除元数据。从文件系统开始,处理堆栈中的每一层,然后继续处理磁盘。这些操作可防止将您的系统置于不一致的状态。

根据您要删除的设备类型,使用的特定命令可能有所不同:

  • lvremovevgremovepvremove 特定于 LVM。
  • 对于软件 RAID,请运行 mdadm 以删除阵列。如需更多信息,请参阅 管理 RAID
  • 对于使用 LUKS 加密的块设备,有特定的额外步骤。以下流程对于使用 LUKS 加密的块设备不适用。如需更多信息,请参阅 使用 LUKS 加密块设备
警告

重新扫描 SCSI 总线或执行更改操作系统状态的其他操作,而无需遵循这个流程,因为 I/O 超时、设备被意外删除或数据丢失。

先决条件

  • 您有一个现有的包含文件系统、逻辑卷和卷组的块设备堆栈。
  • 您确保没有其他应用程序或服务正在使用您要删除的设备。
  • 备份您要删除的设备中的数据。
  • 可选:如果要删除多路径设备,且您无法访问其路径设备,请运行以下命令禁用多路径设备的队列:

    # multipathd disablequeueing map multipath-device

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

注意

一次一层地删除设备及其元数据可确保不会在磁盘上保留过时的签名。

流程

  1. 卸载文件系统:

    # umount /mnt/mount-point
  2. 删除文件系统:

    # wipefs -a /dev/vg0/myvol

    如果您已在 /etc/fstab 文件中添加了一个条目,以便在文件系统和挂载点之间建立持久关联,请在此时编辑 /etc/fstab 以删除该条目。

    根据您要删除的设备类型,继续执行以下步骤:

  3. 删除包含文件系统的逻辑卷(LV):

    # lvremove vg0/myvol
  4. 如果卷组中没有其他的逻辑卷(VG),您可以安全地删除包含该设备的 VG:

    # vgremove vg0
  5. 从 PV 设备中删除物理卷(PV)元数据:

    # pvremove /dev/sdc1
    # wipefs -a /dev/sdc1
  6. 删除包含 PV 的分区:

    # parted /dev/sdc rm 1
  7. 如果要完全擦除该设备,请删除分区表:

    # wipefs -a /dev/sdc
  8. 只有在您要物理删除该设备时才执行以下步骤:

    • 如果您要删除多路径设备,请执行以下命令:

      1. 查看该设备的所有路径:

        # multipath -l

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

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

        # multipath -f multipath-device
    • 如果该设备没有配置为多路径设备,或者设备配置为多路径设备,并且您之前将 I/O 传递给单个路径,请将任何未完成的 I/O 刷新到所有使用的设备路径:

      # blockdev --flushbufs device

      对于直接访问的设备非常重要,umountvgreduce 命令不会清除 I/O。

    • 如果您要删除 SCSI 设备,请执行以下命令:

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

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

        此处,如果设备之前被用作多路径设备,则 device-name 可从 multipath -l 命令的输出中检索到。

  9. 从正在运行的系统中删除物理设备。请注意,当您删除此设备时,I/O 到其它设备不会停止。

验证

  • 验证您要删除的设备是否没有在 lsblk 命令的输出中显示。以下是一个输出示例:

    # lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0    5G  0 disk
    sr0     11:0    1 1024M  0 rom
    vda    252:0    0   10G  0 disk
    |-vda1 252:1    0    1M  0 part
    |-vda2 252:2    0  100M  0 part /boot/efi
    `-vda3 252:3    0  9.9G  0 part /

其他资源

  • multipath (8), pvremove (8), vgremove (8), lvremove (8), wipefs (8), parted (8), blockdev (8)umount (8) man pages
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.