看来我能够在原始块设备之上成功执行 pvcreate ,而无需采取创建分区表的步骤。然后我就可以创建一个卷组、逻辑卷,最后是一个文件系统,挂载它,并通过 dd 进行测试。
它似乎有效,但我需要进行健全性检查。这是一个坏主意吗?
如何在原始块设备上创建 GPT 或 MBR 分区表?
如何使用 parted 显示正在使用的分区表类型?我试过这样做:
分开,选择/dev/sdb,打印,我得到:
错误:/dev/sdb:无法识别的磁盘标签
但是该驱动器目前正在使用中,我可以对其进行读写。这是在没有分区表的原始块设备上执行 LVM 时的预期输出吗?有什么想法吗?
谢谢!
Phi*_*lip 32
即使 LVM 本身并不关心有一个真正的分区,创建它的一个原因是通知分区程序“那里有东西”。一个噩梦场景是新的系统管理员诊断服务器上的启动问题、启动分区程序、查看未分区的磁盘并得出驱动器损坏的结论。
我认为创建 LVM 分区没有缺点。你?
3di*_*nce 16
虽然您可以从原始块设备中创建一个 pv,但我通常会尽量避免它,因为它可能会导致对块设备的用途产生混淆。如果 LVM 缺少配置文件,它也可能会破坏 LVM 可以使用的一些自动发现例程。
这是使用 parted 创建一个 GPT 的示例,该 GPT 具有 1 个分区,即整个驱动器,并将分区标志设置为 lvm。mkpart 要求您指定文件系统,但它不会创建文件系统。似乎是 parted 中的一个长期存在的错误。此外,1M 的起始偏移量是为了确保您获得正确对齐。
parted /dev/sdb
mklabel GPT
mkpart primary ext2 1M 100%
set 1 lvm on
Run Code Online (Sandbox Code Playgroud)
如果您直接在 KVM 来宾内的虚拟存储设备上创建 PV,那么您会注意到来自来宾的逻辑卷在管理程序上可见。如果您在多个来宾中使用相同的逻辑卷和卷组名称,这可能会使事情变得非常混乱。您可能还会在虚拟机管理程序上收到一些警告,说它找不到设备。
例如,我在我的测试虚拟机管理程序上重新创建了这个问题:
[root@testhost ~]# vgs
Couldn't find device with uuid dCaylp-1kvL-syiF-A2bW-NTPP-Ehlb-gtfxZz.
VG #PV #LV #SN Attr VSize VFree
vg_main 2 2 0 wz-pn- 19.25g 768.00m
vg_main 2 2 0 wz-pn- 19.25g 768.00m
vg_testhost 1 8 0 wz--n- 237.98g 120.15g
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到 2 个同名的卷组,它们都来自不应真正出现在虚拟机管理程序上的来宾。
出于这个原因,我建议您在创建 PV 并将其添加到卷组之前,首先使用 parted 或 fdisk 在那里创建一个 KVM 分区(如 3dinfluence 的先前回答所示)。这样,来宾逻辑卷对虚拟机管理程序保持隐藏。
即使过去我使用 MS-DOS disklabel 或 GPT disklabel 作为 PV,我现在更喜欢在主块设备上直接使用 LVM。没有理由使用 2 个磁盘标签,除非您有一个非常具体的用例(例如带有引导扇区和引导分区的磁盘)。
直接使用 LVM 的优点是:
小智 5
根据 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(卷组),他们甚至建议我们销毁它,除非我们只想包括它的一部分(分区)。