SUSE SLES12 の XEN仮想化管理

前回
SLES12 大きく変わった仮想化管理
で仮想管理の方法が随分変わり、戸惑いました。その続きです。

SUSE Linux Enterprise Server12 (SLES12) では大きくXEN 仮想化管理が変わりました。従来の xend から libvirtd に移行しました。内部的にどうなった、こうなったという話はこちらにまかせて

SUSE Linux Enterprise Server 12 Virtualization Guide

実際のオペレーションから、、どうすればいいのかを書いてみます。

- xm -

まず、/usr/sbin/xm 自体がありません。/usr/sbin/xl に置き換わっています。

また、xl コマンド自体が libvirtd を管理する virsh コマンドとの互換性がありません。
xl コマンド自体は xm との下位互換性を維持するために存在するものです。

- virsh / virt-manager -

このツールは /etc/libvirt/libxl/myvm.xml を使って制御します。

virsh create /etc/libvirt/libxl/myvm.xml で起動
virsh list (libvirt 管理のものだけ表示、xl create したものはリストされない)
virsh shutdown myvm (xl create したものはシャットダウンできない)

※ xl で起動、終了はできるが GUI コンソールを virt-manager からは制御できない。(バックグラウンドで virsh を使うから)

実際に virt-manager で作成した仮想化された SLES を動かしてみます。


xl create -f /etc/xen/vm <---- xl コマンドで vm ファイルを指定して起動

sles12:~ # xl create -f /etc/xen/vm/sles12
Parsing config from /etc/xen/vm/sles12

sles12:~ # xl list <--- 起動した
Name ID Mem VCPUs State Time(s)
Domain-0 0 7237 4 r----- 236110.8
sles12 31 1024 2 r----- 9.6

sles12:~ # xl console sles12 <--- コンソールを切り替え
Welcome to GRUB!

: 中略

[ OK ] Reached target Host and Network Name Lookups.
[ OK ] Started Login Service.

Welcome to SUSE Linux Enterprise Server 12 (x86_64) - Kernel 3.12.28-4-xen (xvc0).

linux-gisu login: <---- xl console で操作できる。

CTRL+] でコンソールに戻る

sles12:~ # xl shutdown sles12 <--- シャットダウンしてみる
Shutting down domain 31
sles12:~ #


しかし、この方法では virt-manager からGUI制御できません。ドメインのリストにも出ません。

virsh で制御してみます。


sles12:~ # virsh console sles12
Connected to domain sles12
Escape character is ^]
Welcome to GRUB!

: 中略

Loading Linux xen ...
Loading initial ramdisk ...
[ 0.161234] PCI: Fatal: No config space access function found
[ 0.161545] Unable to read sysrq code in control/sysrq
[ 1.841010] i8042: No controller found

Welcome to SUSE Linux Enterprise Server 12 (x86_64) - Kernel 3.12.28-4-xen (xvc0).

linux-gisu login:

CTRL+]で終了

sles12:~ #
sles12:~ # virsh shutdown sles12 <--問題なくシャットダウン
Domain sles12 is being shutdown
sles12:~ #

virt-manager からコンソールを開くことができます。
SUSE SLES12 の XEN仮想化管理_a0056607_1336594.jpg



- xl -

/etc/xen/bm/myvm を使って制御
xl list (libvirt で稼働中のものも表示)
xl create -f /etc/xen/vm/myvm で起動(-f は必須のオプションとなります)
xl shutdown myvm で終了

virsh shutdown では終了できない。
virt-manager からGUIコンソールに接続できない。

virtsh create したものは

sles12:~ # xl shutdown sles12 <---- xl shutdown できない
Warning: This domain is managed by libvirt. Using xl commands to modify this
domain will result in errors when virsh or virt-manager is used.
Please use only virsh or virt-manager to manage this domain.

(This check can be overridden with the -f option.)
sles12:~ #
sles12:~ # virsh shutdown sles12 <---- virsh shutdown はできる。
Domain sles12 is being shutdown

xl crerate した Dom-U は virt-manager からGUI制御できないため、Windows のような GUI を必要とする Domain-U は制御できません。万が一、ネットワークの構成を変えたい、などの場合、リモートデスクトップのセッションが切れると、制御不能となってしまいます。

そこで、Windows 系のシステムを SLES12 に移植する場合は、vm ファイルを使う xl ベースの操作ではなく virsh / virt-manager への移行が必要になります。

ということで SLES12 には xen2libvirt という変換ツールがあります。

https://www.suse.com/documentation/sles-12/book_virt/data/xen_xen2libvirt.html

が見事に失敗しました。(Failed)

sles12:~ # xen2libvirt -f xm -c /etc/xen/vm/myvm.xml
libvirt: Config File error : configuration file syntax error: memory conf:1: expecting a name
Traceback (most recent call last):
File "/usr/sbin/xen2libvirt", line 121, in
import_domain(conn, args.path, args.format, args.convert_only)
File "/usr/sbin/xen2libvirt", line 77, in import_domain
xml = conndomainXMLFromNative('xen-xm', config, 0)
File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3344, in domainXMLFromNative
if ret is None: raise libvirtError ('virConnectDomainXMLFromNative() failed', conn=self)
libvirt.libvirtError: configuration file syntax error: memory conf:1: expecting a name
sles12:~ #

という事で、SLES11 から SLES12 へP2P Migration する場合は、xl での起動、終了はできるのですが、設定変更などが必要な場合 vm2libvirt で convert をする必要があります。しかしうまく動かないケースが多くあります。

そこで「 virt-manager で作り直す」という手段が一番手っ取り早い、という事になります。

- virt-manager は /usr/bin へ-

virt-manager の GUI は /usr/sbin から /usr/bin へ移動しました。しかし、実際に利用するには root の権限が必要です。実際にユーザが仮想マシンを操作できる様にするには Policy Kit による認証が必要なようです。

第9章 PolKit を利用した権限認可
http://manual.geeko.cpon.org/ja/cha.security.policykit.html

https://www.suse.com/documentation/sled-12/book_security/data/cha_security_policykit.html


適切に設定すれば、一般ユーザが、自前の VPS を作成する事ができるわけですね。

- 仮想マシンのイメージ -

SLES12 での XEN 環境での仮想マシンイメージのデフォルトストレージの格納場所は /var/lib/xen/images から /var/lib/libvirt/images に代わりました。iSCSI や NFS などで共有している環境では問題になってくるでしょう。

仮想マシンの起動と終了

virsh 環境で作成された起動ファイルは /etc/libvirt/libxl/xxxxxx.xml という名前で保存されます。xm コマンドの様に仮想マシン名だけで create できません。 xml ファイルをフルパスで指定します。


sles12:/etc # virsh list
Id Name State
----------------------------------------------------
12 sles12 running
19 salamandra running

sles12:/etc # virsh create /etc/libvirt/libxl/myvm.xml
Domain myvm created from /etc/libvirt/libxl/myvm.xml

sles12:/etc # virsh list
Id Name State
----------------------------------------------------
12 sles12 running
19 salamandra running
34 myvm running

sles12:/etc # virsh shutdown myvm
Domain myvm is being shutdown

sles12:/etc #


- まどめ -

xl コマンドと virsh コマンドとを使い分ける注意点をまとめてみましょう。

- xm はなくなり xl に変わった。
- xl create したものは virsh shutdown できない。
- xl list では virsh で起動しても xl list で確認できる。
- xl create したものは virt-manager から制御、仮想コンソールアクセスはできない。
- xl create したものは virsh consolle できない、xl console を使う。
- virsh create したものは xl shutdown できない。
- virsh create したものは xl console できない。virsh console を使う。
- xl create したものは virsh list / virt-manager で確認できない。
- virt-manager で作成した Dom-U は xl create/shutdown できない virsh で行う。

SLES12 における仮想化は、xend からの移行を考慮したものです。単体の「ハイパーバイザー」そのものの提供から、プライベートクラウド基盤への移行を念頭に置いた実装への過渡期でしょう。

また virsh を中心としたオペレーションでは、ほとんどXEN と KVM のハイパーバイザーの違いを意識せずにオペレーションをする事ができます。

SLES10/11 からの単純移行、平行運用は、オペレータの負荷を考慮すると、あまりお勧めできるものではありませんが、今後のプライベートクラウド基盤としてはOpenstack などの標準的な機能に準拠した実装ができます。

それでも、過去の仮想基盤がそのまま移行できることは、やはり便利な事です。

関連記事
SUSE SLES12 の大きな変化 systemd、さらば init
SUSE Enterprise Server (SLES12) on SLES12+XEN 準仮想化


その他の情報はこちら
islandcenter.jp

-Keyword-

SUSE Linux Enterprise Server 12 (SLES12) XEN KVM 仮想化 libvirtd xend virsh xl コマンド
by islandcenter | 2014-11-26 13:44 | SUSE | Comments(0)