LVM是否需要分区表?

看来,我能够成功地在原始块设备上执行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的好处是:

  • 简单 – 你不需要使用2套工具
  • 灵活性 – 您可以使用pvmove将数据从一个磁盘卷移至另一个磁盘卷,而无需停机,您可以使用快照和精简configuration
  • 您不需要运行partprobe或kpartx来告诉内核您创build/resize/删除了一个卷。 partprobe / kpartx可能会失败,如果分区正在使用中。
  • 也许更好的性能,比在MS-DOS或GPT可用盘上使用LVM