看来,我能够成功地在原始块设备上执行pvcreate,而不需要创build分区表。 然后,我可以创build卷组,逻辑卷,最后创build一个文件系统,挂载它,然后通过dd进行testing。
这似乎工作,但我需要一个健全的检查。 这是一个坏主意吗?
如何在原始块设备上创buildGPT或MBR分区表?
如何使用parted来显示正在使用哪种分区表? 我试过了:
分开,select/ dev / sdb,打印,我得到:
错误:/ dev / sdb:无法识别的磁盘标签
然而,驱动器目前正在使用,我可以读写它。 这是在没有分区表的原始块设备上执行LVM时的预期输出吗? 有什么想法吗?
谢谢!
即使LVM本身并不关心是否有真正的分区,但无论如何创build它的一个原因是通知分区程序有“那里有东西”。 一个噩梦的情况是一个新的系统pipe理员诊断服务器上的启动问题,启动分区程序,看到未分区的磁盘,并断定该驱动器已损坏。
我没有看到创buildLVM分区的缺点。 你做?
虽然你可以从原始块设备中创build一个pv,但是我通常会尽量避免这种情况,因为这可能会导致混淆块设备的使用。 如果缺lessconfiguration文件,也可能会破坏LVM可以使用的一些自动发现例程。
以下是使用parted创buildGPT的示例,其中1分区是整个驱动器,并将分区标志设置为lvm。 mkpart要求您指定文件系统,但不创build文件系统。 似乎是一个长期存在的分歧。 另外,1M的起始偏移量将确保您获得正确的alignment。
parted /dev/sdb mklabel GPT mkpart primary ext2 1M 100% set 1 lvm on
如果您直接在KVM guest虚拟机内的虚拟存储设备上创buildPV,则会注意到guest虚拟机的逻辑卷在hypervisor上可见。 如果跨多个guest虚拟机使用相同的逻辑卷和卷组名,这可能会使事情变得非常混乱。 你也可能会在hypervisor上得到一些警告,说它找不到设备。
例如,我在testingpipe理程序中重新创build了这个问题:
[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
在这里,您可以看到2个具有相同名称的卷组,这两个卷组都不应该出现在虚拟机pipe理程序中。
出于这个原因,我build议您在创buildPV并将其添加到卷组之前,首先使用parted或fdisk在那里创build一个KVM分区(如以前的答案中的3dinfluence所示)。 这样,来宾逻辑卷对pipe理程序保持隐藏状态。
一个缺点是,不可能在分区表内热插入PV的空间。 如果您使用整个块设备的PV,这不是一个问题。
即使在过去我使用MS-DOS disklabel或GPT disklabel进行PV,我现在更愿意直接在主块设备上使用LVM。 没有理由使用2个磁盘标签,除非你有一个非常具体的用例(像磁盘引导扇区和引导分区)。
直接拥有LVM的好处是: