Saya mahu faham bagaimana cluster HPC sebenar berfungsi: peranan login/head dan compute node, penjadual job, storan kongsi, dan job MPI merentas beberapa node. Jadi saya bina satu cluster kecil di dalam lab Proxmox saya.
Hasilnya: cluster tiga node (Slurm + Munge + NFS + OpenMPI) siap dan diuji pada 11 Ogos 2026. Keempat-empat objektif tercapai:
- Peranan login/head/compute node dalam cluster sebenar
- Setup dan pentadbiran penjadual Slurm (
slurmctld,slurmd,munge) - Storan kongsi melalui NFS (
/homedan/scratch) - Job MPI yang berjalan merentas dua compute node
Model deployment: manual (setiap node ada OS sendiri pada disk tempatan). Model provisioning gaya Warewulf/BCM dibiarkan sebagai fasa 2.
Infrastruktur
| Item | Nilai |
|---|---|
| Hypervisor | Proxmox, 48 core, 125 GB RAM |
| Rangkaian | VLAN 30 (10.10.30.0/24), gateway ialah firewall |
| Image | Rocky Linux 9 GenericCloud qcow2 (617 MB) |
| Disk VM | 20 GB setiap node (local-lvm) |
| VMID | Nama | IP | Spesifikasi | Peranan |
|---|---|---|---|---|
| 120 | hpc-head | 10.10.30.10 | 2 vCPU / 4 GB / 20 GB | slurmctld, munge, NFS server, slurmd |
| 121 | hpc-cpu1 | 10.10.30.11 | 2 vCPU / 4 GB / 20 GB | slurmd, munge, OpenMPI (compute) |
| 122 | hpc-cpu2 | 10.10.30.12 | 2 vCPU / 4 GB / 20 GB | slurmd, munge, OpenMPI (compute) |
Stack: Rocky 9.6, Slurm 22.05.9, Munge 0.5.13, OpenMPI 4.1.1, NFSv4.
Lima masalah dan penyelesaiannya
Bahagian ini yang paling berguna untuk belajar.
1. Boot tersangkut di dracut:/#
Masalah: cloud image berhenti di emergency shell dan disk tidak dikesan.
Punca: Proxmox menggunakan scsihw=lsi (pemacu mptspi) sebagai lalai, dan initramfs cloud image tidak mempunyai pemacu itu.
Penyelesaian: qm set <vmid> --scsihw virtio-scsi-single.
Pengajaran: cloud image memerlukan virtio-scsi-single, bukan LSI.
2. Hostname tidak dapat di-resolve
Masalah: slurmctld melaporkan Unable to resolve "hpc-cpu1" dan not a valid controller.
Punca (ada dua):
manage_etc_hosts: Truedalam cloud-init menimpa/etc/hostspada setiap boot, jadi entri kita hilang.- NSS
myhostnamemilik systemd memberi alamat IPv6 link-local (fe80::) untuk hostname sendiri.
Penyelesaian:
- Tetapkan
manage_etc_hosts: falsedalam/etc/cloud/cloud.cfg - Tulis
/etc/hostssecara statik (10.10.30.10 hpc-head, dan seterusnya) - Tambah
/etc/gai.conf:precedence ::ffff:0:0/96 100supaya IPv4 diutamakan
3. RealMemory yang tidak padan
Masalah: Low RealMemory (reported:3655 < configured:3700), dan node jadi INVAL/DRAIN.
Penyelesaian: tetapkan RealMemory=3650 dalam slurm.conf, iaitu di bawah nilai yang dilaporkan node.
4. MPI dan Slurm
Masalah: melancarkan terus dengan srun gagal: “OMPI was not built with SLURM’s PMI support”.
Punca: OpenMPI dari EPEL (4.1.1) tidak dibina dengan sokongan PMIx Slurm.
Penyelesaian: guna mpirun (bukan srun) dalam skrip job, dengan pembolehubah persekitaran ini:
export OMPI_MCA_plm=slurm
export OMPI_MCA_btl=tcp,self
export OMPI_MCA_pml=ob1
mpirun --allow-run-as-root ./mpi_hello
5. Job “zombie” dalam keadaan CG
Masalah: job MPI yang hang kekal dalam keadaan CG (completing) dan menyekat node.
Penyelesaian: hentikan slurmctld, kosongkan fail state (/var/spool/slurmctld/*state*), kemudian mulakan semula.
Padam fail state akan membuang rekod job yang sedang berjalan. Okay dalam lab; berhati-hati di tempat lain.
Pengesahan
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
cpu* up infinite 3 idle hpc-cpu[1-2],hpc-head
Job MPI, dua node × dua task:
=== Job | nodes: hpc-cpu[1-2] | tasks: 4 ===
Hello from rank 0/4 on node hpc-cpu1
Hello from rank 1/4 on node hpc-cpu1
Hello from rank 3/4 on node hpc-cpu2
Hello from rank 2/4 on node hpc-cpu2
NFS merentas node juga berfungsi: tulis dari hpc-cpu1, baca dari hpc-head, dan /scratch termount pada kedua-dua compute node.
Arahan harian
sinfo # node dan partition
squeue # job dalam queue
scontrol show node # butiran node
sbatch mpi_job.sh # hantar job
srun -N1 -n1 hostname # satu task pada satu node
srun --pty bash # shell interaktif pada compute node
scancel <jobid> # batalkan job
Fasa 2 (pilihan)
- Warewulf: provisioning gaya BCM (golden image dan PXE boot)
- GPU node: tambah partition
gpudan pemacu NVIDIA slurmdbd: hidupkan accounting supayasacctboleh digunakan- Monitoring: Prometheus dan Grafana dengan Slurm exporter
Langkah seterusnya yang sudah saya buat: Membina Lustre Lab di Rocky Linux 9.
Leave a Comment / Ask a Question
Have thoughts or questions on this article? Drop a message below and Faiez will receive an instant notification.