diff --git a/ROADMAP.md b/ROADMAP.md index c096973..a34f3af 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -17,6 +17,12 @@ bond0 の MAC は設定で固定してあるのでルーターは触らない。 - [ ] BIOS を 02.62 に上げてから E5-2696 v4 を載せる - [ ] AMT(10.0.0.5)、Z440 用の schematic(GPU の extension と SOL の `console=`)、NIC の別名(`LinkAliasConfig`) - [ ] 移して確かめる。docs の「iLO(10.0.0.3)」を AMT に直す +- [ ] **ストレージとバックアップを入れ替える**(入れ直しのついでに。理由は [docs/decisions.md](docs/decisions.md)「Z440 で、ストレージを OpenEBS LVM LocalPV に…」) + - [ ] ディスクの切り方: `u-local-path` をやめ、`RawVolumeConfig` + `LVMVolumeGroupConfig` でボリュームグループ(thin プール)にする + - [ ] OpenEBS LVM LocalPV と snapshot-controller(CRD 込み)を入れる。Talos で動くかを先に QEMU(talos-boot)で確かめる + - [ ] VolSync(restic mover、copyMethod: Snapshot)を入れ、PVC ごとに ReplicationSource。R2 は PVC ごとに別の経路 + - [ ] 戻しは populator(PVC の `dataSourceRef`)。移設のときは k8up の `restore-all` で戻し、そのあと VolSync に切り替える + - [ ] k8up・`backupcommand`・notify・restore-check を VolSync に合わせて畳む。k8up のリポジトリは保持期間(月次 6 か月)が切れるまで残す ## Phase 3 — Talos 定常運用 diff --git a/docs/decisions.md b/docs/decisions.md index 4981cf9..2ff15a3 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -267,6 +267,39 @@ PV の `claimRef` を外して書き換え、新しい PVC を `volumeName` で | 生 TS の作業領域(`denpa-raw`) | **取らない。** エンコードが終われば消え、数時間で入れ替わる。14 GB まで育つ | | AdGuard のクエリログ | **保持を 7 日に。** 純粋な計測データで、復元時に無くても困らない | +## Z440 で、ストレージを OpenEBS LVM LocalPV に、バックアップを VolSync にする(2026-10-20 に決めた) + +**いまの弱点は戻す側。** local-path はスナップショットを取れないので、DB は k8up の `backupcommand` で論理ダンプを取り、 +戻し方が経路ごとに 7 通りに分かれた(`recovery/pv.sh` の `restore-all` で 1 コマンドにはまとめた)。 +スナップショットを取れるストレージにすると、次の 2 つが一度に手に入る: + +- **ダンプが原則いらない。** スナップショットは crash-consistent で、Postgres・SQLite(WAL)・Tuwunel(RocksDB)はそこから自分で立ち直る。 + VolSync にフックが無いこと(作者が入れないと明言)が問題でなくなる +- **戻すのが自動になる。** VolSync の volume populator は、`dataSourceRef` で ReplicationDestination を指した PVC を + 作るだけで中身を埋める。ただし **populator は copyMethod: Snapshot が必須**(ドキュメントに明記)なので、local-path では使えない + +選んだもの: + +| | 判定 | +| --- | --- | +| **OpenEBS LVM LocalPV**(thin プール) | ◎ ローカル型で軽い。thin のボリュームでスナップショットが取れる。**OpenEBS の hostpath はスナップショットが無い**ので選ばない | +| TopoLVM | ○ 同等。対応表が Kubernetes 1.36 まで(1.37 は表の外)。スナップショットは thin のみ・同じ台でのみ戻せる | +| Longhorn | △ 複製型。1 台では重さの割に得るものが無い。**台数を増やすときに足す**(下) | +| Rook/Ceph | × 3 台以上・台ごとの専用ディスク・運用の知識が前提。数台の規模には過剰 | +| **VolSync**(Snapshot + populator) | ◎ データだけを PVC 単位で宣言的に取る。リソースは git と ArgoCD が戻すので役割が分かれる | +| Velero | ○ 取る前後のフックがあり、利用者も多い。ただしリソースのバックアップが git と重複し、戻すのは命令型で、リソースまで戻すと ArgoCD とぶつかる | + +**移るのは Z440 への移設のとき。** いまの DL360 のディスクは local-path の `u-local-path` が残りを全部取っていて(`grow: true`)、 +LVM 用のパーティションを切る余地が無い。Talos のボリュームは未割り当ての領域にしか作れないので、切り直すには入れ直しになる。 +Talos v1.14 から、`RawVolumeConfig` と `LVMVolumeGroupConfig` でボリュームグループを machine config だけで作れる(シェルも特権 Pod も要らない)。 + +**台数を増やすとき**は Longhorn を足し、止まって困るアプリから順に移す。VolSync の populator があれば、 +StorageClass を変えた PVC を作り直すだけで中身が埋まるので、ストレージの乗り換えも同じ手で済む。 +入口(Gateway・AdGuard・LiveKit)と API の宛先は 1 台の IP に固定されているので、そのときは VIP(Cilium の L2 Announcements、Talos の共有 VIP)も要る。 + +確かめていないこと: OpenEBS LVM LocalPV が Talos で動くか(`dm-snapshot` モジュール、読み取り専用のルートで LVM のコマンドが通るか)、 +VolSync の restic mover と R2 の組み合わせ、restic が戻したファイルの持ち主。 + ## VPN を wg-easy から NetBird にした 要るのは **プライバシー(全部を自宅経由にする)・DNS(AdGuard)・iLO に入る**の 3 つ。 diff --git a/docs/z440-migration.md b/docs/z440-migration.md index f74119f..5d6c8f3 100644 --- a/docs/z440-migration.md +++ b/docs/z440-migration.md @@ -50,6 +50,8 @@ selector: ``` **ディスク**: `disk.dev_path == "/dev/sda"` は Z440 でも SSD 1 本なら同じになるはず(`talosctl get disks` で見る。`talos/controlplane.yaml` の注)。 +**入れ直しのついでに、local-path の `u-local-path` を LVM のボリュームグループに切り替える**(ROADMAP の Phase 2.5、 +[decisions.md](decisions.md)「Z440 で、ストレージを OpenEBS LVM LocalPV に…」)。ボリュームは未割り当ての領域にしか作れないので、このときしか切り直せない。 **この config は DL360 では効かない**(MAC が当たらず 10.0 側が上がらない)ので、普通に当てない。 `talosctl apply-config --mode=staged` で**次の起動から**効くように置き、電源を切る直前にやる(手順 4)。