Funk-lab/admin/infra/nfs.md
Hermes Bot 00e53fc0b8 docs(hermes): sections état vérifié — inspection cluster 2026-06-05
Ajout d'une section '## État vérifié' à chaque doc admin/ basée
sur l'inspection read-only du cluster (systemctl, kubectl, nft, etc.).
Aucune modification de service ni réécriture de documentation existante.

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 12:32:57 +02:00

124 lines
No EOL
3.2 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 GGUF partagés (gpu-01 monte ce répertoire via NFS)
├── 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 GGUF sur NFS
```bash
# Les modèles sont montés directement sur gpu-01
ls /mnt/models/
# → bartowski/
# → lmstudio-community/
# Ajouter un modèle (depuis gpu-01 — sera stocké directement sur NFS)
ssh g01 "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
```
---
## État vérifié — 2026-06-05
- Service `nfs-server` actif (exécuté depuis 3 jours)
- Export NFS configuré :
`/srv/data/nfs/k8s` → `192.168.10.0/24` (sync, rw, no_root_squash)
`/srv/data/models` → `192.168.10.0/24` (sync, rw, no_root_squash)
- Aucune divergence avec la documentation existante
- Configuration stable, aucun élément opérationnel critique observé