web-dev-qa-db-ja.com

ストライプ化されていないLVMLVをストライプ化されたLVに変更します

現在、ボリュームグループ(VG)に複数の論理ボリューム(LV)があります。このVGは、単一の物理ボリューム(PV)でホストされます。データをシャッフルするために使用できる予備のドライブがあります。

また、元のPVドライブと一致する新しいドライブもあります。既存のLVを移動して、LVが2つのPVにストライプ化されるようにしたいと思います。これは可能ですか?どうやってやるの?

5
Jon Pawley

これはコマンドラインからは不可能のようです。 stripingは、デフォルトのlinear割り当てスキームとはかなり異なります。したがって、ファイルシステムを複数の物理ボリューム(PV)に拡張することはできますが、ストライピングの「ロードバランシング」の利点は得られません。

ファイルシステムを拡張するには、次のようにします。

pvcreate /dev/mapper/md2_crypt
vgextend crypto /dev/mapper/md2_crypt
umount /dev/mapper/crypto-srv
fsck.ext4 -C0 -f /dev/mapper/crypto-srv
lvresize -l +100%FREE /dev/mapper/crypto-srv
resize2fs /dev/mapper/crypto-srv
mount /srv

上記の例では、md2_cryptはRAID-1アレイ上の暗号ボリュームですが、任意のデバイスにすることができます。 cryptoはボリュームグループ(VG)であり、crypto-srv/srvにマウントされたファイルシステムを保持する論理ボリュームです。

注意:PVがlinear論理ボリューム(LV)で失敗すると、すべてのデータが失われる可能性があるため、実際には少なくともRAID-1アレイを使用する必要があります。

これはしない/srvパーティションをPV全体にストライプ化します。これは、 linearからstripedへの変換をサポートするユーザーランドツールがないためです 。論理的には、これはlvconvertコマンドに含まれますが、たとえばlinearからmirrorモードへの移動とその逆の移動のみがサポートされます。そして、すべての新しい開発が [〜#〜] btrfs [〜#〜] に入るので、これが文書化されているとしたら驚きます。

ただし、できるの1つは、newデータをドライブは縞模様になります。それはかなりトリッキーですが、それは可能です。 crypto-tmpのLVである/tmpをストライプ化するとします。まず、最初のPVでストライプ用のスペースを解放する必要があります。

pvmove -n crypto/tmp /dev/mapper/md1_crypt

これにより、PV全体でLVが再割り当てされます。私の場合は、2番目のPVにすべて移動しました。

root@foo:~# pvs --segments -o+lv_name,seg_start_pe,segtype
  PV                    VG     Fmt  Attr PSize PFree  Start SSize  LV   Start Type
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g     0   2384 root     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  2384    256 swap     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  2640   2560          0 free
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  5200 709901 srv      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t  1.81t     0   2560 tmp      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t  1.81t  2560 474077          0 free

これで、ファイルシステムを拡張し(たとえば、サイズを2倍にする)、LVMに新しいデータをストライプ化するように指示できます。

root@foo:~# lvresize -i 2 -l 5120 /dev/crypto/tmp
  Using default stripesize 64.00 KiB
  Extending logical volume tmp to 20.00 GiB
  Logical volume tmp successfully resized

これで、/tmpの新しいデータが2つのPVにまたがってストライプ化されます。

root@foo:~# pvs --segments -o+lv_name,seg_start_pe,segtype
  PV                    VG     Fmt  Attr PSize PFree Start SSize  LV   Start Type
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g     0   2384 root     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  2384    256 swap     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  2640   1280 tmp   2560 striped
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  3920   1280          0 free
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  5200 709901 srv      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t     0   2560 tmp      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t  2560   1280 tmp   2560 striped
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t  3840 472797          0 free

ただし、元のデータはlinearモードのままです。ファイルシステムをストライプ化されたエクステントに移動することは可能かもしれませんが、この時点で読者への演習を検討してください。 :)

ストライピングを使用したLVMボリュームの拡張 および Redhat LVMによるストライプの変更? も参照してください。

また、逆(stripedからlinearへの変換)も可能であることに注意してください。 ストライプ論理ボリュームを線形論理ボリュームに変換することは可能ですか?

6
anarcat