OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

KVMをOracle Linux 8.4へインストールし、仮想ネットワークとストレージプールを作成

カテゴリ:OSSセットアップ | ソフトウェア:KVM | タグ:
最終更新日:2021/09/08 | 公開日:2021/08/29

目次

概要

 家の仮想環境として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を導入して簡単に動作検証するところまで利用する予定なので、スペックは最低限としています。

■ハードウェアスペック
項目内容
vCPU1コア
メモリ2GB
ネットワークアダプタ1 ※数
ハードディスク180GB
ハードディスク2200GB

サーバ・ソフトウェア構成

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
ファイル名:/etc/default/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
ファイル名:/root/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
ファイル名:/etc/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
ファイル名:/root/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の初期設定が終わりです。 利用目的が異なる場合はもっと他の設定が必要となったり、設定内容も異なったりしますが、 家のパソコンに導入して個人が遊ぶ環境としてはまずはこれぐらいの構成から始めて良いかなと思います。

参考にしたサイト