# 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
   ```
