Funk-lab/admin/nfs.md
alkatrazz dca71144d6 docs(admin): add ops documentation and fix hermes dashboard service
- Remove admin/ from .gitignore (repo is now private)
- Add --tui flag to hermes-dashboard.service template
- Document hermes-tui wrapper, dashboard access, TUI usage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 18:50:43 +02:00

117 lines
3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NFS — Commandes d'administration
Le RAID5 `md127` (4×1 TB = 2.7 TB utiles) est monté sur **storage-01** à `/srv/data`
et exporté en NFS vers le LAN cluster (`192.168.10.0/24`).
---
## Côté serveur (storage-01)
```bash
# État du RAID
sudo mdadm --detail /dev/md127
cat /proc/mdstat
# Exports actifs
sudo exportfs -v
# Recharger les exports après modification de /etc/exports
sudo exportfs -ra
# Statut NFS
sudo systemctl status nfs-server
```
### Arborescence du RAID
```
/srv/data/
├── nfs/
│ └── k8s/ → export pour le NFS provisioner Kubernetes
├── models/ → modèles LM Studio partagés (gpu-01 monte ce répertoire)
├── hermes/ → données persistantes Hermes Agent (à venir)
├── postgres/ → données PostgreSQL (à venir)
├── qdrant/ → données Qdrant (à venir)
└── minio/ → données MinIO (à venir)
```
### Exports (`/etc/exports`)
```
/srv/data/nfs/k8s 192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)
/srv/data/models 192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)
```
---
## Côté client (gpu-01)
```bash
# État des automounts
sudo systemctl status mnt-nfs.automount
sudo systemctl status mnt-models.automount
# Monter manuellement (debug)
sudo mount -t nfs -o nfsvers=4 192.168.10.1:/srv/data/nfs/k8s /mnt/nfs
# Vérifier les montages actifs
mount | grep nfs
df -h /mnt/nfs /mnt/models
```
### Comportement automount (extinctions fréquentes)
Les montages NFS sur gpu-01 utilisent `x-systemd.automount` :
- **Pas montés au boot** — montés uniquement au premier accès
- Si storage-01 est éteint au moment du boot → gpu-01 démarre normalement
- Au premier accès → montage déclenché (timeout 30 s)
- `soft` + `timeo=30` + `retrans=3` → jamais bloquant si le serveur est injoignable
---
## Modèles LM Studio sur NFS
```bash
# Sur gpu-01 — symlink transparent pour LM Studio
ls -la /opt/lmstudio/.lmstudio/models
# → lrwxrwxrwx ... models -> /mnt/models
# Le contenu réel est sur storage-01
ls /mnt/models/
# → lmstudio-community/gemma-4-E2B-it-GGUF/
# → lmstudio-community/gemma-4-E4B-it-GGUF/
# Ajouter un modèle (depuis gpu-01 — sera stocké directement sur NFS)
lms get <modele>
```
---
## Ajouter un nouveau répertoire partagé
1. Créer le répertoire sur storage-01 :
```bash
sudo mkdir -p /srv/data/<nom>
sudo chown <uid>:<gid> /srv/data/<nom>
```
2. Ajouter dans `host_vars/storage-01/vars.yml` :
```yaml
nfs_exports:
- path: /srv/data/<nom>
network: "{{ cluster_network }}"
options: "rw,sync,no_subtree_check,no_root_squash"
```
3. Ajouter le montage client dans `host_vars/<host>/vars.yml` :
```yaml
nfs_client_mounts:
- local_path: /mnt/<nom>
remote_export: /srv/data/<nom>
```
4. Appliquer :
```bash
ansible-playbook -i inventory.yml playbooks/storage-01.yml
ansible-playbook -i inventory.yml playbooks/<host>.yml
```