Index ソフト・ハード KVM | KVM 導入 |
機能・要件 構成・方式 動作 タスク 導入 プロセッサ確認 CentOS7_install ソフトウェア選択 PKGインストール SELinux無効化 KVM関連ドライバ libvirtd関連設定 ネットワーク設定 ゲストOS作成 ネットワーク追加 ブリッジの整理 仮想化 |
プロセッサの確認 # grep vmx /proc/cpuinfo ・vmxの確認 CentOS7インストール ・CentOS7インストール ソフトウェアの選択 ・environment group(仮想化ホスト)の中身
$ yum groups info 仮想化ホスト
Environment Group: 仮想化ホスト
Environment-Id: virtualization-host-environment
説明: 最小の仮想化ホストです。
Mandatory Groups:
+base
+core
+virtualization-hypervisor
+virtualization-tools
Optional Groups:
+debugging
+network-file-system-client
+remote-system-management
+virtualization-platform
・「+virtualization-hypervisor」の中身
$ yum groups info virtualization-hypervisor
グループ: 仮想化ハイパーバイザー
グループ ID: virtualization-hypervisor
説明: 最小限の仮想化ホストのインストールです。
強制的なパッケージ:
libvirt
qemu-kvm
オプション パッケージ:
qemu-kvm-tools
・「+virtualization-tools」の中身
$ yum groups info virtualization-tools
読み込んだプラグイン:fastestmirror, langpacks
グループ: 仮想化ツール
グループ ID: virtualization-tools
説明: 停止中の仮想マシンのディスクイメージを操作するためのツールです。
標準パッケージ:
libguestfs
オプション パッケージ:
libguestfs-java
libguestfs-tools
libguestfs-tools-c
・CUI関連パッケージ qemu-kvm qemu-img libvirt-client virt-install bridge-utils必要なパッケージのインストール ・更新も行う。 ・qemu-kvm qemu-img インストール
# yum install qemu-kvm qemu-img
パッケージ 10:qemu-kvm・・・.x86_64 はインストール済みか最新バージョンです
パッケージ 10:qemu-img・・・.x86_64 はインストール済みか最新バージョンです
何もしません
・libvirt インストール
# yum install libvirt
依存性関連をインストールしました:
・virt-manager virt-install インストール
# yum -y install virt-manager virt-install
SELinux無効化
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive(警告は出すが、SELinuxは無効)
# vi /etc/sysconfig/selinux
SELINUX=disabled
KVM関連ドライバのロード確認
$ lsmod | grep kvm
kvm_intel xxxxxx 0
kvm xxxxxx 1 kvm_intel
libvirtd関連の設定 ・ユーザ作成、グループに追加
# useradd -m -d /home/kvmuserxxxx kvmuserxxxx
# passwd kvmuserxxxx
# usermod -a -G libvirt kvmuserxxxx
・作成したユーザに切り替え ・libvirtd.conf変更
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
・libvirtd起動
# systemctl status libvirtd.service
# systemctl start libvirtd.service
# systemctl enable libvirtd.service
# virsh version
ネットワークの設定 ・複数の仮想ブリッジを用いる。(br0、br1、・・) defaultネットワークは、virbr0(仮想ネットワーク図では、vibr0) virbr0ブリッジはNAT接続機能だけのためにある。 今回は使用しないため、削除する。 ブリッジインターフェース(br0)を作成する。 nmcli(NetworkManagerのCLI(コマンド・ライン・インタフェース)か、 nmtui(NetworkManagerのTUI(テキスト・ユーザー・インタフェース)を使用する。 nmcli connection add help など・コネクションの状態 $ nmcli connection
名前 UUID タイプ デバイス
enp0s31f6 68e38e3e-fc1b-・・・・ 802-3-ethernet enp0s31f6 (アクティブ)
enp6s0 3e3b4213-1756-・・・・ 802-3-ethernet -- (解除)
enp2s0 917812ca-9ba4-・・・・ 802-3-ethernet enp2s0
virbr0-nic 7e426bdd-e2ea-・・・・ generic virbr0-nic
virbr0 5378461b-ca9e-・・・・ bridge virbr0
・デバイスの状態 $ nmcli device
デバイス タイプ 状態 接続
virbr0 bridge 接続済み virbr0
enp0s31f6 ethernet 接続済み enp0s31f6
enp2s0 ethernet 接続済み enp2s0
virbr0-nic tap 接続済み virbr0-nic
enp6s0 ethernet 切断済み --
lo loopback 管理無し --
・defaultネットワークの削除
virbr0 はNATで使用、使用しない場合は削除、再起動時も自動作成しないようにする。
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400c9161c yes virbr0-nic
# virsh net-destroy default
ネットワーク default は強制停止されました
$ nmcli device
デバイス タイプ 状態 接続
enp6s0 ethernet 接続済み プロファイル 1
lo loopback 管理無し --
# brctl show
bridge name bridge id STP enabled interfaces
・再起動時に自動作成されないようにする。
# virsh net-list --all
名前 状態 自動起動 永続
--------------------------------------------
default 停止状態 はい (yes) はい (yes)
# virsh net-autostart default --disable
ネットワーク default の自動起動設定が解除されました
# virsh net-list --all
名前 状態 自動起動 永続
---------------------------------------------
default 停止状態 いいえ (no) はい (yes)
・仮想ブリッジを作成(追加) 「brctl addbr」
# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
・仮想ブリッジの スパニングツリー設定を解除(例、br0)
# nmcli connection modify br0 bridge.stp no
既にアクティブの場合は、解除後に実施する。又は
# systemctl stop network.service; systemctl start network.service
・仮想ブリッジにIPを設定
# nmcli connection modify br0 ipv4.method manual
ipv4.addresses "仮想ブリッジのIP/ネットマスク"
ipv4.dns "DNSのIP"
ipv4.gateway "ゲートウェイのIP"
・物理ポート(例、enp6s)をブリッジに接続する場合、当該デバイスコネクションを削除する。 (当該デバイスコネクションしかない場合、外からは繋がらなくなる場合がある。)
「nmcti」で「enp6s0」を削除、又は
# nmcli connection delete enp6s0
又は
# nmcli connection delete enp6s0; reboot
・作成した仮想ブリッジのSlaveとして仮想のインターフェースコネクションを作る。「brctl addif」 # nmcli connection add type bridge-slave autoconnect yes \ con-name enp6s0 ifname enp6s0 master br0・設定を有効にする。
# systemctl stop NetworkManager; systemctl start NetworkManager
# ip addr
・後処理
「nmcti」などで、不要なEthernet(enp6s0の残り)を削除
# ip addr
・・・
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0016013e21bc no enp6s0
ゲストOSインストール ・GUIツール(virt-manager)から行う(vnc立ち上げ) ・QEMU/KVM接続エラーありの場合
「ソケットの '/var/run/libvirt/libvirt-sock' への接続に失敗しました」
libvirtdを再起動する。・QEMU/KVM、右クリック、「新規」、「新しい仮想マシン」 ・警告ありの場合
「KVM を利用できません。これは KVM パッケージがインストールされていない。
または、KVM のカーネルモジュール (kvm.ko) が読み込まれていないことを意味します。
QEMU が使われるので動作が遅くなるでしょう。」
BIOS で Virtualization (仮想化) の項目を有効にする。・ステップ1/5 ローカルのインストールメディア(ISOイメージ又はCD-ROMドライブ)、選択、進む 事前に「CentOS7-x86 64-Everything-xxxx.iso」などをどこかに格納・ステップ2/5 ISOイメージを使用、ISOイメージファイルを参照して指定 「仮想マシン内のOSの種類を自動選別する」にチェックを入れる、進む ・エミュレータが検索する権限を持たないパスを参照した場合は、 エミュレータが権限の訂正を聞いてくる。・ステップ3/5 割り当てるメモリ量とCPU数(例、4096MB、2CPU)・ステップ4/5 この仮想マシンにストレージデバイスを割り当てる。 コンピュータのハードディスク上にディスクイメージを作成する。 例、ローカルディスク、50GB、進む・ステップ5/5 名前(例、centOS7-1) 他、表示 ネットワークの選択 ブリッジ選択・インストール開始 ソフトウェアの選択 ベース設定 GNOME-Desktop ネットワーク(eth0)とホスト名 接続はオフ(ipv4のセッティング) ブリッジアドレスを設定(eth0) 必要ならローカルアドレスを追加(eth0) 接続をオンにして設定値を確認 インストール先 ・自動パーティション インストール開始・virshコマンドなどのコマンドラインツールを使用 virt-installゲストOSにネットワーク追加 ・物理マシンに(仮想)ブリッジを追加(br1) (nmtuiを用いてもよい。dhcpで使うなら、自動を選び追加する。)
# nmcli connection add type bridge autoconnect yes con-name br1 ifname br1
・仮想ブリッジのスパニングツリー設定を解除
# nmcli connection modify br1 bridge.stp no
# systemctl stop network.service; systemctl start network.service
# brctl show
・対象の仮想マシンシャットダウン # virsh shutdown 仮想マシン・物理マシンの「/etc/libvirt/qemu/対象の仮想マシン.xml」の編集 「interface type='bridge'」追加 「mac address='xx:xx:xx:xx:xx:xx'」自動作成のため不要 「source bridge='br1'」追加 「model type='virtio'」追加 「address type他」自動作成のため不要・設定を反映 # virsh define /etc/libvirt/qemu/対象の仮想マシン.xml・仮想マシン起動 # virsh start 対象の仮想マシン・「eth1」追加を確認 # ip addr・物理マシンに(仮想)ブリッジを追加(br2)も同様に行う。 ・物理マシンやゲストOSのネットワークに変更があった場合 「/etc/libvirt/qemu/対象の仮想マシン.xml」反映を再度行う。 デバイスやコネクションの状態を確認し、ifcfg-xxxxを修正しながら、
整合性を維持する。・コネクションの状態 $ nmcli connection
名前 UUID タイプ デバイス
vnet2 d44e20ec-2489-・・・・ 802-3-ethernet vnet2
vnet1 3264014d-be8a-・・・・ 802-3-ethernet vnet1
vnet0 38d5059e-930c-・・・・ generic vnet0
br1 27d612a1-2ec6-・・・・ bridge br1
br2 ddcb3ce2-12b0-・・・・ bridge br2
enp6s0 59a77105-1834-・・・・ 802-3-ethernet enp6s0
enp2s0 e171f089-4d9d-・・・・ 802-3-ethernet enp2s0
br0 01185253-21d8-・・・・ bridge br0
enp0s31f6 caae92f8-07bf-・・・・ 802-3-ethernet enp0s31f6
vnet6 0f99764e-658d-・・・・ 802-3-ethernet vnet6
vnet5 c49b4cd6-24ba-・・・・ generic vnet5
vnet4 12cf7d83-96b3-・・・・ 802-3-ethernet vnet4
・デバイスの状態 $ nmcli device
デバイス タイプ 状態 接続
br0 bridge 接続済み br0
br1 bridge 接続済み br1
br2 bridge 接続済み br2
enp0s31f6 ethernet 接続済み enp0s31f6
enp2s0 ethernet 接続済み enp2s0
enp6s0 ethernet 接続済み enp6s0
vnet1 ethernet 接続済み vnet1
vnet2 ethernet 接続済み vnet2
vnet4 ethernet 接続済み vnet4
vnet6 ethernet 接続済み vnet6
vnet0 tap 接続済み vnet0
vnet3 tap 接続済み vnet3
vnet5 tap 接続済み vnet5
lo loopback 管理無し --
・「/etc/sysconfig/network-scripts/」
ifcfg-br0
ifcfg-br1
ifcfg-br2
ifcfg-enp0s31f6
ifcfg-enp2s0
ifcfg-enp6s0
ifcfg-lo
ブリッジの整理 ・仮想マシン側、「nmtui」を用いてブリッジなどを全て削除 ・物理マシン側、「/etc/libvirt/qemu/対象の仮想マシン.xml」の編集 「interface type='bridge'」 「mac address='xx:xx:xx:xx:xx:xx'」行削除 「address type他」行削除・物理マシン側、反映 # virsh define /etc/libvirt/qemu/対象の仮想マシン.xml・「対象の仮想マシン.xml」 「interface type='bridge'」に「mac address='xx:xx:xx:xx:xx:xx'」が追加・物理マシン「reboot」で「mac address='xx:xx:xx:xx:xx:xx'」が仮想マシンへ反映 |
All Rights Reserved. Copyright (C) ITCL |