完整 SWIOTLB

对于磁盘和网络输入/输出操作,机密虚拟机会使用内存中名为 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 大小

  1. 如需增加 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 字符串。

  2. 运行以下命令以重新生成 grub.cfg

    Ubuntu

    sudo update-grub
    

    其他发行版

    grubcfg="/etc/grub2-efi.cfg"
    cp $grubcfg $grubcfg.bak
    grub2-mkconfig -o $grubcfg
    
  3. 重新启动虚拟机。

如需了解详情,请参阅如何增加 SWIOTLB 限制