Текущая версия модуля устарела и больше не поддерживается. Переключитесь на использование модуля 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-пула с тегом | The simplified guide) contains steps that automatically create storage pools and StorageClasses when an LVM volume group or LVMThin pool with the tag |
Для выполнения дальнейших действий потребуется CLI-утилита
| To proceed further, the
|
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 |
После включения модуля | 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 |
|
|
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 | +—————————————————————————————-+ |
|
|
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] | +—————————————————————-+ |
|
|
|
|
На необходимых узлах хранилища создайте несколько пулов из устройств, полученных на предыдущем шаге. Их названия должны быть одинаковыми, если вы хотите иметь один 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. |
|
|
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 |
где:
| , where:
|
|
|
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 |
где:
| , where:
|
|
|
Как только пулы хранения созданы, можете увидеть их, выполнив следующую команду: | 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, где:
| Create a StorageClass where:
|
Пример 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:
|
|
|
| Example of |
Пример | 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. |
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. |
|
| Example of |
Пример | yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-linstor-volume namespace: storage spec: accessModes:
|
yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-linstor-volume namespace: storage spec: accessModes:
|
|
| Example of |
Пример | 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 |
После создания |
|
| Example: |
Пример: | shell kubectl get volumesnapshot my-linstor-snapshot -n storage |
shell kubectl get volumesnapshot my-linstor-snapshot -n storage | If the READYTOUSE value of |
Если значение READYTOUSE | 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 |
Пример PVC для восстановления из VolumeSnapshot | yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restored-data
namespace: storage
spec:
storageClassName: “linstor-thindata-r1” # The name of the StorageClass.
|
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restored-data
namespace: storage
spec:
storageClassName: “linstor-thindata-r1” # Имя StorageClass тома для восстановления данных.
| To recover data from S3 storage into another namespace or Kubernetes cluster, follow these steps: |
Для восстановления данных из хранилища S3 в другом пространстве имен или кластере Kubernetes выполните следующие шаги: |
|
| Example of |
Пример | 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. |
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. |
|
|
|
| shell
linstor backup list |
shell
linstor backup list | , where the |
где |
|
|
|
|
|
| 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 . |
Пример: |
|
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 снапшота. | Example: |
| 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. |
Пример: |
|
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: |
| yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restored-data
namespace: storage
spec:
storageClassName: “linstor-thindata-r1” # The name of the StorageClass.
|
Пример: | Use the created |
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restored-data
namespace: storage
spec:
storageClassName: “linstor-thindata-r1” # Имя StorageClass тома для восстановления данных.
| Scheduled Backup Shipping |
Используйте созданный | LINSTOR supports automatic scheduled backups. However, this feature is currently only available through the LINSTOR CLI. |
Запланированное создание резервных копий | To create scheduled backups follow the steps:
|
LINSTOR поддерживает автоматическое создание резервных копий по расписанию. | bash
linstor remote create s3 myRemote s3.us-west-2.amazonaws.com |
Для создания резервных копий по расписанию выполните следующие шаги:
|
|
bash
linstor remote create s3 myRemote s3.us-west-2.amazonaws.com | |
|