web-dev-qa-db-ja.com

ホストのlvmVGをkvmプールとして使用するにはどうすればよいですか?

仮想化ホストとしてCentos6を使用してマシンをセットアップしています。単一のlvmボリュームグループ(vg_fluke)として構成された単一の250Gハードドライブがあります。ここで、ホストのlvmをKVMのストレージプールとして使用したいと思います。

私は SFに関するこの質問 を見つけました。方法1は、私が達成したいことを説明しています。しかし、私はそれについて行く方法を見つけることができません。

私は次のことを試しましたが、ドキュメントが大雑把なので、何か間違ったことをしていると確信しています。

virsh # pool-define-as guest_images_lvm logical - - - - /dev/vg_fluke
Pool guest_images_lvm defined

そしてそれに続いて、

virsh # pool-start guest_images_lvm
error: Failed to start pool guest_images_lvm
error: internal error Child process (/sbin/vgchange -ay -) status unexpected: exit status 5

LVMセットアップの詳細:

[root@fluke ~]# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/sdb2  vg_fluke lvm2 a--  232.39g 125.45g
[root@fluke ~]# lvs
  LV      VG       Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv_home vg_fluke -wi-ao   5.00g                                      
  lv_root vg_fluke -wi-ao 100.00g                                      
  lv_swap vg_fluke -wi-ao   1.94g                                      
[root@fluke ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  vg_fluke   1   3   0 wz--n- 232.39g 125.45g

更新:

@sitaktifのアドバイスに従い、次のエラーが発生します。

virsh # pool-define-as lv_guest_vm logical --target /dev/vg-main
Pool lv_guest_vm defined

virsh # pool-start lv_guest_vm
error: Failed to start pool lv_guest_vm
error: internal error '/sbin/vgchange -ay lv_guest_vm' exited with non-zero status 5 and signal 0:   Volume group "lv_guest_vm" not found

注:VGがvg-mainである別のマシンでこれを試しています。仮想マシンで使用するlibvirt用に2番目のVGを作成する必要がありますか?既存のVGでLVを使用して設定するにはどうすればよいですか?

3
Shoan

デフォルトでは、libvirtはプール名をvgの名前として使用します。実行しようとした/sbin/vgchange -ay lv_guest_vmコマンドでそれを実行していることがわかります。ただしてください:

pool-define-as lv_guest_vm logical --source-name vg-main --target /dev/vg-main

そしてそれはうまくいくはずです。

4
Wil Tan

次のコマンドは正しくありません。

virsh # pool-define-as guest_images_lvm logical - - - - /dev/vg_fluke

...実行されるため:

/sbin/vgchange -ay -

...の代わりに:

/sbin/vgchange -ay /dev/vg_fluke

ダッシュを使用する代わりに、パラメータに明示的に名前を付けるだけです。

pool-define-as guest_images_lvm logical --target /dev/vg_fluke

それはあなたの問題を解決するはずです。

4
sitaktif

これを機能させることができない場合は、さらにいくつか試してみてください。

--source-name(Wil Tanの回答から)が役に立たない場合は、-source-devを検討してLVMの下のレイヤーに明示的に接続します。

virsh pool-define-as vg_fluke logical --target /dev/vg_fluke --source-dev /dev/md999

問題が発生した場合は、ボリュームグループと同じ名前のストレージプールから始めてください。

また、プールの作成後、たとえばでそれを見てください。 .。

virsh pool-list  --all
virsh pool-info vg_fluke

...それはあなたに追加の手がかりを与えるかもしれません。

質問は ホストとゲストの間でlvmボリュームグループを共有する にも言及しています。ただし、問題を回避するために、ホストのlvmボリューム(グループではない)をゲストのハードディスク(lvmボリュームではない)として使用してください。このボリュームは、ホスト上で直接操作されるだけである限り、グループまたはストレージプールの一部である可能性があります。また、ゲストでは、このハードディスクの上にlvmレイヤーを構築できますが、これはホストのlvmから完全に分離されています。また、わかりやすくするために、コマンド(引用している)がホストで実行されているのかゲストで実行されているのかを説明してください。ここで引用しているコマンドはすべてホスト上で実行されます。


質問について...

仮想マシンで使用するlibvirt用に2番目のVGを作成する必要がありますか?

私が 偶然これに遭遇した である限り、libvirtに知られているボリュームをnotに知られていないボリュームから分離する理由は見つかりませんでしたlibvirtを別々のボリュームグループに分けます。

「libvirtに知られている」とは、つまり、libvirtはそれらをストレージプール内のボリュームとして表示します。例えば。経由...

virsh vol-list vg_fluke

しかし、繰り返しになりますが、うまく機能しない場合は、別のボリュームグループから始めて、考えられる別の問題の原因を整理してください。

0
klaus thorn