なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

iSCSI boot on QEMU+KVM case2

概要

QEMU+KVM環境でゲストマシンをiSCSIブートする。

case1とcase2の比較

総括すると、case1はメンテナンス性に優れ、case2は構成・設定のシンプルさに優れる。

比較項目 case1 case2 備考
DHCPサーバ 必要 必要 case1のほうがやや設定が多い
HTTPサーバ 必要 不要 -
iPXEスクリプト 必要 不要 -
メンテナンス性 良い 悪い ※1

※1:case1ではiSCSIディスクの変更時などはiPXEスクリプトを修正するだけで済み、dhcpd.serviceの再起動が不要。

case1の詳細は以下を参照。
none06.hatenadiary.org

経緯

  • KVMホストのローカルディスクの容量が逼迫してきた。恒久対処としてゲストマシンのイメージファイルをKVMホストの外で管理することにした。
  • データの管理場所はNASとした。
  • 接続インターフェース(プロトコル)はiSCSIとした。
    • 他にはNFS、FCが有力な候補として挙げられる。
    • 当初はNFSを検討していたがトラブルにより断念。後日記事にするかもしれない。
    • FCはH/W調達の手間を惜しんで保留。いつか試したい。

環境

概念図

f:id:none06:20201013012720p:plain

シーケンス図

f:id:none06:20201013012742p:plain

構成

ホスト名 管理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ターゲット
kvm01 (割愛) (割愛) CentOS 8.1.1911 HP Z600 KVMホスト
pxe01 172.16.0.21 (割愛) CentOS 8.1.1911 - PXEサーバ(DHCP/HTTP)
guest02 172.16.0.253 172.16.1.253 CentOS 8.2.2004 - KVMゲスト

NWアドレス NW名 用途
172.16.0.0/24 管理NW ssh接続、Web管理画面接続、PXEブート
172.16.1.0/24 ストレージNW ストレージ接続(iSCSI/NFS/CIFS)

※今回の作業を通して、PXEブートはストレージNWのほうが良いかもしれないと気づいた。

前提

  • iSCSIターゲットの作成手順は各自確認のこと。
    • 一応NETGEARの手順を記載するが、古い機種のため需要はないかと・・・
  • ゲストマシンのOSは新規インストールする。
    • 稼働しているゲストマシンの移行もやりたいが、そこまで手が届いていない。
  • ゲストマシンのOSインストールにはPXEサーバを使用する。
  • DHCPサーバを構築済みとする。
    • 最低限、subnetの定義があれば動く?

手順

1.iSCSIターゲット/LUNの作成

1-1.以下の要領で作成する。

ターゲット名 LUN番号 ディスク容量
guest02 0 20GB

f:id:none06:20201007025632p:plain
f:id:none06:20201007025657p:plain
f:id:none06:20201007025713p:plain

2.ゲストマシンの構築

2-1.ゲストマシンを作成する。
※ディスクなしとしているのがポイント(--disk none)。
※当環境ではPXEサーバからOSをインストールするが、手順は問わない。

[root@kvm01 ~]# virt-install \
> --hvm \
> --name guest02 \
> --ram 2048 \
> --vcpus 2 \
> --disk none \
> --os-type linux \
> --network bridge=br0,link.state=up \
> --network bridge=br1,link.state=up \
> --network bridge=br2,link.state=down \
> --graphics vnc,listen=0.0.0.0 \
> --console pty,target_type=serial \
> --pxe
WARNING  OS name 'linux' is deprecated, using 'generic' instead. This alias will be removed in the future.
WARNING  グラフィカルコンソールに接続できません: virt-viewer がインストールされていません。'virt-viewer' パッケージをインストールしてください。
WARNING  ゲストのコンソールがないため、デフォルト値 --wait -1 を適用します。

インストールの開始中...
Domain installation still in progress.
Waiting for installation to complete.

2-2.CentOS8のインストーラを起動する。
※当環境ではPXEサーバからOSをインストールするが、手順は問わない。
※以降、今回の設定で最低限必要な項目のみ記載する。それ以外の項目は任意に設定すること。

2-3.IPを固定する。
f:id:none06:20201007025850p:plain
f:id:none06:20201007025853p:plain

2-4.インストール先のディスクを選択する。デフォルトでは認識されないため、iSCSIターゲットにログインする必要がある。なお、ここでのログイン設定はOSインストール後も保持される。
f:id:none06:20201007030013p:plain
f:id:none06:20201007030020p:plain
f:id:none06:20201007030029p:plain
f:id:none06:20201007030033p:plain
f:id:none06:20201007030038p:plain
f:id:none06:20201007030044p:plain
f:id:none06:20201007030048p:plain

2-5.OSインストールを完了させる。

2-6.ゲストマシンのMACアドレスを調べておく。

[root@kvm01 ~]# virsh dumpxml guest02 | grep "mac address"
      <mac address='52:54:00:71:aa:76'/>
      <mac address='52:54:00:91:be:66'/>
      <mac address='52:54:00:66:9a:e2'/>

3.DHCPサーバの設定

3-1.dhcpd.confに以下を追記する。
MACアドレスiSCSIブートディスクの関連付け

[root@pxe01 ~]# cat /etc/dhcp/dhcpd.conf
・・・
host guest02 {
  hardware ethernet 52:54:00:71:aa:76;
  option root-path "iscsi:172.16.0.5:::0:iqn.2020-09.file01:guest02";
}
・・・

3-2.dhcpdサービスを再起動し設定を反映する。

[root@pxe01 ~]# systemctl restart dhcpd.service

4.ゲストマシンの起動(再起動)

4-1.ゲストマシンを再起動する。
※先ほどのOSインストールの最後に再起動しており、その後ディスクがなくOS起動に失敗しているため、強制再起動する。

[root@kvm01 ~]# virsh reset guest02
ドメイン guest02 がリセットされました

f:id:none06:20201007030348p:plainBIOS→ネットワークブート→iPXEブートと遷移している。

f:id:none06:20201013012833p:plain※「Root path」でiSCSIバイスを指定していることがわかる。

f:id:none06:20201007030448p:plainiSCSIブートが成功し、ディスクの中のOSが見えている。

4-2.ゲストマシンの状態を確認する。

[root@localhost ~]# iscsiadm -m session
tcp: [1] 172.16.1.5:3260,1 iqn.2020-09.file01:guest02 (non-flash)

OS起動時にiSCSIターゲットに自動ログインしている。これは、OSインストール時にiSCSIターゲットにログインした際の設定が保持されているため。

[root@localhost ~]# parted -l
モデル: LIO-ORG FILEIO (scsi)
ディスク /dev/sda: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  ext4              boot
 2    1075MB  21.5GB  20.4GB  primary                    lvm

iSCSIターゲットで作成した20GBのディスクが認識されていることがわかる。