2014年 11月 26日
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 からコンソールを開くことができます。
- 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 コマンド