# Клонування CSI-томів

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

У цьому документі описано концепцію клонування наявних томів CSI в Kubernetes. Рекомендується мати уявлення про [томи](/docs/concepts/storage/volumes).

<!-- body -->

## Вступ {#introduction}

Функція клонування томів <a class='glossary-tooltip' title='Інтерфейс зберігання контейнерів (CSI) визначає стандартний інтерфейс для взаємодії з системами зберігання з контейнерами.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/storage/volumes/#csi' target='_blank' aria-label='CSI'>CSI</a> додає підтримку вказання наявних <a class='glossary-tooltip' title='Запит на використання ресурсів зберігання, визначених у PersistentVolume, для їх монтування як томів в контейнері.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims' target='_blank' aria-label='PVC'>PVC</a> у полі `dataSource` для позначення бажання користувача клонувати <a class='glossary-tooltip' title='Тека, що містить дані та доступна для контейнерів у Podʼі.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/storage/volumes/' target='_blank' aria-label='Том'>Том</a>.

Клон визначається як дублікат наявного тому Kubernetes, який можна використовувати як будь-який стандартний том. Єдина відмінність полягає в тому, що після підготовки, а не створення "нового" порожнього тому, пристрій, що відповідає за підтримку томів, створює точний дублікат вказаного тому.

Реалізація клонування, з погляду API Kubernetes, додає можливість вказати наявний PVC як джерело даних під час створення нового PVC. Джерело PVC має бути повʼязане та доступне (не у використанні).

Користувачі повинні знати наступне при використанні цієї функції:

* Підтримка клонування (`VolumePVCDataSource`) доступна лише для драйверів CSI.
* Підтримка клонування доступна лише для динамічних постачальників.
* Драйвери CSI можуть чи не можуть реалізувати функціонал клонування томів.
* Ви можете клонувати тільки PVC, коли вони існують у тому ж просторі імен, що і PVC призначення (джерело та призначення повинні бути в одному просторі імен).
* Клонування підтримується з різним Storage Class.
  * Призначений том може мати той самий або інший клас сховища, ніж джерело.
  * Можна використовувати типовий клас сховища, і вказування storageClassName можна пропустити в специфікації.
* Клонування може бути виконане лише між двома томами, які використовують одне і те саме налаштування VolumeMode (якщо ви запитуєте том в блоковому режимі, то джерело ТАКОЖ повинно бути в блоковому режимі).

## Виділення {#provisioning}

Клони забезпечуються так само як і інші PVC, за винятком додавання dataSource, яке посилається на поточний PVC у тому ж самому просторі імен.

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: clone-of-pvc-1
    namespace: myns
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: cloning
  resources:
    requests:
      storage: 5Gi
  dataSource:
    kind: PersistentVolumeClaim
    name: pvc-1
```


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Ви повинні вказати значення місткості для <code>spec.resources.requests.storage</code>, і значення, яке ви вказуєте, повинно бути таким самим або більшим, ніж місткість вихідного тому.</div>


Результатом є новий PVC з імʼям `clone-of-pvc-1`, який має точно такий самий зміст, як і вказане джерело `pvc-1`.

## Використання {#usage}

При доступності нового PVC клонований PVC використовується так само як і інші PVC. Також на цьому етапі очікується, що новий створений PVC є незалежним обʼєктом. Його можна використовувати, клонувати, створювати знімки чи видаляти незалежно та без врахування вихідного джерела PVC. Це також означає, що джерело ніяк не повʼязане з новим створеним клоном, його також можна модифікувати чи видалити, не впливаючи на новий клон.
