Table of Contents
KVM パッケージインストール
- CentOS 7
# yum groupinstall "Virtualization Host" "Virtualization Client"
- CentOS 6
# yum groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
-
Windows Virtio Drivers
# wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo # yum install virtio-win # cp /usr/share/virtio-win/virtio-win.iso .
- ISOイメージのコピーではなくシンボリックリンクだと「Permission denied」になる?
- Windows Server 2012 R2 のインストーラはサブディレクトリの探索はしてくれないので各々のドライバが配置してあるサブディレクトリまで指定する必要がある。
NIC のブリッジ設定
- 物理マシン-仮想マシン間の接続を「NAT接続」にすると、物理マシンのネットワークから仮想マシンのサービスにアクセスすることができないため、物理マシン-仮想マシン間の接続には「ブリッジ接続」を使う。
CentOS 7
- NIC デバイス確認。
物理 NIC デバイス名は環境によって変わる。# nmcli dev DEVICE TYPE STATE CONNECTION virbr0 bridge connected virbr0 enp1s0 ethernet connected enp1s0 lo loopback unmanaged -- virbr0-nic tun unmanaged --
- 自動的に追加される virbr0 は初期状態だと NAT モードなので、削除してブリッジモードの仮想デバイスを追加。
# nmcli dev delete virbr0 # nmcli con delete virbr0 # nmcli con add type bridge ifname br0 # nmcli con modify bridge-br0 bridge.stp no # nmcli con modify bridge-br0 ipv4.method manual ipv4.address "192.168.1.2/24" ipv4.gateway "192.168.1.1" ipv4.dns 8.8.8.8 ipv4.dns-search example.com
- 物理 NIC デバイスを bridge デバイスに追加。
# nmcli con add type bridge-slave ifname enp1s0 master br0 # nmcli con del enp1s0; reboot
再起動後の状態確認。
# nmcli dev DEVICE TYPE STATE CONNECTION br0 bridge connected bridge-br0 virbr0 bridge connected virbr0 enp1s0 ethernet connected bridge-slave-enp1s0 vnet0 tun connected vnet0 lo loopback unmanaged -- virbr0-nic tun unmanaged -- # nmcli dev show br0 GENERAL.DEVICE: br0 GENERAL.TYPE: bridge GENERAL.HWADDR: XX:XX:XX:XX:XX:XX (実 NIC の MAC と同じ) GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: bridge-br0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1 IP4.ADDRESS[1]: 192.168.1.2/24 IP4.GATEWAY: 192.168.1.1 IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 425 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 425 IP4.DNS[1]: 8.8.8.8 IP6.ADDRESS[1]: XXXX::XXXX:XXXX:XXXX:XXXX/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255 IP6.ROUTE[2]: dst = fe80::/64, nh = ::, mt = 256 IP6.ROUTE[3]: dst = fe80::/64, nh = ::, mt = 425 # nmcli dev show virbr0 GENERAL.DEVICE: virbr0 GENERAL.TYPE: bridge GENERAL.HWADDR: YY:YY:YY:YY:YY:YY GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: virbr0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 IP4.ADDRESS[1]: 192.168.122.1/24 IP4.GATEWAY: -- IP4.ROUTE[1]: dst = 192.168.122.0/24, nh = 0.0.0.0, mt = 0 IP6.GATEWAY: -- # nmcli dev show enp1s0 GENERAL.DEVICE: enp1s0 GENERAL.TYPE: ethernet GENERAL.HWADDR: XX:XX:XX:XX:XX:XX (br0 の MAC と同じ) GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: bridge-slave-enp1s0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.CARRIER: on IP4.GATEWAY: -- IP6.GATEWAY: -- IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255 # nmcli con NAME UUID TYPE DEVICE bridge-br0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX bridge br0 bridge-slave-enp1s0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ethernet enp1s0 virbr0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX bridge virbr0 vnet0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX tun vnet0
- CentOS7.2でブリッジインタフェースを作る - hosiiのメモ帳
CentOS 6
- /etc/sysconfig/network-scripts/ifcfg-eth0
# Physical NIC 0 DEVICE=eth0 ONBOOT=yes HWADDR=xx:xx:xx:xx:xx:xx BOOTPROTO=none BRIDGE=br0 NM_CONTROLLED=no
- /etc/sysconfig/network-scripts/ifcfg-br0
# Virtual Bridge 0 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.10 # 物理マシンのIPアドレス PREFIX=24 GATEWAY=192.168.0.1 # 物理マシン/仮想マシン共通のゲートウェイ DNS1=192.168.0.1 DOMAIN=TakeAsh.net NM_CONTROLLED=no
仮想環境用ネットワーク設定
- 設定ファイル
/usr/share/libvirt/networks/default.xml
- libvirt: Network XML format
- ネットワーク一覧表示
# virsh net-list --all
- 設定内容表示
# virsh net-dumpxml default
- 自動起動を無効化
# virsh net-autostart default --disable
- 自動起動を有効化
# virsh net-autostart default
- 手動起動
# virsh net-start default
仮想マシンマネージャの起動
- root 権限が必要。
- Gnome: アプリケーション - システムツール - 仮想マシンマネージャー
- bash: virt-manager
インストールメディアおよび仮想マシンイメージファイルの場所
- /var/lib/libvirt/images/
シンボリックリンクで別の場所に変更する場合、該当ディレクトリだけでなく上位のディレクトリも qemu ユーザでアクセスできないとエラーとなる。
# chown root. /mnt/ExtDisk/ # chown root. /mnt/ExtDisk/VirtImages/ # chmod 755 /mnt/ExtDisk/ # chmod 755 /mnt/ExtDisk/VirtImages/ # mv /var/lib/libvirt/images/ /var/lib/libvirt/_images # ln -s /mnt/ExtDisk/VirtImages/ /var/lib/libvirt/images
symlink - Virt-install can't find image behind symbolic link - Stack Overflow
仮想マシン定義ファイルの場所
- /etc/libvirt/qemu/
新規仮想マシン作成
詳細設定
- ステップ5/5の「インストール前に設定をカスタマイズする」チェックボックスにチェックを入れておくと、下記項目の設定ができる。
- 各項目毎に「適用」ボタンを押さないと、次の項目に変えた時にデフォルトに戻ってしまう。
CPU
- クライアント版(非サーバ版) Windows では CPU を2ソケットまでしか認識しないため、2コア以上を割り当てるにはトポロジーの手動設定が必要。 > 例) 2 CPU 各 3 Core 設定 | CPU | 現在の割り当て | 6 | | --- | --- | --- | | トポロジー | ソケット数 | 2 | | | コア数 | 3 | | | スレッド数 | 1 | <
- 「Configuration」は、「Copy host CPU configuration」ボタンをクリックすることで物理マシンの CPU 構成をコピーできる。
仮想 NIC のモデル
モデル名 | スピード |
---|---|
e1000 | 10/100/1000 Mbps |
rtl8139 | 10/100 Mbps |
- デフォルトは「rtl8139」になっている。
ディスプレイVNC
- 種類: Spice
- VNC だとサウンドが再生されない。
仮想マシンの操作(コマンドライン)
仮想マシンの一覧表示
# virsh list --all
仮想マシンを起動
# virsh start <仮想マシン名>
仮想マシンをシャットダウン
# virsh shutdown <仮想マシン名>
仮想マシンのディスクイメージファイルを変更
- 対象の仮想マシンはシャットダウンしていること。
- edit で、 を <新イメージファイル名> に修正, 保存する。
- edit の操作は vi 。
# virsh list --all # mv <元イメージファイル名> <新イメージファイル名> # virsh edit <仮想マシン名>
仮想マシンの定義ファイルの表示
# virsh dumpxml <仮想マシン名>
仮想マシンの削除
- 仮想マシン定義ファイルは削除されるが、ディスクイメージファイルは削除されない。
# virsh undefine <仮想マシン名>
仮想マシンの自動起動
- ホスト起動時に自動起動させる
# virsh autostart <仮想マシン名>
- 自動起動設定確認
# ls /etc/libvirt/qemu/autostart/
- 自動起動の解除
# virsh autostart --disable <仮想マシン名>
サウンド出力
- Audio output
- /etc/libvirt/qemu.conf
vnc_allow_host_audio = 1
- ディスプレイ表示に VNC ではなく Spice を使う。
エラー対応
virt-who を起動しようとして失敗する
- 起動時に毎回エラーメッセージが表示される。
Démarrage de virt-who : Traceback (most recent call last): File "/usr/share/virt-who/virt-who.py", line 33, in <module> from subscriptionmanager import SubscriptionManager, SubscriptionManagerError File "/usr/share/virt-who/subscriptionmanager.py", line 24, in <module> import rhsm.connection as rhsm_connection ImportError: No module named rhsm.connection [FAILED]
- 原因: パッケージのミスで本来不要な virt-who がインストールされてしまう。
- 対処: virt-who のアンインストール。
yum erase virt-who
- 0006342: service virt-who won't start without python-rhsm - CentOS Bug Tracker
リンク
-
Karesansui Project Xen/KVM Virtualization Management Application
らくらくクラウド運用術 - Linux KVM+KickStart+Puppetで作る環境構築自動化システム:ITpro