在 Linux 上为特定 LVM2 VG 自动分配 lvm(条带)

在 Linux 上为特定 LVM2 VG 自动分配 lvm(条带)

使用 Linux lvm2,我可以在 VG 内创建逻辑卷。当我使用命令lvcreatestriping/stripesize 指定时,我可以手动将逻辑卷分布到所有物理卷上(如下图所示吕诺瓦以下)。

有没有办法配置 lvcreate 始终进行条带化,特别是如果我创建新的 LV,它们应该在设备上循环创建?(即不在每个 lvcreate 中指定物理“启动”设备)

我需要为 OpenStack Nova 用于临时设备的卷组进行持久配置。看来我无法配置 lvm 驱动程序以更均匀地实际分布它们。

我正在寻找一种方法将其指定为 VG 上的属性(因为 lvcreate 正在谈论继承分配),但我在手册中找不到它。

LV 具有分配策略继承,并且 VG 告诉我这是正常的:

# vgchange vgdata --alloc normal
Volume group allocation policy is already normal

我也在寻找 lvm.conf 中是否有分配策略。但只有 cling2 策略的参数,该策略在扩展卷时尤其能使各段紧密相连(这不是我在这里主要关心的问题)。

手动条带化 LV 的示例以及 OpenStack 在 4 个物理卷系统上生成的卷的示例:

nvme0n1                                                               259:0    0   1.5T  0 disk
└─nvme0n1p1                                                           259:4    0   1.5T  0 part
  ├─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
  ├─vgdata-ec3d1f0d--76f2--4cb2--af66--665dba0582b1_disk (dm-3)       252:3    0    50G  0 lvm
  ├─vgdata-ec3d1f0d--76f2--4cb2--af66--665dba0582b1_disk.swap (dm-4)  252:4    0     8G  0 lvm
  ├─vgdata-290ef35d--6d84--49cf--8d7d--3240dcd84a3e_disk (dm-5)       252:5    0    20G  0 lvm
 ...
nvme1n1                                                               259:1    0   1.5T  0 disk
└─nvme1n1p1                                                           259:5    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
nvme2n1                                                               259:2    0   1.5T  0 disk
└─nvme2n1p1                                                           259:6    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
nvme3n1                                                               259:3    0   1.5T  0 disk
└─nvme3n1p1                                                           259:7    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data

root@compute18:~# lvs --segments
  LV                                             VG     Attr      #Str Type    SSize
  lv-root                                        vg0    -wi-ao---    1 linear  223.52g
  lv-swap                                        vg0    -wi-ao---    1 linear   46.56g
  17bad6e1-41f0-4725-a74d-7a1f1df5f0b6_disk      vgdata -wi-ao---    1 linear   20.00g
  17bad6e1-41f0-4725-a74d-7a1f1df5f0b6_disk.swap vgdata -wi-ao---    1 linear    1.00g
  189585e0-9b69-4d7c-b1b4-194156312553_disk      vgdata -wi-ao---    1 linear   20.00g
...
  lvnova                                         vgdata -wi-ao---    4 striped 750.00g

顺便说一句:我以前使用过条带化的 /dev/md0,但我希望摆脱这种间接性。

这是 Ubuntu Trusty(lvm 2.0.2.98(2))上带有 KVM/nova OS Liberty 的 Linux 4.4.0。

答案1

您可以在 中配置此项/etc/lvm.conf。如果设置,raid_stripe_all_devices=1则默认应为条纹而不是线性。您还应该查看use_linear_target

答案2

allocation/raid_stripe_all_devices=1Andreas提到的选项仅lvm.config适用于Ubuntu Zesty,即使这样,它似乎也不会默认打开条带卷。

因此我们修补了操作系统:

/usr/lib/python2.7/dist-packages/nova/virt/libvirt/storage/lvm.py
  else:
    check_size(vg, lv, size)
-   cmd = ('lvcreate', '-L', '%db' % size, '-n', lv, vg)
+   cmd = ('lvcreate', '-i', '4','-L', '%db' % size, '-n', lv, vg)

这对于我们的情况是这样的:

nvme0n1                                                              259:0    0   1.5T  0 disk
└─nvme0n1p1                                                          259:4    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme1n1                                                              259:1    0   1.5T  0 disk
└─nvme1n1p1                                                          259:5    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme2n1                                                              259:2    0   1.5T  0 disk
└─nvme2n1p1                                                          259:6    0   750G  0 lvm  /srv/data
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme3n1                                                              259:3    0   1.5T  0 disk
└─nvme3n1p1                                                          259:7    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm

# lvs --segments
  b063d1b9-e1ac-4cab-98d8-9a2d1c71406e_disk      vgdata -wi-ao---    4 striped 100.00g
  b063d1b9-e1ac-4cab-98d8-9a2d1c71406e_disk.swap vgdata -wi-ao---    4 striped   8.00g

我们将针对此缺失的设置打开一个 OpenStack 错误。

相关内容