4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KVMホストOSを新規導入した際のKVMゲストOS構築躓きポイント~RHEL編

Last updated at Posted at 2025-01-13

はじめに

昨年12月中旬に自宅PCの買い替えをしました。以前は、富士通社のノートPC(SSD:256GB、メモリ:8GB)を使用していましたが、ここ2,3か月の間に長時間大きなファンの回転音が続くようになり、さすがに耐えられなくなったので、HP社のノートPC(SSD:512GB、メモリ:16GB)のAIパソコンに替えることにしました。
私は、旧PC時代から、VMWare Workstaion Proをインストールし、その上にRHELを導入してKVM環境を構築していました。

  • 当時の構成
    • KVMホストOS:RHEL9.5 (メモリ:4GB) ※メモリはKVMゲストOS利用分含む
    • KVMゲストOS:CentOS7.0 (メモリ:1GB)

今回、PCの買い替えに伴い、PCの性能も向上したので、せっかくならばとKVMゲストOSにもRHEL9.5を入れた下記の構成に変更しました。

  • 今回の構成
    • KVMホストOS:RHEL9.5 (メモリ:4GB) ※メモリはKVMゲストOS利用分含む
    • KVMゲストOS:RHEL9.5 (メモリ:2GB)

最終的には構築成功できましたが、今回KVMホストOSも新規インストールしたこともあり、すんなりとはいかない部分がありましたので、その点について今後のために備忘録としてまとめました。

環境構築時の躓きポイント

virt-installコマンド実行時にqemu(Quick Emulator)の処理で、Permission Deniedでエラーとなる。

KVMホストOS上で、下記のコマンドを実行します。

# virt-install --name vm-guest1 --memory 2048 --vcpus 2 --disk size=19 --os-variant rhel9.5 --cdrom /home/testuser/temp/rhel-9.5-x86_64-boot.iso

すると、下記のようなエラーが出力されました。

WARNING  /home/testuser/temp/rhel-9.5-x86_64-boot.iso は、ハイパーバイザーからアクセスできない可能性があります。'qemu' ユーザーに、次のディレクトリーの検索パーミッションを付与する必要があります: ['/home/testuser']
WARNING  /home/testuser/temp/rhel-9.5-x86_64-boot.iso は、ハイパーバイザーからアクセスできない可能性があります。'qemu' ユーザーに、次のディレクトリーの検索パーミッションを付与する必要があります: ['/home/testuser']

インストールの開始中...
'vm-guest1.qcow2' を割り当てています                                                                                |  19 GB  00:00:00     
ディスク 'vm-guest1.qcow2' を削除中                                                                                |         00:00:00     
ERROR    内部エラー: モニターへの接続中にプロセスが終了しました: 2025-01-13T02:05:39.330248Z qemu-kvm: -blockdev {"driver":"file","filename":"/home/testuser/temp/rhel-9.5-x86_64-boot.iso","node-name":"libvirt-1-storage","read-only":true}: Could not open '/home/testuser/temp/rhel-9.5-x86_64-boot.iso': Permission denied
仮想マシンのインストールが成功したように見えません。
成功していれば、次を実行すると、仮想マシンを再起動できます:
  virsh --connect qemu:///system start vm-guest1
そうでなければ、インストールをやり直してください。

原因は、qemuユーザーが/home/testuserディレクトリに対するアクセス権がなかったことでした。PCの買い替えにより、KVMホストOSも新規インストールしていたので、このあたりの設定が外れてしまっていたものと思います。

$ id qemu
uid=107(qemu) gid=107(qemu) groups=107(qemu),36(kvm)
$ ls -l /home
合計 4
drwx------. 19 testuser testuser 4096  1月 11 19:15 testuser

そこで、/homeディレクトリで以下の処理を行うことで、Permission Deniedのエラーは解決することができました。

$ sudo usermod -aG testuser qemu
$ id qemu
uid=107(qemu) gid=107(qemu) groups=107(qemu),36(kvm),1000(testuser)
$ chmod 750 testuser
$ ls -l
合計 4
drwxr-x---. 19 testuser testuser 4096  1月 11 19:15 testuser

対応後のコマンド実行結果は下記のとおりです。

# virt-install --name vm-guest1 --memory 2048 --vcpus 2 --disk size=19 --os-variant rhel9.5 --cdrom /home/testuser/temp/rhel-9.5-x86_64-boot.iso

WARNING  /home/testuser/temp/rhel-9.5-x86_64-boot.iso は、ハイパーバイザーからアクセスできない可能性があります。'qemu' ユーザーに、次のディレクトリーの検索パーミッションを付与する必要があります: ['/home/testuser']
WARNING  /home/testuser/temp/rhel-9.5-x86_64-boot.iso は、ハイパーバイザーからアクセスできない可能性があります。'qemu' ユーザーに、次のディレクトリーの検索パーミッションを付与する必要があります: ['/home/testuser']

インストールの開始中...
'vm-guest1.qcow2' を割り当てています                                                                               |  19 GB  00:00:00     
ドメインを作成中...                                                                                               |         00:00:00     
グラフィカルコンソールコマンドを実行しています: virt-viewer --connect qemu:///system --wait vm-guest1

(virt-viewer:5961): virt-viewer-WARNING **: 11:44:23.415: vnc-session: got vnc error Server closed the connection
仮想マシンの作成が完了しました。
ゲストを再起動しています。
グラフィカルコンソールコマンドを実行しています: virt-viewer --connect qemu:///system --wait vm-guest1

(virt-viewer:6258): virt-viewer-WARNING **: 11:52:05.648: vnc-session: got vnc error Server closed the connection

コマンド実行後にWarningが消えない点が釈然としないものの、KVMゲストOSのインストール作業には問題なく進むことができたので、とりあえず良しとします。

RHELでは各バージョンでシリアルコンソールの設定方法が異なる

KVMホストOS上で、KVMゲストを起動した後は、KVMゲストOSに一時的にログオンして作業したい場合などに備え、KVMゲスト上でシリアルコンソールの定義をしておくと便利です。
以前、CentOS7.0をKVMゲストOSとして使用していた際に設定した方法でシリアルコンソールの指定をするも、KVMゲストOS再起動後にシリアルコンソールが表示されなかったので、調べたところ、RHELでは各々バージョンでシリアルコンソールの設定方法が異なっていることがわかりました。詳細は下記のサイトに記述があります。(ちなみに、CentOS7.0のシリアルコンソールの設定方法は、RHEL7の場合と同様です。)

上記リンク先の「Red Hat Enterprise Linux 9」の箇所に、RHEL9におけるシリアルコンソールの設定方法が書いてありますので、これを参考に以下のコマンドをKVMゲストOS上で実行した後、再度KVMゲストOSを起動することで無事シリアルコンソールを表示させることができました。grubbyというコマンドも初めて目にしました。

# grubby --update-kernel=ALL --args="console=ttyS0"

KVMゲストOSの再起動結果です。

# virsh start vm-guest1 --console
ドメイン 'vm-guest1' が開始しました
ドメイン 'vm-guest1' に接続しました
エスケープ文字は ^] です (Ctrl + ])
[  OK  ] Started Show Plymouth Boot Screen.
[  OK  ] Started Forward Password Requests to Plymouth Directory Watch.
[  OK  ] Reached target Path Units.
[  OK  ] Found device /dev/mapper/rhel-root.
:
:
Red Hat Enterprise Linux 9.5 (Plow)
Kernel 5.14.0-503.21.1.el9_5.x86_64 on an x86_64

Activate the web console with: systemctl enable --now cockpit.socket

localhost login:

さいごに

今回はKVMホストOSを新規インストールした場合に、KVMゲストOSを構築する際に遭遇する可能性のある躓きポイントをRHELの場合を実例としてまとめました。特にRHELの場合はシリアルコンソールの設定方法が、RHELのバージョンごとに異なるため、シリアルコンソールを設定している場合、KVMゲストOSのRHELのバージョンを変更する際には注意が必要です。

(参考)KVMホストメモリ使用量確認

KVMゲストOS起動停止前後のKVMホストOSのメモリ使用量は下記のようになりました。

  • KVMゲストOS起動中
# free
               total        used        free      shared  buff/cache   available
Mem:         3712588     2261584      808044        4944      879972     1451004
Swap:        2097148      645120     1452028
  • KVMゲストOS停止中
# free
               total        used        free      shared  buff/cache   available
Mem:         3712588     1004976     2060724        4940      883888     2707612
Swap:        2097148      645120     1452028

KVMゲストOS起動中も、KVMホストOSのパフォーマンスは割と良好でした。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?