目次
概要
case1,case2との違い
case1,cese2は結局のところPXE+DHCPで頑張っていたに過ぎず、QEMU+KVMの機能を使っていなかった。今回はQEMU+KVMの機能を活用する。 大きな違いはゲストマシンとiSCSIディスクとの接続方法。case1,case2は直接接続していたが、case3はホストマシンを介して接続する。 個人的にはcase1,case2のゲストマシンがホストマシンから独立してストレージに直接接続するあたりが疎結合で好み。しかし、設定がやや大変。その点case3は設定が非常に楽だったので捨てがたい。
DHCPサーバ | 必要 | 必要 | 不要 | case1のほうがやや設定が多い |
---|---|---|---|---|
HTTPサーバ | 必要 | 不要 | 不要 | - |
iPXEスクリプト | 必要 | 不要 | 不要 | - |
メンテナンス性 | 良い | 悪い | 良い | - |
機能間の結合度 | 疎 | 疎 | 密 | なるべく疎にしたい |
- case1の詳細は以下を参照。 none06.hatenadiary.org
- case2の詳細は以下を参照。 none06.hatenadiary.org
経緯
- KVMホストのローカルディスクの容量が逼迫してきた。恒久対処としてゲストマシンのイメージファイルをKVMホストの外で管理することにした。
- データの管理場所はNASとした。
- 接続インターフェース(プロトコル)はiSCSIとした。
環境
概念図
構成
ホスト名 | 管理NWのIP | ストレージNWのIP | OS | H/W | 備考 |
---|---|---|---|---|---|
file01 | 172.16.0.5 | 172.16.1.5 | RAIDiator 4.2.31 | NETGEAR ReadyNAS Pro 2 | iSCSIターゲット |
kvm02 | 172.16.0.206 | 172.16.1.206 | CentOS 8.4.2105 | Fujitsu TX1320 M1 | KVMホスト |
guest03 | 172.16.0.253 | - | CentOS 8.4.2105 | - | KVMゲスト |
前提
- iSCSIターゲットの作成手順は各自確認のこと。
- ゲストマシンのOSは新規インストールする。
- OSのインストールメディアを用意していること。
手順
1.iSCSIターゲット/LUNの作成
1-1.以下の要領で作成する。
ターゲット名 | LUN番号 | ディスク容量 |
---|---|---|
guest03 | 0 | 20GB |
2.iSCSIディスクのプール化
2-1.ホストマシンでiSCSIターゲットにログインし、ディスクを認識させる。
[root@kvm02 ~]# iscsiadm -m node -T iqn.2020-09.file01:guest03 -p file012 --login Logging in to [iface: default, target: iqn.2020-09.file01:guest03, portal: 172.16.1.5,3260] Login to [iface: default, target: iqn.2020-09.file01:guest03, portal: 172.16.1.5,3260] successful.
[root@kvm02 ~]# iscsiadm -m session tcp: [2] 172.16.1.5:3260,1 iqn.2020-09.file01:guest03 (non-flash)
[root@kvm02 ~]# fdisk -l /dev/sdb ディスク /dev/sdb: 20 GiB, 21474837504 バイト, 41943042 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 524288 バイト ディスクラベルのタイプ: dos ディスク識別子: 0xff4b72b7 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ /dev/sdb1 * 2048 2099199 2097152 1G 83 Linux /dev/sdb2 2099200 6293503 4194304 2G 82 Linux スワップ / Solaris /dev/sdb3 6293504 41943039 35649536 17G 83 Linux
[root@kvm02 ~]# virsh pool-list --all 名前 状態 自動起動 ----------------------------------
[root@kvm02 ~]# virsh pool-define-as --name pool_guest03 --type iscsi --source-host file012 --source-dev iqn.2020-09.file01:guest03 --target /dev/disk/by-path/ プール pool_guest03 が定義されました
[root@kvm02 ~]# virsh pool-list --all 名前 状態 自動起動 ---------------------------------------- pool_guest03 停止状態 いいえ (no)
[root@kvm02 ~]# virsh pool-start pool_guest03 プール pool_guest03 が起動されました
[root@kvm02 ~]# virsh pool-autostart pool_guest03 プール pool_guest03 が自動起動としてマークされました
[root@kvm02 ~]# virsh pool-list --all 名前 状態 自動起動 --------------------------------------- pool_guest03 動作中 はい (yes)
[root@kvm02 ~]# virsh pool-info pool_guest03 名前: pool_guest03 UUID: 242b198b-69a2-45b0-8b89-a2411ac4e23c 状態: 実行中 永続: はい (yes) 自動起動: はい (yes) 容量: 20.00 GiB 割り当て: 20.00 GiB 利用可能: 0.00 B
2-4.プール内のボリュームを確認する。
[root@kvm02 ~]# virsh vol-list pool_guest03 名前 パス ------------------------------------------------------------------------------------------- unit:0:0:0 /dev/disk/by-path/ip-172.16.1.5:3260-iscsi-iqn.2020-09.file01:guest03-lun-0
3.ゲストマシンの構築
3-1.ゲストマシンを作成する。
ポイントは、--disk
にプール名/ボリューム名
を指定する点。
[root@kvm02 ~]# virt-install \ > --hvm \ > --name guest03 \ > --vcpus 4 \ > --ram 4096 \ > --disk vol=pool_guest03/unit:0:0:0 \ > --os-type linux \ > --os-variant centos8 \ > --network bridge=br0 \ > --graphics none \ > --location "/tmp/CentOS-8.4.2105-x86_64-dvd1.iso" \ > --console pty,target_type=serial \ > --extra-args "console=tty0 console=ttyS0,115200n8" インストールの開始中... ファイル vmlinuz を読出中... | 9.6 MB 00:00:00 ファイル initrd.img を読出中... | 72 MB 00:00:00 ドメイン guest03 に接続しました エスケープ文字は ^] です [ 0.094429] pci 0000:00:1f.2: reg 0x20: [io 0xc040-0xc05f] [ 0.095857] pci 0000:00:1f.2: reg 0x24: [mem 0xfdc07000-0xfdc07fff] [ 0.097168] pci 0000:00:1f.3: [8086:2930] type 00 class 0x0c0500 ### snip ###
3-2.OSをインストールする。
特段考慮する点はない。ゲストマシンから見たディスクはただのローカルディスクに見える。case1,case2ではiSCSIディスクに見えていたのでこの点が大きな違い。
Starting installer, one moment... anaconda 33.16.4.15-1.el8.0.2 for CentOS Linux 8 started. * installation log files are stored in /tmp during the installation * shell is available on TTY2 * if the graphical installation interface fails to start, try again with the inst.text bootoption to start text installation * when reporting a bug add logs from /tmp as separate text/plain attachments 13:25:21 Not asking for VNC because we don't have a network ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (English (United States)) (America/New_York timezone) 3) [!] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (Processing...) (Kdump is enabled) 7) [!] Network configuration 8) [!] Root password (Not connected) (Root account is disabled.) 9) [!] User creation (No user will be created) Please make a selection from the above ['b' to begin installation, 'q' to quit, 'r' to refresh]: [anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1
3-3.OSインストールを完了させる。
4.ゲストマシンの状態確認
4-1.ゲストマシンにログインする。
[root@kvm02 ~]# virsh list Id 名前 状態 ------------------------ 5 guest03 実行中
[root@kvm02 ~]# virsh console guest03 ドメイン guest03 に接続しました エスケープ文字は ^] です CentOS Linux 8 Kernel 4.18.0-305.3.1.el8.x86_64 on an x86_64 localhost login: root パスワード: 前回のログイン: Wed Oct 6 22:40:15 端末: ttyS0 [root@localhost ~]#
4-2.ディスクの状態を確認する。
[root@localhost ~]# fdisk -l ディスク /dev/vda: 20 GiB, 21474837504 バイト, 41943042 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0xff4b72b7 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ /dev/vda1 * 2048 2099199 2097152 1G 83 Linux /dev/vda2 2099200 6293503 4194304 2G 82 Linux スワップ / Solaris /dev/vda3 6293504 41943039 35649536 17G 83 Linux
[root@localhost ~]# iscsiadm -m session -bash: iscsiadm: コマンドが見つかりません
ゲストマシンからはあたかもローカルディスクのように見える。iSCSIプロトコルはストレージとホストマシンとの間で終端しているため。