đ Optimisation Nextcloud â SĂ©paration HOT / COLD STORAGE
đŻ Objectif
Optimiser les performances de Nextcloud en déplaçant les répertoires les plus sollicités vers un volume NVMe rapide, tout en conservant le reste des données sur du Ceph HDD plus économique.
Cette technique améliore significativement :
-
la vitesse dâaffichage des galeries,
-
la génération des previews,
-
les performances de Memories,
-
la fluiditĂ© de lâexpĂ©rience utilisateur,
-
tout en maintenant un espace de stockage massif et abordable.
1. đ Architecture de stockage
Nextcloud repose sur deux catégories de données :
1.1 Données FROIDES (/mnt/nextcloud)
Stockées sur Ceph HDD + DB/WAL sur NVMe
Contient :
-
les fichiers des utilisateurs
-
les répertoires
avatar,calendar,theming,drawio, etc. -
la majorité de
appdata_*(CSS, JS, facereco, themingâŠ)
Ces données sont rarement modifiées, et tolÚrent parfaitement la latence HDD grùce à Ceph + DB/WAL 100 Go.
1.2 DonnĂ©es CHAUDES (nouveau volume NVMe â /mnt/hot)
Volumes créés dans le pool CephNVMe haute performance.
Ces répertoires sont les plus sollicités en lecture/écriture, notamment par :
-
Memories
-
FullTextSearch
-
Photos
-
RichDocuments
-
Editor
-
Web previews
-
lâuploader WebDAV (transactions temporaires)
Ces répertoires saturent les disques HDD lors des opérations lourdes (prévisualisation massive, importations, photos, vidéos).
2. đŠ RĂ©pertoires dĂ©placĂ©s vers stockage CHAUD
Le contenu de appdata_XXXX/ a été analysé, et seuls les répertoires contenant beaucoup de fichiers dynamiques, regenerables ou non-critiques ont été déplacés.
âïž RĂ©pertoires dĂ©placĂ©s vers /mnt/hot
| Répertoire | RÎle | Justification |
|---|---|---|
preview/
|
PrĂ©visualisations | TrĂšs haut volume de fichiers gĂ©nĂ©rĂ©s par lâapp Photos/Memories |
photos/
|
Cache interne Photos | AccĂšs intensif |
dav-photocache/
|
Cache DAV pour Memories | Critique pour performance |
richdocuments/
|
Office/WebODF | Beaucoup dâI/O |
text/
|
Ăditeur collaboratif | Sessions & autosaves |
unsplash/
|
Cache dâimages | Lecture intensive |
đč Ces Ă©lĂ©ments ne doivent PAS ĂȘtre sauvegardĂ©s.
Ils se régénÚrent automatiquement.
3. đ Connexion entre les deux volumes : mount --bind
Au lieu de symlinks (problématiques dans Nextcloud), on utilise mount --bind, ce que Nextcloud accepte 100% du temps.
Exemple (réel) aprÚs configuration :
/dev/sdc on /mnt/hot type ext4 (rw,relatime)
/dev/sdc on /mnt/nextcloud/data/appdata_xxx/preview type ext4 (rw,relatime)
/dev/sdc on /mnt/nextcloud/data/appdata_xxx/photos type ext4 (rw,relatime)
...
Cette approche permet :
-
Nextcloud voit un répertoire normal
-
Le volume chaud bĂ©nĂ©ficie dâI/O NVMe
-
Le volume froid reste intact et cohérent
-
Aucune modification dans config.php
4. âïž Ătapes complĂštes (sans script)
4.1 Créer le volume chaud
Dans Proxmox â pool CephNVMe â nouveau disque virtuel â 48 Go.
Dans la VM :
mkfs.ext4 /dev/sdc
mkdir /mnt/hot
echo '/dev/sdc /mnt/hot ext4 defaults 0 0' >> /etc/fstab
mount -a
4.2 Déplacement des répertoires
IMPORTANT : Nextcloud désactivé.
occ maintenance:mode --on
Copier vers volume chaud :
rsync -avH /mnt/nextcloud/data/appdata_xxx/preview/ /mnt/hot/preview/
rsync -avH /mnt/nextcloud/data/appdata_xxx/photos/ /mnt/hot/photos/
...
4.3 Supprimer les dossiers dâorigine (pas les recrĂ©er!)
rm -rf /mnt/nextcloud/data/appdata_xxx/preview
rm -rf /mnt/nextcloud/data/appdata_xxx/photos
...
4.4 Créer les bind-mounts
mkdir -p /mnt/nextcloud/data/appdata_xxx/preview
mount --bind /mnt/hot/preview /mnt/nextcloud/data/appdata_xxx/preview
Idem pour :
-
photos
-
dav-photocache
-
richdocuments
-
text
-
unsplash
4.5 Ajouter dans /etc/fstab
â Lâordre est crucial : monter /mnt/hot avant les bind-mounts.
/dev/sdc /mnt/hot ext4 defaults 0 0
/mnt/hot/preview /mnt/nextcloud/data/appdata_xxx/preview none bind 0 0
/mnt/hot/photos /mnt/nextcloud/data/appdata_xxx/photos none bind 0 0
/mnt/hot/dav-photocache /mnt/nextcloud/data/appdata_xxx/dav-photocache none bind 0 0
...
Vérifier :
mount -a
mount | grep hot
4.6 Réactiver Nextcloud
occ maintenance:mode --off
5. âïž Pourquoi cette optimisation est sĂ»re
đ Pas de corruption possible :
-
les données déplacées sont recréables
-
les opérations se font Nextcloud OFF
-
les bind-mounts présentent à NC une arborescence standard
â»ïž Sans impact sur les sauvegardes :
-
seul
/mnt/nextclouddoit ĂȘtre sauvegardĂ© -
/mnt/hotNE DOIT PAS lâĂȘtre -
en cas de perte : les caches seront régénérés automatiquement
6. đ RĂ©sultat : un Nextcloud soutenable et scalable
AprĂšs optimisation :
-
GUI plus fluide
-
Memories accéléré
-
indexation plus rapide
-
réduction des IOPS sur pool froid
-
plateau de performance beaucoup plus haut
La technique utilisée dans les installations Nextcloud à 50 000+ utilisateurs.