docs: add power-outage recovery SOP + onboot/startup tiering + K3s VM notes

停電事件處理收尾:三節點 2026-05-29 14:34 同時斷電復電。
- 新增「停電/不正常斷電復電 SOP」:判斷停電、losetup+e2fsck 離線修復根碟、pct start 卡 SSH 的坑
- 22 台全設 onboot=1 + startup 三層(T1網路/T2基礎/T3應用)對照表
- 新增「K3s VM 登入與操作」:ubuntu 帳號、kubectl 需 sudo、host key
- 紀錄停電造成 K3s VM(120/121/122)根碟 ext4 損壞,已全數 e2fsck 修復

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-29 21:01:38 +08:00
parent 47d35990f1
commit 79d50ef6ed

View File

@@ -1,6 +1,6 @@
# PVECluster 叢集架構文件
> 最後更新2026-04-18CT100 升級為 NetBird Subnet Router廣播 192.168.42.0/24
> 最後更新2026-05-29新增「停電復電 SOP」全 guest 設定 onboot=1 + startup 分層;停電後修復 K3s VM 根碟 ext4 損壞
## 一、叢集概覽
@@ -287,6 +287,48 @@ systemctl daemon-reload && systemctl reset-failed console-getty && systemctl res
pct set <vmid> -features nesting=1 -tty 2
```
### 停電 / 不正常斷電復電 SOP
整個機房為**單一電源、無 UPS**,三節點會同時斷電。已知斷電會造成 syno-lvm 上的 guest 根檔案系統 ext4 損壞(尤其有大量寫入的 K3s VM
**判斷是否為停電**:三節點 `who -b` / `last -x reboot` 顯示**幾乎同一秒**開機,且上一個 boot 的 journal 結尾無正常關機程序(無 `Stopping...` / `Reached target Shutdown`,直接中斷)。
**復電後復原步驟**
1. **確認叢集**`pvecm status`Quorate: Yes`pvesm status`syno-lvm / syno-iscsi / synology-backup / pbs 皆 activepbs 需 VM 111 開機後才會 active
2. **啟動所有 guest** — 已全數設定 `onboot=1`,正常會自動分層啟動(見下)。若需手動:`qm start <id>` / `pct start <id>`
- ⚠️ 透過 SSH 跑 `pct start` 後 session 可能被容器常駐 monitor`lxc-start -F`)卡住,導致後續 chained 指令不執行。逐台執行或加 `</dev/null >/dev/null 2>&1` 導開 fd。
3. **檢查 guest 是否真的起來** — Proxmox 顯示 `running` ≠ guest OS 正常。逐台 ping / SSH不通的用 `qm monitor <id>``screendump /tmp/x.ppm` 看 console。若看到 `EXT4-fs error ... Remounting filesystem read-only` 代表根碟損壞,需離線 fsck。
4. **離線修復損壞的根碟VM** — guest 內部無法自救(根已唯讀)。在該 VM 所在節點執行:
```bash
qm stop <id>
lvchange -ay syno_vg/vm-<id>-disk-1 # 停 VM 後 LV 會 inactive需重新啟用
LOOP=$(losetup -Pf --show /dev/syno_vg/vm-<id>-disk-1) # 用 loop 掃出分割區pve 無 kpartx
e2fsck -fy ${LOOP}p1 # p1 = cloudimg-rootfs-fy 自動修復
losetup -d $LOOP
qm start <id>
```
修復成功後 console 應顯示 `EXT4-fs (sda1): re-mounted ... r/w`(不再被踢成唯讀)。
**開機自動啟動 / 分層策略**22 台全設 `onboot=1`,每節點獨立依 order 啟動,`up` 為啟動後延遲秒數):
| 層 | startup | 成員 |
|---|---|---|
| **T1 網路** | `order=1,up=20` | VM 110 OpenWRT、CT 100 NetBird Router |
| **T2 基礎** | `order=2,up=15` | VM 111 PBS、VM 120 K3s-server、CT 126 Headscale、CT 118 PostgreSQL/Redis |
| **T3 應用** | `order=3,up=8` | 其餘所有 VM/CTK3s agents 121/122 + 各服務 CT |
> 設定指令VM 用 `qm set <id> --onboot 1 --startup order=N,up=S`CT 用 `pct set <id> --onboot 1 --startup order=N,up=S`。
### K3s VM 登入與操作
- **登入帳號為 `ubuntu`(非 root** — 三台皆由 VM 9000 cloud-init 模板建立。`ssh ubuntu@192.168.42.12{0,1,2}`root 登入會被拒。
- **kubectl 需 `sudo`** — kubeconfig 在 root 權限下,例:`sudo kubectl get nodes`(從 VM 120 server 執行)。
- 重建/重開後 SSH host key 可能變動,必要時先 `ssh-keygen -R <ip>`。
- VM 121/122 為 stateless worker停機時工作負載會自動重調度到其他節點可安心離線維護。
## 九、Corosync 叢集通訊
```