使用 Mini PC 當 Proxmox 主機前,你一定要做的 BIOS / Kernel 設定

很多人為了省電、省空間,會選擇 Mini PC(像 Ryzen 7840HS、7940HS、Intel N100 之類)來跑:

  • Proxmox VE
  • ESXi
  • KVM
  • HomeLab
  • NAS + VM
  • 備份節點

👉 但如果你「沒有調整 BIOS 與 Kernel 參數」,
你可能會遇到:

  • ❌ 半夜自動重開機
  • ❌ 備份跑到一半整台 freeze
  • ❌ 完全沒有 kernel panic 記錄
  • ❌ journal log 直接中斷
  • ❌ 看起來像被拔電

而 log 裡 什麼都沒有

這不是錯覺。

這是 Mini PC 常見的 PCIe / C-state / Power Management 硬體層級 freeze 問題


為什麼會發生?

Mini PC 本質是「筆電級主機板」設計。

特點是:

  • Aggressive 省電策略
  • PCIe ASPM 深度省電
  • 深層 CPU C-State
  • IOMMU + PCIe 共享匯流排
  • 小型電源模組

當系統進入:

  • ✅ 高 I/O(vzdump 備份)
  • ✅ 高網路流量
  • ✅ NVMe 滿載
  • ✅ 多 VM 同時運作

就可能觸發:

PCIe Bus Hang
CPU 深層睡眠喚醒失敗
Root Complex Freeze

而這種 freeze:

  • 不會留下 kernel panic
  • 不會有 OOM
  • 不會有 MCE
  • watchdog 也來不及救

系統直接「硬死機」。


✅ Mini PC 當虛擬化主機的必要設定

請按照順序做。


🥇 Step 1:關閉 PCIe ASPM(最重要)

編輯:

/etc/default/grub

找到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off"

然後執行:

update-grub
reboot

為什麼?

ASPM 是 PCIe 省電機制。

在桌機主機板通常沒問題。

但在 Mini PC 上:

  • 高流量 + 省電切換
  • 可能導致 PCIe Link 無法正確喚醒
  • 整條 bus freeze

這是最常見原因。


🥈 Step 2:限制 CPU C-State

如果 BIOS 有以下選項:

  • ✅ Disable Global C-State Control
  • ✅ Disable CPPC
  • ✅ Disable ASPM

請全部關閉。

如果 BIOS 沒有提供,

可以改用 kernel 參數:

processor.max_cstate=1 idle=nomwait

變成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off processor.max_cstate=1 idle=nomwait"

然後:

update-grub
reboot

為什麼?

Mini PC 為了省電會讓 CPU 進入:

  • C6
  • C10

但在高 I/O 中斷情況下:

👉 CPU 可能喚醒失敗
👉 整台 freeze


🥉 Step 3:測試性關閉 IOMMU(排除法)

如果還是會發生,

可以暫時加入:

amd_iommu=off

完整變成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off processor.max_cstate=1 idle=nomwait amd_iommu=off"

⚠️ 注意:

如果你有做 PCI Passthrough,不能關。


🔎 為什麼這些設定對 Mini PC 特別重要?

因為 Mini PC:

  • 使用筆電等級主板
  • PCIe 通道少
  • 多裝置共享 Root Port
  • 電源模組小
  • BIOS 通常未針對長時間高負載優化

當你把它當成:

24 小時虛擬化主機

你必須把它從「省電模式」改成「穩定模式」。


🔥 常見錯誤判斷

很多人會以為是:

  • ❌ igc 網卡 driver
  • ❌ NVMe 壞掉
  • ❌ RAM 問題
  • ❌ Proxmox bug

但如果 log 是「乾淨消失」,

那 90% 是 Power Management 問題。


✅ 建議 Mini PC 虛擬化標準設定

建議至少包含:

pcie_aspm=off
processor.max_cstate=1
idle=nomwait

✅ 結論

Mini PC 當 HomeLab / Proxmox 主機完全可行。

但前提是:

❗ 你要先把「筆電省電策略」關掉。

否則你會在:

  • 半夜備份
  • RAID rebuild
  • 大量 VM I/O

時遇到神秘重開機。

而 log 裡什麼都沒有。


如果你正在用 Mini PC 跑虛擬化,
建議今天就檢查你的設定。

穩定,比省 3W 電重要得多。

Proxmox VE 安裝 QEMU Guest Agent

🔹 在 Linux(Ubuntu/Debian)中安裝

bash複製

sudo apt update
sudo apt install -y qemu-guest-agent

🔹 在 Linux(CentOS/RHEL)中安裝

bash複製

sudo yum install -y qemu-guest-agent

或在 CentOS 8 / Rocky Linux / AlmaLinux

bash複製

sudo dnf install -y qemu-guest-agent

🔹 在 Windows 中安裝

  1. 下載 QEMU Guest Agent for Windows官方下載鏈接
  2. 選擇適合的 Guest Agent 安裝包(如 qemu-ga-x86_64.msi
  3. 雙擊執行 .msi 安裝包,按照指示完成安裝

🚀 啟用與啟動 QEMU Guest Agent

Enable : QEMU Guest Agent

備份/恢複 CentOS 7 系統到網絡磁碟

備份 CentOS 7 系統到網絡磁碟

  • 掛載你的網絡磁碟機
mkdir -p /mnt/backup
mount -t cifs //<SMB_SERVER_IP>/backup /mnt/backup -o username=<USERNAME>,password=<PASSWORD>
  • 使用 tar 備份系統
tar --xattrs --xattrs-include='*' --acls --selinux -cvpzf /mnt/backup/centos7_backup.tar.gz --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp --exclude=/root_backup.tar.gz /

從網絡磁碟 恢複到 CentOS 7 系統

掛載你的網絡磁碟機

mkdir -p /mnt/backup
mount -t cifs //<SMB_SERVER_IP>/backup /mnt/backup -o username=<USERNAME>,password=<PASSWORD>

確認 centos7_backup.tar.gz 在 /mnt/backup

ls -lh /mnt/backup/centos7_backup.tar.gz

還原 tar.gz 備份

解壓 tar.gz 到 /

tar --xattrs --xattrs-include='*' --acls --selinux -xvpzf /mnt/backup/centos7_backup.tar.gz -C /

確保 /dev、/proc、/sys、/run 目錄存在

mkdir -p /dev /proc /sys /run

修復 fstab

獲取磁碟的 UUID

blkid

確保 /etc/fstab 使用正確的 UUID

nano /etc/fstab

修復 Bootloader(GRUB)

掛載必要的系統目錄

mount --bind /dev /dev
mount --bind /proc /proc
mount --bind /sys /sys
mount --bind /run /run

切換到 chroot 環境

chroot /

重新安裝 GRUB

grub2-install --target=i386-pc /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

更新 initramfs

dracut --force --regenerate-all

退出 chroot

exit

SELinux 修復

創建 .autorelabel

touch /.autorelabel

重新啟動並測試

重啟系統

reboot

確認系統是否正常運行

df -h
lsblk

將 VMware Storage Controller 更改為 Paravirtual(適用於 CentOS 7)

步驟說明:
最重要的一步是 確保您擁有有效的備份!
確認備份後,請按照以下步驟進行操作:

1. 在開始之前,先建立虛擬機的快照 (snapshot)或完整備份。
2. 關閉(Power-off)虛擬機。
3. 新增 VMware Paravirtual 控制器 到虛擬機,但 不要立即更改磁碟控制器的分配,只需先添加新的存儲控制器到 VM。
4. 開啟(Power-on)虛擬機。
5. 使用具有 root 權限的帳戶登入虛擬機。
6. 重新生成初始 RAM 磁碟映像(initramfs):

mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)

7. 關閉(Power-off)虛擬機。
8. 將磁碟重新分配給新的 VMware Paravirtual 存儲控制器,並移除舊的存儲控制器。
9. 開啟(Power-on)虛擬機。
10. 確認系統正常運行,並確保磁碟已正確掛載。
11. 完成後,刪除先前建立的快照或備份。

這樣就成功將 VMware 的存儲控制器更改為 Paravirtual,並確保 CentOS 7 可以正常開機和運行!

資料來源:https://be-virtual.net/changing-vmware-storage-controller-to-paravirtual-for-centos-7/