web-dev-qa-db-ja.com

Linux上の特定のLVM2VGのlvm(ストライプ)を自動的に配布します

Linux lvm2を使用すると、VG内に論理ボリュームを作成できます。 lvcreateコマンドstriping/stripsizeで指定すると、論理ボリュームをすべての物理ボリュームに手動で分散できます(以下のlvnovaを参照)。

Lvcreateが常にストライプ化するように構成する方法はありますか?特に、新しいLVを作成する場合は、デバイス上でラウンドロビンで作成する必要がありますか? (つまり、各lvcreateで物理的な「開始」デバイスを指定せずに)

OpenStackNovaがエフェメラルデバイス用に使用するボリュームグループに対してこれを永続的に構成する必要があります。実際にそれらをより均等に分散するようにlvmドライバーを構成できないようです。

VGの属性として指定する方法を探していましたが(lvcreateが割り当ての継承について話しているため)、マニュアルで見つけることができません。

LVには割り当てポリシーが継承されており、VGはそれが正常であると通知します。

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

また、lvm.conf内に割り当てポリシーがあるかどうかも調べていました。ただし、ボリュームを拡張するときにセグメントを特に接近させておくcling2戦略のパラメーターのみがあります(これはここでは私の主な関心事ではありません)。

手動でストライプ化されたLVと、4つの物理ボリュームシステムで生成されたOpenStackのサンプル:

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を使用していましたが、この間接参照を取り除くことを望んでいました。

これは、KVM/nova OSLibertyを搭載したUbuntuTrusty(lvm 2.0.2.98(2))上のLinux4.4.0です。

1
eckes

これは/etc/lvm.confで構成できます。 raid_stripe_all_devices=1を設定した場合、デフォルトは線形ではなくストライプになります。 use_linear_targetもご覧ください。

4
Andreas Rogge

Andreasが言及したallocation/raid_stripe_all_devices=1lvm.configオプションは、buntu Zestyでのみ使用可能であり、それでもデフォルトでストライプボリュームをオンにしないようです。

このため、OSにパッチを適用しました。

/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のバグを開きます。

0
eckes