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:
@@ -1,6 +1,6 @@
|
|||||||
# PVECluster 叢集架構文件
|
# PVECluster 叢集架構文件
|
||||||
|
|
||||||
> 最後更新:2026-04-18(CT100 升級為 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
|
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 皆 active;pbs 需 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/CT(K3s 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 叢集通訊
|
## 九、Corosync 叢集通訊
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user