mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 21:44:42 +02:00
5.5 KiB
5.5 KiB
2026-05-10 — dnsmasq, ROCm, LM Studio, NFS, modèles partagés
Accompli
Rôle dnsmasq (storage-01)
- Résolution
*.lab.localopérationnelle depuis le LAN cluster - DNS gpu-01 mis à jour :
8.8.8.8→192.168.10.1
Rôle rocm (gpu-01)
- Repo AMD importé, drivers amdgpu + ROCm installés
HSA_OVERRIDE_GFX_VERSION=10.3.0positionné en system-wide (profile.d + service systemd)- RX 6700XT (gfx1031) détectée par ROCm
Rôle lm_studio (gpu-01) — avec résolution de blocages multiples
LM Studio installe un module Node natif (watcher.node) compilé avec GCC 12 qui
requiert GLIBCXX_3.4.30. AlmaLinux 9 / GCC 11 fournit au maximum GLIBCXX_3.4.29.
Le symbole concerné (std::condition_variable::wait) existe dans la libstdc++ système
mais sous le tag GLIBCXX_3.4.11.
Solution retenue : patch ELF de watcher.node
patch-glibcxx-compat.py: parseur ELF qui réécrit le champvna_hash+ la chaîne de version dans la section.gnu.version_rdewatcher.node(GLIBCXX_3.4.30→GLIBCXX_3.4.11, même longueur → patch in-place)install-lmstudio-compat.sh: télécharge le bundle officiel, patchewatcher.nodeavant le bootstrap, patche aussi la copie installée
Architecture du service systemd :
lms server startquitte avec code 0 après avoir démarré le daemon → systemd déclenchait un cycle de restart- Solution : wrapper
run-llmster.sh— appellelms server start(qui gère le passkey et démarrellmster), puis reste en vie viapgrep llmsteren boucle - Service
active (running)avec le wrapper comme PID principal etllmstertracké dans le cgroup systemd Restart=on-failurerelance proprement sillmstermeurt
Wrapper lms global :
/usr/local/bin/lms→ délègue àsudo -u lmstudio ... lms "$@"- Accessible depuis n'importe quel user sans préfixe
Validation :
curl http://192.168.10.20:1234/v1/models # depuis storage-01 → OK
lms ls # depuis gpu-01 → liste les modèles
Détail complet des blocages : ansible/roles/lm_studio/TROUBLESHOOTING.md
Rôle nfs_server (storage-01)
Le RAID5 md127 (4×1 TB, créé sous l'OS précédent) a survécu au changement d'OS —
les superblocs mdadm sont sur les disques, pas sur l'OS. Assemblage automatique au boot.
mdadm --detail --scan→/etc/mdadm.conf+ rebuild initramfsmd127(ext4) monté sur/srv/datavia UUID dans/etc/fstab- Exports NFS :
/srv/data/nfs/k8s→ pour le futur NFS provisioner k8s/srv/data/models→ modèles LM Studio partagés
- Ports NFS (111, 2049) déjà ouverts dans nftables (rôle gateway)
nfs-serveractif et enabled
Rôle nfs_client (gpu-01)
/mnt/nfs→192.168.10.1:/srv/data/nfs/k8s/mnt/models→192.168.10.1:/srv/data/models- Options robustes aux extinctions fréquentes :
soft— échoue proprement (EIO) si serveur injoignable, ne bloque jamaistimeo=30, retrans=3— 3 s de timeout, 3 tentatives_netdev— montage après réseau disponible seulementnofail— boot du client non bloqué si storage-01 absentx-systemd.automount— montage à la demande (premier accès), pas au boot
Migration des modèles LM Studio vers NFS
- Modèles téléchargés :
gemma-4-e2b(4.4 GB),gemma-4-e4b(6.3 GB) + embedding nomic - Rsync
/opt/lmstudio/.lmstudio/models/→/srv/data/models/(~80 MB/s LAN interne) - Intégrité vérifiée (
diff -rq) avant suppression locale /opt/lmstudio/.lmstudio/modelsremplacé par symlink →/mnt/models- LM Studio voit les modèles sans aucun changement de configuration
- 11 GB libérés sur le disque local de gpu-01
Problèmes rencontrés / Solutions
| Problème | Solution |
|---|---|
GLIBCXX_3.4.30 not found dans watcher.node |
Patch ELF vna_hash + string → GLIBCXX_3.4.11 |
LD_PRELOAD ne satisfait pas DT_VERNEED lié à libstdc++.so.6 |
Abandonné — seul le patch ELF fonctionne |
Offsets mal calculés dans le parseur ELF (vn_aux à +4 au lieu de +8) |
Corrigé en tenant compte du champ vn_file |
Patch vers GLIBCXX_3.4.29 : symbole inexistant sous cette version |
Cibler GLIBCXX_3.4.11 — là où le symbole existe réellement |
lms server start quitte avec 0 → systemd déactivate + tue llmster |
Wrapper shell avec boucle pgrep llmster comme processus principal |
lms server start via ExecStartPost : Invalid passkey |
lms doit démarrer llmster lui-même pour créer le passkey |
| Port 1234 inaccessible depuis le réseau | firewall-cmd --permanent --add-port=1234/tcp |
gcc -lstdc++ introuvable sur AlmaLinux 9 |
Chemin complet /usr/lib64/libstdc++.so.6 |
Automount NFS inactif après ansible.posix.mount state: mounted |
Utiliser state: present + systemctl enable/start *.automount |
Tâche firewalld dans nfs_server échoue sur storage-01 (nftables) |
Condition when: firewalld est running |
État en fin de journée
| Composant | État |
|---|---|
| common (storage-01 + gpu-01) | ✅ |
| gateway / nftables / NAT | ✅ |
| dnsmasq | ✅ |
| ROCm (gpu-01) | ✅ |
| LM Studio service systemd (gpu-01) | ✅ active (running) |
API LM Studio 192.168.10.20:1234 |
✅ accessible depuis storage-01 |
RAID5 md127 monté /srv/data |
✅ 2.7 TB, état clean |
| NFS server + exports | ✅ |
| NFS client gpu-01 (automount) | ✅ |
| Modèles sur NFS | ✅ gemma-4-e2b, gemma-4-e4b, nomic-embed |
| Route statique Freebox | ❌ à faire |
| Premier commit GitHub | ❌ à faire |
| postgresql / qdrant / minio | ❌ stubs vides |
| hermes_agent | ❌ stub vide |