SSブログ

CentOS 7.5へのアップデート後の不具合の発生 [CentOS]

CentOS 7.4 から 7.5 へのアップデート後に KVM で不具合が発生する。
詳細は、以下の通りである。

[ソフトウェアのバージョン]
・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

[4. 追記]


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

MDデバイスのアラインメントとサイズの変更 [Linux]

1. 背景


ディスク 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 のサイズも拡張される。


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

Postfixのinet_interfacesの設定に関するエラーが発生する [Debian]

1. 発生事象


/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  … 他ノードから接続を行わない場合

[4. 備考]


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。