KVMをOracle Linux 8.4へインストールし、仮想ネットワークとストレージプールを作成
目次
概要
家の仮想環境としてvSphere Hypervisor (ESXi)とOpenStackを利用していますが、 vSphere Hypervisorは無償版ではvMotionなどの機能に制限があり、 OpenStackは利用の難易度が少し高くてネットワーク周りの設定に苦戦しているのと、 稼働させるためにサーバリソース(特にメモリ)を多く必要とすることもあり、 別の仮想環境を試してみたくなりました。
2017年頃にKVMをインストールして少し触ってみましたが、まだ発展途上な気がして 本格的な活用には至りませんでした。今回改めて触ってみた感想としては、 virt-managerが非推奨となって、後継のCockpitが利用できるようになり、Web経由で 操作できるのは便利になったのですが、まだCockpitでの操作には制限(できないこと)があり、 別の意味でまだ発展途上な感じがしました。 ただ、KVM自体は動作が軽そうだし、Ansibleと組み合わせて使えば操作上の不便さは 解消できると思ったので、このまま利用してみることにしました。
今回はKVMの導入手順を残しておきます。 KVMを動作させるための手順と、仮想ネットワーク(ブリッジ接続)の作成手順、 ストレージプールの作成手順と大きく3つのことをやっています。
KVMのデフォルトの仮想ネットワーク(仮想スイッチ)を利用すると、 ゲストOSは仮想マシン同士や外部ネットワークに対して通信することができますが、 外部ネットワーク上のPCなどからKVMの仮想マシンに対して通信することができません。 例えばKVM上の仮想マシンでWebサーバを構築してもPCから接続できないのでは楽しくないので、 新たに仮想ブリッジを作成して、外部からもKVMの仮想マシンにアクセスできるようにします。 ストレージプールは仮想マシンのディスクを保存するための少し大きなディスク領域として専用に割り当てます。
なお、本手順に沿って一通り環境構築はできますが、構築後の動作確認でKVMの仮想マシンが 仮想スイッチ(ブリッジ)経由で外部と通信できない問題がありました。 vSphere Hypervisorの仮想マシンでLinuxのKVM環境を構築して仮想マシンを動かすという 2段の仮想環境になっていたことが原因かと思いますが、それ以上の原因を深堀りしていません。 PCに直接インストールしたLinuxに対して同じ手順でKVM環境を構築すると、 仮想マシンは仮想スイッチ(ブリッジ)経由で外部と通信できました。
構成
環境構成
KVMのインストール手順を確認する目的だったので、 vSphere Hypervisor (ESXi)上の仮想マシンにOracle Linux 8.4をインストールし、 KVMを導入しています。つまり仮想環境上の仮想環境となっています。
サーバ・ハードウェア構成
上記のとおりvSphere Hypervisorの仮想マシンを利用しており、ハードウェアスペックの概要は以下のとおりです。 KVMを導入して簡単に動作検証するところまで利用する予定なので、スペックは最低限としています。
項目 | 内容 |
---|---|
vCPU | 1コア |
メモリ | 2GB |
ネットワークアダプタ | 1 ※数 |
ハードディスク1 | 80GB |
ハードディスク2 | 200GB |
サーバ・ソフトウェア構成
OS
Oracle Linux Server release 8.4 x86_64
ソフトウェア・パッケージ
- virt (仮想化モジュール)
- virt-install-2.2.1-4.0.1.el8.noarch.rpm
- virt-viewer-9.0-9.el8.x86_64.rpm
環境構築
インストール
仮想化モジュールのインストール
KVMの動作に必要なRPMパッケージを個々にインストールするのは大変ですが、 予め必要なものが仮想化モジュールとして定義されており、簡単にインストールできるようになっています。 以下のようにdnf(yumの後継コマンド)で「virt」モジュールを指定してインストールします。
# dnf -y module install virt
Oracle Linux 8 BaseOS Latest (x86_64) 27 kB/s | 3.6 kB 00:00
Oracle Linux 8 BaseOS Latest (x86_64) 23 MB/s | 39 MB 00:01
Oracle Linux 8 Application Stream (x86_64) 41 kB/s | 3.9 kB 00:00
Oracle Linux 8 Application Stream (x86_64) 26 MB/s | 27 MB 00:01
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) 29 kB/s | 3.0 kB 00:00
Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) 25 MB/s | 25 MB 00:01
メタデータの期限切れの最終確認: 0:00:03 時間前の 2021年08月16日 06時20分09秒 に実施しました。
依存関係が解決しました。
========================================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================================
group/moduleパッケージをインストール:
libguestfs x86_64 1:1.40.2-27.0.1.module+el8.4.0+20093+03a97712 ol8_appstream 2.8 M
libvirt-client x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 367 k
libvirt-daemon-config-network x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 62 k
libvirt-daemon-kvm x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 60 k
依存関係のインストール:
alsa-lib x86_64 1.2.4-5.el8 ol8_appstream 471 k
augeas-libs x86_64 1.12.0-6.el8 ol8_baseos_latest 436 k
autogen-libopts x86_64 5.18.12-8.el8 ol8_appstream 75 k
binutils x86_64 2.30-93.0.2.el8 ol8_baseos_latest 5.9 M
boost-atomic x86_64 1.66.0-10.el8 ol8_appstream 14 k
boost-chrono x86_64 1.66.0-10.el8 ol8_appstream 23 k
boost-date-time x86_64 1.66.0-10.el8 ol8_appstream 29 k
boost-iostreams x86_64 1.66.0-10.el8 ol8_appstream 39 k
boost-program-options x86_64 1.66.0-10.el8 ol8_appstream 141 k
boost-random x86_64 1.66.0-10.el8 ol8_appstream 22 k
boost-regex x86_64 1.66.0-10.el8 ol8_appstream 280 k
boost-system x86_64 1.66.0-10.el8 ol8_appstream 18 k
boost-thread x86_64 1.66.0-10.el8 ol8_appstream 58 k
celt051 x86_64 0.5.1.3-15.el8 ol8_appstream 63 k
cyrus-sasl x86_64 2.1.27-5.el8 ol8_baseos_latest 96 k
dnsmasq x86_64 2.79-15.el8 ol8_appstream 318 k
edk2-ovmf noarch 20200602gitca407c7246bf-4.el8_4.2 ol8_appstream 2.0 M
fribidi x86_64 1.0.4-8.el8 ol8_appstream 89 k
genisoimage x86_64 1.1.11-39.el8 ol8_appstream 316 k
glusterfs x86_64 6.0-49.1.el8 ol8_baseos_latest 665 k
glusterfs-api x86_64 6.0-49.1.el8 ol8_appstream 97 k
glusterfs-cli x86_64 6.0-49.1.el8 ol8_appstream 193 k
glusterfs-client-xlators x86_64 6.0-49.1.el8 ol8_baseos_latest 873 k
glusterfs-libs x86_64 6.0-49.1.el8 ol8_baseos_latest 416 k
gnutls-dane x86_64 3.6.14-7.el8_3 ol8_appstream 51 k
gnutls-utils x86_64 3.6.14-7.el8_3 ol8_appstream 347 k
graphite2 x86_64 1.3.10-10.el8 ol8_appstream 122 k
gssproxy x86_64 0.8.0-19.el8 ol8_baseos_latest 119 k
gstreamer1 x86_64 1.16.1-2.el8 ol8_appstream 1.3 M
gstreamer1-plugins-base x86_64 1.16.1-2.el8 ol8_appstream 2.0 M
harfbuzz x86_64 1.7.5-3.el8 ol8_appstream 295 k
hivex x86_64 1.3.18-21.module+el8.4.0+20285+126f2e4b ol8_appstream 113 k
iproute-tc x86_64 5.9.0-4.el8 ol8_baseos_latest 459 k
ipxe-roms-qemu noarch 20181214-8.git133f4c47.el8 ol8_appstream 1.2 M
iso-codes noarch 3.79-2.el8 ol8_appstream 3.4 M
keyutils x86_64 1.5.10-6.el8 ol8_baseos_latest 63 k
libX11-xcb x86_64 1.6.8-4.el8 ol8_appstream 14 k
libXdamage x86_64 1.1.4-14.el8 ol8_appstream 27 k
libXfixes x86_64 5.0.3-7.el8 ol8_appstream 25 k
libXft x86_64 2.3.3-1.el8 ol8_appstream 67 k
libXv x86_64 1.0.11-7.el8 ol8_appstream 20 k
libXxf86vm x86_64 1.1.4-9.el8 ol8_appstream 19 k
libcacard x86_64 3:2.7.0-2.el8_1 ol8_appstream 52 k
libdatrie x86_64 0.2.9-7.el8 ol8_appstream 33 k
libepoxy x86_64 1.5.3-1.el8 ol8_appstream 225 k
libglvnd x86_64 1:1.3.2-1.el8 ol8_appstream 127 k
libglvnd-egl x86_64 1:1.3.2-1.el8 ol8_appstream 49 k
libglvnd-gles x86_64 1:1.3.2-1.el8 ol8_appstream 40 k
libglvnd-glx x86_64 1:1.3.2-1.el8 ol8_appstream 137 k
libibumad x86_64 32.0-4.el8 ol8_baseos_latest 33 k
libiscsi x86_64 1.18.0-8.module+el8.3.0+7860+a7792d29 ol8_appstream 89 k
libjpeg-turbo x86_64 1.5.3-10.el8 ol8_appstream 155 k
libogg x86_64 2:1.3.2-10.el8 ol8_appstream 31 k
libpmem x86_64 1.6.1-1.el8 ol8_appstream 79 k
librados2 x86_64 1:12.2.7-9.0.1.el8 ol8_appstream 2.9 M
librbd1 x86_64 1:12.2.7-9.0.1.el8 ol8_appstream 1.1 M
librdmacm x86_64 32.0-4.el8 ol8_baseos_latest 77 k
libthai x86_64 0.1.27-2.el8 ol8_appstream 203 k
libtheora x86_64 1:1.1.1-21.el8 ol8_appstream 184 k
libusal x86_64 1.1.11-39.el8 ol8_appstream 145 k
libverto-libevent x86_64 0.3.0-5.el8 ol8_baseos_latest 16 k
libvirt-bash-completion x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 60 k
libvirt-daemon x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 350 k
libvirt-daemon-driver-interface x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 208 k
libvirt-daemon-driver-network x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 234 k
libvirt-daemon-driver-nodedev x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 207 k
libvirt-daemon-driver-nwfilter x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 231 k
libvirt-daemon-driver-qemu x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 842 k
libvirt-daemon-driver-secret x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 197 k
libvirt-daemon-driver-storage x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 60 k
libvirt-daemon-driver-storage-core x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 258 k
libvirt-daemon-driver-storage-disk x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 81 k
libvirt-daemon-driver-storage-gluster x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 86 k
libvirt-daemon-driver-storage-iscsi x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 78 k
libvirt-daemon-driver-storage-iscsi-direct
x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 80 k
libvirt-daemon-driver-storage-logical x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 82 k
libvirt-daemon-driver-storage-mpath x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 76 k
libvirt-daemon-driver-storage-rbd x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 86 k
libvirt-daemon-driver-storage-scsi x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 78 k
libvirt-libs x86_64 6.0.0-35.1.0.1.module+el8.4.0+20285+126f2e4b ol8_appstream 4.3 M
libvisual x86_64 1:0.4.0-25.el8 ol8_appstream 145 k
libvorbis x86_64 1:1.3.6-2.el8 ol8_appstream 196 k
libwayland-client x86_64 1.17.0-1.el8 ol8_appstream 39 k
libwayland-cursor x86_64 1.17.0-1.el8 ol8_appstream 26 k
libwayland-egl x86_64 1.17.0-1.el8 ol8_appstream 19 k
libwayland-server x86_64 1.17.0-1.el8 ol8_appstream 46 k
libxshmfence x86_64 1.3-2.el8 ol8_appstream 13 k
llvm-libs x86_64 11.0.0-2.0.1.module+el8.4.0+20046+39fed697 ol8_appstream 21 M
lzop x86_64 1.03-20.el8 ol8_baseos_latest 62 k
mesa-dri-drivers x86_64 20.3.3-2.el8 ol8_appstream 10 M
mesa-filesystem x86_64 20.3.3-2.el8 ol8_appstream 34 k
mesa-libEGL x86_64 20.3.3-2.el8 ol8_appstream 134 k
mesa-libGL x86_64 20.3.3-2.el8 ol8_appstream 188 k
mesa-libgbm x86_64 20.3.3-2.el8 ol8_appstream 57 k
mesa-libglapi x86_64 20.3.3-2.el8 ol8_appstream 65 k
mtools x86_64 4.0.18-14.el8 ol8_baseos_latest 213 k
netcf-libs x86_64 0.2.8-12.module+el8.3.0+7860+a7792d29 ol8_appstream 77 k
nfs-utils x86_64 1:2.3.3-41.el8_4.2 ol8_baseos_latest 498 k
numad x86_64 0.5-26.20150602git.el8 ol8_baseos_latest 41 k
opus x86_64 1.3-0.4.beta.el8 ol8_appstream 204 k
orc x86_64 0.4.28-3.el8 ol8_appstream 176 k
pango x86_64 1.42.4-6.el8 ol8_appstream 298 k
qemu-img x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 1.0 M
qemu-kvm x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 121 k
qemu-kvm-block-curl x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 132 k
qemu-kvm-block-gluster x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 134 k
qemu-kvm-block-iscsi x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 139 k
qemu-kvm-block-rbd x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 133 k
qemu-kvm-block-ssh x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 134 k
qemu-kvm-common x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 1.2 M
qemu-kvm-core x86_64 15:4.2.0-48.module+el8.4.0+20285+126f2e4b.3 ol8_appstream 3.5 M
radvd x86_64 2.17-15.el8 ol8_appstream 104 k
rpcbind x86_64 1.2.5-8.el8 ol8_baseos_latest 70 k
scrub x86_64 2.5.2-14.el8 ol8_appstream 44 k
seabios-bin noarch 1.13.0-2.module+el8.3.0+7860+a7792d29 ol8_appstream 127 k
seavgabios-bin noarch 1.13.0-2.module+el8.3.0+7860+a7792d29 ol8_appstream 42 k
sgabios-bin noarch 1:0.20170427git-3.module+el8.3.0+7860+a7792d29 ol8_appstream 13 k
spice-server x86_64 0.14.3-4.el8 ol8_appstream 408 k
supermin x86_64 5.1.19-10.module+el8.3.0+7860+a7792d29 ol8_appstream 709 k
syslinux x86_64 6.04-5.el8 ol8_baseos_latest 578 k
syslinux-extlinux x86_64 6.04-5.el8 ol8_baseos_latest 140 k
syslinux-extlinux-nonlinux noarch 6.04-5.el8 ol8_baseos_latest 386 k
syslinux-nonlinux noarch 6.04-5.el8 ol8_baseos_latest 553 k
systemd-container x86_64 239-45.0.1.el8 ol8_baseos_latest 744 k
usbredir x86_64 0.8.0-1.el8 ol8_appstream 50 k
xml-common noarch 0.6.3-50.el8 ol8_baseos_latest 39 k
yajl x86_64 2.1.0-10.el8 ol8_appstream 41 k
モジュールプロファイルのインストール中:
virt/common
モジュールストリームの有効化中:
llvm-toolset ol8
virt ol
トランザクションの概要
========================================================================================================================
インストール 131 パッケージ
ダウンロードサイズの合計: 83 M
インストール後のサイズ: 294 M
パッケージのダウンロード:
(1/131): cyrus-sasl-2.1.27-5.el8.x86_64.rpm 645 kB/s | 96 kB 00:00
(2/131): augeas-libs-1.12.0-6.el8.x86_64.rpm 2.3 MB/s | 436 kB 00:00
(3/131): glusterfs-client-xlators-6.0-49.1.el8.x86_64.rpm 11 MB/s | 873 kB 00:00
(4/131): glusterfs-6.0-49.1.el8.x86_64.rpm 5.7 MB/s | 665 kB 00:00
(5/131): gssproxy-0.8.0-19.el8.x86_64.rpm 4.5 MB/s | 119 kB 00:00
(==================== 中略 ====================)
syslinux-nonlinux-6.04-5.el8.noarch
systemd-container-239-45.0.1.el8.x86_64
usbredir-0.8.0-1.el8.x86_64
xml-common-0.6.3-50.el8.noarch
yajl-2.1.0-10.el8.x86_64
完了しました!
仮想マシンユーティリティのインストール
仮想化モジュールに含まれていない仮想マシンユーティリティのvirt-installとvirt-viewerを個別にインストールします。
# dnf -y install virt-install virt-viewer
メタデータの期限切れの最終確認: 0:01:36 時間前の 2021年08月16日 06時20分09秒 に実施しました。
依存関係が解決しました。
========================================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================================
インストール:
virt-install noarch 2.2.1-4.0.1.el8 ol8_appstream 100 k
virt-viewer x86_64 9.0-9.el8 ol8_appstream 424 k
依存関係のインストール:
adwaita-cursor-theme noarch 3.28.0-2.el8 ol8_appstream 647 k
adwaita-icon-theme noarch 3.28.0-2.el8 ol8_appstream 11 M
at-spi2-atk x86_64 2.26.2-1.el8 ol8_appstream 89 k
at-spi2-core x86_64 2.28.0-1.el8 ol8_appstream 169 k
atk x86_64 2.28.1-1.el8 ol8_appstream 272 k
colord-libs x86_64 1.4.2-1.el8 ol8_appstream 236 k
flac-libs x86_64 1.3.2-9.el8 ol8_appstream 217 k
gdk-pixbuf2-modules x86_64 2.36.12-5.el8 ol8_appstream 109 k
gsm x86_64 1.0.17-5.el8 ol8_appstream 37 k
gtk-update-icon-cache x86_64 3.22.30-6.el8 ol8_appstream 32 k
gtk-vnc2 x86_64 0.9.0-2.el8 ol8_appstream 49 k
gtk3 x86_64 3.22.30-6.el8 ol8_appstream 4.5 M
gvnc x86_64 0.9.0-2.el8 ol8_appstream 102 k
hicolor-icon-theme noarch 0.17-2.el8 ol8_appstream 48 k
jasper-libs x86_64 2.0.14-4.el8 ol8_appstream 167 k
jbigkit-libs x86_64 2.1-14.el8 ol8_appstream 55 k
lcms2 x86_64 2.9-2.el8 ol8_appstream 164 k
libICE x86_64 1.0.9-15.el8 ol8_appstream 74 k
libSM x86_64 1.2.3-1.el8 ol8_appstream 47 k
libXcomposite x86_64 0.4.4-14.el8 ol8_appstream 28 k
libXcursor x86_64 1.1.15-3.el8 ol8_appstream 36 k
libXi x86_64 1.7.10-1.el8 ol8_appstream 49 k
libXinerama x86_64 1.1.4-1.el8 ol8_appstream 15 k
libXrandr x86_64 1.5.2-1.el8 ol8_appstream 34 k
libXtst x86_64 1.2.3-7.el8 ol8_appstream 22 k
libasyncns x86_64 0.8-14.el8 ol8_appstream 32 k
libgovirt x86_64 0.3.7-4.el8 ol8_appstream 86 k
libosinfo x86_64 1.9.0-1.el8 ol8_appstream 300 k
libsndfile x86_64 1.0.28-10.el8 ol8_appstream 194 k
libtiff x86_64 4.0.9-18.el8 ol8_appstream 188 k
libvirt-glib x86_64 3.0.0-1.el8 ol8_appstream 104 k
osinfo-db noarch 20210215-1.0.2.el8 ol8_appstream 238 k
osinfo-db-tools x86_64 1.9.0-1.el8 ol8_appstream 67 k
pulseaudio-libs x86_64 14.0-2.el8 ol8_appstream 681 k
pulseaudio-libs-glib2 x86_64 14.0-2.el8 ol8_appstream 30 k
python3-argcomplete noarch 1.9.3-6.el8 ol8_appstream 60 k
python3-chardet noarch 3.0.4-7.el8 ol8_baseos_latest 195 k
python3-idna noarch 2.5-5.el8 ol8_baseos_latest 97 k
python3-libvirt x86_64 6.0.0-1.module+el8.3.0+7860+a7792d29 ol8_appstream 305 k
python3-pysocks noarch 1.6.8-3.el8 ol8_baseos_latest 34 k
python3-requests noarch 2.20.0-2.1.el8_1 ol8_baseos_latest 123 k
python3-urllib3 noarch 1.24.2-5.0.1.el8 ol8_baseos_latest 177 k
rest x86_64 0.8.1-2.el8 ol8_appstream 70 k
spice-glib x86_64 0.38-6.el8 ol8_appstream 385 k
spice-gtk3 x86_64 0.38-6.el8 ol8_appstream 76 k
virt-manager-common noarch 2.2.1-4.0.1.el8 ol8_appstream 891 k
トランザクションの概要
========================================================================================================================
インストール 48 パッケージ
ダウンロードサイズの合計: 23 M
インストール後のサイズ: 68 M
パッケージのダウンロード:
(1/48): python3-pysocks-1.6.8-3.el8.noarch.rpm 235 kB/s | 34 kB 00:00
(2/48): python3-requests-2.20.0-2.1.el8_1.noarch.rpm 2.4 MB/s | 123 kB 00:00
(3/48): python3-idna-2.5-5.el8.noarch.rpm 483 kB/s | 97 kB 00:00
(4/48): python3-chardet-3.0.4-7.el8.noarch.rpm 850 kB/s | 195 kB 00:00
(5/48): python3-urllib3-1.24.2-5.0.1.el8.noarch.rpm 4.4 MB/s | 177 kB 00:00
(==================== 中略 ====================)
python3-libvirt-6.0.0-1.module+el8.3.0+7860+a7792d29.x86_64 python3-pysocks-1.6.8-3.el8.noarch
python3-requests-2.20.0-2.1.el8_1.noarch python3-urllib3-1.24.2-5.0.1.el8.noarch
rest-0.8.1-2.el8.x86_64 spice-glib-0.38-6.el8.x86_64
spice-gtk3-0.38-6.el8.x86_64 virt-install-2.2.1-4.0.1.el8.noarch
virt-manager-common-2.2.1-4.0.1.el8.noarch virt-viewer-9.0-9.el8.x86_64
完了しました!
仮想ホストの設定
libvirtdサービスの起動
仮想化環境を管理するための共通APIを提供しているlibvirtdサービスを起動します。 仮想ネットワークの作成やストレージプールの作成などはvirshコマンドを利用して libvirt経由でKVMを操作します。なお、デフォルトで自動起動は有効になっています。
# systemctl start libvirtd.service # systemctl status libvirtd.service ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) ←自動起動有効 Active: active (running) since Mon 2021-08-16 06:22:56 JST; 9s ago ←起動状態 Docs: man:libvirtd(8) https://libvirt.org Main PID: 27667 (libvirtd) Tasks: 19 (limit: 32768) Memory: 12.6M CGroup: /system.slice/libvirtd.service tq27667 /usr/sbin/libvirtd --timeout 120 tq27788 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/us> mq27790 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/us> 8月 16 06:22:57 oraclelinux84 dnsmasq[27782]: listening on virbr0(#3): 192.168.122.1 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: started, version 2.79 cachesize 150 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN2 DHCP DHCPv6 no-L> 8月 16 06:22:57 oraclelinux84 dnsmasq-dhcp[27788]: DHCP, IP range 192.168.122.2 -- 192.168.122.254, lease time 1h 8月 16 06:22:57 oraclelinux84 dnsmasq-dhcp[27788]: DHCP, sockets bound exclusively to interface virbr0 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: reading /etc/resolv.conf 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: using nameserver 192.168.0.1#53 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: read /etc/hosts - 2 addresses 8月 16 06:22:57 oraclelinux84 dnsmasq[27788]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses 8月 16 06:22:57 oraclelinux84 dnsmasq-dhcp[27788]: read /var/lib/libvirt/dnsmasq/default.hostsfile
仮想ホストの検証
システムが仮想ホストとして正しく構成されていることを検証します。 全て「成功」と表示されれば完全な状態ですが、「失敗」があれば表示されている問題点を解消します。 「警告」があれば可能な限り問題点を解消させます。 下の例ではIOMMUがカーネルで有効になっていないと表示されている点は改善できるので、以降の手順で改善します。
# virt-host-validate QEMU: 確認中 for hardware virtualization : 成功 QEMU: 確認中 if device /dev/kvm exists : 成功 QEMU: 確認中 if device /dev/kvm is accessible : 成功 QEMU: 確認中 if device /dev/vhost-net exists : 成功 QEMU: 確認中 if device /dev/net/tun exists : 成功 QEMU: 確認中 for cgroup 'cpu' controller support : 成功 QEMU: 確認中 for cgroup 'cpuacct' controller support : 成功 QEMU: 確認中 for cgroup 'cpuset' controller support : 成功 QEMU: 確認中 for cgroup 'memory' controller support : 成功 QEMU: 確認中 for cgroup 'devices' controller support : 成功 QEMU: 確認中 for cgroup 'blkio' controller support : 成功 QEMU: 確認中 for device assignment IOMMU support : 成功 QEMU: 確認中 if IOMMU is enabled by kernel : 警告 (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments) QEMU: 確認中 for secure guest support : 警告 (Unknown if this platform has Secure Guest support)
カーネルでIOMMUを有効化するためのGRUB2設定変更
GRUB2の設定ファイルを編集し、ブートパラメータにIOMMUを有効化する設定を追加します。 追加する内容は virt-host-validate の実行結果の中に表示されているので、それをそのまま追加します。
# cd /etc/default/ # vi grub
※以下、該当箇所のみ変更※ GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet" ↓変更 GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet intel_iommu=on"
GRUB2の設定変更を反映
編集した /etc/default/grub ファイルはLinuxのブート時に使用されないため、 grub2-mkconfig コマンドでブートに使用される /boot/grub2/grub.cfg ファイルへ変更を反映します。 その後変更したブートパラメータを有効にするためにLinuxを再起動します。
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Adding boot menu entry for EFI firmware configuration done # shutdown -r 0
仮想ホストの再検証
仮想ホストとしての構成を再検証します。 前回は「警告」と表示されていたIOMMUは、今回は「成功」に変わりました。 secure guest support は引き続き「警告」のままですが、改善方法が不明なためそのままとします。
# virt-host-validate QEMU: 確認中 for hardware virtualization : 成功 QEMU: 確認中 if device /dev/kvm exists : 成功 QEMU: 確認中 if device /dev/kvm is accessible : 成功 QEMU: 確認中 if device /dev/vhost-net exists : 成功 QEMU: 確認中 if device /dev/net/tun exists : 成功 QEMU: 確認中 for cgroup 'cpu' controller support : 成功 QEMU: 確認中 for cgroup 'cpuacct' controller support : 成功 QEMU: 確認中 for cgroup 'cpuset' controller support : 成功 QEMU: 確認中 for cgroup 'memory' controller support : 成功 QEMU: 確認中 for cgroup 'devices' controller support : 成功 QEMU: 確認中 for cgroup 'blkio' controller support : 成功 QEMU: 確認中 for device assignment IOMMU support : 成功 QEMU: 確認中 if IOMMU is enabled by kernel : 成功 QEMU: 確認中 for secure guest support : 警告 (Unknown if this platform has Secure Guest support)
仮想ブリッジの作成
KVMの導入でデフォルトで作成される仮想ブリッジは外部ネットワークからKVMの仮想マシンに対して 通信することができないため、仮想マシンが外部ネットワークと双方向に通信可能な新たな仮想ブリッジを作成します。
仮想ブリッジ作成前の確認
新たに仮想ブリッジを作成する前に既存のネットワークデバイス、コネクション、IPアドレスなどを確認しておきます。
# nmcli device ←ネットワークデバイスの表示 DEVICE TYPE STATE CONNECTION ens192 ethernet 接続済み ens192 ←物理デバイス virbr0 bridge 接続済み (外部) virbr0 ←KVMデフォルトの仮想ブリッジ lo loopback 管理無し -- virbr0-nic tun 管理無し -- # nmcli connection ←ネットワークコネクションの表示 NAME UUID TYPE DEVICE ens192 e1eb94fc-4bc8-403c-b2bf-e115b4dae169 ethernet ens192 virbr0 5cafce56-a813-41a5-8bb7-5218ad1bc8dd bridge virbr0 # ip a ←IPアドレスの表示 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:83:7b:16 brd ff:ff:ff:ff:ff:ff inet 192.168.0.52/24 brd 192.168.0.255 scope global noprefixroute ens192 ←このIPアドレスを仮想ブリッジに振り直します。 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe83:7b16/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:c3:ca:06 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: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:c3:ca:06 brd ff:ff:ff:ff:ff:ff
ブリッジコネクションの作成
br0 という名のブリッジコネクションを作成し、ens192のイーサネットコネクションに付与されているのと同じ IPアドレス情報を設定します
# nmcli connection add type bridge con-name br0 ifname br0
接続 'br0' (36c089ea-c8da-4179-a30a-57aaad92e441) が正常に追加されました。
# nmcli connection mod br0 bridge.stp no
# nmcli connection mod br0 ipv4.method manual ipv4.address "192.168.0.52/24" ipv4.gateway "192.168.0.1" ipv4.dns "192.168.0.1"
# nmcli connection mod br0 autoconnect yes
# nmcli connection
NAME UUID TYPE DEVICE
br0 36c089ea-c8da-4179-a30a-57aaad92e441 bridge br0 ←作成された
ens192 e1eb94fc-4bc8-403c-b2bf-e115b4dae169 ethernet ens192
virbr0 5cafce56-a813-41a5-8bb7-5218ad1bc8dd bridge virbr0
ブリッジスレーブコネクションの作成
br0 のスレーブとしてブリッジスレーブコネクションを作成し、ens192 の物理デバイスと接続します。
# nmcli connection add type bridge-slave ifname ens192 master br0
接続 'bridge-slave-ens192' (4e50c056-1ea4-413c-b76b-9bda9040c34c) が正常に追加されました。
# nmcli connection
NAME UUID TYPE DEVICE
br0 36c089ea-c8da-4179-a30a-57aaad92e441 bridge br0
ens192 e1eb94fc-4bc8-403c-b2bf-e115b4dae169 ethernet ens192
virbr0 5cafce56-a813-41a5-8bb7-5218ad1bc8dd bridge virbr0
bridge-slave-ens192 98d56a83-53ed-449e-91dd-f79739a36e81 ethernet -- ←作成された
既存コネクションの削除とネットワークサービスの再起動
新規に作成したブリッジコネクション br0 によって、これまで利用していた ens192 のイーサネットコネクションが 不要となったので削除します。TeraTermなどリモートから接続して構築作業を行っている場合、 ens192を削除したタイミングでリモート接続が切断されてその後の操作ができなくなってしまいますので、 同時にLinuxを再起動し、新しいネットワークの設定を反映させます。 なお、Oracle Linux 8(RHEL 8)から network.service がなくなったようなので、複数のコネクションの 変更を反映させる場合、nmcliコマンドでコネクションを一つずつdown/upする必要があるようです。 ちょっと手間なのでLinuxを再起動させています。
# nmcli connection del ens192 && shutdown -r 0 接続 'ens192' (e1eb94fc-4bc8-403c-b2bf-e115b4dae169) が正常に削除されました。 Shutdown scheduled for Mon 2021-08-16 06:42:56 JST, use 'shutdown -c' to cancel.
仮想ブリッジ作成後の確認
これで新規に作成した仮想ブリッジを通してLinuxが通信するようになったので、 改めてネットワークデバイス、コネクション、IPアドレスなどを確認し
# nmcli device DEVICE TYPE STATE CONNECTION br0 bridge 接続済み br0 ←作成したブリッジデバイス virbr0 bridge 接続済み (外部) virbr0 ens192 ethernet 接続済み bridge-slave-ens192 ←ens192がブリッジスレーブコネクションと接続している lo loopback 管理無し -- virbr0-nic tun 管理無し -- # nmcli connection NAME UUID TYPE DEVICE br0 ea3ceb4d-f85b-4c82-81ca-01e7664a9225 bridge br0 ←作成したブリッジコネクション virbr0 954430ca-5249-4a99-bbb6-c6ca6b4870b0 bridge virbr0 bridge-slave-ens192 98d56a83-53ed-449e-91dd-f79739a36e81 ethernet ens192 ←作成したブリッジスレーブコネクション # ip a 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 00:0c:29:83:7b:16 brd ff:ff:ff:ff:ff:ff 3: br0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:83:7b:16 brd ff:ff:ff:ff:ff:ff inet 192.168.0.52/24 brd 192.168.0.255 scope global noprefixroute br0 ←ens192に割り当てられていたIPアドレス情報がbr0に割り当てられている valid_lft forever preferred_lft forever inet6 fe80::19d1:6789:7057:af44/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:c3:ca:06 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 5: virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:c3:ca:06 brd ff:ff:ff:ff:ff:ff
作成したブリッジコネクションの詳細確認
ブリッジコネクション br0 の詳細情報を表示するとこんな感じになっています。
# nmcli connection show br0 connection.id: br0 connection.uuid: 36c089ea-c8da-4179-a30a-57aaad92e441 connection.stable-id: -- connection.type: bridge connection.interface-name: br0 connection.autoconnect: はい connection.autoconnect-priority: 0 connection.autoconnect-retries: -1 (default) connection.multi-connect: 0 (default) connection.auth-retries: -1 connection.timestamp: 1629076201 connection.read-only: いいえ connection.permissions: -- connection.zone: -- connection.master: -- connection.slave-type: -- connection.autoconnect-slaves: -1 (default) connection.secondaries: -- connection.gateway-ping-timeout: 0 connection.metered: 不明 connection.lldp: default connection.mdns: -1 (default) connection.llmnr: -1 (default) connection.wait-device-timeout: -1 ipv4.method: manual ipv4.dns: 192.168.0.1 ipv4.dns-search: -- ipv4.dns-options: -- ipv4.dns-priority: 0 ipv4.addresses: 192.168.0.41/24 ipv4.gateway: 192.168.0.1 ipv4.routes: -- ipv4.route-metric: -1 ipv4.route-table: 0 (unspec) ipv4.routing-rules: -- ipv4.ignore-auto-routes: いいえ ipv4.ignore-auto-dns: いいえ ipv4.dhcp-client-id: -- ipv4.dhcp-iaid: -- ipv4.dhcp-timeout: 0 (default) ipv4.dhcp-send-hostname: はい ipv4.dhcp-hostname: -- ipv4.dhcp-fqdn: -- ipv4.dhcp-hostname-flags: 0x0 (none) ipv4.never-default: いいえ ipv4.may-fail: はい ipv4.dad-timeout: -1 (default) ipv4.dhcp-vendor-class-identifier: -- ipv4.dhcp-reject-servers: -- ipv6.method: auto ipv6.dns: -- ipv6.dns-search: -- ipv6.dns-options: -- ipv6.dns-priority: 0 ipv6.addresses: -- ipv6.gateway: -- ipv6.routes: -- ipv6.route-metric: -1 ipv6.route-table: 0 (unspec) ipv6.routing-rules: -- ipv6.ignore-auto-routes: いいえ ipv6.ignore-auto-dns: いいえ ipv6.never-default: いいえ ipv6.may-fail: はい ipv6.ip6-privacy: -1 (unknown) ipv6.addr-gen-mode: stable-privacy ipv6.ra-timeout: 0 (default) ipv6.dhcp-duid: -- ipv6.dhcp-iaid: -- ipv6.dhcp-timeout: 0 (default) ipv6.dhcp-send-hostname: はい ipv6.dhcp-hostname: -- ipv6.dhcp-hostname-flags: 0x0 (none) ipv6.token: -- bridge.mac-address: -- bridge.stp: いいえ bridge.priority: 32768 bridge.forward-delay: 15 bridge.hello-time: 2 bridge.max-age: 20 bridge.ageing-time: 300 bridge.group-forward-mask: 0 bridge.multicast-snooping: はい bridge.vlan-filtering: いいえ bridge.vlan-default-pvid: 1 bridge.vlans: -- proxy.method: none proxy.browser-only: いいえ proxy.pac-url: -- proxy.pac-script: -- GENERAL.NAME: br0 GENERAL.UUID: 36c089ea-c8da-4179-a30a-57aaad92e441 GENERAL.DEVICES: br0 GENERAL.IP-IFACE: br0 GENERAL.STATE: アクティベート済み GENERAL.DEFAULT: いいえ GENERAL.DEFAULT6: いいえ GENERAL.SPEC-OBJECT: -- GENERAL.VPN: いいえ GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/5 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/4 GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: 192.168.0.52/24 IP4.GATEWAY: 192.168.0.1 IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 425 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 425 IP4.DNS[1]: 192.168.0.1
libvirtの仮想ネットワーク設定
作成した仮想ブリッジをKVMの仮想マシンから利用できるように仮想ネットワークの設定を行います。
仮想ネットワーク設定用のXMLファイル作成
仮想ネットワークは必要な設定情報をXML形式のファイルで準備しておき、作成時に読み込みます。 作成するパスやファイル名は任意です。仮想ネットワーク名は bridge-br0 としました。
# cd # vi bridge-br0.xml
※ファイルを新規作成※
<network>
<name>bridge-br0</name>
<forward mode="bridge" />
<bridge name="br0" />
</network>
仮想ネットワークの作成
作成したXMLファイルを読み込む形で仮想ネットワークを作成します。
# virsh net-list --all
名前 状態 自動起動 永続
---------------------------------------------
default 動作中 はい (yes) はい (yes)
# virsh net-define --file bridge-br0.xml
ネットワーク bridge-br0 が bridge-br0.xml から定義されました
# virsh net-list --all
名前 状態 自動起動 永続
---------------------------------------------------
bridge-br0 停止状態 いいえ (no) はい (yes) ←作成された
default 動作中 はい (yes) はい (yes)
#
仮想ネットワークの自動起動設定
仮想ネットワークは作成しただけでは停止状態になっており、自動起動する設定にもなっていません。 まず自動起動する設定に変更します。
# virsh net-autostart bridge-br0
ネットワーク bridge-br0 が自動起動に設定されました
# virsh net-list --all
名前 状態 自動起動 永続
--------------------------------------------------
bridge-br0 停止状態 はい (yes) はい (yes) ←自動起動が「はい」に変わった
default 動作中 はい (yes) はい (yes)
#
仮想ネットワークの起動
続いて仮想ネットワークを起動します。
# virsh net-start bridge-br0
ネットワーク bridge-br0 が起動されました
# virsh net-list --all
名前 状態 自動起動 永続
------------------------------------------------
bridge-br0 動作中 はい (yes) はい (yes) ←状態が「動作中」に変わった
default 動作中 はい (yes) はい (yes)
#
ディスクボリュームの作成
KVMのストレージプールとして利用するために専用のディスクボリュームを作成します。 まっさらな200GBのディスク /dev/sdb をLVMで構成してXFSファイルシステムでフォーマットします。
ディスクパーティションの作成
まず始めに /dev/sdb に1つのプライマリパーティション sdb1 を作成し、 パーティションのタイプに Linux LVM を設定します。 ディスク全体を1つのパーティションにします。
# fdisk -l
ディスク /dev/sda: 80 GiB, 85899345920 バイト, 167772160 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: A5F6E8FD-8FB4-4AD6-BBE3-FA88257909FC
デバイス 開始位置 終了位置 セクタ サイズ タイプ
/dev/sda1 2048 411647 409600 200M EFI システム
/dev/sda2 411648 2508799 2097152 1G Linux ファイルシステム
/dev/sda3 2508800 167770111 165261312 78.8G Linux LVM
ディスク /dev/mapper/vg00-root: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/mapper/vg00-swap: 2 GiB, 2147483648 バイト, 4194304 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/mapper/vg00-var: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/sdb: 200 GiB, 214748364800 バイト, 419430400 セクタ ←ここにパーティションを作成する
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
# fdisk /dev/sdb
fdisk (util-linux 2.32.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
デバイスには認識可能なパーティション情報が含まれていません。
新しい DOS ディスクラベルを作成しました。識別子は 0xb6399959 です。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 200 GiB, 214748364800 バイト, 419430400 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xb6399959
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1): 1
最初のセクタ (2048-419430399, 既定値 2048): 2048
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-419430399, 既定値 419430399): 419430399
新しいパーティション 1 をタイプ Linux、サイズ 200 GiB で作成しました。
コマンド (m でヘルプ): l
0 空 24 NEC DOS 81 Minix / 古い Li bf Solaris
1 FAT12 27 隠し NTFS WinRE 82 Linux スワップ c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 隠し OS/2 また c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 拡張領域 c7 Syrinx
5 拡張領域 41 PPC PReP Boot 86 NTFS ボリューム da 非 FS データ
6 FAT16 42 SFS 87 NTFS ボリューム db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux プレーン de Dell ユーティリ
8 AIX 4e QNX4.x 第2パー 8e Linux LVM df BootIt
9 AIX 起動可能 4f QNX4.x 第3パー 93 Amoeba e1 DOS access
a OS/2 ブートマネ 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad ハ ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 拡張領域 (L 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 隠し FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC
12 Compaq 診断 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 隠し FAT16 <32M 61 SpeedStor ab Darwin ブート f4 SpeedStor
16 隠し FAT16 63 GNU HURD または af HFS / HFS+ f2 DOS セカンダリ
17 隠し HPFS/NTFS 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI スワップ fc VMware VMKCORE
1b 隠し W95 FAT32 70 DiskSecure Mult bb 隠し Boot Wizar fd Linux raid 自動
1c 隠し W95 FAT32 75 PC/IX bc Acronis FAT32 L fe LANstep
1e 隠し W95 FAT16 80 古い Minix be Solaris ブート ff BBT
コマンド (m でヘルプ): t
パーティション 1 を選択
16 進数コード (L で利用可能なコードを一覧表示します): 8e
パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。
コマンド (m でヘルプ): p
ディスク /dev/sdb: 200 GiB, 214748364800 バイト, 419430400 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xb6399959
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/sdb1 2048 419430399 419428352 200G 8e Linux LVM
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
#
物理ボリュームの作成
作成したパーティション /dev/sdb1 をLVMの物理ボリュームとして構成します。
# pvscan
PV /dev/sda3 VG vg00 lvm2 [78.80 GiB / 56.80 GiB free]
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
# pvscan
PV /dev/sda3 VG vg00 lvm2 [78.80 GiB / 56.80 GiB free]
PV /dev/sdb1 lvm2 [<200.00 GiB] ←作成された
Total: 2 [<278.80 GiB] / in use: 1 [78.80 GiB] / in no VG: 1 [<200.00 GiB]
ボリュームグループの作成
物理ボリューム /dev/sdb1 をLVMのボリュームグループとして構成します。 ボリュームグループ名は任意で良いですが、今回は「vg01」としました。
# vgdisplay --- Volume group --- VG Name vg00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 78.80 GiB PE Size 4.00 MiB Total PE 20173 Alloc PE / Size 5632 / 22.00 GiB Free PE / Size 14541 / 56.80 GiB VG UUID nMogI3-jDLX-qnfm-K7Ly-zIwB-eGGd-wq96cl # vgcreate vg01 /dev/sdb1 Volume group "vg01" successfully created # vgdisplay --- Volume group --- VG Name vg01 ←作成された System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <200.00 GiB PE Size 4.00 MiB Total PE 51199 Alloc PE / Size 0 / 0 Free PE / Size 51199 / <200.00 GiB VG UUID jjb3l0-qRb4-ObpW-UewG-qYfq-4FK3-BNNLCk --- Volume group --- VG Name vg00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 78.80 GiB PE Size 4.00 MiB Total PE 20173 Alloc PE / Size 5632 / 22.00 GiB Free PE / Size 14541 / 56.80 GiB VG UUID nMogI3-jDLX-qnfm-K7Ly-zIwB-eGGd-wq96cl # vgdisplay -v vg01 --- Volume group --- VG Name vg01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <200.00 GiB PE Size 4.00 MiB Total PE 51199 Alloc PE / Size 0 / 0 Free PE / Size 51199 / <200.00 GiB ←利用可能な物理エクステント数が51199ある VG UUID jjb3l0-qRb4-ObpW-UewG-qYfq-4FK3-BNNLCk --- Physical volumes --- PV Name /dev/sdb1 PV UUID IYiTKS-OpXc-ZWv8-4G1x-H2Xt-bojv-98bS4F PV Status allocatable Total PE / Free PE 51199 / 51199 #
論理ボリュームの作成
ボリュームグループ vg01 に論理ボリュームを1つ作成します。 割当可能な物理エクステント数51199全てを割り当てます。 論理ボリューム名は任意で良いですが、今回は「vmdata」としました。
# lvcreate -l 51199 -n vmdata vg01 Logical volume "vmdata" created. # vgdisplay -v vg01 --- Volume group --- VG Name vg01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <200.00 GiB PE Size 4.00 MiB Total PE 51199 Alloc PE / Size 51199 / <200.00 GiB Free PE / Size 0 / 0 ←物理エクステントが全て割り当てられ空きが0になった VG UUID jjb3l0-qRb4-ObpW-UewG-qYfq-4FK3-BNNLCk --- Logical volume --- LV Path /dev/vg01/vmdata ←作成された LV Name vmdata VG Name vg01 LV UUID pyVuRu-dAd4-RqIV-2GTj-Zugc-MgbE-Uf3dRA LV Write Access read/write LV Creation host, time oraclelinux84, 2021-08-16 07:39:30 +0900 LV Status available # open 0 LV Size <200.00 GiB Current LE 51199 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 --- Physical volumes --- PV Name /dev/sdb1 PV UUID IYiTKS-OpXc-ZWv8-4G1x-H2Xt-bojv-98bS4F PV Status allocatable Total PE / Free PE 51199 / 0 #
ファイルシステムの作成
論理ボリューム vmdata にXFSのファイルシステムを作成します。
# mkfs.xfs /dev/vg01/vmdata meta-data=/dev/vg01/vmdata isize=512 agcount=4, agsize=13106944 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=52427776, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=25599, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.
マウントポイントの作成
論理ボリューム vmdata をマウントするためのマウントポイントを作成します。 マウントポイントは任意で良いですが、今回は /vmdata ディレクトリとしました。
# mkdir /vmdata
論理ボリュームのマウント
mountコマンドを使って手動でマウントします。 これで作成した論理ボリュームにデータを書けるようになります。
# mount -t xfs /dev/vg01/vmdata /vmdata
# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=3956608k,nr_inodes=989152,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
none on /sys/kernel/tracing type tracefs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/vg00-root on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=21999)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/mapper/vg00-var on /var type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/sda2 on /boot type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=795364k,mode=700)
/dev/mapper/vg01-vmdata on /vmdata type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) ←マウントされた
自動マウントの設定
手動でマウントしただけだとLinuxを再起動するとマウントが外れてしまうので、 自動マウントの設定を行います。/etc/fstab ファイルを編集します。
# cd /etc/ # vi fstab
※ファイルの末尾に追記※ /dev/mapper/vg00-root / xfs defaults 0 0 UUID=04dbdd30-30f4-4437-8e09-1d6b1bfeab1d /boot xfs defaults 0 0 UUID=1E70-F021 /boot/efi vfat umask=0077,shortname=winnt 0 2 /dev/mapper/vg00-var /var xfs defaults 0 0 /dev/mapper/vg00-swap none swap defaults 0 0 /dev/mapper/vg01-vmdata /vmdata xfs defaults 0 0 ←この行を追加
ストレージプールの作成
デフォルトのストレージプールは /var/lib/libvirt/images ディレクトリが指定されています。 /var にはLinuxのログなども出力されるため、仮想マシンを作成し続けると気づかないうちに /var 領域がパンクする懸念があります。 そこで仮想マシンイメージを格納する専用のディスクボリュームを割り当てたストレージプールを作成します。
ストレージプール設定用のXMLファイル作成
仮想ネットワークの設定と同様にストレージプールの作成に必要な情報をXML形式のファイルで準備します。 ストレージプール名は vmdata としました。(論理ボリューム名と同じでややこしかったかな)
# cd # vi vmdata.xml
※ファイルを新規作成※
<pool type="dir">
<name>vmdata</name>
<target>
<path>/vmdata</path>
</target>
</pool>
ストレージプールの作成
作成したXMLファイルを読み込む形でストレージプールを作成します。
# virsh pool-list --details --all
名前 状態 自動起動 永続 容量 割り当て 利用可能
-------------------------------------------------------------
# virsh pool-define vmdata.xml
プール vmdata が vmdata.xml から定義されました
# virsh pool-list --details --all
名前 状態 自動起動 永続 容量 割り当て 利用可能
----------------------------------------------------------------------------
vmdata 停止状態 いいえ (no) はい (yes) - - - ←作成された
#
ストレージプールの自動起動設定
ストレージプールも仮想ネットワークと同様で、作成しただけでは停止状態になっており、 自動起動する設定にもなっていません。まず自動起動する設定に変更します。
# virsh pool-autostart vmdata
プール vmdata が自動起動としてマークされました
# virsh pool-list --details --all
名前 状態 自動起動 永続 容量 割り当て 利用可能
---------------------------------------------------------------------------
vmdata 停止状態 はい (yes) はい (yes) - - - ←自動起動が「はい」に変わった
#
ストレージプールの起動
続いてストレージプールを起動します。
# virsh pool-start vmdata
プール vmdata が起動されました
# virsh pool-list --details --all
名前 状態 自動起動 永続 容量 割り当て 利用可能
---------------------------------------------------------------------------------
vmdata 実行中 はい (yes) はい (yes) 199.90 GiB 1.43 GiB 198.47 GiB ←状態が「実行中」に変わった
#
以上でKVMの初期設定が終わりです。 利用目的が異なる場合はもっと他の設定が必要となったり、設定内容も異なったりしますが、 家のパソコンに導入して個人が遊ぶ環境としてはまずはこれぐらいの構成から始めて良いかなと思います。