在 VirtualBox 跑 Ubuntu 24.04 時,/var/log/syslog 不斷出現以下錯誤:
1
2
3
4
| Mar 5 11:43:57 ubuntu-server multipathd[726]: sda: add missing path
Mar 5 11:43:57 ubuntu-server multipathd[726]: sda: failed to get udev uid: Invalid argument
Mar 5 11:43:57 ubuntu-server multipathd[726]: sda: failed to get sysfs uid: No data available
Mar 5 11:43:57 ubuntu-server multipathd[726]: sda: failed to get sgio uid: No data available
|
每隔幾秒就刷一次,根本看不到其他 log。
問題原因
multipathd 是 Linux 的多路徑 I/O 管理 daemon,設計用途是管理 SAN 儲存設備的多條路徑,確保其中一條路徑掛掉時還能繼續運作。
問題在於:VirtualBox 的虛擬硬碟(VBOX HARDDISK)不是 SAN 設備,也沒有多路徑識別資訊(WWID),multipathd 卻會嘗試掃描所有 SCSI 裝置,掃到這顆虛擬碟時抓不到 uid,就不斷重試、不斷報錯。
確認裝置是 VirtualBox 虛擬磁碟:
1
2
3
4
5
6
7
| *-disk
description: SCSI Disk
product: HARDDISK
vendor: VBOX
physical id: 0.0.0
bus info: scsi@30:0.0.0
logical name: /dev/sda
|
vendor: VBOX、product: HARDDISK,這就是 blacklist 的對象。
解法
把 VBOX HARDDISK 加進 /etc/multipath.conf 的 blacklist,讓 multipathd 直接忽略它。
1
2
3
4
5
6
7
| echo 'blacklist {
device {
vendor "VBOX"
product "HARDDISK"
}
}' | sudo tee -a /etc/multipath.conf
sudo systemctl restart multipathd.service
|
重啟後確認 blacklist 已生效:
1
| sudo multipathd show blacklist
|
在 device rules 區段應該可以看到:
1
2
3
| device rules:
- blacklist:
(config file rule) VBOX:HARDDISK
|
代表設定已套用。syslog 也不會再出現那些 sda: failed to get uid 的錯誤了。
References