🧠 Storage Systems — Chapitre 11 : Software-Defined Storage
Le Software-Defined Storage transforme un ensemble de serveurs, disques, SSD, réseaux et logiciels en plateforme de stockage programmable. Cette page traite le découplage matériel/logiciel, les objectifs, les architectures scale-up/scale-out/hyperconvergées, les solutions majeures — Ceph, GlusterFS, MinIO, OpenEBS, Longhorn, Portworx, VMware vSAN, Nutanix, Red Hat OpenShift Data Foundation — puis les avantages, limites, runbooks, monitoring et critères de choix en production.
Définition du SDS
Découplage matériel / logiciel : le logiciel pilote capacité, placement, réplication, snapshots et exposition de services.
SoftwareHardwareControl planeObjectifs
Flexibilité, automatisation, scalabilité, coût, résilience, cloud hybride, API, orchestration et standardisation.
AutomationScaleCostArchitectures
Scale-up, scale-out, hyperconvergée, disaggregated, storage cluster, data plane/control plane, failure domains.
Scale-outHCIClusterSolutions majeures
Ceph, GlusterFS, MinIO, OpenEBS, Longhorn, Portworx, VMware vSAN, Nutanix, Red Hat ODF.
CephvSANODFAvantages
Matériel standard, cloud hybride, Kubernetes, API, multi-protocol, auto-healing, réplication et intégration DevOps.
HybridKubernetesAPILimites
Complexité opérationnelle, tuning, monitoring indispensable, réseau critique, compétences fortes et runbooks stricts.
ComplexityTuningMonitoringCeph en profondeur
RADOS, OSD, MON, MGR, MDS, RGW, pools, CRUSH, replication, erasure coding, RBD, CephFS et S3.
RADOSCRUSHRBDSDS et Kubernetes
CSI, StorageClass, PVC, PV, RWX/RWO, dynamic provisioning, snapshots, operators et stateful workloads.
CSIPVCOperatorHyperconvergence
Compute + storage sur les mêmes nœuds : vSAN, Nutanix, S2D, ODF, contraintes réseau et failure domains.
HCIvSANNutanixServices exposés
Bloc, fichier, objet : RBD/iSCSI/NVMe-oF, CephFS/NFS/SMB, S3/Swift, gateways et clients natifs.
BlockFileObjectRéseau SDS
East-west traffic, réplication, recovery, 10/25/40/100G, jumbo frames, latency, oversubscription et QoS.
NetworkEast-westQoSProtection des données
Replication factor, erasure coding, snapshots, clones, scrubbing, self-healing, placement groups et bit rot.
ReplicationECScrubPerformance & tuning
IOPS, p99 latency, queue depth, placement, cache, OSD tuning, small files, metadata, benchmark fio/rados bench.
IOPSp99fioMonitoring indispensable
Health checks, capacity, latency, degraded objects, rebalance, Prometheus, Grafana, logs, alerting et SLO.
PrometheusGrafanaSLOSécurité SDS
Auth, RBAC, encryption, multi-tenancy, network segmentation, secrets, Object Lock, policies et audit.
RBACEncryptionTenantMatrice de décision
Choisir entre Ceph, MinIO, Longhorn, OpenEBS, Portworx, vSAN, Nutanix selon usage et maturité ops.
DecisionUse casesRiskRunbooks production
Disque mort, OSD down, rebalance, full cluster, latency spike, split-brain, restore snapshot et incident réseau.
RunbookIncidentRecoveryChecklist production SDS
Préprod : réseau, failure domains, monitoring, capacity headroom, backups, upgrades, drills et documentation.
Prod-readyAuditChecklistDéfinition opérationnelle
Le Software-Defined Storage découple les fonctions de stockage du matériel propriétaire. Le logiciel devient responsable de l'agrégation des disques, du placement des données, de la réplication, de l'erasure coding, des snapshots, du provisioning et de l'exposition des services bloc, fichier ou objet.
Architecture logique
| Avant | Avec SDS | Impact |
|---|---|---|
| Baie propriétaire unique | Cluster de nœuds standards | Scale-out et coût matériel réduit. |
| Provisioning manuel LUN/share | API, CSI, automation | Self-service et DevOps. |
| RAID local | Replication/EC distribués | Résilience par failure domains. |
| Silots bloc/fichier/objet | Services multi-protocol selon solution | Convergence contrôlée. |
| Control plane | Décide placement, orchestration, metadata, health, API, policies. |
| Data plane | Transporte réellement les I/O entre clients, nœuds et disques. |
| Failure domain | Définit où ne pas placer les copies ensemble : disque, host, rack, zone. |
Provisioning rapide et standardisé.
Ajouter des nœuds pour capacité/perf.
Matériel commodity ou serveur.
Réparer après panne automatiquement.
Le SDS devient puissant quand il est piloté par API : Terraform, Ansible, Kubernetes CSI, opérateurs, workflows CI/CD, politiques de classes de stockage.
# Examples of automation targets - create storage class - provision volume - create snapshot - expand PVC - replicate dataset - apply retention policy - rotate keys
- Répliquer données on-prem vers cloud.
- Utiliser API S3-compatible entre sites.
- Fournir un stockage homogène aux applications Kubernetes.
- Créer des politiques de placement selon coût, performance et conformité.
| Besoin | Standard SDS |
|---|---|
| Block pour VM/DB | RBD, iSCSI, NVMe-oF, CSI RWO. |
| File partagé | CephFS, NFS, SMB, CSI RWX. |
| Object | S3-compatible, buckets, lifecycle. |
| Architecture | Principe | Avantage | Limite |
|---|---|---|---|
| Scale-up | Un système grossit verticalement. | Simple à comprendre. | Limite par contrôleur/châssis. |
| Scale-out | Ajout de nœuds horizontaux. | Capacité et perf progressives. | Réseau et placement critiques. |
| Hyperconvergée | Compute + storage mêmes nœuds. | Intégration VM/K8s. | Couplage ressources CPU/RAM/disques. |
| Disaggregated | Compute séparé storage. | Indépendance scaling. | Réseau encore plus critique. |
Le scale-out exige une stratégie de placement : copies réparties sur nœuds, racks, zones, avec rebalance automatique après ajout/retrait.
L'hyperconvergence intègre stockage et compute : chaque nœud apporte CPU/RAM/disques. Elle simplifie le déploiement d'un cluster VM ou Kubernetes, mais impose de dimensionner simultanément compute, stockage, réseau et licences.
- Ne jamais placer toutes les copies sur le même hôte.
- Éviter plusieurs copies dans le même rack si le rack est un failure domain.
- Prévoir la capacité disponible après perte d'un nœud.
| Solution | Type | Forces | Limites |
|---|---|---|---|
| Ceph | Block/File/Object | Très complet, scale-out, open source. | Complexe à opérer. |
| MinIO | Object S3 | Simple, performant, Kubernetes-friendly. | Objet uniquement. |
| GlusterFS | File distribué | Historique, simple conceptuellement. | Moins central dans architectures modernes. |
| OpenEBS | Kubernetes storage | Approches locales/distribuées. | Dépend moteur choisi. |
| Longhorn | Kubernetes block | Simple pour clusters K8s. | Performance/réseau à surveiller. |
| Portworx | Kubernetes enterprise | Fonctions avancées, DR, multi-cloud. | Licence/complexité. |
| VMware vSAN | HCI VMware | Intégré vSphere. | Écosystème VMware. |
| Nutanix | HCI platform | Stack intégrée enterprise. | Coût et verrouillage plateforme. |
| Red Hat ODF | OpenShift Data Foundation | Ceph/Rook intégré OpenShift. | Dimensionnement et ops exigeants. |
| Besoin | Solution souvent pertinente |
|---|---|
| S3 privé | MinIO, Ceph RGW, Scality. |
| Block K8s simple | Longhorn, OpenEBS, Portworx. |
| Block/File/Object unifié | Ceph / ODF. |
| VMware HCI | vSAN. |
| Enterprise HCI complet | Nutanix. |
- Maturité de l'équipe ops.
- Support entreprise nécessaire ou non.
- Type de service : bloc, fichier, objet.
- Performance attendue et latence p99.
- Intégration Kubernetes/VMware.
- Stratégie backup/DR.
- Matériel standard au lieu de baie propriétaire unique.
- Scale-out par ajout de nœuds.
- Automatisation via API, CSI, opérateurs.
- Multi-protocol selon solution : bloc, fichier, objet.
- Intégration cloud hybride et Kubernetes.
- Self-healing et rebalancing.
Le SDS peut réduire le coût matériel, mais il transfère une partie du coût vers l'ingénierie, le monitoring, l'automatisation et l'exploitation.
- Problèmes réseau = problèmes stockage.
- Rebalance peut saturer cluster.
- Full cluster peut devenir critique très vite.
- Une mauvaise policy de placement détruit la résilience.
| Zone | Paramètres |
|---|---|
| Réseau | MTU, bandwidth, latency, QoS. |
| Disques | HDD/SSD/NVMe, journal, WAL/DB, cache. |
| Placement | Replication factor, EC profile, failure domain. |
| Clients | Queue depth, retries, timeouts, mount options. |
- Linux storage.
- Réseau datacenter.
- Observabilité Prometheus/Grafana.
- Kubernetes/CSI si cloud-native.
- Runbooks incident et drills.
| Composant | Rôle |
|---|---|
| OSD | Stocke les objets RADOS sur disques. |
| MON | Quorum et cartes du cluster. |
| MGR | Modules, metrics, dashboard. |
| MDS | Metadata pour CephFS. |
| RGW | Gateway S3/Swift. |
| RBD | Block devices pour VM/K8s. |
CRUSH calcule où placer les données sans table centrale massive. Il tient compte des failure domains : host, rack, room, zone. C'est le cœur de la distribution Ceph.
| RBD | Volumes bloc pour VM, OpenStack, Kubernetes. |
| CephFS | Filesystem distribué POSIX-like. |
| RGW | S3-compatible object storage. |
ceph -s ceph health detail ceph osd tree ceph osd df ceph pg stat ceph df rados df ceph orch ps
CSI permet à Kubernetes de demander dynamiquement des volumes au backend SDS. Le développeur demande un PVC ; le cluster provisionne un volume selon une StorageClass.
| Mode | Sens | Usage |
|---|---|---|
| RWO | ReadWriteOnce | DB, volume bloc attaché à un pod/nœud. |
| RWX | ReadWriteMany | Partage fichier entre pods. |
| ROX | ReadOnlyMany | Dataset partagé en lecture. |
- Une DB dans Kubernetes exige un stockage prévisible et backup applicatif.
- Snapshots CSI doivent être cohérents avec l'application.
- Les opérateurs DB gèrent souvent réplication et failover au-dessus du SDS.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast-rbd provisioner: rbd.csi.ceph.com parameters: pool: kubernetes imageFeatures: layering reclaimPolicy: Delete allowVolumeExpansion: true
L'HCI combine compute, mémoire, réseau et disques dans les mêmes nœuds. Le stockage distribué transforme les disques locaux en datastore partagé.
- Déploiement plus simple qu'un SAN séparé.
- Scalabilité par nœuds.
- Intégration hyperviseur.
- Bon pour ROBO, PME, clusters VM.
- Scaling compute et storage parfois couplé.
- Réseau est critique.
- Licences/support peuvent être élevés.
- Réparation/rebalance impacte production.
| VMware vSAN | vSphere HCI. |
| Nutanix | Plateforme HCI enterprise. |
| Storage Spaces Direct | Microsoft HCI. |
| OpenShift Data Foundation | HCI Kubernetes/OpenShift avec Ceph/Rook. |
| Service | Exposition | Usage |
|---|---|---|
| Bloc | RBD, iSCSI, NVMe-oF, CSI RWO | VM, DB, volumes Kubernetes. |
| Fichier | CephFS, NFS, SMB, CSI RWX | Partages, pods RWX, home dirs. |
| Objet | S3/Swift via gateway | Backup, data lake, archives. |
Les gateways rendent un backend distribué compatible avec des protocoles clients standards. Elles ajoutent une couche à monitorer : saturation CPU, latence, auth, logs, TLS.
- DB transactionnelle : bloc rapide ou local + réplication.
- Partage multi-pods : fichier RWX.
- Archive/data lake : objet S3.
- VM datastore : bloc ou HCI validé.
Dans un SDS, le réseau devient le backplane de la baie. Les écritures, réplications, rebuilds, heartbeats et lectures distantes traversent le réseau east-west.
| 10G | Minimum fréquent pour petits clusters. |
| 25G | Très bon standard moderne. |
| 40/100G | Clusters flash/NVMe ou gros east-west. |
| Latency | Critique pour writes synchrones. |
- Réseau storage séparé ou QoS stricte.
- Redondance switches et liens.
- MTU cohérent bout-en-bout si jumbo frames.
- Monitoring drops, errors, retransmits.
- Tester perte de lien et switch reboot.
iperf3 -c node02 ethtool -S eth0 ss -ti ping -f node02 mtr node02 sar -n DEV 1
La réplication stocke plusieurs copies complètes. Simple, rapide à lire, coûteuse en capacité.
L'erasure coding découpe les données en fragments data + parity. Il améliore le rendement capacité au prix de CPU, latence et complexité de recovery.
- Scrub détecte incohérences et bit rot.
- Self-heal réplique à nouveau après panne.
- Backfill/rebalance consomme réseau et disques.
- Full cluster empêche parfois healing correct.
| Disk | Protection contre disque mort. |
| Host | Protection contre nœud mort. |
| Rack | Protection alimentation/switch rack. |
| Zone | Protection salle/site selon design. |
Expérience réelle.
Vu depuis application.
Impact rebuild.
Déséquilibre nœuds.
# fio block workload example fio --name=randrw --filename=/mnt/testfile --size=20G --rw=randrw --rwmixread=70 --bs=4k --iodepth=32 --numjobs=4 --direct=1 --time_based --runtime=120 --group_reporting # Ceph examples rados bench -p pool 60 write --no-cleanup rados bench -p pool 60 seq
- Séparer HDD/SSD/NVMe dans classes/pools.
- Choisir replication vs EC selon latency/capacity.
- Éviter sur-commit capacité.
- Contrôler recovery throttling.
- Optimiser clients et mount options.
| Indicateur | Pourquoi |
|---|---|
| Cluster health | État global. |
| Capacity used/raw/available | Éviter full cluster. |
| Degraded / misplaced objects | Risque résilience. |
| Recovery/backfill rate | Impact production. |
| Client latency p95/p99 | SLO applicatif. |
- Exporter metrics cluster et nœuds.
- Dashboards Grafana par service.
- Alertes health, capacity, latency, degraded.
- Corrélation réseau/disque/CPU.
Alerting : p99 > seuil pendant 10 min + degraded objects > 0
- Authentification clients et admins.
- RBAC par projet/tenant.
- Chiffrement en transit et at rest.
- Network segmentation.
- Secrets dans Vault/KMS/Kubernetes secrets sécurisés.
Le SDS peut servir plusieurs équipes ou clients. Il faut isoler buckets, pools, namespaces, quotas, policies, clés et métriques.
Pour les services objet, WORM/Object Lock protège backups et archives contre suppression ou chiffrement ransomware.
- Création/suppression volumes.
- Modification policies.
- Accès admin.
- Suppression snapshots.
- Accès bucket public ou policy dangereuse.
| Besoin | Option pertinente | Attention |
|---|---|---|
| S3 privé performant | MinIO | Objet seulement, design EC. |
| Bloc/fichier/objet unifié | Ceph | Ops exigeantes. |
| K8s simple | Longhorn/OpenEBS | Performance et réseau. |
| K8s enterprise | Portworx/ODF | Licences/support. |
| VMware | vSAN | Écosystème VMware. |
| HCI enterprise | Nutanix | Coût et plateforme. |
- Quel protocole : bloc, fichier, objet ?
- Quelle latence p99 attendue ?
- Quelle équipe opérera le cluster ?
- Quel support 24/7 ?
- Quelle stratégie backup/DR ?
- Confirmer alerte et nœud impacté.
- Vérifier health cluster.
- Identifier disque/OSD exact.
- Vérifier capacité restante et degraded data.
- Remplacer disque ou redémarrer service selon cause.
- Surveiller backfill/recovery.
- Stopper ingestion non critique.
- Identifier pools/buckets volumineux.
- Ajouter capacité ou supprimer données validées.
- Vérifier snapshots/versions.
- Surveiller retour à état healthy.
- Comparer clients, cluster, réseau, disques.
- Vérifier recovery/rebalance en cours.
- Identifier hot node/hot pool.
- Vérifier drops/retransmits réseau.
- Throttle recovery si nécessaire.
- Lire release notes et matrice compatibilité.
- Backup configs.
- Vérifier health parfait avant upgrade.
- Upgrade rolling par nœud.
- Valider métriques et clients après chaque étape.
| Contrôle | OK ? | Note |
|---|---|---|
| Failure domains définis | ☐ | Host/rack/zone. |
| Réseau redondant et mesuré | ☐ | Bandwidth, latency, drops. |
| Capacity headroom | ☐ | Rebuild possible après panne. |
| Monitoring/alerting | ☐ | Health, capacity, latency. |
| Backups externes | ☐ | SDS ≠ backup. |
- Runbooks testés.
- Upgrade procedure validée.
- Restore drill périodique.
- Inventaire disques/nœuds.
- Support et escalade documentés.
- RBAC admin.
- Segmentation réseau.
- Chiffrement selon criticité.
- Audit actions sensibles.
- Secrets stockés proprement.
