對於磁碟和網路輸入/輸出作業,機密 VM 會使用記憶體中的特定區域,稱為軟體輸入輸出轉換旁視緩衝區 (SWIOTLB),預設大小為 64 MB。SWIOTLB 是客體可用的總 RAM 的一部分。
如要檢查機密 VM 執行個體是否發生 swiotlb buffer is full
錯誤,請連線至執行個體並執行下列指令,查詢 dmesg
記錄:
dmesg | grep 'swiotlb buffer is full'
如要解決這個問題,請增加 SWIOTLB 大小。增加大小前,請確認客體有足夠的 RAM 供 SWIOTLB 和作業系統使用。
增加 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
重新啟動 VM。
詳情請參閱「如何提高 SWIOTLB 限制」。