Compare languages | Модуль linstor: расширенная конфигурация

Текущая версия модуля устарела и больше не поддерживается. Переключитесь на использование модуля sds-drbd.

This version of the module is deprecated and is no longer supported. Use the sds-drbd module instead.

Работоспособность модуля гарантируется только в следующих случаях:

The module is guaranteed to work only in the following cases:

Работоспособность модуля в других условиях возможна, но не гарантируется.

In all other cases, the module may work, but its full functionality is not guaranteed.

Упрощенное руководство содержит шаги, в результате выполнения которых автоматически создаются пулы хранения (storage-пулы) и StorageClass’ы при появлении на узле LVM-группы томов или LVMThin-пула с тегом linstor-<имя_пула>. Далее рассматриваются шаги по ручному созданию пулов хранения и StorageClass’ов.

The simplified guide) contains steps that automatically create storage pools and StorageClasses when an LVM volume group or LVMThin pool with the tag linstor-<name_pool> appears on the node. Next, we consider the steps for manually creating storage pools and StorageClasses.

Для выполнения дальнейших действий потребуется CLI-утилита linstor. Используйте один из следующих вариантов запуска утилиты linstor:

  • Установите плагин kubectl-linstor.
  • Добавьте alias в BASH для запуска утилиты linstor из пода контроллера linstor:

To proceed further, the linstor CLI utility is required. Use one of the following options to use the linstor utility:

  • Install the kubectl-linstor plugin.
  • Add a BASH alias to run the linstor utility from the linstor Pod of the linstor controller:

shell alias linstor=’kubectl exec -n d8-linstor deploy/linstor-controller – linstor’

shell alias linstor=’kubectl exec -n d8-linstor deploy/linstor-controller – linstor’

Большинство пунктов на этой странице позаимствованы из официальной документации LINSTOR.
Несмотря на то что здесь мы постарались собрать наиболее распространенные вопросы, не стесняйтесь обращаться к первоисточнику.

Most of the items on this page are taken from the official LINSTOR documentation. Despite the fact that here we have tried to collect the most common questions, feel free to refer to the original source.

Ручная конфигурация

Manual configuration

После включения модуля linstor кластер и его узлы настраиваются на использование LINSTOR автоматически. Чтобы начать использовать хранилище, необходимо:

After enabling the module, the cluster is automatically configured to use LINSTOR. In order to start using the storage, you need to:

Создание пулов хранения

Creating storage pools

  1. Отобразите список всех узлов и блочных устройств для хранения.
    • Отобразите список всех узлов:
  1. Get a list of all nodes and block storage devices.
    • Get a list of all nodes in the cluster:

shell linstor node list

shell linstor node list

Пример вывода: text +—————————————————————————————-+ | Node | NodeType | Addresses | State | |========================================================================================| | node01 | SATELLITE | 192.168.199.114:3367 (SSL) | Online | | node02 | SATELLITE | 192.168.199.60:3367 (SSL) | Online | | node03 | SATELLITE | 192.168.199.74:3367 (SSL) | Online | | linstor-controller-85455fcd76-2qhmq | CONTROLLER | 10.111.0.78:3367 (SSL) | Online | +—————————————————————————————-+

Example of the output: text +—————————————————————————————-+ | Node | NodeType | Addresses | State | |========================================================================================| | node01 | SATELLITE | 192.168.199.114:3367 (SSL) | Online | | node02 | SATELLITE | 192.168.199.60:3367 (SSL) | Online | | node03 | SATELLITE | 192.168.199.74:3367 (SSL) | Online | | linstor-controller-85455fcd76-2qhmq | CONTROLLER | 10.111.0.78:3367 (SSL) | Online | +—————————————————————————————-+

  • Отобразите список всех доступных блочных устройств для хранения:
  • Get a list of all available block devices for storage:

shell linstor physical-storage list

Пример вывода: text +—————————————————————-+ | Size | Rotational | Nodes | |================================================================| | 1920383410176 | False | node01[/dev/nvme1n1,/dev/nvme0n1] | | 1920383410176 | False | node02[/dev/nvme1n1,/dev/nvme0n1] | | 1920383410176 | False | node03[/dev/nvme1n1,/dev/nvme0n1] | +—————————————————————-+

shell linstor physical-storage list

Example of the output: text +—————————————————————-+ | Size | Rotational | Nodes | |================================================================| | 1920383410176 | False | node01[/dev/nvme1n1,/dev/nvme0n1] | | 1920383410176 | False | node02[/dev/nvme1n1,/dev/nvme0n1] | | 1920383410176 | False | node03[/dev/nvme1n1,/dev/nvme0n1] | +—————————————————————-+

Обратите внимание, что отображаются только пустые устройства, без какой-либо разметки. Тем не менее создание пулов хранения из разделов и других блочных устройств также поддерживается.

Вы также можете добавить уже существующий пул LVM или LVMthin в кластер.

Note that you’ll be able to see only empty devices without created partitions here. However, creating storage pools on partitions and other block devices is also supported.

You can also add an existing LVM pool to your cluster.

  1. Создайте пулы LVM или LVMThin.
  1. Create an LVM or LVMThin pool of these devices.

На необходимых узлах хранилища создайте несколько пулов из устройств, полученных на предыдущем шаге. Их названия должны быть одинаковыми, если вы хотите иметь один StorageClass.

Create several storage pools from the devices obtained in the previous step, make them with the same name in case of using as single storageClass.

  • Пример команды создания LVM-пула хранения из двух устройств на одном из узлов:
  • Example of a command to create an LVM storage pool of two devices on one of the nodes:

shell linstor physical-storage create-device-pool lvm node01 /dev/nvme0n1 /dev/nvme1n1 –pool-name linstor_data –storage-pool lvm

shell linstor physical-storage create-device-pool lvm node01 /dev/nvme0n1 /dev/nvme1n1 –pool-name linstor_data –storage-pool lvm

где:

  • --pool-name — имя VG/LV, создаваемого на узле;
  • --storage-pool — то, как будет называться пул хранения в LINSTOR.

, where:

  • --pool-name — name of the VG/LV created on the node;
  • --storage-pool — name of the storage pool created in LINSTOR.
  • Пример команды создания ThinLVM-пула хранения из двух устройств на одном из узлов:
  • Example of a command to create ThinLVM storage pool of two devices on one of the nodes:

shell linstor physical-storage create-device-pool lvmthin node01 /dev/nvme0n1 /dev/nvme1n1 –pool-name data –storage-pool lvmthin

shell linstor physical-storage create-device-pool lvmthin node01 /dev/nvme0n1 /dev/nvme1n1 –pool-name data –storage-pool lvmthin

где:

  • --pool-name — имя VG/LV, создаваемого на узле;
  • --storage-pool — то, как будет называться пул хранения в LINSTOR.

, where:

  • --pool-name — name of the VG/LV created on the node;
  • --storage-pool — name of the storage pool created in LINSTOR.
  1. Проверьте создание пулов хранения.
  1. Check that storage pools have been created.

Как только пулы хранения созданы, можете увидеть их, выполнив следующую команду:

Once the storage pools are created, you can see them by executing:

shell linstor storage-pool list

shell linstor storage-pool list

Пример вывода:

Example of the output:

text +———————————————————————————————————————————+ | StoragePool | Node | Driver | PoolName | FreeCapacity | TotalCapacity | CanSnapshots | State | SharedName | |=================================================================================================================================| | DfltDisklessStorPool | node01 | DISKLESS | | | | False | Ok | | | DfltDisklessStorPool | node02 | DISKLESS | | | | False | Ok | | | DfltDisklessStorPool | node03 | DISKLESS | | | | False | Ok | | | lvmthin | node01 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | | lvmthin | node02 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | | lvmthin | node03 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | +———————————————————————————————————————————+

text +———————————————————————————————————————————+ | StoragePool | Node | Driver | PoolName | FreeCapacity | TotalCapacity | CanSnapshots | State | SharedName | |=================================================================================================================================| | DfltDisklessStorPool | node01 | DISKLESS | | | | False | Ok | | | DfltDisklessStorPool | node02 | DISKLESS | | | | False | Ok | | | DfltDisklessStorPool | node03 | DISKLESS | | | | False | Ok | | | lvmthin | node01 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | | lvmthin | node02 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | | lvmthin | node03 | LVM_THIN | linstor_data/data | 3.49 TiB | 3.49 TiB | True | Ok | | +———————————————————————————————————————————+

Создание StorageClass

Creating a StorageClass

Создайте StorageClass, где:

  • в parameters."linstor.csi.linbit.com/placementCount" укажите необходимое количество реплик;
  • в parameters."linstor.csi.linbit.com/storagePool" укажите имя пула хранения, в котором будут создаваться реплики.

Create a StorageClass where:

  • specify the required number of replicas in parameters."linstor.csi.linbit.com/placementCount";
  • specify the storage pool name in parameters."linstor.csi.linbit.com/storagePool".

Пример StorageClass:

Example of the StorageClass:

yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: linstor-r2 parameters: linstor.csi.linbit.com/storagePool: lvmthin linstor.csi.linbit.com/placementCount: “2” property.linstor.csi.linbit.com/DrbdOptions/Net/rr-conflict: retry-connect property.linstor.csi.linbit.com/DrbdOptions/Resource/on-no-data-accessible: suspend-io property.linstor.csi.linbit.com/DrbdOptions/Resource/on-suspended-primary-outdated: force-secondary property.linstor.csi.linbit.com/DrbdOptions/auto-quorum: suspend-io allowVolumeExpansion: true provisioner: linstor.csi.linbit.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer

yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: linstor-r2 parameters: linstor.csi.linbit.com/storagePool: lvmthin linstor.csi.linbit.com/placementCount: “2” property.linstor.csi.linbit.com/DrbdOptions/Net/rr-conflict: retry-connect property.linstor.csi.linbit.com/DrbdOptions/Resource/on-no-data-accessible: suspend-io property.linstor.csi.linbit.com/DrbdOptions/Resource/on-suspended-primary-outdated: force-secondary property.linstor.csi.linbit.com/DrbdOptions/auto-quorum: suspend-io allowVolumeExpansion: true provisioner: linstor.csi.linbit.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer

Резервное копирование в S3

Backup on S3 Storage

Использование данной возможности требует настроенного мастер-пароля (см. инструкции в начале страницы конфигурации модуля).

This feature requires a configured master passphrase (see instructions on the top of the module configuration page).

Резервное копирование с помощью снапшотов поддерживается только для LVMThin-пулов.

Snapshots are supported only for LVMThin pools.

Функционал находится в экспериментальном режиме и может работать некорректно.

The functionality is in experimental mode and may not work correctly.

Резервное копирование данных реализовано с помощью снапшотов томов. Поддержка работы снапшотов обеспечивается модулем snapshot-controller, который включается автоматически для поддерживаемых CSI-драйверов в кластерах Kubernetes версий 1.20 и выше.

Data backup is implemented using volume snapshots. Snapshots are supported by the snapshot-controller module, which is enabled automatically for supported CSI drivers in Kubernetes clusters versions 1.20 and higher.

Создание резервной копии

Creating a backup

Для создания снапшота тома и загрузки его в S3 выполните следующие шаги:

To create a snapshot of a volume and upload it to S3, follow these steps:

  1. Create VolumeSnapshotClass and Secret, containing the access key and secret key of S3 storage.
  1. Создайте VolumeSnapshotClass и Secret, содержащий access key и secret key доступа к хранилищу S3.

VolumeSnapshotClass is a cluster-wide resource. The same VolumeSnapshotClass can be used to create backups of different PVCs from different namespaces.

VolumeSnapshotClass — ресурс на уровне кластера. Один и тот же VolumeSnapshotClass можно использовать для создания резервных копий разных PVC из разных пространств имен.

Example of VolumeSnapshotClass and Secret:

Пример VolumeSnapshotClass и Secret:

yaml kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 metadata: name: linstor-csi-snapshot-class-s3 driver: linstor.csi.linbit.com deletionPolicy: Retain parameters: snap.linstor.csi.linbit.com/type: S3 snap.linstor.csi.linbit.com/remote-name: backup-remote # Linstor remote name.
snap.linstor.csi.linbit.com/allow-incremental: “false” # Whether to use incremental copies. snap.linstor.csi.linbit.com/s3-bucket: snapshot-bucket # The name of the S3 bucket, for data storage. snap.linstor.csi.linbit.com/s3-endpoint: s3.us-west-1.amazonaws.com # S3 endpoint URL. snap.linstor.csi.linbit.com/s3-signing-region: us-west-1 # The name of the S3 region. Use virtual hosted–style or path-style S3 URL. https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html snap.linstor.csi.linbit.com/s3-use-path-style: “false”
Secret, containing the access key and secret key of access to S3 bucket. csi.storage.k8s.io/snapshotter-secret-name: linstor-csi-s3-access csi.storage.k8s.io/snapshotter-secret-namespace: storage — kind: Secret apiVersion: v1 metadata: name: linstor-csi-s3-access namespace: storage immutable: true type: linstor.csi.linbit.com/s3-credentials.v1 stringData: access-key: !ACCESS_KEY # S3 access key. secret-key: !SECRET_KEY # S3 secret key.

yaml kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 metadata: name: linstor-csi-snapshot-class-s3 driver: linstor.csi.linbit.com deletionPolicy: Retain parameters: snap.linstor.csi.linbit.com/type: S3 snap.linstor.csi.linbit.com/remote-name: backup-remote # Уникальное название backup-подключения в linstor.
snap.linstor.csi.linbit.com/allow-incremental: “false” # Использовать ли инкрементальные копии. snap.linstor.csi.linbit.com/s3-bucket: snapshot-bucket # Название S3 bucket для хранения данных. snap.linstor.csi.linbit.com/s3-endpoint: s3.us-west-1.amazonaws.com # S3 endpoint URL. snap.linstor.csi.linbit.com/s3-signing-region: us-west-1 # Регион S3. Использовать virtual hosted–style или path-style S3 URL https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html snap.linstor.csi.linbit.com/s3-use-path-style: “false”
Ссылка на Secret, содержащий access key и secret key доступа к S3 bucket. csi.storage.k8s.io/snapshotter-secret-name: linstor-csi-s3-access csi.storage.k8s.io/snapshotter-secret-namespace: storage — kind: Secret apiVersion: v1 metadata: name: linstor-csi-s3-access namespace: storage immutable: true type: linstor.csi.linbit.com/s3-credentials.v1 stringData: access-key: !ACCESS_KEY # Access key доступа к хранилищу S3. secret-key: !SECRET_KEY # Secret key доступа к хранилищу S3.

  1. Select (or create) PersistentVolumeClaim, whose data needs to be copied.
  1. Выберите (или создайте) PersistentVolumeClaim, данные которого нужно копировать.

Example of PersistentVolumeClaim, which will be used in the examples below:

Пример PersistentVolumeClaim, который будет использоваться в примерах далее:

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-linstor-volume namespace: storage spec: accessModes:

  • ReadWriteOnce storageClassName: linstor-thindata-r2 # The name of the StorageClass. resources: requests: storage: 2Gi

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-linstor-volume namespace: storage spec: accessModes:

  • ReadWriteOnce storageClassName: linstor-thindata-r2 # StorageClass хранилища linstor. resources: requests: storage: 2Gi
  1. Create VolumeSnapshot.
  1. Создайте VolumeSnapshot.

Example of VolumeSnapshot, using VolumeSnapshotClass created earlier:

Пример VolumeSnapshot, использующего VolumeSnapshotClass, созданный ранее:

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-linstor-snapshot namespace: storage spec: volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # The name of the VolumeSnapshotClass, with access to the S3 storage. source: persistentVolumeClaimName: my-linstor-volume # The name of the PVC, from where to copy the data.

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-linstor-snapshot namespace: storage spec: volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # Имя VolumeSnapshotClass с доступом к хранилищу S3. source: persistentVolumeClaimName: my-linstor-volume # Имя PVC, данные с тома которого необходимо копировать.

After creating a VolumeSnapshot associated with a PersistentVolumeClaim related to an existing volume, a linstor snapshot will be created and uploaded to S3 storage.

После создания VolumeSnapshot, связанного с PersistentVolumeClaim, относящимся к существующему тому с данными, произойдут создание снапшота в linstor и загрузка его в хранилище S3.

  1. Check the backup status.
  1. Проверьте статус выполнения резервного копирования.

Example:

Пример:

shell kubectl get volumesnapshot my-linstor-snapshot -n storage

shell kubectl get volumesnapshot my-linstor-snapshot -n storage

If the READYTOUSE value of VolumeSnapshot is not true, then see the reason by running the following command:

Если значение READYTOUSE VolumeSnapshot не true, посмотрите причину, выполнив следующую команду:

shell kubectl describe volumesnapshot my-linstor-snapshot -n storage

shell kubectl describe volumesnapshot my-linstor-snapshot -n storage

To view the list and status of created snapshots in linstor run the following command:

Посмотреть список и состояние созданных снапшотов в linstor можно, выполнив следующую команду:

shell linstor snapshot list

shell linstor snapshot list

Restoring from a backup

Восстановление из резервной копии

It is enough to create a PVC referencing the required VolumeSnapshot to restore data in the same namespace in which VolumeSnapshot was created.

Для восстановления данных в том же пространстве имен, в котором был создан VolumeSnapshot, достаточно создать PVC со ссылкой на необходимый VolumeSnapshot.

An example of a PVC for restoring from VolumeSnapshot example-backup-from-s3 in the same namespace:

Пример PVC для восстановления из VolumeSnapshot example-backup-from-s3 в том же пространстве имен:

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restored-data namespace: storage spec: storageClassName: “linstor-thindata-r1” # The name of the StorageClass.
dataSource: name: example-backup-from-s3 # The name of the VolumeSnapshot, created earlier. kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes:

  • ReadWriteOnce resources: requests: storage: 2Gi

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restored-data namespace: storage spec: storageClassName: “linstor-thindata-r1” # Имя StorageClass тома для восстановления данных.
dataSource: name: example-backup-from-s3 # Имя созданного ранее VolumeSnapshot. kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes:

  • ReadWriteOnce resources: requests: storage: 2Gi

To recover data from S3 storage into another namespace or Kubernetes cluster, follow these steps:

Для восстановления данных из хранилища S3 в другом пространстве имен или кластере Kubernetes выполните следующие шаги:

  1. Create a VolumeSnapshotClass and a Secret, containing the access key and secret key of S3 storage, if they were not created earlier (for example, if you are restoring data in a new cluster).
  1. Создайте VolumeSnapshotClass и Secret, содержащий access key и secret key доступа к хранилищу S3, если они не были созданы ранее (например, если вы восстанавливаете данные в новом кластере).

Example of VolumeSnapshotClass and Secret:

Пример VolumeSnapshotClass и Secret:

yaml kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 metadata: name: linstor-csi-snapshot-class-s3 driver: linstor.csi.linbit.com deletionPolicy: Retain parameters: snap.linstor.csi.linbit.com/type: S3 snap.linstor.csi.linbit.com/remote-name: backup-remote # Linstor remote name.
snap.linstor.csi.linbit.com/allow-incremental: “false” # Whether to use incremental copies. snap.linstor.csi.linbit.com/s3-bucket: snapshot-bucket # The name of the S3 bucket, for data storage. snap.linstor.csi.linbit.com/s3-endpoint: s3.us-west-1.amazonaws.com # S3 endpoint URL. snap.linstor.csi.linbit.com/s3-signing-region: us-west-1 # The name of the S3 region. Use virtual hosted–style or path-style S3 URL. https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html snap.linstor.csi.linbit.com/s3-use-path-style: “false”
Secret, containing the access key and secret key of access to S3 bucket. csi.storage.k8s.io/snapshotter-secret-name: linstor-csi-s3-access csi.storage.k8s.io/snapshotter-secret-namespace: storage — kind: Secret apiVersion: v1 metadata: name: linstor-csi-s3-access namespace: storage immutable: true type: linstor.csi.linbit.com/s3-credentials.v1 stringData: access-key: !ACCESS_KEY # S3 access key. secret-key: !SECRET_KEY # S3 secret key.

yaml kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 metadata: name: linstor-csi-snapshot-class-s3 driver: linstor.csi.linbit.com deletionPolicy: Retain parameters: snap.linstor.csi.linbit.com/type: S3 snap.linstor.csi.linbit.com/remote-name: backup-remote # Уникальное название backup-подключения в linstor.
snap.linstor.csi.linbit.com/allow-incremental: “false” # Использовать ли инкрементальные копии. snap.linstor.csi.linbit.com/s3-bucket: snapshot-bucket # Название S3 bucket для хранения данных. snap.linstor.csi.linbit.com/s3-endpoint: s3.us-west-1.amazonaws.com # S3 endpoint URL. snap.linstor.csi.linbit.com/s3-signing-region: us-west-1 # Регион S3. Использовать virtual hosted–style или path-style S3 URL https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html snap.linstor.csi.linbit.com/s3-use-path-style: “false”
Ссылка на Secret, содержащий access key и secret key доступа к S3 bucket. csi.storage.k8s.io/snapshotter-secret-name: linstor-csi-s3-access csi.storage.k8s.io/snapshotter-secret-namespace: storage — kind: Secret apiVersion: v1 metadata: name: linstor-csi-s3-access namespace: storage immutable: true type: linstor.csi.linbit.com/s3-credentials.v1 stringData: access-key: !ACCESS_KEY # Access key доступа к хранилищу S3. secret-key: !SECRET_KEY # Secret key доступа к хранилищу S3.

  1. Get a snapshot id for recovery by using one the the following method:
  1. Получите ID снапшота для восстановления одним из следующих способов:
  1. Get a list of snapshots, and select the one you need (the SnapshotName column):
  1. Получите список снапшотов в кластере linstor и выберите нужный (колонка SnapshotName):

shell linstor backup list

shell linstor backup list

, where the <backup-remote-name> is the remote name used in the VolumeSnapshotClass.

где <backup-remote-name> — название backup-подключения, использованное в VolumeSnapshotClass.

  1. Get a snapshot id from the object name in the S3 backet via the UI interface or CLI utilities of the S3 service.
  1. Получите ID снапшота из имени объекта в S3-бакете через UI-интерфейс или CLI-утилиты S3-сервиса.
  1. Create a VolumeSnapshotContent, pointing to a specific snapshot id.
  1. Создайте VolumeSnapshotContent, указывающий на конкретный ID снапшота.

VolumeSnapshotContent is a cluster-wide resource. Each VolumeSnapshotClass can only be bound with one VolumeSnapshot. So make sure its name is unique. Example:

VolumeSnapshotContent — ресурс на уровне кластера. Каждый VolumeSnapshotClass может быть связан только с одним VolumeSnapshot, поэтому удостоверьтесь в уникальности его имени.

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: restored-snap-content-from-s3 spec: deletionPolicy: Delete driver: linstor.csi.linbit.com source: snapshotHandle: !snapshot_id # Snapshot ID .
volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # The name of the VolumeSnapshotClass, with access to the S3 storage. volumeSnapshotRef: apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot name: example-backup-from-s3 # The name of the VolumeSnapshot (will be created below). namespace: storage

Пример:

  1. Create a VolumeSnapshot, pointing to the created VolumeSnapshotContent.

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: restored-snap-content-from-s3 spec: deletionPolicy: Delete driver: linstor.csi.linbit.com source: snapshotHandle: !snapshot_id # ID снапшота.
volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # Имя VolumeSnapshotClass с доступом к хранилищу S3. volumeSnapshotRef: apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot name: example-backup-from-s3 # Имя VolumeSnapshot, который будет создан далее. namespace: storage

Example:

  1. Создайте VolumeSnapshot, указывающий на созданный VolumeSnapshotContent.

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: example-backup-from-s3 namespace: storage spec: source: volumeSnapshotContentName: restored-snap-content-from-s3 # The name of the VolumeSnapshotContent created earlier. volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # The name of the VolumeSnapshotClass, with access to the S3 storage.

Пример:

  1. Create a PersistentVolumeClaim.

yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: example-backup-from-s3 namespace: storage spec: source: volumeSnapshotContentName: restored-snap-content-from-s3 # Имя VolumeSnapshotContent, созданного ранее. volumeSnapshotClassName: linstor-csi-snapshot-class-s3 # Имя VolumeSnapshotClass с доступом к хранилищу S3.

Example:

  1. Создайте PersistentVolumeClaim.

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restored-data namespace: storage spec: storageClassName: “linstor-thindata-r1” # The name of the StorageClass.
dataSource: name: example-backup-from-s3 # The name of the VolumeSnapshot, created earlier. kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes:

  • ReadWriteOnce resources: requests: storage: 2Gi

Пример:

Use the created PersistentVolumeClaim to access a copy of the recovered data.

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restored-data namespace: storage spec: storageClassName: “linstor-thindata-r1” # Имя StorageClass тома для восстановления данных.
dataSource: name: example-backup-from-s3 # Имя созданного ранее VolumeSnapshot. kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes:

  • ReadWriteOnce resources: requests: storage: 2Gi

Scheduled Backup Shipping

Используйте созданный PersistentVolumeClaim для доступа к копии восстановленных данных.

LINSTOR supports automatic scheduled backups. However, this feature is currently only available through the LINSTOR CLI.

Запланированное создание резервных копий

To create scheduled backups follow the steps:

  • Create an S3 remote:

LINSTOR поддерживает автоматическое создание резервных копий по расписанию.
Однако на данный момент эта возможность доступна только через LINSTOR CLI.

bash linstor remote create s3 myRemote s3.us-west-2.amazonaws.com
my-bucket us-west-2 admin password [–use-path-style]

Для создания резервных копий по расписанию выполните следующие шаги:

  • Создайте S3 remote:

bash linstor remote create s3 myRemote s3.us-west-2.amazonaws.com
my-bucket us-west-2 admin password [–use-path-style]