CentOS 7.5へのアップデート後の不具合の発生 [CentOS]
詳細は、以下の通りである。
[ソフトウェアのバージョン]
・virt-manager-1.4.3-3.el7.noarch
・libvirt-daemon-3.9.0-14.el7_5.4.x86_64
1. 発生事象
CentOS 7.5 への更新後、KVM で起動できないドメインが発生する。
[エラーメッセージ] Error starting domain: サポートされない設定: shared access for disk 'hdc' \ requires use of supported storage format
[hdc の設定] - /etc/libvirt/qemu/xxx.xml <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/cluster-common.qcow2'/> <target dev='hdc' bus='ide'/> <shareable/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk>
・hdc はクラスタ・ノード間で共有するディスクである。
2. 対処方法
該当するパッケージを CentOS 7.4 のものにバージョンダウンする。
[該当するパッケージ]
・libvirt-*
・virt-install-*
・virt-manager-*
(補足)
該当するパッケージの詳細については、備考を参照。
2-1. CentOS 7.4 のバックアップ・データが存在する場合の手順
(1) バックアップ・データを使用し、CentOS 7.4 に戻す。
(2) 該当するパッケージ以外をアップデートする。
2-2. CentOS 7.4 のバックアップ・データが存在しない場合の手順
該当するパッケージを CentOS 7.4 のものにバージョンダウンする。
3. 備考
(1) 関係するパッケージ
下記のパッケージへのアップデートにより、上記の問題を発生する。
libvirt-3.9.0-14.el7_5.4.x86_64 libvirt-client-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-config-network-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-config-nwfilter-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-interface-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-lxc-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-network-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-nodedev-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-nwfilter-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-qemu-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-secret-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-core-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-disk-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-gluster-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-logical-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-mpath-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-rbd-3.9.0-14.el7_5.4.x86_64 libvirt-daemon-driver-storage-scsi-3.9.0-14.el7_5.4.x86_64 libvirt-glib-1.0.0-1.el7.x86_64 libvirt-libs-3.9.0-14.el7_5.4.x86_64 libvirt-python-3.9.0-1.el7.x86_64 virt-install-1.4.3-3.el7.noarch virt-manager-1.4.3-3.el7.noarch virt-manager-common-1.4.3-3.el7.noarch
また、CentOS 7.4 での当該パッケージは、下記の通りである。
libvirt-3.2.0-14.el7_4.9.x86_64 libvirt-client-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-config-network-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-config-nwfilter-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-interface-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-lxc-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-network-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-nodedev-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-nwfilter-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-qemu-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-secret-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-core-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-disk-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-gluster-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-iscsi-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-logical-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-mpath-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-rbd-3.2.0-14.el7_4.9.x86_64 libvirt-daemon-driver-storage-scsi-3.2.0-14.el7_4.9.x86_64 libvirt-glib-1.0.0-1.el7.x86_64 libvirt-libs-3.2.0-14.el7_4.9.x86_64 libvirt-python-3.2.0-3.el7_4.1.x86_64 virt-install-1.4.1-7.el7.noarch virt-manager-1.4.1-7.el7.noarch virt-manager-common-1.4.1-7.el7.noarch
MDデバイスのアラインメントとサイズの変更 [Linux]
ディスク 2 台を使用し、パーティション毎に RAID 1 を構成(mdadm を使用) している。
/boot は MD デバイス上に直接ファイルシステムを作成し、その他は MD デバイス上に LVM を作成し、LV 上にファイルシステムを作成している。
この環境において、ディスクの 1 台が壊れ、新しいディスクへの交換が必要となった。
新しいディスクは AFT 対応で、他方は AFT 未対応のディスクである。
作業の所要時間を重視するなら、下記のような手順での対応となる。
・新しいディスクのパーティション構成を交換前と全く同じにする。
(AFT 対応のためのアラインメントの変更を行わない。)
・RAID 1 を構成するパーティション間の同期を行う。
今回は、今後の AFT 対応ディスクへの交換を見据え、パーティション構成(アラインメント、サイズ)の変更を行うことにした。
・パーティションの作成には Debian 8 の fdisk (util-linux 2.25.2) を使用する。
以下は、備忘録として、実施手順をまとめたものである。
2. 実施手順
(1) ディスクの交換
・OS のシャットダウン(電源 OFF を含む)
・ディスクの交換
・電源 ON (OS のブートを含む)
(補足)
交換するディスクが /dev/sda の場合には、ブートローダーのインストール(外部メディアから起動してのブートローダーのインストール等)が必要となる。
(2) 新しいディスクでのパーティションの作成
・セクタの開始位置が 8 の倍数になるようにする。
・サイズは、RAID 1 を構成する他方のパーティションのサイズ以上にする。
・この時点では、パーティションのタイプを指定しない(default: 83)。
・全パーテョションの作成後に、設定を反映するために OS を再起動する。
(3) 新しいディスクのパーティション・タイプの変更
RAID 1 を構成するパーティションについて、タイプを fd に変更する。
(4) MD デバイスへのデバイス(新しいディスク上のパーティション)の追加
# mdadm [--manage] <raid-device> --add <device>
・すべての MD デバイスについて実施する。
・データの同期が順次開始される。
・小さい方のデバイスのサイズ分のみが RAID 1 構成となる。
# cat /proc/mdstat
データの同期が終了するのを待つ。
(5) 既存ディスクでのパーティションの削除
# mdadm [--manage] <raid-device> --fail <device>
・MD デバイスの当該デバイス(パーティション)を切り離す(故障状態にする)。
・すべての MD デバイスについて実施する。
# mdadm [--manage] <raid-device> --remove <device>
・MD デバイスから当該デバイス(パーティション)を削除する。
・すべての MD デバイスについて実施する。
# mdadm --misc --zero-superblock <device>
・MD デバイスから削除したパーティションのスーパー・ブロックを初期化する。
・該当するすべてのパーティションについて実施する。
その後、下記の手順を実施する。
・既存ディスク上の全パーティションを削除する。
・全パーテョションの削除後に、設定を反映するために OS を再起動する。
(6) 既存ディスクでのパーティションの作成
・上記の (2) の手順と同様。
・パーティションのサイズは、RAID 1 構成の他方のパーティションと同じにする。
(7) MD デバイスへのデバイス(既存ディスク上のパーティション)の追加
上記の (3)、(4) の手順と同じ。
(8) MD デバイスのサイズ変更
# mdadm --grow <raid-device> --size=max または # mdadm --grow <raid-device> -z max
MD デバイスを構成するデバイス(パーティション)のサイズまで拡張される。
(9) MD デバイス上の PV のサイズ変更(LVM を作成した MD デバイスの場合)
# pvresize <raid-device>
・PV のサイズが、MD デバイスのサイズまで拡張される。
・PV のサイズが拡張されることにより、VG のサイズも拡張される。
Postfixのinet_interfacesの設定に関するエラーが発生する [Debian]
/etc/postfix/main.cf の inet_interfaces の設定に関するエラーが発生する。
[ソフトウェアのバージョン]
postfix 2.11.3-1+deb8u2 (on Debian 8)
postfix 3.1.8-0+deb9u1 (on Debian 9)
mdadm 3.3.2-5+deb8u2 (on Debian 8)
mdadm 3.4-4+b1 (on Debian 9)
[エラーメッセージ]
postfix/sendmail[pid]: fatal: parameter inet_interfaces: no local interface \
found for 192.168.x.x
[inet_interfaces の設定値]
inet_interfaces = $myhostname, localhost
・192.168.x.x は eth0 の IP アドレスである。
・Postfix の起動/再起動時には発生しない。
2. 原因
mdadm の mdmonitor.service の不具合である。
・OS 起動時に mdmonitor からメール通知を行う場合に当該事象が発生する。
・ネットワーク I/F が使用できない状態でのメール送信のためと思われる。
(補足)
・メール通知自体は正常に機能する。
(127.0.0.1 が使用されたものと思われる。)
・mdmonitor は、mdadm のモニタ機能である。
・mdmonitor.service は、'/sbin/mdadm --monitor --scan' を実行する。
・'/sbin/mdadm --monitor --scan -t' でテスト用にメールを送信できる。
3. 対処方法
下記のいずれかの手順を実施する。
(1) mdmonitor.service の変更
(変更内容) [Unit] 欄の最後に下記の設定を追加する。 After=network.target
(補足)
/etc/systemd/system/mdmonitor.service の作成
または
/lib/systemd/system/mdmonitor.service の変更
(2) /etc/postfix/main.cf の変更
(変更前) inet_interfaces = $myhostname, localhost (変更後) inet_interfaces = all … 他ノードから接続を行う場合 または inet_interfaces = localhost … 他ノードから接続を行わない場合