KVMで遊んでみます。
[root@centos7 ~]# yum install qemu-kvm
[root@centos7 ~]# yum install libvirt
[root@centos7 ~]# yum install virt-install
カーネルモジュールを確認します。
[root@centos7 ~]# lsmod | grep kvm
kvm_intel 138567 0
kvm 441119 1 kvm_intel
libvirtd を有効にします。CentOS7 からsystemdなので、流儀が違いますね。/usr/lib/systemd/system 以下に起動スクリプトが入っているそうなのですが、設定ファイル風なので慣れるまでは時間がかかりそうです。
サービスの一覧を取得して確認し、enabled にします。
[root@centos7 ~]# systemctl list-unit-files | grep libvirt
libvirt-guests.service disabled
libvirtd.service disabled
[root@centos7 ~]# systemctl enable libvirt-guests.service
ln -s '/usr/lib/systemd/system/libvirt-guests.service' '/etc/systemd/system/multi-user.target.wants/libvirt-guests.service'
[root@centos7 ~]# systemctl enable libvirtd.service
ln -s '/usr/lib/systemd/system/libvirtd.service' '/etc/systemd/system/multi-user.target.wants/libvirtd.service'
[root@centos7 ~]# systemctl list-unit-files | grep libvirt
libvirt-guests.service enabled
libvirtd.service enabled
起動しておきますか。
[root@centos7 ~]# systemctl start libvirtd.service
[root@centos7 ~]# systemctl start libvirt-guests.service
systemd周りはまだよくわからないので、後でまとめておきます。
KVMではゲストOSのネットワークにブリッジを使うので、あらかじめ設定します。これもだいぶ流儀が違いますね。
[root@centos7 ~]# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
接続 'br0' (96d8e039-89a5-4cc3-bcf3-a7580550ec7a) が正常に追加されました。
[root@centos7 ~]# nmcli connection modify br0 ipv4.addresses "192.168.0.230/24 192.168.0.1"
[root@centos7 ~]# nmcli connection modify br0 ipv4.method manual
[root@centos7 ~]# nmcli connection modify br0 ipv4.dns 192.168.0.1
既存のネットワークインタフェースを消して繋ぎ直します。まず ip addr でインタフェース名を取得します。いまどきは ifconfig は使わないんですよね。
[root@centos7 ~]# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:8d:5a:36 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.230/24 brd 192.168.0.255 scope global eno16777736
valid_lft forever preferred_lft forever
(以下略)
eth0 とかではなく eno16777736 なんですね。なんでこんなことになってるのかわかりませんが、これを削除して後から繋ぎ直します。remoteから入っているときはここで切れちゃうので要注意です。
[root@centos7 ~]# nmcli connection delete eno16777736
[root@centos7 ~]# nmcli connection add type bridge-slave autoconnect yes con-name eno16777736 ifname eno16777736 master br0
Connection 'eno16777736' (fc4ccf45-8356-4a81-9bf0-9b44b260b139) successfully added.
[root@centos7 ~]# systemctl restart NetworkManager
[root@centos7 ~]#
再度 ip addr で確認してみます。br0 にアドレスが付いていて、インタフェース側は master br0 となっていればOKです。
[root@centos7 ~]# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:0c:29:8d:5a:36 brd ff:ff:ff:ff:ff:ff
3: virbr0: mtu 1500 qdisc noqueue state DOWN
link/ether a2:e3:ba:1b:b9:79 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: br0: mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:8d:5a:36 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.230/24 brd 192.168.0.255 scope global br0
valid_lft forever preferred_lft forever
inet6 2001:c90:8224:afe:20c:29ff:fe8d:5a36/64 scope global dynamic
valid_lft 2591762sec preferred_lft 604562sec
inet6 fe80::20c:29ff:fe8d:5a36/64 scope link
valid_lft forever preferred_lft forever
これでまた外からsshで繋げられるようになったので、作業もやりやすくなります。
ようやく仮想マシンを作成できるようになりました。あとはこれまでのやり方と同じですね。
[root@centos7 ~]# virt-install --name guest1 --ram 1024 \
> --disk path=/var/lib/libvirt/images/guest1.img,size=8 \
> --vcpus 1 \
> --os-type=linux --os-variant rhel7 \
> --network bridge=br0 \
> --graphics none \
> --console 'pty,target_type=serial' \
> --location 'http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64' \
> --extra-args 'console=ttyS0,115200n8 serial'
(参考文献)
いったんここまで。