跳轉到

基礎架構與虛擬化參考

Terminology rule (zh-TW pages)

技術名詞首次出現以「中文 (English original)」格式呈現,例:依賴注入 (dependency injection)。不自創翻譯——若無公認譯名直接保留英文 (如 embeddingtokenizer)。代碼、API 名、CLI flag、套件名、檔名一律不翻。

虛擬化 (virtualization)、共享儲存 (shared storage)、多使用者運算排程,以及共享家目錄身分驗證 (shared-home identity) 等模式的參考筆記。僅為文件 —— 此資料夾內的內容皆不會由 chezmoi 安裝。這是「當你已經不再只用筆電」之後的知識庫。

此資料夾涵蓋(與不涵蓋)的範圍

範圍 在此資料夾? 由 chezmoi 安裝?
裸機 hypervisor 作業系統 (Proxmox / ESXi / XCP-ng) 是(參考) 否 —— 這些是主機作業系統,不是應用程式
桌面 VM 管理工具 (OrbStack、UTM、VirtualBox、Fusion) 是(參考) 僅 OrbStack,透過 dot_ansible/roles/docker/tasks/main.yml
叢集共享儲存 (CephFS、BeeGFS、Lustre、NFS) 是(參考) 否 —— 多節點叢集議題
多使用者運算排程 (SLURM、K8s、Nomad) 是(參考) 否 —— 叢集營運議題
身分驗證與共享家目錄 (FreeIPA、LDAP、SSSD) 是(參考) 否 —— 組織專屬
個人開發筆電工具(編輯器、CLI、dotfiles) 否 —— 請見 docs/tools/ 是 —— 本 repo 的主要目的

如果你想知道「我要怎麼在 MacBook 上跑一個 VM?」 —— 答案是 OrbStack(已預裝),請見 virtualization.md。如果你問的是「我們團隊要怎麼建立一個共用運算叢集?」 —— 此資料夾勾勒出大致的版圖,但實際建置是另一個獨立的營運專案。

決策樹

flowchart TD
    startNode["我需要某處的運算或儲存資源"] --> q1{規模}
    q1 -->|筆電上的單一 VM| laptop["virtualization.md#desktop-vm-managers"]
    q1 -->|幾台伺服器 / 家用實驗室| hypervisor["virtualization.md#type-1-bare-metal-hypervisors"]
    q1 -->|多使用者叢集| cluster{要解決什麼問題?}
    cluster -->|跨節點共享檔案| storage["shared-storage.md"]
    cluster -->|將工作排程到節點| sched["compute-scheduling.md"]
    cluster -->|單一登入 + 各處同一 UID| identity["shared-home-identity.md"]

內容

文件 涵蓋內容
virtualization.md 桌面 VM 管理工具 (OrbStack、UTM、VirtualBox、Fusion、Lima、libvirt)、type-1 hypervisor (Proxmox VE、ESXi、XCP-ng、Harvester、Nutanix)、K8s 原生 VM (KubeVirt)。包含明確的 OrbStack 與 Proxmox 對照。
shared-storage.md CephFS、BeeGFS、Lustre、GlusterFS、MooseFS / SeaweedFS / JuiceFS、NFSv4、Samba。依工作負載分類的決策矩陣與 client 端掛載範例。
compute-scheduling.md SLURM、Kubernetes + Kueue/Volcano、Nomad、HTCondor、OpenPBS、YARN、Mesos、Ray/Dask、OpenStack Nova、Proxmox HA。涵蓋多使用者 CPU/GPU/VM 配置。
shared-home-identity.md FreeIPA、389ds、OpenLDAP、Samba AD、SSSD、autofs 家目錄掛載、UID/GID 慣例。「所有人的 $HOME 都放在 NAS 上」這個經典模式。

各層如何組合

典型的多使用者 Linux 運算叢集大致堆疊如下:

flowchart TB
    subgraph compute["運算層"]
        scheduler["排程器 (SLURM / K8s / Nomad)"]
        nodes["Worker 節點"]
        scheduler --> nodes
    end
    subgraph storage["儲存層"]
        cephbeegfs["共享 FS (CephFS / BeeGFS / NFS)"]
    end
    subgraph identity["身分驗證層"]
        ipa["FreeIPA / LDAP + Kerberos"]
        sssd["每個節點上的 SSSD"]
    end
    subgraph virt["虛擬化層(選用)"]
        hyp["Proxmox / ESXi / KVM"]
        vms["承載 worker 節點的 VM"]
        hyp --> vms
    end
    vms -.-> nodes
    nodes -->|掛載 /home, /scratch| cephbeegfs
    nodes -->|認證| sssd
    sssd -->|LDAP/KRB| ipa

依規模獨立挑選每一層:

  • 單一使用者筆電:只有「運算層」(直接用你的筆電,或許搭配 OrbStack 開些用完即丟的 VM)
  • 小型團隊(5-20 人):加上 NFS + FreeIPA。排程器選用。
  • HPC / ML 研究實驗室(50+ 人):加上 Proxmox 或裸機 + BeeGFS/Lustre + SLURM + FreeIPA
  • 現代雲原生 (cloud-native):以 Kubernetes 取代 SLURM、以 CephFS + CSI 取代 NFS、保留 FreeIPA 處理 SSH/sudo 身分

本 repo 內相關文件