pvcreate:无法使用/dev/sda:设备已分区

pvcreate:无法使用/dev/sda:设备已分区

我目前正在安装 arch linux,当我尝试创建物理卷时,它给了我这个错误。

Can not use /dev/sda: device is partitioned

这个错误是什么?我该如何消除它?

PS:我已经格式化了磁盘mkfs.ext4 /dev/sda

答案1

在我的第一次尝试中,pvcreate -ff /dev/vdh无论磁盘是否包含分区,都对我不起作用。

pvcreate -ff /dev/vdh
Cannot use /dev/vdh: device is partitioned

我必须wipefs先使用它来删除所有元数据。

root@nextcloud:~ # wipefs --all --backup /dev/vdh
/dev/vdh : 8 bytes were erased at index 0x00000200 (gpt) : 45 46 49 20 50 41 52 54
/dev/vdh : 8 bytes were erased at index 0x9c3fffffe00 (gpt) : 45 46 49 20 50 41 52 54
/dev/vdh : bytes were erased at index 0x000001fe (PMBR) : 55 aa
/dev/vdh : ioctl call to reread partition table: Success

然后就可以正确执行卷的创建:

pvcreate -ff /dev/vdh
Physical volume "/dev/vdh" successfully created.

可能是我走得太快了,没有选项我就没有测试-ff

答案2

供以后参考,分两种情况:

1.没有分区时

当您有 GPT(GUID 分区表)时,可能会发生这种情况。不幸的是,这甚至不能用-f参考错误报告

fdisk -l /dev/sda例如,您可以检查您拥有的分区表。

解决方案是用旧版 BIOS 表替换 GPT,例如gparted

  • Device/Create Partition Table...
  • 选择新的分区表:msdos

或与分手了

  • parted /dev/sda
  • mktable msdos
  • quit

之后您应该能够创建物理卷:

  • pvcreate /dev/sda

pvcreate 可能建议清除分区表中找到的 dos 签名。这样做是安全的。

2.当磁盘已经有分区时

这是一项安全措施,也-f不能推翻它。

您可以使用上面相同的解决方案删除分区,因为创建新表将删除所有内容。还有其他方法可以做到这一点,例如使用fdisk,但上面的解决方案可确保您同时解决 GPT 问题。

答案3

/dev/sda是整个磁盘。通常(但不一定总是)您会对磁盘进行分区,给出设备名称,例如/dev/sda1/dev/sda2,并将它们用于文件系统、交换空间、LVM 分配等。

您已将文件系统放入其中/dev/sda,因此它不再可用于分配给逻辑卷管理 ( pvcreate)。 LVM 工具会正确警告您磁盘已在使用(带有文件系统)。

如果您确实想销毁文件系统并将其替换为 LVM,您可以阅读文档 ( man pvcreate) 并看到,

强制选项 [ -f] 将创建 PV,无需确认。重复强制选项 ( -ff) 将强制创建 PV,覆盖通常阻止它的检查,例如,PV 是否已在 VG 中。

答案4

假设您的目标是在没有分区表的情况下从整个磁盘创建物理卷,那么您需要首先将任何现有分区表清零:

dd if=/dev/zero of=/dev/sda bs=512 count=1

请注意,不使用分区表可能不是最佳实践。它可能会被天真的用户或操作系统误判为未使用的损坏磁盘。

更多详情请参阅回答。

相关内容