必要パッケージのインストール
$ sudo apt install qemu qemu-kvm libvirt-bin virtinst
ディレクトリの整備
/virtual
以下で仮想環境関係のものを管理しようと思っているので、まずはその準備をします。
具体的には以下5つの作業をします。
/virtual
などのディレクトリを作る- 仮想環境をいじるグループを作る *1
/virtual
を上記グループ所有にする/virtual
のパーミッションを設定する- アカウントをグループに追加する
$ sudo mkdir /virtual/ $ sudo groupadd virtadmin $ sudo -R chown :virtadmin /virtual $ sudo chmod 2770 /virtual $ mkdir /virtual/{disk,iso} $ sudo chown root /virtual/{disk,iso} $ sudo usermod -aG virtadmin <user> $ sudo usermod -aG virtadmin libvirt-qemu
OSイメージのダウンロード
$ cd /virtual/iso $ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.3.0-amd64-netinst.iso
VMの作成
次の非常に長いコマンドでVMを作成できます。
$ virt-install --name=first --disk=/virtual/disk/first.qcow2,format=qcow2,size=4 --vcpus=1 --ram=1024 --cdrom=/virtual/iso/debian-9.3.0-amd64-netinst.iso --noautoconsole --graphics vnc,port=5900,listen=127.0.0.1 --network bridge=virbr0,model=virtio --os-type=linux --virt-type=kvm
出力は以下です。
WARNING /virtual/disk/first.qcow2 may not be accessible by the hypervisor. You will need to grant the 'libvirt-qemu' user search permissions for the following directories: ['/virtual/disk', '/virtual'] Starting install... Allocating 'first.qcow2' | 4.0 GB 00:00:00 Creating domain... | 0 B 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process.
Allocating 'xxxx.qcow2'
が出ていて、その後にRemoving disk 'xxxx.qcow2'
が出ていなければ上手くいっていることが多い印象です。
WARNING が出てますが、上記でlibvirt-qemu
にパーミッションを与えているので問題ないはずです。
VMへの接続
VMの作成でのコマンドでは、debian のディスクからブートしただけなので、debianをイチからインストールしていく必要があります。
インストールするには画面につなぐ必要があり、上記コマンドでは --graphics vnc,port=5900,listen=127.0.0.1
でVMの画面へのつなぎ方を指定しています。
今回は、VNCで画面が見れるようにしています。
$ ss -tna | grep 5900 LISTEN 0 1 127.0.0.1:5900 *:*
ローカルループバックIPアドレスからのみを許可しているので、SSHポートフォワード経由でVNC接続すれば画面が見れるので、インストールできます。
(今回はやってませんが。自動インストールしたい。自動インストールしたら画面とか不要じゃない?SSHだけで良くない?)
補足
VMの一覧を見る
現在libvirtdで管理されているVMの一覧はvirsh list --all
で確認できます。
$ virsh list --all Id Name State ---------------------------------------------------- 3 first running
--all
を付けているとシャットダウン中のlibvirtdが管理しているVMも表示されます。
libvirtd
ここまで説明ゼロで申し訳ありませんが、libvirt-binをインストールすると、仮想環境の維持管理を行ってくれる libvirtd
というデーモンに、 virsh
でアクセスして操作するようになります。
(QEMU だと本来は qemu-system-x86 ......
のようなコマンドで、VMが終了するまで実行する形ですが、そこをlibvirtdが裏でやってくれる。)
本来 virsh
でVMを作るとけっこうめんどくさい XML を書く必要がありますが、virt-install
を使うとコマンドだけでVMを作成できるようになります。 *4
virt-install
はブリッジインターフェースなどの設定も勝手にやってくれる(はず)なので非常に便利です。