对于磁盘和网络输入/输出操作,机密虚拟机会使用内存中名为 Software Input Output Translation Lookaside Buffer (SWIOTLB) 的特定区域,其默认大小为 64 MB。SWIOTLB 是客机中全部可用 RAM 的一部分。
如需检查机密虚拟机实例是否遇到了 swiotlb buffer is full
错误,请连接到实例并运行以下命令来查询 dmesg
日志:
dmesg | grep 'swiotlb buffer is full'
如需解决此问题,请增加 SWIOTLB 大小。在增加其大小之前,请确保客机已为 SWIOTLB 和操作系统留出足够的 RAM。
增加 SWIOTLB 大小
如需增加 SWIOTLB 的大小,请将以下行附加到
/etc/default/grub
中:GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=SIZE_IN_BYTES"
以下示例展示了如何将 SWIOTLB 的大小增加到 512 MB:
GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=262144"
根据 Ubuntu 版本,您需要更新
grub
文件中的字符串。例如,如果您使用的是 Ubuntu 18.04,则需要更新GRUB_CMDLINE_LINUX
字符串,而不是GRUB_CMDLINE_LINUX_DEFAULT
字符串。运行以下命令以重新生成
grub.cfg
:Ubuntu
sudo update-grub
其他发行版
grubcfg="/etc/grub2-efi.cfg" cp $grubcfg $grubcfg.bak grub2-mkconfig -o $grubcfg
重新启动虚拟机。
如需了解详情,请参阅如何增加 SWIOTLB 限制。