0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マシンイメージからal9のVMを作る

Posted at

この記事の内容

AlmaLinux9のVMを構築する方法として、以下があります。

  • 普通のやり方。インストーラISOファイルからVMを立ち上げ、OSをインストールする。
  • パブリッククラウドのインスタンス(=VM)のように、最小パッケージ構成でインストール済みのOSの仮想ディスク(=マシンイメージ)と、cloud-initのISOファイル(初期設定する内容を書いたもの)から、VMを起動する。

後者の方法でVMを作る方法の紹介です。

ファイル入手元

この、Download imagesの、AlmaLinux 9の、x86_64のリンクより。
ここでは、AlmaLinux-9-GenericCloud-latest.x86_64.qcow2 を使用します。
https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2

ここでは、AlmaLinuxを例にしていますが、多くのOSディストリビューションは、インストーラISOファイルを配布しているとなりで、マシンイメージ(呼び名はまちまち)を、提供しているようです。

環境と概要

image.png

  • ホストOS:RHEL8.9、OS標準のKVM仮想化環境。
  • ブラウザでホストOSの9090ポート(cockpit)に接続。
  • cockpitのWebコンソールでVM作成。

実施手順

1. マシンイメージファイル入手

VMの仮想ディスクは、ストレージプールに置きます。(デフォルトは/var/lib/libvirt/images/)

cd /var/lib/libvirt/images/
curl -O https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2

このqcow2ファイルは、virtual sizeが10GiB、実サイズは468MiBでした。

[root@rhel8host images]# qemu-img info AlmaLinux-9-GenericCloud-latest.x86_64.qcow2 | grep size
virtual size: 10 GiB (10737418240 bytes)
disk size: 468 MiB
cluster_size: 65536
[root@rhel8host images]#
[root@rhel8host images]# ls -lsh | grep GenericCloud-latest
469M -rw-r--r--. 1 root root 469M  2月  8 15:57 AlmaLinux-9-GenericCloud-latest.x86_64.qcow2
[root@rhel8host images]#

2. Webコンソールに接続

(1) ブラウザで、「 https://192.168.11.201:9090 」にアクセスします。

前提:

  • cockpit.socketがenabledであること。
  • cockpit-machinesのパッケージがインストールされていること。

前提を満たしていない場合は、以下をやります。

systemctl enable --now cockpit.socket
dnf install -y cockpit-machines

(2) ログインします。
image.png

3. VM作成

(1) メニューから、「仮想マシン」を選びます。
image.png

(2) 右上の、「仮想マシンの作成」を選びます。
image.png

(3) ウイザードが開かれるので、作成するVMの情報を入れます。
image.png

  • インストールタイプは、「クラウドベースイメージ」。
  • インストールソースは、先にダウンロードした、マシンイメージファイル。

ここでは、作成されるVMの、仮想ディスクのサイズは、16GiBを選んでいます。
これにより、後でゲストOSでfdisk -lすると、/dev/vdaが16GiBと表示されます。

(4) 「自動化」タブを押し、作成するVMのユーザ情報を指定します。
image.png

(5) 「作成して実行する」を押します。VMが作成され、仮想マシン一覧表示に追加されます。
image.png

(6) VM名を選択し、コンソールを開きます。
image.png

(7) ログインプロンプトが表示されていますので、ログインして、VMを使用できます。
image.png

4. 確認

fdisk -lすると、以下のように、16GiBと表示されます。

[root@localhost ~]# fdisk -l
Disk /dev/vda: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5B69F67F-B93F-44E8-94F2-EAA1D9D41C02

Device       Start      End  Sectors  Size Type
/dev/vda1     2048     4095     2048    1M BIOS boot
/dev/vda2     4096   413695   409600  200M EFI System
/dev/vda3   413696  2510847  2097152    1G Linux filesystem
/dev/vda4  2510848 33554398 31043551 14.8G Linux filesystem
[root@localhost ~]#

/は14GiBくらい使えます。
パブリッククラウドだと、ルートディスクのデフォルトサイズは10GiBかと思います。

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           984M     0  984M   0% /dev/shm
tmpfs           394M  5.6M  388M   2% /run
/dev/vda4        15G  895M   14G   6% /
/dev/vda3       960M  131M  830M  14% /boot
/dev/vda2       200M  7.1M  193M   4% /boot/efi
tmpfs           197M     0  197M   0% /run/user/0
tmpfs           197M     0  197M   0% /run/user/1000
[root@localhost ~]#

ホストOSで、作成されたVMの仮想ディスクサイズを見ると、実サイズが23.5MiB、virtual sizeが16GiBになっています。

[root@rhel8host images]# ls -lhs | grep testvm-1
 24M -rw-------. 1 root root  23M  2月  8 16:38 testvm-1.qcow2
[root@rhel8host images]#
[root@rhel8host images]# qemu-img info testvm-1.qcow2 | grep size
virtual size: 16 GiB (17179869184 bytes)
disk size: 23.5 MiB
cluster_size: 65536
[root@rhel8host images]#

qcow2ファイルのvirtual sizeは、一般的に、qemu-img resizeコマンドで、指定サイズに変更できます。
VM作成時に、qcow2ファイルのvirtual sizeを16GiBに変え、続くcloud-initの初期化が、/dev/vda4に、15GiB程度のファイルシステムを作る、ということが、行われているようです。

5. おまけ

  • dhcpでIPアドレスは付いている(ip addrで確認可)。
  • VMのvCPU数は、作ってから変える。
  • OSのパッケージは最低限な構成なので、dnf installで、必要なソフトを追加して使う。
  • ホスト名がlocalhostなので、適当に設定すると良い。
  • firewalldが入っていない。無防備なので入れた方がいい。
  • システム時刻が日本のものじゃない。タイムゾーンをAsia/Tokyoにすると良い。
  • デフォルトでは、sshd.serviceがrootのログインを禁止している。
  • EL9のWebコンソールだと、VM作成時にsshの公開鍵を登録して、秘密鍵を使ってssh -iでアクセスするよう設定できるが、EL8だとそのメニューがなかった。

ホスト名の設定例:

[root@localhost ~]# hostnamectl hostname testvm-1.internal
[root@localhost ~]#
[root@localhost ~]# hostname
testvm-1.internal
[root@localhost ~]#

タイムゾーンの設定例:

[root@localhost ~]# timedatectl
               Local time: Sat 2025-02-08 07:55:04 UTC
           Universal time: Sat 2025-02-08 07:55:04 UTC
                 RTC time: Sat 2025-02-08 07:55:04
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[root@localhost ~]#
[root@localhost ~]# timedatectl set-timezone Asia/Tokyo
[root@localhost ~]#
[root@localhost ~]# timedatectl
               Local time: Sat 2025-02-08 16:55:31 JST
           Universal time: Sat 2025-02-08 07:55:31 UTC
                 RTC time: Sat 2025-02-08 07:55:31
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[root@localhost ~]#
[root@localhost ~]# date
Sat Feb  8 04:55:40 PM JST 2025
[root@localhost ~]#

6. まとめ

マシンイメージを使う主なメリットは、こんなところでしょうか。

  • OSインストーラからVMを作るより、早い。(数秒~十数秒で作れる)
  • こういうインストール選択で、ゲストOSをインストールしました、というやり取りが省ける。
  • 初期状態のVMの、仮想ディスクサイズが、小さく抑えられる。(今回は、23.5MiBだった)

パブリッククラウドのインスタンスと、ほとんど同じようなものを、オンプレミス環境に、すごく簡単に作れる、という捉え方をしておくと、色々な活用方法が浮かぶかと思います。

また、要は、cloud-initの仕組みを使ってVMを作った、という話であり、Webコンソールを使わずとも、cloud-initのisoファイルを作り、virt-installコマンドでVMを作ることもできます。ただ、Webコンソールの方が、わかりやすいし、楽かなと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?