KVM: 仮想マシンをインストール、管理


前提


ドキュメント


BIOS等で仮想化有効に

仮想化無効だとゲストのインストールができない。

仮想化有効の確認

# 1以上なら有効
egrep --count '(vmx|svm)' /proc/cpuinfo

# kvmモジュール確認
lsmod | grep kvm
kvm_intel             183705  0 
kvm                   615914  1 kvm_intel
irqbypass              13503  1 kvm

CentOS7にインストール

yum install qemu-kvm virt-manager virt-install virt-viewer

libvirtdサービス

自動起動

systemctl enable libvirtd
# 起動
systemctl start libvirtd

ログ

journalctl -u libvirtd

ゲストのネットワーク

ゲスト作成時に選択でき、後から変更もできる。

他に、別途ブリッジを用意してホストと同じネットワークにする方法がある。


NATモード: defaultネットワーク

libvirtdにより仮想ブリッジvirbr0とそのネットワークdefaultが作成される。

アドレス例

インストール時の選択

--networkを省略し、かつ「物理NICをスレーブとするブリッジ」が存在しなければ、選択される。


主なコマンド


インストール作業のパターン

仮想マシン設定とLinuxインストールのそれぞれについて、GUIかCLIか。

その他、既存のゲスト・イメージファイルをクローン・インポートする方法もある。


virt-installの主要なオプション

最初の三つは必須。

# Linux種類(短縮ID)を調べる
osinfo-query -f short-id,name,version os family=linux

ネットワーク選択

インストール画面をGUIで行うとき

キックスタート(CentOS自動インストール)でCLIのとき


virt-install + インストール画面GUI: ゲストCentOS7

# ゲストの名前
name=guest1-centos7
# メモリサイズMiB
memory=1024
# ディスクサイズGiB
size=8
# CPUの数
cpu=2
# Linux種類
linux=centos7.0
# ダウンロード(https://www.centos.org/download/)したISOファイルパス
iso=CentOS-7-x86_64-DVD-1810.iso
# インストール
# (virt-viewerでコンソール出力)
virt-install --name "$name" --memory $memory --disk size=$size \
  --vcpus $cpu  --os-variant $linux \
  --cdrom $iso \
  --network network=default

viert-viewerが立ち上がり、CentOS7のインストール画面(GUI)になる。


virt-install + キックスタート: ゲストCentOS7

# ゲストの名前
name=guest1-centos7
# メモリサイズMiB
memory=1024
# ディスクサイズGiB
size=8
# CPUの数
cpu=2
# Linux種類
linux=centos7.0
# ダウンロード(https://www.centos.org/download/)したISOファイルパス
iso=CentOS-7-x86_64-DVD-1810.iso

# キックスタート・ファイル名とパス
ks_name=my.ks
ks_path=/root/$ks_name
# インストール
virt-install --name "$name" --memory $memory --disk size=$size \
  --vcpus $cpu  --os-variant $linux \
  --location $iso \
  --initrd-inject $ks_path \
  --graphics none \
  --extra-args "inst.ks=file:/$ks_name console=tty0 console=ttyS0,115200n8" \
  --network network=default

現在のホスト端末がゲストコンソールに接続し、キックスタートによる自動インストールになる。


virshコマンド

インストール後、ゲストの起動・停止はvirshコマンドでできる。

サブコマンド

ゲストをドメイン(domain)と呼び、指定する。

作業例

# リスト
virsh list --all

# ゲスト名
domain=myguest
# 起動
virsh start $domain

# ゲストコンソールに接続
virsh console $domain
# その後、ホスト端末に戻るならCtrl + ^[
# コンソールの代わりにssh接続してもいい
ssh root@ip_address

# シャットダウン
virsh shutdown $domain

ストレージプール

ゲストイメージが保存されている場所をプールという。defaultプールのディレクトリは/var/lib/libvirt/images

# プールの一覧
virsh pool-list --details

ボリューム

ゲストのイメージファイルをボリュームという。

リスト

virsh vol-list --details プール名

クローン

virsh vol-clone ボリューム名 クローンボリューム名 --pool プール名
# 使うにはインポートが必要

削除

virsh vol-delete ボリューム名 --pool プール名

ゲストのイメージファイル(ボリューム)をインポート

virt-install --importでインポートする。

オプション

インポート例

# ゲストの名前
name=guest1-centos7
# メモリサイズMiB
memory=1024
# CPUの数
cpu=2
# Linux種類
linux=centos7.0
# ゲストイメージのファイルパス
image=guest.image
# インポート
virt-install --import --name "$name" --memory $memory --disk $image \
  --noreboot --noautoconsole \
  --vcpus $cpu --os-variant $linux \
  --network network=default