「Libvirt」の版間の差分
(→設定) |
|||
135行目: | 135行目: | ||
{{hc|/etc/conf.d/libvirtd|2=LIBVIRTD_ARGS="--listen"}} |
{{hc|/etc/conf.d/libvirtd|2=LIBVIRTD_ARGS="--listen"}} |
||
− | == |
+ | == テスト == |
+ | システムレベルでデーモンが正しく動作しているかテスト: |
||
− | ===新しい VM をインストールする=== |
||
− | 新しい VM を作成するには、何がしかのインストールメディアが必要で、通常は {{ic|.iso}} ファイルが基本です。ファイルを {{ic|/var/lib/libvirt/images/}} ディレクトリにコピーしてください (または、virt-manager で新しい''ストレージプール''ディレクトリを作成してそこにコピーすることもできます)。 |
||
+ | $ virsh -c qemu:///system |
||
− | {{Note|[[SELinux]] はデフォルトで {{ic|/var/lib/libvirt/images/}} に仮想マシンが保存されることを必要とします。SELinux を使っていて仮想マシンに問題が起こる場合、あなたの VM がそのディレクトリにするか確認、またはあなたが使用している非デフォルトのディレクトリの適当なラベリングを追加してください。}} |
||
+ | ユーザーセッションで libvirt が正しく動作するかテスト: |
||
− | それから {{ic|virt-manager}} を起動して、サーバーに接続します、接続を右クリックして '''New''' を選択してください。名前を決めたら、'''Local install media''' を選択してください。ウィザードを進めて下さい。 |
||
+ | $ virsh -c qemu:///session |
||
− | '''ステップ4'''で、''Allocate entire disk now'' のチェックを外すことができます -- VM がディスクの全てを使用していないときに容量を節約します。ただし、ディスクのフラグメンテーションが増加する可能性があるので、VM ホストのディスクの合計空き容量に''注意してください''、VM にディスク容量を追加で割り当てるほうが簡単だからです。 |
||
+ | == 管理 == |
||
− | '''ステップ5'''では、'''Advanced options''' を開いて ''Virt Type'' を '''kvm''' に設定してください。kvm が選べない場合、上の [[#QEMU の KVM アクセラレーションを有効にする|QEMU の KVM アクセラレーションを有効にする]]を見て下さい。 |
||
+ | Libvirt の管理は3つのツールで行うことができます: 一つは GUI {{ic|virt-manager}} で、二つはコマンドラインツールです: {{ic|virsh}} と {{ic|guestfish}} ({{AUR|libguestfs}} に含まれています)。 |
||
− | ===virt-manager でストレージプールを作成する=== |
||
− | まず、既存のサーバーに接続してください。そこで、右クリックして '''Details''' を選んで下さい。'''Storage''' に行き左下の '''+''' アイコンを押して下さい。それからはウィザードに従って下さい。 :) |
||
+ | === virsh === |
||
− | ===virt-manager で VirtualBox を使う=== |
||
− | {{Note|libvirt の [[VirtualBox|VirtualBox]] サポートはまだあまり安定しておらず libvirtd がクラッシュする可能性があります。通常はクラッシュしてもデーモンを再起動すれば全てが元に戻るはずです。}} |
||
+ | virsh はゲスト''ドメイン'' (仮想マシン) の管理のためのプログラムですが、仮想化管理のスクリプトにも使えます。ほとんどの virsh コマンドは実行するのに root 権限を必要とします。ただしドメインの作成や実行などは (VirtualBox と同じように) 通常ユーザーで実行することができます。 |
||
− | virt-manager では GUI から VirtualBox の接続を追加することはできません。しかしながら、コマンドラインから起動することが可能です: |
||
− | $ virt-manager -c vbox:///system |
||
+ | Virsh にはインタラクティブなターミナルが含まれており、コマンドを何も指定しないで実行したときに起動します (オプションは指定することができます): {{ic|virsh}}。インタラクティブターミナルはタブ補完をサポートしています。 |
||
− | また、SSH でリモートシステムを管理したい場合: |
||
− | $ virt-manager -c vbox+ssh://username@host/system |
||
+ | コマンドラインから: |
||
− | ===ライブスナップショット=== |
||
− | 外部スナップショットという機能を使うことで仮想マシンを停止することなくライブスナップショットを取得することができます。現在は qcow2 と raw ファイルベースのイメージでだけで動作します。 |
||
+ | $ virsh [option] <command> [argument]... |
||
− | スナップショットが作成されると、KVM は使用されている仮想マシンに新しいブロックデバイスとして新規スナップショットイメージを加えます。新しいデータは直接そこに保存され元のディスクイメージはオフラインになるため簡単にコピーやバックアップを取ることが可能です。その後、仮想マシンをシャットダウンせずに、元のイメージにスナップショットイメージをマージすることができます。 |
||
+ | インタラクティブターミナルから: |
||
− | 以下、使用方法です。 |
||
+ | virsh # <command> [argument]... |
||
− | 現在動作中の仮想マシン: |
||
− | {{hc|# virsh list --all|<nowiki> |
||
− | Id Name State |
||
− | ---------------------------------------------------- |
||
− | 3 archey running |
||
− | </nowiki>}} |
||
+ | ヘルプを見るには: |
||
− | 現在のイメージを全て表示: |
||
+ | |||
− | {{hc|# virsh domblklist archey|<nowiki> |
||
+ | $ virsh help [option*] or [group-keyword*] |
||
+ | |||
+ | === ストレージプール === |
||
+ | |||
+ | プールはストレージ''ボリューム''を保存しておく場所です。libvirt における''ボリューム''は、他のハイパーバイザーでは"仮想ディスク"または"仮想マシンイメージ"と定義されていることがあります。プールの場所はディレクトリでも、ネットワークファイルシステムでも、パーティションでもかまいません ([[LVM]] を含む)。プールは有効・無効を切り替えたり領域を予約することができます。 |
||
+ | |||
+ | システムレベルでは、デフォルトで {{ic|/var/lib/libvirt/images/}} が有効になります。ユーザーセッションでは {{ic|virt-manager}} は {{ic|$HOME/VirtualMachines}} を作成します。 |
||
+ | |||
+ | 有効または無効なストレージプールを確認: |
||
+ | |||
+ | $ virsh pool-list --all |
||
+ | |||
+ | ==== virsh を使って新しいプールを作成 ==== |
||
+ | |||
+ | ストレージプールを追加したい場合、以下がコマンド形式、ディレクトリの追加、LVM ボリュームの追加の例です: |
||
+ | |||
+ | $ virsh pool-define-as name type [source-host] [source-path] [source-dev] [source-name] [<target>] [--source-format format] |
||
+ | $ virsh pool-define-as ''poolname'' dir - - - - /home/''username''/.local/libvirt/images |
||
+ | $ virsh pool-define-as ''poolname'' fs - - ''/dev/vg0/images'' - ''mntpoint'' |
||
+ | |||
+ | 上記のコマンドはプールの情報を定義します。ビルドするには: |
||
+ | |||
+ | $ virsh pool-build ''poolname'' |
||
+ | $ virsh pool-start ''poolname'' |
||
+ | $ virsh pool-autostart ''poolname'' |
||
+ | |||
+ | 削除するには: |
||
+ | |||
+ | $ virsh pool-undefine ''poolname'' |
||
+ | |||
+ | {{Tip|LVM ストレージプールの場合: |
||
+ | * ボリュームグループはストレージプール専用にするほうが良いでしょう。 |
||
+ | * LVM ボリュームグループの名前はプールの名前と変えて下さい。ストレージプールを削除したときに LVM グループも削除されてしまいます。 |
||
+ | }} |
||
+ | |||
+ | ==== virt-manager を使って新しいプールを作成 ==== |
||
+ | |||
+ | まず、既存のサーバーに接続してください。そこで、右クリックして ''Details'' を選んで下さい。''Storage'' に行き左下の ''+'' アイコンを押して下さい。それからはウィザードに従って下さい。 |
||
+ | |||
+ | === ストレージボリューム === |
||
+ | |||
+ | プールを作成したら、プールの中にボリュームを作成することができます。新しいドメイン (仮想マシン) を作成する場合、ドメインの作成時にボリュームを作成できるのでこの手順はスキップできます。 |
||
+ | |||
+ | ==== virsh を使って新しいボリュームを作成 ==== |
||
+ | |||
+ | ボリュームの作成、確認、リサイズ、削除: |
||
+ | |||
+ | $ virsh vol-create-as ''poolname'' ''volumename'' 10GiB |
||
+ | $ virsh vol-list ''poolname'' |
||
+ | $ virsh vol-resize --pool ''poolname'' ''volumename'' 12GiB |
||
+ | $ virsh vol-delete --pool ''poolname'' ''volumename'' |
||
+ | $ virsh vol-dumpxml --pool ''poolname'' ''volumename'' # for details. |
||
+ | |||
+ | ==== virt-manager の補助記憶 ==== |
||
+ | |||
+ | 新しいバージョンの {{ic|virt-manager}} では新しいディスクを作成するときに補助記憶を指定することができます。新しい仮想システムをプロビジョニングする場合にベースイメージを基にして新しいドメインを作ることができるため、時間と容量の両方を節約できてとても便利です。ただし現在のバージョンの {{ic|virt-manager}} にはバグ (https://bugzilla.redhat.com/show_bug.cgi?id=1235406) が存在し、補助イメージが {{ic|qcow2}} タイプの場合に {{ic|virt-manager}} が間違ったタイプの補助イメージを選択してしまいます。この場合、補助タイプとして {{ic|raw}} が選択されます。補助記憶から新しいイメージが読み取れなくなり、補助記憶を用意する意味が完全に失われます。 |
||
+ | |||
+ | この問題の回避策として {{ic|qemu-img}} を使うことで直接補助記憶を指定することができます。バグが修正されるまでは、補助記憶を使いたい場合、以下のコマンドを使って下さい: |
||
+ | |||
+ | $ qemu-img create -f qcow2 -o backing_file=<path to backing image>,backing_fmt=qcow2 <disk name> <disk size> |
||
+ | |||
+ | 作成したイメージを新しいドメインのベースとすることで COW ボリュームとして補助記憶が使用され時間と容量が節約されます。 |
||
+ | |||
+ | === ドメイン === |
||
+ | |||
+ | libvirt では仮想マシンは''ドメイン''と呼ばれます。コマンドラインから使う場合、{{ic|virsh}} でドメインを確認・作成・停止・シャットダウンできます。{{ic|virt-viewer}} を使って {{ic|virsh}} で起動したドメインを確認することも可能です。ドメインの作成は {{ic|virt-manager}} でグラフィカルに行うか {{ic|virt-install}} ({{pkg|virt-manager}} パッケージに含まれているコマンドラインプログラム) を使います。 |
||
+ | |||
+ | 新しいドメインを作成するときは、インストールメディアを使用します。ドメインの作成後にロードします。ストレージプールから {{ic|.iso}} を参照したり、光学ドライブを参照することができます。 |
||
+ | |||
+ | 有効または無効なドメインを確認: |
||
+ | |||
+ | # virsh list --all |
||
+ | |||
+ | {{Note|[[SELinux]] はデフォルトで {{ic|/var/lib/libvirt/images/}} にボリュームが保存されることを必要とします。SELinux を使っていてボリュームに問題が起こる場合、ボリュームがそのディレクトリにあるか確認、またはあなたが使用している非デフォルトのディレクトリの適当なラベリングを追加してください。}} |
||
+ | |||
+ | ==== virt-install を使って新しいドメインを作成 ==== |
||
+ | |||
+ | ドメイン (仮想マシン) を細かく設定したい場合、[[#virt-manager を使って新しいドメインを作成|virt-manager を使って新しいドメインを作成]]する方が簡単です。しかしながら、基本的な設定は {{ic|virt-install}} で行うことができます。最低でも指定する必要があるのは {{ic|--name}}, {{ic|--memory}}, ゲストストレージ ({{ic|--disk}}, {{ic|--filesystem}} または {{ic|--nodisks}}), インストール方法 ({{ic|.iso}} または CD) です。 |
||
+ | |||
+ | Arch Linux のインストール (2GiB, raw フォーマットのボリューム作成; ユーザーネットワーク): |
||
+ | |||
+ | $ virt-install \ |
||
+ | --name arch-linux_testing \ |
||
+ | --memory 1024 \ |
||
+ | --vcpus=2,maxvcpus=4 \ |
||
+ | --cpu host \ |
||
+ | --cdrom $HOME/Downloads/arch-linux_install.iso \ |
||
+ | --disk size=2,format=raw \ |
||
+ | --network user \ |
||
+ | --virt-type kvm |
||
+ | |||
+ | Fedora testing (Xen ハイパーバイザー, 非デフォルトのプール, オリジナルの表示を使わない): |
||
+ | |||
+ | $ virt-install \ |
||
+ | --connect xen:/// \ |
||
+ | --name fedora-testing \ |
||
+ | --memory 2048 \ |
||
+ | --vcpus=2 \ |
||
+ | --cpu=host \ |
||
+ | --cdrom /tmp/fedora20_x84-64.iso \ |
||
+ | --os-type=linux --os-variant=fedora20 \ |
||
+ | --disk pool=testing,size=4 \ |
||
+ | --network bridge=br0 \ |
||
+ | --graphics=vnc \ |
||
+ | --noautoconsole |
||
+ | $ virt-viewer --connect xen:/// fedora-testing |
||
+ | |||
+ | Windows: |
||
+ | |||
+ | $ virt-install \ |
||
+ | --name=windows7 \ |
||
+ | --memory 2048 \ |
||
+ | --cdrom /dev/sr0 \ |
||
+ | --os-variant=win7 \ |
||
+ | --disk /mnt/storage/domains/windows7.qcow2,size=20GiB \ |
||
+ | --network network=vm-net \ |
||
+ | --graphics spice |
||
+ | |||
+ | {{Tip|{{ic|--os-variant}} の引数を取得するには {{ic|1=osinfo-query --fields=name,version os}} を実行してください。ドメインの仕様を定義するのに役立ちます。ただし、{{ic|--memory}} と {{ic|--disk}} を入力する必要があります。仕様が必要な場合は適当な {{ic|/usr/share/libosinfo/db/oses/''os''.xml}} を見て下さい。インストール後、[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/form-Virtualization_Host_Configuration_and_Guest_Installation_Guide-Para_virtualized_drivers-Mounting_the_image_with_virt_manager.html VirtIO ドライバー] が含まれている [http://www.spice-space.org/download.html Spice Guest Tools] をインストールすると良いでしょう。Windows の VirtIO ネットワークドライバーは {{Aur|virtio-win}} にもあります。ドライバーはゲストの {{ic|.xml}} 設定のデバイスセクションに {{ic|1=<model type='virtio' />}} で指定します。詳細は [[QEMU#Windows ゲストを用意する|QEMU]] の記事を読んで下さい。}} |
||
+ | |||
+ | 既存のボリュームをインポート: |
||
+ | |||
+ | $ virt-install \ |
||
+ | --name demo \ |
||
+ | --memory 512 \ |
||
+ | --disk /home/user/VMs/mydisk.img \ |
||
+ | --import |
||
+ | |||
+ | ==== virt-manager を使って新しいドメインを作成 ==== |
||
+ | |||
+ | まずハイパーバイザーに接続します (例: QEMU/KVM ''システム''またはユーザー''セッション'')。接続を右クリックして ''New'' を選択して、ウィザードに従って下さい。 |
||
+ | |||
+ | * ''ステップ4'' で、''Allocate entire disk now'' のチェックを外すことができます -- VM がディスクの全てを使用していないときに容量を節約します。ただし、ディスクのフラグメンテーションが増加する可能性があるので、VM ホストのディスクの合計空き容量に''注意してください''、VM にディスク容量を追加で割り当てるほうが簡単だからです。 |
||
+ | |||
+ | * ''ステップ5'' では、''Advanced options'' を開いて ''Virt Type'' を ''kvm'' に設定してください。追加のハードウェア設定が必要な場合、''Customize configuration before install'' オプションを選んで下さい。 |
||
+ | |||
+ | ==== ドメインの管理 ==== |
||
+ | |||
+ | ドメインを起動: |
||
+ | |||
+ | $ virsh start ''domain'' |
||
+ | $ virt-viewer --connect qemu:///session ''domain'' |
||
+ | |||
+ | ドメインを上品にシャットダウン、または強制的にオフにする: |
||
+ | |||
+ | $ virsh shutdown ''domain'' |
||
+ | $ virsh destroy ''domain'' |
||
+ | |||
+ | libvirtd の起動時にドメインを自動実行: |
||
+ | |||
+ | $ virsh autostart ''domain'' |
||
+ | $ virsh autostart ''domain'' --disable |
||
+ | |||
+ | ホストのシャットダウン時にドメインもシャットダウン: |
||
+ | |||
+ | : {{ic|libvirt-guests.service}} systemd サービスを使うことでホストのシャットダウン時に自動的にゲストの実行をサスペンド (もしくは) シャットダウンさせることができます。同じデーモンでホストの起動時に自動的にサスペンド (シャットダウン) されたゲストが復帰 (起動) されます。サービスのオプションは {{ic|/etc/conf.d/libvirt-guests}} をチェックしてください。 |
||
+ | |||
+ | ドメインの設定を編集: |
||
+ | |||
+ | $ virsh edit ''domain'' |
||
+ | |||
+ | {{note|QEMU によって直接起動した仮想マシンは libvirt ツールで管理できません。}} |
||
+ | |||
+ | === ネットワーク === |
||
+ | |||
+ | デフォルトでは、{{ic|libvird}} systemd サービスが起動すると、''default'' という名前の NAT ブリッジが作成されて外部ネットワークに接続できるようになります。 |
||
+ | |||
+ | 他のネットワーク接続が必要な場合、ドメインとの接続を作成することができる4つのネットワークタイプが存在します: |
||
+ | |||
+ | * bridge — 仮想デバイス。物理インターフェイスと直接データを共有します。ホストで''固定''ネットワークを使う場合や他のドメインに接続する必要がない場合、またはドメインに完全なインバウンドとアウトバウンドの通信が必要な場合やドメインを''システムレベル''で動作させる場合、ブリッジを使って下さい。ブリッジを追加する方法は[[ネットワークブリッジ]]を参照。作成後、ゲストの {{ic|.xml}} 設定ファイルで指定する必要があります。 |
||
+ | * network — 仮想ネットワーク。他のドメインと共有することができます。ホストが''動的''ネットワーク (例: NetworkManager) やワイヤレスを使う場合仮想ネットワークを使って下さい。 |
||
+ | * macvtap — ホストの物理インターフェイスに直接接続。 |
||
+ | * user — ローカルのネットワーク。ユーザー''セッション''の場合に使って下さい。 |
||
+ | |||
+ | {{ic|virsh}} にはネットワークを作成するための様々なオプションが存在していますが、({{ic|virt-manager}} などの) グラフィカルユーザーインターフェイスを使ったり [[#virt-install を使って新しいドメインを作成|virt-install でドメインを作成]]するときにネットワーク接続を作成する方が簡単です。 |
||
+ | |||
+ | {{note|libvirt は {{pkg|dnsmasq}} で DHCP や DNS を管理し、仮想ネットワークごとにインスタンスを起動します。また、適切なルーティングが行われるように iptables ルールを追加して、{{ic|ip_forward}} カーネルパラメータを有効にします。}} |
||
+ | |||
+ | === スナップショット === |
||
+ | |||
+ | スナップショットは現時点でのドメインのディスク・メモリ・デバイスの状態を取得して、将来のために保存します。OS の"クリーン"なコピーを保存することから、ドメインが破壊される前にドメインの状態を保存することまで、様々な理由で使われます。スナップショットは一意な名前で識別されます。 |
||
+ | |||
+ | スナップショットはボリュームの中に保存されるためボリュームが次の形式である必要があります: qcow2 または raw。スナップショットは差分を使用するので大量の容量を使用することはありません。 |
||
+ | |||
+ | ==== スナップショットの作成 ==== |
||
+ | |||
+ | スナップショットが取得されると新しいブロックデバイスとして保存されオリジナルのスナップショットはオフラインになります。スナップショットは他のスナップショットから選択したりマージすることができます (ドメインをシャットダウンする必要はありません)。 |
||
+ | |||
+ | 動作中のドメインのボリュームを確認 (動作中のドメインは {{ic|virsh list}} で確認できます): |
||
+ | |||
+ | {{hc|# virsh domblklist ''domain''|<nowiki> |
||
Target Source |
Target Source |
||
------------------------------------------------ |
------------------------------------------------ |
||
− | vda /vms/ |
+ | vda /vms/domain.img |
</nowiki>}} |
</nowiki>}} |
||
− | + | ボリュームの物理プロパティを確認するには: |
|
+ | |||
− | {{hc|# qemu-img info /vms/archey.img|<nowiki> |
||
− | + | {{hc|# qemu-img info /vms/domain.img|<nowiki> |
|
+ | image: /vms/domain.img |
||
file format: qcow2 |
file format: qcow2 |
||
virtual size: 50G (53687091200 bytes) |
virtual size: 50G (53687091200 bytes) |
||
190行目: | 371行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | disk-only スナップショットを作成 |
+ | disk-only スナップショットを作成 ({{ic|--atomic}} オプションはスナップショットの作成が失敗した場合にボリュームに変更が加わっていないことを確認します): |
− | # virsh snapshot-create-as archey snapshot1 --disk-only --atomic |
||
+ | # virsh snapshot-create-as ''domain'' snapshot1 --disk-only --atomic |
||
− | スナップショットを見たい場合は表示する: |
||
+ | |||
− | {{hc|# virsh snapshot-list archey|<nowiki> |
||
+ | スナップショットを確認: |
||
+ | |||
+ | {{hc|# virsh snapshot-list ''domain''|<nowiki> |
||
Name Creation Time State |
Name Creation Time State |
||
------------------------------------------------------------ |
------------------------------------------------------------ |
||
200行目: | 383行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | + | {{ic|1=cp -sparse=true}} や {{ic|rsync -S}} を使ってオリジナルのイメージをコピーしてオリジナルのイメージをスナップショットにマージできます: |
|
− | {{hc|# qemu-img info /vms/archey.snapshot1|<nowiki> |
||
− | image: /vms/archey.snapshot1 |
||
− | file format: qcow2 |
||
− | virtual size: 50G (53687091200 bytes) |
||
− | disk size: 18M |
||
− | cluster_size: 65536 |
||
− | backing file: /vms/archey.img |
||
− | </nowiki>}} |
||
+ | # virsh blockpull --domain ''domain'' --path /vms/''domain''.snapshot1 |
||
− | この段階で、{{ic|1=cp -sparse=true}} や {{ic|rsync -S}} を使ってオリジナルのイメージをコピーすることができます。 |
||
− | そしてオリジナルのイメージをスナップショットにマージできます。 |
||
− | # virsh blockpull --domain archey --path /vms/archey.snapshot1 |
||
− | + | {{ic|domain.snapshot1}} が新しいボリュームになります。マージが完了したらオリジナルのボリューム ({{ic|domain.img}} とスナップショットのメタデータは削除できます。{{ic|virsh blockcommit}} が {{ic|blockpull}} と反対の動作をするようになる予定ですが現在開発中です ({{ic|snapshot-revert}} 機能を含む、来年リリース予定)。 |
|
+ | === 他の管理 === |
||
− | この KVM の新機能はファイルシステムを破損するリスクを負うことなくライブバックアップを頻繁に取得したいと思ってる人にとって特に重宝します。 |
||
+ | 非デフォルトのハイパーバイザーに接続: |
||
− | ==libvirt へのリモートアクセス== |
||
+ | $ virsh --connect xen:/// |
||
− | ===暗号化されない TCP/IP ソケットを使う (一番シンプル、セキュリティは低い)=== |
||
+ | virsh # uri |
||
− | {{Warning|This should ''only'' be used for testing or use over a secure, private, and trusted network.}} |
||
+ | xen:/// |
||
+ | SSH で QEMU ハイパーバイザーに接続してログイン: |
||
− | {{ic|/etc/libvirt/libvirtd.conf}} を編集してください: |
||
− | {{hc|/etc/libvirt/libvirtd.conf|<nowiki> |
||
− | listen_tls = 0 |
||
− | listen_tcp = 1 |
||
− | auth_tcp=none |
||
− | </nowiki>}} |
||
+ | $ virsh --connect qemu+ssh://''username''@''host''/system |
||
− | {{Warning|We do not enable SASL here, so all TCP traffic is cleartext! For real world use, ''always'' enable SASL.}} |
||
+ | $ LIBVIRT_DEBUG=1 virsh --connect qemu+ssh://''username''@''host''/system |
||
+ | SSH でグラフィカルコンソールに接続: |
||
− | さらに {{ic|/etc/conf.d/libvirtd}} を編集してサーバーを listening モードで起動する必要があります: |
||
− | {{hc|/etc/conf.d/libvirtd|2=LIBVIRTD_ARGS="--listen"}} |
||
+ | $ virt-viewer --connect qemu+ssh://''username''@''host''/system ''domain'' |
||
− | ===SSH を使う=== |
||
+ | $ virt-manager --connect qemu+ssh://''username''@''host''/system ''domain'' |
||
− | [[Secure Shell|SSH]] によるリモート管理には {{Pkg|openbsd-netcat}} パッケージが必要です。 |
||
+ | {{Note|(Arch 以外の) RHEL リモートサーバーに接続するときに問題が発生する場合、{{bug|30748}} と {{bug|22068}} に書かれている方法を試してみて下さい。}} |
||
− | {{ic|virsh}} を使ってリモートのシステムに接続するには: |
||
− | $ virsh -c qemu+ssh://''username''@''host''/system |
||
+ | VirtualBox ハイパーバイザーに接続 (libvirt における VirtualBox のサポートはまだ安定していないため libvirtd がクラッシュする可能性があります): |
||
− | 何か問題が起こった場合、次のコマンドでログを取得できます: |
||
− | $ LIBVIRT_DEBUG=1 virsh -c qemu+ssh://''username''@''host''/system |
||
+ | $ virsh --connect vbox:///system |
||
− | 仮想マシンにグラフィカルコンソールを表示するには: |
||
− | $ virt-viewer --connect qemu+ssh://''username''@''host''/system myvirtualmachine |
||
+ | ネットワークの設定: |
||
− | 仮想マシンのデスクトップ管理ツールを表示するには: |
||
− | $ virt-manager -c qemu+ssh://''username''@''host''/system |
||
+ | $ virsh -c qemu:///system net-list --all |
||
− | {{Note|If you are having problems connecting to a remote RHEL server (or anything other than Arch, really), try the two workarounds mentioned in {{bug|30748}} and {{bug|22068}}.}} |
||
+ | $ virsh -c qemu:///system net-dumpxml default |
||
+ | |||
+ | == Python 接続コード == |
||
− | === Python を使う === |
||
{{Pkg|libvirt-python}} パッケージによって {{ic|/usr/lib/python2.7/site-packages/libvirt.py}} に {{Pkg|python2}} API が提供されます。 |
{{Pkg|libvirt-python}} パッケージによって {{ic|/usr/lib/python2.7/site-packages/libvirt.py}} に {{Pkg|python2}} API が提供されます。 |
||
265行目: | 432行目: | ||
import libvirt |
import libvirt |
||
if (__name__ == "__main__"): |
if (__name__ == "__main__"): |
||
− | conn = libvirt.open("qemu+ssh://xxx/system") |
+ | <nowiki>conn = libvirt.open("qemu+ssh://xxx/system")</nowiki> |
print "Trying to find node on xxx" |
print "Trying to find node on xxx" |
||
domains = conn.listDomainsID() |
domains = conn.listDomainsID() |
||
275行目: | 442行目: | ||
break |
break |
||
+ | == 参照 == |
||
− | == ブリッジネットワーク == |
||
− | 仮想マシンから''物理イーサネット''を使用するには、物理イーサネットデバイス (ここでは ''eth0'') とか VM が使用する仮想イーサネットデバイスの間に''ブリッジ''を作成する必要があります。 |
||
− | |||
− | === ホスト設定 === |
||
− | |||
− | libvirt は NAT ネットワークのためにブリッジ ''virbr0'' を作成するため、''br0'' や ''virbr1'' など他の名前を使って下さい。 |
||
− | [[Netctl|netctl]] や [[Systemd-networkd|systemd-networkd]] の新しいプロファイルを作ってブリッジを設定する必要があります、例えば (DHCP を使う設定): |
||
− | |||
− | {{hc|/etc/netctl/br0|<nowiki> |
||
− | Description="Bridge connection for kvm" |
||
− | Interface=br0 |
||
− | Connection=bridge |
||
− | BindsToInterfaces=(eno1) |
||
− | IP=dhcp |
||
− | </nowiki>}} |
||
+ | * [http://libvirt.org/drvqemu.html libvirt 公式ウェブサイト] |
||
− | {{out of date|The tip below needs to be updated for [[netctl]].}} |
||
+ | * [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html Red Hat Virtualization Deployment and Administration Guide] |
||
− | {{Tip|It is recommended that you enable [[Wikipedia:Spanning_Tree_Protocol|Spanning Tree Protocol]] (STP) on the virtual bridge (e.g. ''br0'') that you create to avoid any potential bridging loops. You can automatically enable STP by appending {{ic|1=POST_UP="brctl stp $INTERFACE on"}} to the netcfg profile.}} |
||
+ | * [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Tuning_and_Optimization_Guide/index.html Red Hat Virtualization Tuning and Optimization Guide] |
||
− | |||
+ | * [http://docs.slackware.com/howtos:general_admin:kvm_libvirt Slackware KVM and libvirt] |
||
− | === ゲスト設定 === |
||
+ | * [http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatkvm.htm IBM KVM] |
||
− | そして ''VM'' の中で''ブリッジインターフェイス''を有効にします。 |
||
− | 最新の Linux マシンの場合、''.xml'' ファイルの以下のコードが使えます: |
||
− | |||
− | [...] |
||
− | <interface type='bridge'> |
||
− | <source bridge='br0'/> |
||
− | <mac address='24:42:53:21:52:49'/> |
||
− | <model type='virtio' /> |
||
− | </interface> |
||
− | [...] |
||
− | |||
− | このコードはマシン上の ''virtio'' デバイスを有効化します。Windows では追加のドライバーをインストールする (こちらからドライバーを取得できます [http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers Windows KVM VirtIO drivers]) か {{ic|<model type<nowiki>=</nowiki>'virtio' />}} 行を削除する必要があります: |
||
− | |||
− | [...] |
||
− | <interface type='bridge'> |
||
− | <source bridge='br0'/> |
||
− | <mac address='24:42:53:21:52:49'/> |
||
− | </interface> |
||
− | [...] |
||
− | |||
− | == 参照 == |
||
− | * [http://libvirt.org/drvqemu.html libvirt ウェブサイト] |
2015年8月31日 (月) 18:16時点における版
関連記事
libvirt: The virtualization API より:
- Libvirt は仮想マシンや、ストレージ・ネットワークインターフェイスの管理などの仮想化機能を管理するための便利な手段を提供するソフトウェアのコレクションです。ソフトウェアには API ライブラリ、デーモン (libvirtd)、コマンドラインユーティリティ (virsh) が含まれています。
- libvirt の目標は様々な仮想化プロバイダ/ハイパーバイザーを管理する共通の手段を提供することにあります。
- libvirt の主な特徴は以下の通りです:
- VM 管理: 起動・停止・一時停止・保存・復旧・移行などの様々なドメイン操作。ディスク・ネットワークインターフェイス・メモリ・CPU など多数のデバイスのホットプラグ制御。
- リモートマシンのサポート: libvirt デーモンが走ってるマシンなら libvirt の機能は全て使うことができます。リモートマシンも例外ではありません。リモートで接続するための様々なネットワーク転送をサポートしています。一番シンプルなのは SSH で、細かい設定を必要としません。
- ストレージ管理: libvirt デーモンを動かしているホストを使って様々なタイプのストレージを管理できます: 様々なフォーマットのファイルイメージを作成 (qcow2, vmdk, raw, ...)、NFS 共有のマウント、既存の LVM ボリュームグループの列挙、新しい LVM ボリュームグループや論理ボリュームの作成、ディスクデバイスのパーティション、iSCSI 共有のマウントなど。
- ネットワークインターフェイス管理: libvirt デーモンを動かしているホストを使って物理・論理ネットワークインターフェイスを管理できます。既存のインターフェイスを列挙するだけでなく、インターフェイス・ブリッジ・仮想 LAN・ボンドデバイスを設定 (作成) できます。
- 仮想 NAT とルートベースネットワーク: libvirt デーモンを動かしているホストを使って仮想ネットワークを管理・作成できます。Libvirt の仮想ネットワークはファイアウォールのルールを使うことでルーターとして動作し、VM からホストマシンのネットワークに透過的にアクセスすることを可能にします。
libvirt には KVM/QEMU, Xen, LXC, OpenVZ, VirtualBox などの仮想化バックエンドを、リモート・ローカルを問わず管理するために、統一の抽象化レイヤーが備わっています (その他)。
長期的に安定した C の API を用意することで、様々なツール で libvirtd デーモンに接続して多数の仮想化エンジンを管理することが可能です。libvirt デフォルトのクライアントは virsh と呼ばれています。
インストール
デーモン・クライアントアーキテクチャをとっているため、libvirt をインストールする必要があるのは仮想化システムをホストするマシンだけです。サーバーとクライアントは同じ物理マシンにすることができます。
サーバー
libvirt パッケージと、どれか一つハイパーバイザーをインストールしてください:
- 2015年2月1日現在、
libvirtd
を起動するには qemu をインストールする必要があります (FS#41888 を参照)。libvirt KVM/QEMU ドライバー は基本の libvirt ドライバーなので KVM が有効になっていれば、完全に仮想化された、ハードウェアによる支援を受けたゲストを使うことができます。詳しくは QEMU の記事を見て下さい。
- 他にも仮想化バックエンドとして LXC, VirtualBox, Xen などが存在します。インストール方法はそれぞれのページを参照してください。
他にサポートされているハイパーバイザーは こちら に記載されています。
ネットワークに接続するために、以下をインストールしてください:
- デフォルト の NAT/DHCP ネットワークの場合 ebtables と dnsmasq。
- ブリッジネットワークの場合 bridge-utils。
- SSH によるネットワーク管理の場合 openbsd-netcat。
クライアント
クライアントは仮想マシンを管理するために使用するユーザーインターフェイスです。
- virsh はドメインを管理・設定するためのコマンドラインプログラムです。libvirt パッケージに含まれています。
- virt-manager は仮想マシンを管理するためのグラフィカルユーザーインターフェイスです。
- virtviewer は仮想化されたゲスト OS のグラフィカルな画面を操作するための軽量なインターフェイスです。
- gnome-boxes はリモートや仮想システムにアクセスするためのシンプルな GNOME 3 アプリケーションです。
libvirt に対応しているソフトウェアのリストは こちら にあります。
設定
システムレベルの管理をする場合、少なくとも、認証を設定して、デーモンを起動する必要があります。
認証を設定
libvirt: Connection authentication より:
- libvirt デーモンではクライアントの接続に使用する認証メカニズムを管理者が選択することができます。基本的に libvirt デーモンのメイン設定ファイルである
/etc/libvirt/libvirtd.conf
で設定します。libvirt のソケットごとに別々の認証メカニズムを設定できます。今のところnone
,polkit
,sasl
の中から選べます。
libvirt は依存パッケージとして polkit をインストールするので、unix_sock_auth
パラメータのデフォルト値としては polkit が使われます (ソース)。また、ファイルベースのパーミッションを使うこともできます。
polkit を使う
libvirt デーモンは /usr/share/polkit-1/actions/org.libvirt.unix.policy
で2つの polkit アクションを提供します:
- 完全なアクセス管理のための
org.libvirt.unix.manage
(RW デーモンソケット) - アクセスの監視のための
org.libvirt.unix.monitor
(読み取り専用ソケット).
RW デーモンソケットのデフォルトポリシーを使うには管理者として認証する必要があります。sudo 認証と似ていますが、クライアントアプリケーションを root で動かす必要があるというわけではありません。また、デフォルトポリシーではどんなアプリケーションでも RO ソケットに接続することはできます。
Arch では wheel
グループのユーザーを管理者として認識します: これは /etc/polkit-1/rules.d/50-default.rules
で定義されています (Polkit#管理者の識別 を参照)。そのためユーザーを wheel
グループに追加さえすれば、新しいグループやルールファイルを作成する必要はありません。(virt-manager などで) RW ソケットに接続する時にユーザーのパスワードを入力するように求められます。
RW デーモンソケットにアクセスするときに認証するグループを変更したい場合、以下のファイルを作成:
/etc/polkit-1/rules.d/49-org.libvirt.unix.manager.rules
/* Allow users in kvm group to manage the libvirt daemon without authentication */ polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.isInGroup("kvm")) { return polkit.Result.YES; } });
そしてユーザーを kvm
グループに追加して再ログインしてください。kvm は好きなグループに置き換えることができます (例: libvirt
)、グループが存在することと、ユーザーがグループに属していることを確認してください (詳しくはユーザーとグループを参照)。グループの変更を適用するには再ログインが必要です。
ファイルベースのパーミッションで認証
libvirt グループのユーザーが仮想マシンを管理できるようにファイルベースのパーミッションを定義するには、以下の行をアンコメントします:
/etc/libvirt/libvirtd.conf
#unix_sock_group = "libvirt" #unix_sock_ro_perms = "0777" # set to 0770 to deny non-group libvirt users #unix_sock_rw_perms = "0770" #auth_unix_ro = "none" #auth_unix_rw = "none"
ガイドによっては libvird の特定のディレクトリのパーミッションを変更すると管理がしやすくなると書かれていることがありますが、パッケージをアップデートする際に変更したパーミッションは元に戻ってしまうので注意してください。システムディレクトリを編集するときは、root ユーザーを使うようにしてください。
デーモンを起動
systemd を使って libvirtd.service
を起動・有効化してください。
TCP/IP ソケットの暗号化の解除
/etc/libvirt/libvirtd.conf
を編集:
/etc/libvirt/libvirtd.conf
listen_tls = 0 listen_tcp = 1 auth_tcp=none
また、/etc/conf.d/libvirtd
を編集してサーバーをリスニングモードで起動する必要があります:
/etc/conf.d/libvirtd
LIBVIRTD_ARGS="--listen"
テスト
システムレベルでデーモンが正しく動作しているかテスト:
$ virsh -c qemu:///system
ユーザーセッションで libvirt が正しく動作するかテスト:
$ virsh -c qemu:///session
管理
Libvirt の管理は3つのツールで行うことができます: 一つは GUI virt-manager
で、二つはコマンドラインツールです: virsh
と guestfish
(libguestfsAUR に含まれています)。
virsh
virsh はゲストドメイン (仮想マシン) の管理のためのプログラムですが、仮想化管理のスクリプトにも使えます。ほとんどの virsh コマンドは実行するのに root 権限を必要とします。ただしドメインの作成や実行などは (VirtualBox と同じように) 通常ユーザーで実行することができます。
Virsh にはインタラクティブなターミナルが含まれており、コマンドを何も指定しないで実行したときに起動します (オプションは指定することができます): virsh
。インタラクティブターミナルはタブ補完をサポートしています。
コマンドラインから:
$ virsh [option] <command> [argument]...
インタラクティブターミナルから:
virsh # <command> [argument]...
ヘルプを見るには:
$ virsh help [option*] or [group-keyword*]
ストレージプール
プールはストレージボリュームを保存しておく場所です。libvirt におけるボリュームは、他のハイパーバイザーでは"仮想ディスク"または"仮想マシンイメージ"と定義されていることがあります。プールの場所はディレクトリでも、ネットワークファイルシステムでも、パーティションでもかまいません (LVM を含む)。プールは有効・無効を切り替えたり領域を予約することができます。
システムレベルでは、デフォルトで /var/lib/libvirt/images/
が有効になります。ユーザーセッションでは virt-manager
は $HOME/VirtualMachines
を作成します。
有効または無効なストレージプールを確認:
$ virsh pool-list --all
virsh を使って新しいプールを作成
ストレージプールを追加したい場合、以下がコマンド形式、ディレクトリの追加、LVM ボリュームの追加の例です:
$ virsh pool-define-as name type [source-host] [source-path] [source-dev] [source-name] [<target>] [--source-format format] $ virsh pool-define-as poolname dir - - - - /home/username/.local/libvirt/images $ virsh pool-define-as poolname fs - - /dev/vg0/images - mntpoint
上記のコマンドはプールの情報を定義します。ビルドするには:
$ virsh pool-build poolname $ virsh pool-start poolname $ virsh pool-autostart poolname
削除するには:
$ virsh pool-undefine poolname
virt-manager を使って新しいプールを作成
まず、既存のサーバーに接続してください。そこで、右クリックして Details を選んで下さい。Storage に行き左下の + アイコンを押して下さい。それからはウィザードに従って下さい。
ストレージボリューム
プールを作成したら、プールの中にボリュームを作成することができます。新しいドメイン (仮想マシン) を作成する場合、ドメインの作成時にボリュームを作成できるのでこの手順はスキップできます。
virsh を使って新しいボリュームを作成
ボリュームの作成、確認、リサイズ、削除:
$ virsh vol-create-as poolname volumename 10GiB $ virsh vol-list poolname $ virsh vol-resize --pool poolname volumename 12GiB $ virsh vol-delete --pool poolname volumename $ virsh vol-dumpxml --pool poolname volumename # for details.
virt-manager の補助記憶
新しいバージョンの virt-manager
では新しいディスクを作成するときに補助記憶を指定することができます。新しい仮想システムをプロビジョニングする場合にベースイメージを基にして新しいドメインを作ることができるため、時間と容量の両方を節約できてとても便利です。ただし現在のバージョンの virt-manager
にはバグ (https://bugzilla.redhat.com/show_bug.cgi?id=1235406) が存在し、補助イメージが qcow2
タイプの場合に virt-manager
が間違ったタイプの補助イメージを選択してしまいます。この場合、補助タイプとして raw
が選択されます。補助記憶から新しいイメージが読み取れなくなり、補助記憶を用意する意味が完全に失われます。
この問題の回避策として qemu-img
を使うことで直接補助記憶を指定することができます。バグが修正されるまでは、補助記憶を使いたい場合、以下のコマンドを使って下さい:
$ qemu-img create -f qcow2 -o backing_file=<path to backing image>,backing_fmt=qcow2 <disk name> <disk size>
作成したイメージを新しいドメインのベースとすることで COW ボリュームとして補助記憶が使用され時間と容量が節約されます。
ドメイン
libvirt では仮想マシンはドメインと呼ばれます。コマンドラインから使う場合、virsh
でドメインを確認・作成・停止・シャットダウンできます。virt-viewer
を使って virsh
で起動したドメインを確認することも可能です。ドメインの作成は virt-manager
でグラフィカルに行うか virt-install
(virt-manager パッケージに含まれているコマンドラインプログラム) を使います。
新しいドメインを作成するときは、インストールメディアを使用します。ドメインの作成後にロードします。ストレージプールから .iso
を参照したり、光学ドライブを参照することができます。
有効または無効なドメインを確認:
# virsh list --all
virt-install を使って新しいドメインを作成
ドメイン (仮想マシン) を細かく設定したい場合、virt-manager を使って新しいドメインを作成する方が簡単です。しかしながら、基本的な設定は virt-install
で行うことができます。最低でも指定する必要があるのは --name
, --memory
, ゲストストレージ (--disk
, --filesystem
または --nodisks
), インストール方法 (.iso
または CD) です。
Arch Linux のインストール (2GiB, raw フォーマットのボリューム作成; ユーザーネットワーク):
$ virt-install \ --name arch-linux_testing \ --memory 1024 \ --vcpus=2,maxvcpus=4 \ --cpu host \ --cdrom $HOME/Downloads/arch-linux_install.iso \ --disk size=2,format=raw \ --network user \ --virt-type kvm
Fedora testing (Xen ハイパーバイザー, 非デフォルトのプール, オリジナルの表示を使わない):
$ virt-install \ --connect xen:/// \ --name fedora-testing \ --memory 2048 \ --vcpus=2 \ --cpu=host \ --cdrom /tmp/fedora20_x84-64.iso \ --os-type=linux --os-variant=fedora20 \ --disk pool=testing,size=4 \ --network bridge=br0 \ --graphics=vnc \ --noautoconsole $ virt-viewer --connect xen:/// fedora-testing
Windows:
$ virt-install \ --name=windows7 \ --memory 2048 \ --cdrom /dev/sr0 \ --os-variant=win7 \ --disk /mnt/storage/domains/windows7.qcow2,size=20GiB \ --network network=vm-net \ --graphics spice
既存のボリュームをインポート:
$ virt-install \ --name demo \ --memory 512 \ --disk /home/user/VMs/mydisk.img \ --import
virt-manager を使って新しいドメインを作成
まずハイパーバイザーに接続します (例: QEMU/KVM システムまたはユーザーセッション)。接続を右クリックして New を選択して、ウィザードに従って下さい。
- ステップ4 で、Allocate entire disk now のチェックを外すことができます -- VM がディスクの全てを使用していないときに容量を節約します。ただし、ディスクのフラグメンテーションが増加する可能性があるので、VM ホストのディスクの合計空き容量に注意してください、VM にディスク容量を追加で割り当てるほうが簡単だからです。
- ステップ5 では、Advanced options を開いて Virt Type を kvm に設定してください。追加のハードウェア設定が必要な場合、Customize configuration before install オプションを選んで下さい。
ドメインの管理
ドメインを起動:
$ virsh start domain $ virt-viewer --connect qemu:///session domain
ドメインを上品にシャットダウン、または強制的にオフにする:
$ virsh shutdown domain $ virsh destroy domain
libvirtd の起動時にドメインを自動実行:
$ virsh autostart domain $ virsh autostart domain --disable
ホストのシャットダウン時にドメインもシャットダウン:
libvirt-guests.service
systemd サービスを使うことでホストのシャットダウン時に自動的にゲストの実行をサスペンド (もしくは) シャットダウンさせることができます。同じデーモンでホストの起動時に自動的にサスペンド (シャットダウン) されたゲストが復帰 (起動) されます。サービスのオプションは/etc/conf.d/libvirt-guests
をチェックしてください。
ドメインの設定を編集:
$ virsh edit domain
ネットワーク
デフォルトでは、libvird
systemd サービスが起動すると、default という名前の NAT ブリッジが作成されて外部ネットワークに接続できるようになります。
他のネットワーク接続が必要な場合、ドメインとの接続を作成することができる4つのネットワークタイプが存在します:
- bridge — 仮想デバイス。物理インターフェイスと直接データを共有します。ホストで固定ネットワークを使う場合や他のドメインに接続する必要がない場合、またはドメインに完全なインバウンドとアウトバウンドの通信が必要な場合やドメインをシステムレベルで動作させる場合、ブリッジを使って下さい。ブリッジを追加する方法はネットワークブリッジを参照。作成後、ゲストの
.xml
設定ファイルで指定する必要があります。 - network — 仮想ネットワーク。他のドメインと共有することができます。ホストが動的ネットワーク (例: NetworkManager) やワイヤレスを使う場合仮想ネットワークを使って下さい。
- macvtap — ホストの物理インターフェイスに直接接続。
- user — ローカルのネットワーク。ユーザーセッションの場合に使って下さい。
virsh
にはネットワークを作成するための様々なオプションが存在していますが、(virt-manager
などの) グラフィカルユーザーインターフェイスを使ったり virt-install でドメインを作成するときにネットワーク接続を作成する方が簡単です。
スナップショット
スナップショットは現時点でのドメインのディスク・メモリ・デバイスの状態を取得して、将来のために保存します。OS の"クリーン"なコピーを保存することから、ドメインが破壊される前にドメインの状態を保存することまで、様々な理由で使われます。スナップショットは一意な名前で識別されます。
スナップショットはボリュームの中に保存されるためボリュームが次の形式である必要があります: qcow2 または raw。スナップショットは差分を使用するので大量の容量を使用することはありません。
スナップショットの作成
スナップショットが取得されると新しいブロックデバイスとして保存されオリジナルのスナップショットはオフラインになります。スナップショットは他のスナップショットから選択したりマージすることができます (ドメインをシャットダウンする必要はありません)。
動作中のドメインのボリュームを確認 (動作中のドメインは virsh list
で確認できます):
# virsh domblklist domain
Target Source ------------------------------------------------ vda /vms/domain.img
ボリュームの物理プロパティを確認するには:
# qemu-img info /vms/domain.img
image: /vms/domain.img file format: qcow2 virtual size: 50G (53687091200 bytes) disk size: 2.1G cluster_size: 65536
disk-only スナップショットを作成 (--atomic
オプションはスナップショットの作成が失敗した場合にボリュームに変更が加わっていないことを確認します):
# virsh snapshot-create-as domain snapshot1 --disk-only --atomic
スナップショットを確認:
# virsh snapshot-list domain
Name Creation Time State ------------------------------------------------------------ snapshot1 2012-10-21 17:12:57 -0700 disk-snapshot
cp -sparse=true
や rsync -S
を使ってオリジナルのイメージをコピーしてオリジナルのイメージをスナップショットにマージできます:
# virsh blockpull --domain domain --path /vms/domain.snapshot1
domain.snapshot1
が新しいボリュームになります。マージが完了したらオリジナルのボリューム (domain.img
とスナップショットのメタデータは削除できます。virsh blockcommit
が blockpull
と反対の動作をするようになる予定ですが現在開発中です (snapshot-revert
機能を含む、来年リリース予定)。
他の管理
非デフォルトのハイパーバイザーに接続:
$ virsh --connect xen:/// virsh # uri xen:///
SSH で QEMU ハイパーバイザーに接続してログイン:
$ virsh --connect qemu+ssh://username@host/system $ LIBVIRT_DEBUG=1 virsh --connect qemu+ssh://username@host/system
SSH でグラフィカルコンソールに接続:
$ virt-viewer --connect qemu+ssh://username@host/system domain $ virt-manager --connect qemu+ssh://username@host/system domain
VirtualBox ハイパーバイザーに接続 (libvirt における VirtualBox のサポートはまだ安定していないため libvirtd がクラッシュする可能性があります):
$ virsh --connect vbox:///system
ネットワークの設定:
$ virsh -c qemu:///system net-list --all $ virsh -c qemu:///system net-dumpxml default
Python 接続コード
libvirt-python パッケージによって /usr/lib/python2.7/site-packages/libvirt.py
に python2 API が提供されます。
一般的なサンプルは /usr/share/doc/libvirt-python-your_libvirt_version/examples/
にあります。
#! /usr/bin/env python2 # -*- coding: utf-8 -*- import socket import sys import libvirt if (__name__ == "__main__"): conn = libvirt.open("qemu+ssh://xxx/system") print "Trying to find node on xxx" domains = conn.listDomainsID() for domainID in domains: domConnect = conn.lookupByID(domainID) if domConnect.name() == 'xxx-node': print "Found shared node on xxx with ID " + str(domainID) domServ = domConnect break