# 2026-05-29 — Migration /srv/data RAID → NVMe ## Résumé Migration complète des données de `/srv/data` depuis le RAID5 dégradé vers le LV NVMe (`almalinux-home`). Tous les services opérationnels sur NVMe. --- ## CLAUDE.md — corrections mineures Trois corrections appliquées au `CLAUDE.md` du projet : 1. **Bootstrap venv manquant** : ajout de `python3 -m venv .venv` avant `make install` (le Makefile appelle `.venv/bin/pip` directement, échoue silencieusement sans venv). 2. **`make apply-storage --tags X` invalide** : GNU make interprète `--tags` comme une cible. Remplacé par les commandes `ansible-playbook` directes dans les sections gateway et RAG. 3. **`admin/incidents.md`** : ajouté dans la liste des fichiers `admin/`. --- ## Évaluation RAID et décision d'architecture Contexte : RAID5 déjà dégradé `[UUU_]` après retrait de sdd (incident 2026-05-27). Analyse de l'état des disques restants : - `sda` : `UDMA_CRC_Error_Count=6` (câble SATA suspect) - `sdb` : ATA bus errors sous charge I/O (câble/port instable) - `sdc`, `sdd` : pas d'erreurs notables **Décision** : migrer `/srv/data` vers le NVMe plutôt que de maintenir les données sur un RAID avec zéro redondance et deux disques à risque. **Plan retenu** : utiliser l'espace libre de `almalinux-home` (LV NVMe, 845 GB, 6 GB utilisés sur 845 GB) — créer `/home/data/` et bind-monter sur `/srv/data`. Zero opération LVM, zero risque sur `/home`. --- ## Migration — déroulé ### Problème : rsync bloqué sur sdb Premier rsync lancé → bloque immédiatement en état `D` (uninterruptible sleep). `dmesg` montre des ATA bus errors sur sdb sous forte I/O. 4 KB copiés en 5 minutes. **Résolution** : `mdadm --manage /dev/md0 --fail /dev/sdb2` → RAID lit depuis sda/sdc/sdd uniquement. ### rsync réussi ``` Durée : ~35 secondes Débit : 205 MB/s Fichiers : 5106 transférés (31367 vérifiés) Exit code : 23 (xattr SELinux — non critique) ``` Modèles (37 GB, 24 fichiers) : intégrité vérifiée. ### Corruption Qdrant corrigée Un `version.info` de segment RocksDB était corrompu (octets `0.D\0` au lieu de `0.6.0`), copié depuis le RAID pendant la tentative avec sdb actif. Qdrant crashait au démarrage. ```bash printf '0.6.0' | sudo tee /srv/data/qdrant/storage/collections/funk-docs/0/segments/784eab54-.../version.info ``` ### Bascule /srv/data ```bash sudo umount /srv/data # RAID démonté sudo mount --bind /home/data /srv/data # fstab : UUID RAID5 commenté → /home/data /srv/data none bind 0 0 ``` --- ## État final | Service | État | |---|---| | postgresql-16 | ✅ active | | qdrant | ✅ active | | litellm | ✅ active | | hermes-agent | ✅ active | | hermes-dashboard | ✅ active | | alertmanager-webhook | ✅ active | | Stockage | Avant | Après | |---|---|---| | `/srv/data` | RAID5 ext4 dégradé | NVMe XFS 801 GB libres | | RAID5 md0 | monté, `[U_UU]` sdb(F) | démonté, non utilisé | --- ## Prochaines étapes - Retirer sdb du RAID (`mdadm --remove /dev/sdb2`) et décider du sort du RAID - Vérifier câble SATA de sdb (ATA bus error = interface, pas plateau) - Relancer `rag-ingest` pour vérifier l'intégrité de la collection Qdrant funk-docs