我目前正在安装 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
请注意,不使用分区表可能不是最佳实践。它可能会被天真的用户或操作系统误判为未使用的损坏磁盘。
更多详情请参阅这回答。