`wipefs` 是否需要 --force 来擦除磁盘上的分区表?

`wipefs` 是否需要 --force 来擦除磁盘上的分区表?

手册wipefs页说:

-f, --force 强制擦除,即使文件系统已安装。 这是擦除块设备上的分区表签名所必需的

所以这意味着每次我想覆盖块设备上的分区表签名时,我都需要添加-f.

在手册页的后面,给出的用法示例之一是:

wipefs --all --backup /dev/sdb 删除所有签名从设备 /dev/sdb 并~/wipefs-sdb-<offset>.bak为每个签名创建一个签名备份文件。

因此,这个示例覆盖了块设备的所有签名,显然包括分区表签名。根据前面所说,这是行不通的,因为它不包括-f.

现在不知道用-f还是不用。当尝试擦除时全部来自磁盘的签名,包括分区表,是否--force需要该选项?

答案1

我同意手册页的措辞似乎不清楚或具有误导性。选项之前的最后一段文字指出:

请注意,默认情况下,wipefs 不会清除非整个磁盘设备上的嵌套分区表。为此,需要使用选项 --force。

在这里,他们谈论的是非整个磁盘设备,其措辞与-f您所包含的选项下的文本不同。

--force 既不是必需的,也不足以擦除“所有”分区数据

鉴于尚不清楚,我使用以下方案做了一些擦除分区表数据的测试:

  1. 在设备(闪存驱动器)上创建 MBR 分区表
  2. 创建单个分区
  3. 在分区上放置一个 vfat 文件系统,并给该文件系统一个标签。
  4. wipefs使用各种参数擦除分区表数据
  5. 检查结果:这包括wipefs操作期间的输出、设备的输出lsblk以及在 中打开设备的结果cfdisk。此外,cfdisk在设备上重新创建相同的分区表和分区后,观察重新创建的分区是否具有旧标签。

结论:

  1. 通过这种简单的分区方案,并且在卸载分区的情况下,强制选项对wipefs在设备(而不是分区)上运行时被擦除的数据没有影响。也就是说,无论是运行wipefs -a /dev/sdX还是wipefs -af /dev/sdX,分区表都会从设备中擦除。但是在 中重新创建分区表时cfdisk,会找到旧标签并将其应用于新分区。因此分区表被擦除,但分区本身的数据没有被擦除。其运行期间的输出wipefs与此一致。

  2. 实际删除全部分区的数据以及设备的分区表,在列出设备之前必须显式列出所有分区。手册页在第三段文本的示例中对此给出了提示(我已将其 sdc 更改为 sdX,以防止复制/粘贴到终端期间发生任何意外):

    wipefs -a /dev/sdX1 /dev/sdX2 /dev/sdX
    

    或者,让 shell 使用通配符表达式填充值:

    wipefs -a /dev/sdX? /dev/sdX
    

    这将成功删除设备中的所有分区数据以及分区表本身。

相关内容