メモ
virt-install対話式実行
virt-install --prompt
virshコマンド
コマンド | 動作 |
---|---|
virsh list --all | 仮想マシン一覧出力 |
virsh dominfo VM | 仮想マシン情報出力 |
viersh start VM | 仮想マシン起動 |
virsh suspend VM | 仮想マシン一時停止 |
virsh resume VM | 仮想マシン再開 |
virsh shutdown VM | 仮想マシン停止(シャットダウン) |
virsh reboot VM | 仮想マシン再起動 |
virsh destroy VM | 仮想マシン停止(パワーオフ) |
virsh undefine VM | 仮想マシン削除 |
virsh pool-list | ストレージプール一覧出力 |
virsh vol-list POOL | ボリューム一覧出力 |
virsh vol-delete IMAGE_FILE | ボリューム削除 |
virsh edit VM | 仮想マシン設定変更 |
virsh vcpuinfo VM | 仮想マシンCPU詳細 |
virsh iface-list | IF一覧 |
virsh iface-mac IF | MACアドレス確認 |
※undefineでは仮想マシンディスクイメージファイル(上記のボリューム)は削除されない。
実行例
# virsh dominfo VM Id: 7 Name: VM UUID: d08824fb-37ad-4ac5-b091-b07df7918a14 OS Type: hvm State: running CPU(s): 2 CPU time: 7255.5s Max memory: 6291456 KiB Used memory: 6291456 KiB Persistent: yes Autostart: disable Managed save: no Security model: none Security DOI: 0
# virsh vol-list default Name Path ------------------------------------------------------------------------------ CentOS-7-x86_64-Minimal-1611.iso /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-1611.iso CentOS-7-x86_64-Minimal-1708.iso /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-1708.iso centos7-minimal-tmplt.qcow2 /var/lib/libvirt/images/centos7-minimal-tmplt.qcow2
設定ファイル
設定ファイル | 内容 |
---|---|
/etc/livbirt/libvirtd.conf | libvirtdへの外部からの接続について等 |
/etc/livbirt/qemu/networks配下ファイル | 仮想ネットワーク |
/etc/livbirt/qemu,conf | VNC設定 |
/etc/livbirt/storage配下ファイル | 仮想ネットワーク |
VCPUはqemu-kvmプロセスのスレッドに対応
ps -Le | egrep qemu-kvm 2558 2558 ? 00:38:39 qemu-kvm 2558 2563 ? 00:08:06 qemu-kvm 2558 2564 ? 00:20:25 qemu-kvm 2558 2565 ? 00:00:02 qemu-kvm 19114 19114 ? 01:11:24 qemu-kvm 19114 19122 ? 00:13:30 qemu-kvm 19114 19123 ? 00:36:12 qemu-kvm 19114 19124 ? 00:00:01 qemu-kvm
VCPU実行は各スレッドが呼び出すioctlシステムコール中で実行され、CPU時間はsystemでカウントされる
Hugmeメモリ利用設定
基本ページサイズは4KB。
メモリを多く使うプロセスの場合、ページサイズを大きくした方がメモリページ管理コストが減り性能よくなる。
DBなどで実施される。KVMも利用される。
ただ、スワップアウトできない点に注意
使う場合、ホストでhugeetlbfsマウントし、その領域をqemu-kvmコマンドの-mem-pathオプションで指定する必要あり。(詳細は書籍124P参照)
ストレージの考え方
ホストOS側のブロックデバイスやファイルを仮想マシンにストレージデバイスとして見せる。
ゲストOS IO要求→KVMがフック→QEMUエミュレータ処理→ファイルorブロックデバイスへのIO処理
ゲストOSはIDE/SCSI/virtioなどのデバイスとして認識
virtioはゼロコピーIOを実現するIFでもっとも最適化されてもの
ストレージバックエンド
バックエンドはおおきく3種類あり
ファイルシステム上のファイル(ext4 or NFS) or ブロックデバイス(Local or FS-SAN or ISCSI) or LVM
ファイルとLVMの場合、libvirtで作成・削除可能。
ファイルの場合、フラグメントをケアする必要あり。
ファイルの場合、形式が多くあり。代表的なものは、RawとQcow2
サポートされる形式は"qemu-img | grep Supported"を実行すればわかる。
形式 | 説明 |
---|---|
raw | 変換・メタ情報なし。ディスクイメージをddで書き出したものと同じ |
qcow2 | ファイル中にメタデータ保有。仮想ディスクをクラスタと呼ぶ固定長ブロックで管理し、各クラスタがqcow2ファイルのどこに格納されているかが、メタ情報に記録されてる。 |
※QCOW2のファイルサイズは実利用サイズに応じて変わる。
※クラスタサイズは大きいほど性能向上する。デフォルト64KB?著者は2MB推奨
# qemu-img info /var/lib/libvirt/images/cnt1.qcow2 image: /var/lib/libvirt/images/cnt1.qcow2 file format: qcow2 virtual size: 100G (107374182400 bytes) disk size: 3.8G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true
QCOW2スナップショット
QCOW2はスナップショットが可能。作成時の処理フローは以下。
・スナップショットを作成、その時点のクラスタの対応表のコピーを保存
・スナップショットに含まれるクラスタへの参照数を+1し、「copied」フラグを外す
・スナップショット後、スナップショットに含まれるクラスタへの変更は、新たにクラスタを確保して行う。新たに確保するクラスタでは、「copied」フラグを有効にする。
QCOW2スナップショット特性
・スナップショット間に親子・前後関係なし。そのため、削除・作成に制限はなし
・QCOW2は単調にファイルサイズが増加する。最適化は仮想マシンを停止し、以下コマンドを実行されば可能
# qemu-img convert -f qcow2 -O qcow2 old.img new.img
Base Image機能
元になるディスクイメージからの差分イメージだけを持ったディスクイメージを作成・利用する機能。
スナップショットとは異なる。別のファイルで差分を持ち、差分イメージを複数作成し、複数仮想マシンで利用が可能。
QCOW2だけでなく、rawでも利用可能
QEMUでサポートされるファイル形式であればOK
Base Image設定方法
qemu-img create -F qcow2 -b BASE.img -f qcow2 NEW.img
Boot Image設定確認方法
qemu-img info NEW.img 〜出力〜 backing file: ★ベースディスク情報が表示される★