完整 SWIOTLB

對於磁碟和網路輸入/輸出作業,機密 VM 會使用記憶體中的特定區域,稱為軟體輸入輸出轉換旁視緩衝區 (SWIOTLB),預設大小為 64 MB。SWIOTLB 是客體可用的總 RAM 的一部分。

如要檢查機密 VM 執行個體是否發生 swiotlb buffer is full 錯誤,請連線至執行個體並執行下列指令,查詢 dmesg 記錄:

dmesg | grep 'swiotlb buffer is full'

如要解決這個問題,請增加 SWIOTLB 大小。增加大小前,請確認客體有足夠的 RAM 供 SWIOTLB 和作業系統使用。

增加 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. 重新啟動 VM。

詳情請參閱「如何提高 SWIOTLB 限制」。