mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 13:34:43 +02:00
docs: progression 2026-05-14 + désignore progress/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e17396a150
commit
24c0bf9e12
9 changed files with 1093 additions and 2 deletions
114
progress/2026-05-10.md
Normal file
114
progress/2026-05-10.md
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# 2026-05-10 — dnsmasq, ROCm, LM Studio, NFS, modèles partagés
|
||||
|
||||
## Accompli
|
||||
|
||||
### Rôle `dnsmasq` (storage-01)
|
||||
- Résolution `*.lab.local` opé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.0` positionné 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 champ `vna_hash` + la chaîne
|
||||
de version dans la section `.gnu.version_r` de `watcher.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, patche `watcher.node`
|
||||
avant le bootstrap, patche aussi la copie installée
|
||||
|
||||
**Architecture du service systemd** :
|
||||
- `lms server start` quitte avec code 0 après avoir démarré le daemon → systemd
|
||||
déclenchait un cycle de restart
|
||||
- Solution : wrapper `run-llmster.sh` — appelle `lms server start` (qui gère le passkey
|
||||
et démarre `llmster`), puis reste en vie via `pgrep llmster` en boucle
|
||||
- Service `active (running)` avec le wrapper comme PID principal et `llmster` tracké
|
||||
dans le cgroup systemd
|
||||
- `Restart=on-failure` relance proprement si `llmster` meurt
|
||||
|
||||
**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 initramfs
|
||||
- `md127` (ext4) monté sur `/srv/data` via 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-server` actif 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 jamais
|
||||
- `timeo=30, retrans=3` — 3 s de timeout, 3 tentatives
|
||||
- `_netdev` — montage après réseau disponible seulement
|
||||
- `nofail` — boot du client non bloqué si storage-01 absent
|
||||
- `x-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/models` remplacé 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 |
|
||||
Loading…
Add table
Add a link
Reference in a new issue