---
title: "Stockage persistant"
description: "Créer et monter des volumes persistants sur Kontainers : choisir entre RWO et RWX, dimensionner, agrandir à chaud."
source_url:
  html: https://docs.blackswift.cloud/deployer/stockage-persistant/
  md: https://docs.blackswift.cloud/deployer/stockage-persistant.md
---

# Stockage persistant

> Créer et monter des volumes persistants sur Kontainers : choisir entre RWO et RWX, dimensionner, agrandir à chaud.

Par défaut, les données écrites dans un conteneur sont **éphémères** : elles
disparaissent quand le pod redémarre. Pour conserver vos données, demandez un
volume persistant via un **PersistentVolumeClaim (PVC)**.

Exemple complet, prêt à copier :

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mes-donnees
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ceph-block-rwo
  resources:
    requests:
      storage: 10Gi
```

## Choisir sa classe de stockage

**La règle en une ligne : un seul pod écrit → `ceph-block-rwo` ; plusieurs pods
lisent/écrivent en même temps → `ceph-filesystem-rwx`.**

| | `ceph-block-rwo` (défaut) | `ceph-filesystem-rwx` |
| --- | --- | --- |
| Mode d'accès | ReadWriteOnce — un seul pod écrivain | ReadWriteMany — accès partagé |
| Typique pour | Bases de données (MySQL, PostgreSQL, Redis…) | Fichiers partagés entre replicas (uploads WordPress, CMS…) |
| Performance | Optimale (stockage bloc) | Normale (système de fichiers distribué) |

Les deux classes sont répliquées, chiffrées,
[sauvegardées chaque nuit](https://docs.blackswift.cloud/operer/sauvegardes-et-restauration.md) et au même
[tarif](https://docs.blackswift.cloud/reference/facturation.md#stockage-persistant). Quotas : 10 PVC et 100 Gi
par classe ([détails](https://docs.blackswift.cloud/reference/quotas-et-limites.md#classes-de-stockage)).

## Créer un volume

<Tabs>
<TabItem label="Via Rancher">

<Steps>

1. Dans votre namespace : **Storage › PersistentVolumeClaims** → **Create**.

2. Nommez le PVC, choisissez la **Storage Class** et le mode d'accès
   (**Single-Node Read/Write** pour RWO, **Many-Node Read/Write** pour RWX),
   puis la taille.

3. Validez avec **Create** — le volume est provisionné en quelques secondes.

</Steps>

</TabItem>
<TabItem label="Via kubectl">

Appliquez le manifest en tête de page :

```bash
kubectl apply -f pvc.yaml -n <namespace>
kubectl get pvc -n <namespace>
```

Le `STATUS` passe à `Bound` en quelques secondes.

</TabItem>
</Tabs>

## Monter le volume dans un pod

Exemple avec MySQL (un écrivain unique → RWO) :

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:8.4
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: password
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: data
              mountPath: /var/lib/mysql
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: mes-donnees
```

<Aside type="caution">
Avec un volume **RWO**, gardez `replicas: 1` et utilisez la stratégie
`Recreate` si vos rollouts échouent : deux pods ne peuvent pas monter le même
volume RWO simultanément sur des nœuds différents.
</Aside>

## Agrandir un volume

Un PVC peut être **agrandi à chaud, jamais réduit**.

<Tabs>
<TabItem label="Via Rancher">

**Storage › PersistentVolumeClaims** → menu **⋯** du PVC → augmentez la taille →
enregistrez.

</TabItem>
<TabItem label="Via kubectl">

```bash
kubectl edit pvc mes-donnees -n <namespace>
# spec.resources.requests.storage: 20Gi
```

</TabItem>
</Tabs>

L'espace supplémentaire apparaît dans le pod en quelques instants (certaines
applications nécessitent un redémarrage pour le voir).

## Bon à savoir

- **Vos volumes sont sauvegardés automatiquement chaque nuit** — périmètre et
  procédure de restauration dans
  [Sauvegardes et restauration](https://docs.blackswift.cloud/operer/sauvegardes-et-restauration.md) ;
- Le stockage est facturé sur la **capacité provisionnée** : commencez petit,
  agrandissez au besoin ;
- Un PVC en statut `Pending` prolongé ? Vérifiez le
  [quota de stockage](https://docs.blackswift.cloud/reference/quotas-et-limites.md) :
  `kubectl describe pvc mes-donnees -n <namespace>`.

## Étapes suivantes

- [WordPress complet](https://docs.blackswift.cloud/exemples/wordpress.md) — un exemple réel combinant RWO et RWX ;
- [Sauvegardes et restauration](https://docs.blackswift.cloud/operer/sauvegardes-et-restauration.md).
