# Migration SD → SSD NVMe !!! success "Migration réussie le 1er janvier 2026" Talloires boot désormais sur un SSD NVMe de 512GB, avec la carte SD comme fallback automatique. ## Contexte Le Raspberry Pi 5 fonctionnait sur une carte SD de 64GB, ce qui posait plusieurs problèmes : - **Performance I/O limitée** : Les écritures aléatoires 4K plafonnaient à ~300 IOPS - **Espace disque contraint** : Seulement 17GB libres pour les services Docker - **Usure de la SD** : Les écritures fréquentes (logs, métriques) usent prématurément les cartes SD ## Matériel | Composant | Modèle | Capacité | |-----------|--------|----------| | SSD NVMe | Acer MA200 | 512 GB | | HAT NVMe | (intégré Pi 5) | PCIe 2.0 x1 | | Carte SD (backup) | SanDisk | 64 GB | ## Procédure de migration ### 1. Backup préalable ```bash # Backup complet vers Annecy (NAS) ~/backup-to-annecy.sh ``` Le script sauvegarde `~/talloires-v2/` (3.7GB, 19,427 fichiers) vers `/mnt/annecy/talloires/`. ### 2. Préparation du SSD Le SSD était déjà partitionné avec une installation précédente : ``` /dev/nvme0n1p1 511M boot (FAT32) /dev/nvme0n1p2 468G root (ext4) ``` ### 3. Synchronisation avec rsync ```bash # Sync root filesystem sudo rsync -axHAWXS --numeric-ids --info=progress2 --delete \ --exclude="/boot/firmware/*" \ --exclude="/dev/*" \ --exclude="/proc/*" \ --exclude="/sys/*" \ --exclude="/tmp/*" \ --exclude="/run/*" \ --exclude="/mnt/*" \ --exclude="/media/*" \ --exclude="/lost+found" \ / /mnt/ssd-root/ # Sync boot partition sudo rsync -avx /boot/firmware/ /mnt/ssd-boot/ ``` ### 4. Configuration des PARTUUIDs Mise à jour de `/etc/fstab` sur le SSD : ``` PARTUUID=e4c047f7-01 /boot/firmware vfat defaults 0 2 PARTUUID=e4c047f7-02 / ext4 defaults,noatime 0 1 ``` Mise à jour de `/boot/firmware/cmdline.txt` : ``` root=PARTUUID=e4c047f7-02 ``` ### 5. Configuration EEPROM boot order ```bash # Avant: 0xf461 (SD → NVMe → USB) # Après: 0xf416 (NVMe → SD → USB) sudo rpi-eeprom-config --edit # Modifier BOOT_ORDER=0xf416 ``` | Code | Signification | |------|---------------| | 6 | NVMe (prioritaire) | | 1 | SD card (fallback) | | 4 | USB | | f | Restart loop | ## Résultats benchmark ### Écriture séquentielle (128MB) | Device | Vitesse | Ratio | |--------|---------|-------| | SD Card | 8.9 MB/s | 1x | | SSD NVMe | 2,100 MB/s | **236x** | ### I/O aléatoires 4K (le plus important) | Device | Read IOPS | Write IOPS | |--------|-----------|------------| | SD Card | 3,288 | 302 | | SSD NVMe | 315,076 | 334,367 | | **Gain** | **96x** | **1,108x** 🔥 | !!! info "Pourquoi les IOPS 4K comptent" Les écritures aléatoires 4K sont critiques pour : - Démarrage des containers Docker - Journaux système et logs applicatifs - Bases de données (Gitea, Home Assistant) - Métriques Prometheus/Grafana ## État actuel ```bash # Vérifier le device de boot findmnt -n -o SOURCE / # /dev/nvme0n1p2 # Espace disponible df -h / # 468G total, 406G libres (87%) # Boot order sudo rpi-eeprom-config | grep BOOT_ORDER # BOOT_ORDER=0xf416 ``` ## Fallback automatique La carte SD reste branchée et contient un système fonctionnel. Si le SSD a un problème : 1. Le Pi essaie de booter sur NVMe → échec 2. Le Pi boot automatiquement sur SD → succès 3. On peut diagnostiquer/réparer le SSD Pour forcer le boot SD (debug) : ```bash # Temporairement changer le boot order sudo rpi-eeprom-config --edit # BOOT_ORDER=0xf461 (SD first) sudo reboot ``` ## Scripts associés - `~/backup-to-annecy.sh` : Backup quotidien vers NAS (cron 3h) - Healthchecks.io : Monitoring du backup ## Historique | Date | Action | |------|--------| | 2026-01-01 | Migration SD → SSD NVMe | | 2026-01-01 | Correction script backup (source: talloires-v2) | | 2026-01-01 | Benchmark et documentation |