看来我能够在原始块设备上成功执行 pvcreate,而无需执行创建分区表的步骤。然后,我可以创建卷组、逻辑卷,最后创建文件系统,挂载它,并通过 dd 进行测试。
看起来它有效,但我需要进行健全性检查。这是个坏主意吗?
如何在原始块设备上创建 GPT 或 MBR 分区表?
如何使用 parted 显示正在使用的分区表类型?我尝试过这样做:
parted,选择 /dev/sdb,打印,然后我得到:
错误:/dev/sdb:无法识别的磁盘标签
但是驱动器目前正在使用中,我可以对其进行读写。在没有分区表的原始块设备上执行 LVM 时,这是预期的输出吗?有什么想法吗?
谢谢!
答案1
即使 LVM 本身并不关心是否有真正的分区,创建它的一个原因也是通知分区程序“那里有东西”。一个噩梦般的场景是,一个新的系统管理员诊断服务器上的启动问题,启动分区程序,看到未分区的磁盘,并得出结论认为驱动器已损坏。
我认为创建 LVM 分区没有任何坏处。你觉得呢?
答案2
虽然您可以直接使用原始块设备创建 pv,但我通常会尽量避免这样做,因为这可能会导致混淆块设备的用途。如果缺少配置文件,还可能会破坏 LVM 可以使用的一些自动发现例程。
下面是使用 parted 创建 GPT 的示例,该 GPT 包含 1 个分区,即整个驱动器,并将分区标志设置为 lvm。mkpart 要求您指定文件系统,但它不会创建文件系统。这似乎是 parted 中长期存在的错误。此外,1M 的起始偏移量是为了确保您获得正确的对齐。
parted /dev/sdb
mklabel GPT
mkpart primary ext2 1M 100%
set 1 lvm on
答案3
即使过去我使用 MS-DOS 磁盘标签或 GPT 磁盘标签进行 PV,我现在更喜欢在主块设备上直接使用 LVM。除非您有非常特殊的用例(例如具有引导扇区和引导分区的磁盘),否则没有必要使用 2 个磁盘标签。
直接使用 LVM 的优点是:
- 简单 - 您不需要使用两套工具
- 灵活性 - 您可以使用 pvmove 将数据从一个磁盘卷移动到另一个磁盘卷而无需停机,您可以使用快照和精简配置
- 您无需运行 partprobe 或 kpartx 来告诉内核您创建/调整大小/删除了卷。并且partprobe/kpartx 可能失败如果分区正在使用,你可能需要重新启动
- 与在 MS-DOS 或 GPT 磁盘标签上使用 LVM 相比,性能可能会更好
- 如果使用 fdisk 创建的分区与底层卷(例如 RAID 阵列)上的范围不对齐,则可避免潜在的错位
答案4
根据 RedHat 的 LVM 指南第 4.2.1 节 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/physvol_admin
他们说没有必要有分区表,他们甚至建议我们如果将整个磁盘用于 VG(卷组)就销毁它,除非我们只打算包含其中的一部分(分区)。