Skip to content

🔬 深入剖析測驗

1. KubeVirt 採用三層架構管理虛擬機,負責將 VirtualMachineInstance(VMI)規格轉換為 libvirt Domain 物件的核心函式名稱為何?

  • A. SyncVMI()
  • B. DomainDefineXML()
  • C. Convert_v1_VirtualMachineInstance_To_api_Domain()
  • D. BuildDomainSpec()

2. KubeVirt 的 Configurator 模式中,每個 Configurator 需實作統一介面。下列哪個方法簽名正確描述了這個介面?

  • A. Build(vmi *v1.VirtualMachineInstance) (*api.Domain, error)
  • B. Configure(vmi *v1.VirtualMachineInstance, domain *api.Domain) error
  • C. Transform(spec *api.DomainSpec) error
  • D. Apply(ctx *ConverterContext, domain *api.Domain) error

3. KubeVirt 選擇透過 libvirt 操作 QEMU,而非直接操作 QEMU 命令列,主要原因不包含下列哪項?

  • A. libvirt 提供版本穩定的 C/Go binding,避免直接依賴 QEMU 命令列參數的變化
  • B. libvirt 提供標準化的 AttachDevice / DetachDevice API 支援設備熱插拔
  • C. libvirt 內建完整的生命週期事件回調機制
  • D. libvirt 提供圖形化管理介面以方便操作員手動調整 VM 設定

4. 每個 VMI 運行在獨立的 virt-launcher Pod 中,Pod 內部包含哪三個關鍵程序?

  • A. virt-api、virt-controller、virt-handler
  • B. virt-launcher (Go)、libvirtd/virtqemud、qemu-system-x86_64
  • C. containerd、libvirtd、qemu-system-x86_64
  • D. virt-handler、libvirtd、kubelet

5. 在 KubeVirt 產生的典型 Domain XML 中,預設使用的 machine type 是什麼?

  • A. i440fx
  • B. q35
  • C. virt
  • D. microvm

6. 在 Windows VM 的 HyperV Enlightenments 設定中,Relaxed 功能的主要作用是什麼?

  • A. 啟用半虛擬化 APIC,減少 VM-Exit 次數
  • B. 放寬 Windows 核心的 watchdog timeout,避免 BSOD
  • C. 最佳化 TLB 刷新路徑,降低記憶體存取延遲
  • D. 啟用合成中斷控制器,提升中斷處理效率

7. KubeVirt Windows VM 工廠函式中,Spinlocks 的建議 Retries 值為多少?這個值的意義是什麼?

  • A. 值為 4096;超過此次自旋後改用 hypercall 通知 hypervisor
  • B. 值為 8191;超過此次自旋後改用 hypercall 通知 hypervisor,此為微軟推薦最佳值
  • C. 值為 1024;超過此次自旋後直接放棄鎖
  • D. 值為 16383;此為 QEMU 硬體上限

8. 針對 Windows VM 的時鐘配置,文件建議將 HPET 設為停用。原因為何?

  • A. HPET 不支援 Windows 10 以上版本
  • B. HPET 在虛擬化環境中模擬成本極高,每次讀取需要 VM-Exit
  • C. HPET 會與 HyperV Timer 發生衝突
  • D. HPET 佔用過多的 CPU 中斷資源

9. KubeVirt 中 HyperV VendorID 功能常用於繞過 NVIDIA 消費級 GPU 驅動的偵測。通常需要搭配哪個設定一起使用效果最佳?

  • A. hyperv.ipi: {} 搭配 hyperv.evmcs: {}
  • B. kvm.hidden: true 搭配 hyperv.vendorid.vendorid: \"randomstring\"
  • C. features.acpi 停用
  • D. hyperv.tlbflush.direct: {} 搭配 hyperv.reenlightenment: {}

10. 啟用 CPU Pinning(dedicatedCPUPlacement)需要在 Kubernetes 節點層級滿足哪個前提條件?

  • A. 節點需要安裝 NUMA Balancing kernel module
  • B. kubelet 必須啟用 --cpu-manager-policy=static 並且 Pod 使用 Guaranteed QoS class
  • C. 節點必須安裝 RT kernel(kernel-rt)
  • D. 需要在 KubeVirt CR 中啟用 CPUPinning Feature Gate

11. isolateEmulatorThread 功能的目的是什麼?啟用後會有什麼額外代價?

  • A. 將 QEMU 主執行緒隔離到獨立 CPU 核心,額外消耗一個 CPU 核心
  • B. 將 Guest Agent 隔離到獨立 CPU 核心,效能無損耗
  • C. 隔離 NUMA 節點間的記憶體存取,消耗額外 10% 記憶體
  • D. 隔離網路 IO 執行緒,消耗一個額外的網路佇列

12. 在選擇 HugePages 大小時,1Gi 與 2Mi 各有哪些考量?下列描述何者正確?

  • A. 1Gi HugePages 可以動態調整分配,適合所有場景
  • B. 2Mi HugePages TLB 效能優於 1Gi,但需要更多連續記憶體
  • C. 1Gi HugePages TLB 效能最佳,但需要連續 1GB 記憶體區塊,可能導致分配失敗;2Mi 更靈活
  • D. 兩者效能完全相同,僅影響記憶體對齊方式

13. 在 NUMA 架構中,CPU Pinning 與 HugePages 未正確對齊到同一 NUMA 節點時,可能造成多大的記憶體存取延遲增加?

  • A. 約 5-10%
  • B. 約 10-20%
  • C. 約 40-100%
  • D. 約 200-300%

14. VFIO(Virtual Function I/O)框架透過哪個硬體機制確保虛擬機只能存取被分配的裝置記憶體區域,無法越界存取?

  • A. VT-d(Intel Virtualization Technology for Directed I/O)指令集
  • B. IOMMU(Input-Output Memory Management Unit)
  • C. SR-IOV(Single Root I/O Virtualization)
  • D. EPT(Extended Page Table)

15. 關於 IOMMU Group 的限制,下列描述何者正確?

  • A. 每個 IOMMU Group 最多只能包含一個 PCI 裝置
  • B. 同一 IOMMU Group 中的所有裝置必須一起直通給同一個 VM
  • C. IOMMU Group 可以在不同 VM 之間分享
  • D. IOMMU Group 的大小由驅動程式決定,與硬體無關

16. KubeVirt PCI Device Plugin 在 Allocate() 被呼叫時,會回傳哪些資源給 Pod?

  • A. 只回傳環境變數,不提供裝置節點
  • B. 環境變數(PCI_RESOURCE_{resourceName})、/dev/vfio/vfio 以及 /dev/vfio/{iommuGroupId}
  • C. 只提供 /dev/vfio/{iommuGroupId} 裝置節點
  • D. 環境變數與 /dev/dri 圖形裝置節點

17. KubeVirt 產生的 GPU 直通 libvirt XML 中,managed="no" 屬性的意義為何?

  • A. libvirt 不會自動啟動此裝置
  • B. 此裝置由 KubeVirt 管理驅動程式的綁定與解綁,而非 libvirt
  • C. 此裝置在 VM 關機後不會自動釋放
  • D. 此裝置不支援熱插拔

18. 關於 NVIDIA vGPU 的 mdev(Mediated Devices)框架,下列哪項描述正確說明了 ring-based 分配策略?

  • A. 將 mdev 實例以輪詢方式分配給不同的 VM,確保公平
  • B. 優先從負載較低的父 GPU 上分配新實例,將 vGPU 均勻分佈在多張實體 GPU 上
  • C. 根據 GPU 型號自動選擇最適合的 mdev 類型
  • D. 依照 VM 的記憶體需求動態調整每個 mdev 實例的 VRAM 大小

19. KubeVirt virt-launcher Pod 的 securityContext 中,預設使用哪種 Seccomp Profile 類型?

  • A. Unconfined(無限制)
  • B. Localhost(自定義 profile 檔案)
  • C. RuntimeDefault(容器運行時預設 profile)
  • D. Audited(審計模式)

20. 在啟用 SELinux 的環境中,KubeVirt 為每個 VM 分配唯一的 MCS(Multi-Category Security)label 的目的是什麼?

  • A. 使 VM 能夠存取主機的 /dev/kvm 裝置
  • B. 確保不同 VM 的 QEMU 進程無法存取彼此的資源
  • C. 允許 virt-handler 透過 SELinux 驗證 VM 的身份
  • D. 控制 VM 可以連接的網路介面

21. Live Migration 時,KubeVirt 如何處理 SELinux Level 的匹配問題?

  • A. 自動為目標端生成新的 SELinux Level,然後重新掛載磁碟
  • B. 在遷移前將源端的 SELinux MCS label 傳遞給目標端,確保兩端使用相同 label
  • C. 停用 SELinux,遷移完成後重新啟用
  • D. 目標端使用全域 label s0,確保能存取所有共享儲存

22. KubeVirt Live Migration 涉及四個核心元件的協作。下列哪個元件負責建立目標 Pod 並管理整個遷移的狀態機?

  • A. virt-handler (Source)
  • B. virt-launcher (Source)
  • C. virt-controller(Migration Controller)
  • D. virt-api

23. Migration Proxy 使用的兩個固定 TCP Port 分別為何?

  • A. LibvirtDirectMigrationPort: 49152;LibvirtBlockMigrationPort: 49153
  • B. LibvirtDirectMigrationPort: 16509;LibvirtBlockMigrationPort: 16514
  • C. LibvirtDirectMigrationPort: 8443;LibvirtBlockMigrationPort: 8444
  • D. LibvirtDirectMigrationPort: 4444;LibvirtBlockMigrationPort: 4445

24. 在 Pre-copy 遷移模式中,若記憶體的 dirty rate 持續超過網路傳輸速度,會發生什麼情況?

  • A. 系統自動增加網路頻寬來跟上 dirty rate
  • B. 遷移永遠無法收斂——每一輪傳送的 dirty pages 都比上一輪多
  • C. QEMU 自動暫停 VM 等待傳輸完成
  • D. 系統自動切換到 Storage Migration 模式

25. Post-copy 遷移為何不支援具有 VFIO(GPU passthrough)設備的 VM?

  • A. VFIO 設備的記憶體頻寬不足以支援 Post-copy
  • B. VFIO 設備狀態無法透過 page-fault 機制按需取回
  • C. VFIO 設備在遷移過程中需要重新初始化驅動
  • D. Kubernetes Device Plugin 不支援 Post-copy 模式

26. Multifd(Multiple File Descriptor)並行傳輸的原理為何?在 10 Gbps 網路環境下啟用 4 個並行通道,效能提升幅度約為多少?

  • A. 開啟多個 TCP 連線並行傳輸記憶體頁面,可提升 2-3 倍遷移速度
  • B. 使用 UDP 代替 TCP 來提高傳輸效率,可提升 5 倍速度
  • C. 透過壓縮記憶體資料來減少傳輸量,可提升 4-6 倍速度
  • D. 使用 RDMA 直接記憶體存取,可提升 10 倍速度

27. Auto-converge 機制如何解決 Pre-copy 遷移不收斂的問題?

  • A. 自動增加遷移頻寬直到超過 dirty rate
  • B. 逐步降低 vCPU 執行速度以減少記憶體 dirty rate,最高可降至 99% CPU 節流
  • C. 自動壓縮記憶體頁面以加快傳輸
  • D. 透過暫停非關鍵 vCPU 來集中資源給關鍵執行緒

28. KubeVirt 計算遷移完成超時(CompletionTimeout)的公式為何?對於一個 16 GiB 記憶體的 VM,預設的完成超時為多少秒?

  • A. 固定 600 秒,與記憶體大小無關
  • B. CompletionTimeoutPerGiB × VM 遷移資料大小(GiB),預設 150 × 16 = 2400 秒
  • C. ProgressTimeout × 2 = 300 秒
  • D. 每 GiB 允許 300 秒,16 GiB = 4800 秒

29. KubeVirt 支援專用遷移網路介面,此介面的名稱為何?若節點沒有此介面,系統如何處理?

  • A. 介面名稱為 mignet0;若不存在則遷移失敗
  • B. 介面名稱為 migration0;若不存在則 fallback 使用 Pod 的 IP 位址
  • C. 介面名稱為 kubevirt-migration;若不存在則使用 NodeIP
  • D. 介面名稱為 virt-migrate;若不存在則等待建立

30. Migration Controller 使用優先級佇列處理遷移任務。QueuePriorityRunning 的值為 1000,QueuePriorityPending 的值為 -100,這樣設計的主要意義是什麼?

  • A. 確保使用者手動觸發的遷移優先於系統觸發的遷移
  • B. 確保正在傳輸資料的遷移(Running)優先獲得處理時間,不被新建立的 Pending 遷移阻塞
  • C. 確保關鍵系統遷移(SystemCritical)永遠排在最前面
  • D. 限制同時進行的遷移數量不超過優先級差值

基於 Apache 2.0 授權