仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

VMware vSphere環境に立てたUbuntu Server 20.04でmultipathdのログが荒ぶる場合の対処

VMware vSphere環境にUbuntu Server 20.04のVMを構築している最中、syslogを見たくなって開いてみたらmultipathdのログで埋まっていました。数秒ごとに以下のようなログが出力され続けています。

Jul  2 23:59:45 hoge multipathd[757]: sda: failed to get udev uid: Invalid argument
Jul  2 23:59:45 hoge multipathd[757]: sda: failed to get sysfs uid: Invalid argument
Jul  2 23:59:45 hoge multipathd[757]: sda: failed to get sgio uid: No such file or directory
Jul  2 23:59:46 hoge multipathd[757]: sdb: add missing path
Jul  2 23:59:46 hoge multipathd[757]: sdb: failed to get udev uid: Invalid argument
Jul  2 23:59:46 hoge multipathd[757]: sdb: failed to get sysfs uid: Invalid argument
Jul  2 23:59:46 hoge multipathd[757]: sdb: failed to get sgio uid: No such file or directory

検索すると、すでにask ubuntuで同様の質問記事が上がっていました。回答いわく、udevが/dev/disk/by-id以下にデバイスのリンクを作るためのUUID情報をVMwareが渡していないことが原因のようです。

askubuntu.com

実際に/dev/disk/by-idを見ると、ディスクデバイスのリンクはLVMや仮想CDドライブ以外見当たりませんでした。

解決するには、VMの電源を落として、VMware側で以下のオプションを追加します。

disk.EnableUUID = "TRUE"

vSphere Web Clientの場合は、[仮想マシンの編集]画面を開いて、[仮想マシンオプション]タブから[詳細]内の設定パラメータで[設定の編集]を開いてオプションの[名前]と[値]を書き込みます。

f:id:virtualtech:20200707123757j:plain
仮想マシンの設定画面

f:id:virtualtech:20200707123821j:plain
オプションの追加

設定後、VMを起動すると/dev/disk/by-id以下にディスクデバイスへのリンクが生成されるようになりました。

$ ls /dev/disk/by-id
ata-VMware_Virtual_IDE_CDROM_Drive_00000000000000000001
scsi-36000c2959935220f8bdd188073638082
scsi-36000c2959935220f8bdd188073638082-part1
scsi-36000c2959935220f8bdd188073638082-part2
scsi-36000c29b234f6842965889fd939c8210
scsi-36000c29b234f6842965889fd939c8210-part1
scsi-36000c29b234f6842965889fd939c8210-part9

記事を読んだ当初は、multipathdの設定にブラックリストを書いて対処してしまいましたが、これはすぐにVMを停止できない場合の一時対処としたほうが良いかもしれません。

# vi /etc/multipath.conf

blacklist {
    devnode "sd([a-z])"
}

# systemctl restart multipathd.service