長年、xenばかり使用していたがkvmに変更した。今はxenよりもkvmのほうが情報の入手がしやすいので、新規で導入する場合はkvmが多いと思う。ホストOS/ゲストOS共にdebian stretchを使った。ここでは、簡単にインストール方法・イメージ作成・管理コマンドを紹介する。
2023-02-27 bullseye (debian11用に修正)
インストール
kvm本体とツール
kvm本体とツールは、全てaptコマンドでインストールする。
apt install qemu-kvm libvirt-clients qemu-utils libvirt-daemon-system bridge-utils libosinfo-bin virt-manager libguestfs-tools
ネットワークブリッジ
ゲストOSでネットワークを利用するには、ホストOSにネットワークブリッジを構築する必要がある。最近のlinuxディストリビューションは、歴史的に使われていたeth0ではなくenp1s0を使う。古い資料を参考にする場合には注意が必要だ。
auto lo br0
iface lo inet loopback
allow-hotplug enp1s0
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports enp1s0
bridge_stp off
bridge_maxwait 0
ホストOSのipアドレスを固定する場合は、dhcpを記述している部分を次の例にならって書き換える。
iface br0 inet static
address 192.168.0.14
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
再起動と確認
上記まで終了したら再起動して、ホストOSでインターネットへの接続とブリッジの状態を確認する。
$ping www.google.com
#brctl show
bridge name bridge id STP enabled interfaces
br0 8000.6805ca195b65 no enp1s0
ゲストOSの作成
環境変数$servernameにサーバー名を設定する。
servername=(サーバー名)
イメージの生成とゲストOSのインストーラの起動
次のコマンドを実行する。上記の環境変数$servernameを設定しておく。
ここでは、DISK 60Gbyte /RAM 1Gbyte /CPU 1個で設定した。
virt-install \
--name ${servername} \
--ram 3072 \
--disk path=/var/lib/libvirt/${servername}.img,size=60 \
--vcpus 1 \
--os-type linux \
--os-variant debian10 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://ftp.jaist.ac.jp/pub/Linux/debian/dists/Debian11.6/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial' \
--autostart
インストーラとgrub
最後にgrubを導入するとき/dev/vda を選択することにさえ注意すれば、インストーラに従えば問題ない。grubの設定後ゲストOSが再起動するが、このときgrubを操作しゲストOSを終了させ、次節のゲストOSのシリアルポートとホストOSのコンソール接続の設定を行う。この設定をしないと、ホストOSの画面には何も表示されず、ゲストOSのコンソールにログインできない。grubは起動すると、数秒で終了しOS起動になってしまうので、素早くcキーを押しgrubのコマンドラインを表示させる必要がある。コマンドラインが表示されたら、haltコマンドでゲストOSを終了することができる。
- grubの操作(メニュー)
操作 | 摘要 |
---|---|
v | メニューを下に移動 |
^ | メニューを上に移動 |
(enter) | メニューを選択 |
c | コマンドライン表示 |
- grubの操作(コマンド)
コマンド | 摘要 |
---|---|
halt | 電源を切る |
ゲストOSのシリアルポートとホストOSのコンソール接続
ここでも環境変数$servernameにサーバー名を設定しておく。
動作確認と、ゲストOSの起動
# ゲストOSの一覧
virsh list --all
# ゲストOSの起動とコンソール接続
virsh start ${servername} --console
ゲストOS内 console 作業
これ以降は、通常のlinuxと同様にセットアップを行う。
終了し、ホストOSに戻る場合はCtrl + ]
管理コマンド
よく使うkvmの管理コマンドをまとめる。これまでと同様、環境変数$servernameには、サーバー名を登録する。(スナップショット関連については、後日更新予定)
ゲストOSの一覧
virsh list --all
ゲストOSの起動
virsh start ${servername}
ゲストOSのコンソール接続
virsh console ${servername}
終了する場合はCtrl + ]
ゲストOSの終了
virsh shutdown ${servername}
ゲストOSの強制終了
virsh destroy ${servername}
ゲストOSの削除
(スナップショットがあれば、スナップショットを削除する。)
1.管理から外す
virsh undefine ${servername}
2.DISKイメージの削除
rm /var/lib/libvirt/images/${servername}.img
更新
2018/12/28 必要なパッケージの変更
2023/02/27 debian11(bullseye)用に変更
####### 誤りやもっといい方法など、ご指摘ください。