[Документация Yandex Cloud](../../../../index.md) > [Yandex Compute Cloud](../../../index.md) > [Концепции](../../index.md) > [Группы виртуальных машин](../index.md) > [Обновление](index.md) > Изменение дополнительных дисков в шаблоне виртуальной машины

# Изменение дополнительных дисков в шаблоне виртуальной машины

{% note info %}

Изменение параметров дисков приводит к пересозданию ВМ.

{% endnote %}

Обновление следующих параметров происходит без пересоздания диска:

* `description` — изменение описания диска.
* `size` — увеличение размера диска.
* `preserve_after_instance_delete` — установка или снятие флага.

При изменении любого другого параметра объекта `disk_spec`, а также при уменьшении размера диска происходит пересоздание диска.

## Алгоритм изменения дополнительных дисков {#algorithm}

Решение об изменении параметров или о пересоздании дисков принимается по одному из алгоритмов сопоставления:

* [по именам дисков](#algorithm-names) — сопоставляются значения параметра `name` (основной способ);
* [по параметрам дисков](#algorithm-parameters) — сопоставляются значения остальных параметров (устаревший способ).

### Сопоставление по именам {#algorithm-names}

При таком алгоритме диски в текущей и новой [YAML-спецификациях](../specification.md) сопоставляются по именам. Диски, имен которых нет в новой спецификации, удаляются. Диски, имен которых нет в текущей спецификации, создаются. Вы можете однозначно идентифицировать диск, который хотите изменить, добавить или удалить.

Чтобы использовать алгоритм сопоставления дисков по именам, задайте каждому диску в YAML-спецификации уникальное значение параметра `name`.

{% note info %}

В одной спецификации имена должны быть либо присвоены всем дополнительным дискам, либо не присвоены ни одному.

{% endnote %}

При переходе с [устаревшего алгоритма](#algorithm-parameters) на алгоритм сопоставления по именам в первый раз диски сопоставляются по параметрам, все последующие разы — по именам.

#### Пример сопоставления дополнительных дисков по именам {#example-names}

В текущей спецификации описаны два дополнительных диска — на 20 и 50 ГБ:

```yaml
instance_template:
...
  secondary_disk_specs:
    - name: disk-2
      mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 21474836480
    - name: disk-3
      mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 53687091200
...
```

Обновленная спецификация содержит два дополнительных диска — на 60 и 10 ГБ:

```yaml
instance_template:
...
  secondary_disk_specs:
    - name: disk-2
      mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 64424509440
    - name: disk-4
      mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 10737418240
...
```

При обновлении будут выполнены следующие действия:

1. Диск с именем `disk-2` текущей спецификации будет сопоставлен с диском `disk-2` обновленной спецификации, так как их имена совпадают. Размер диска будет увеличен до 60 ГБ без пересоздания, данные на диске сохранятся.
1. Диск с именем `disk-3` текущей спецификации будет удален, так как в обновленной спецификации нет диска с таким именем.
1. Будет создан и добавлен диск с именем `disk-4` из обновленной спецификации, потому что в текущей спецификации нет диска с таким именем.

### Сопоставление по параметрам {#algorithm-parameters}

{% note info %}

Алгоритм сопоставления дополнительных дисков по параметрам не обеспечивает однозначной идентификации дисков в ВМ и является устаревшим. Воспользуйтесь [сопоставлением дисков по именам](#algorithm-names).

{% endnote %}

Если в спецификации не используются имена дисков, сопоставление и изменение происходит по следующему алгоритму:

1. Для каждого диска в текущей спецификации группа ищет в новой спецификации:

   * диск с аналогичными параметрами;
   * диск с параметрами, которые можно получить без пересоздания.

   Поиск в обеих спецификациях выполняется последовательно, начиная с первого диска.

1. Если такой диск находится, диски считаются успешно сопоставленными. При необходимости выполняется изменение параметров диска в соответствии с новой спецификацией. Далее эти диски не участвуют в сопоставлении.
1. Если диску текущей спецификации не удается сопоставить диск новой, то такой диск удаляется.
1. Если в новой спецификации остался диск, которому не был сопоставлен ни один диск из старой спецификации, то такой диск создается.

#### Пример сопоставления дополнительных дисков по параметрам {#example-parameters}

В текущей спецификации описаны два дополнительных диска — на 20 и 50 ГБ:

```yaml
instance_template:
...
  secondary_disk_specs:
    - mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 21474836480
    - mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 53687091200
...
```

Обновленная спецификация содержит два дополнительных диска — на 60 и 10 ГБ:

```yaml
instance_template:
...
  secondary_disk_specs:
    - mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 64424509440
    - mode: READ_WRITE
      disk_spec:
        preserve_after_instance_delete: false
        type_id: network-hdd
        size: 10737418240
...
```

Все параметры дисков, кроме размеров, в обеих спецификациях совпадают.

При обновлении будут выполнены следующие действия:

1. Первый диск текущей спецификации (20 ГБ) будет сопоставлен с первым диском обновленной (60 ГБ). Его размер будет увеличен до 60 ГБ без пересоздания, данные на диске сохранятся.
1. Второй диск текущей спецификации (50 ГБ) не будет сопоставлен ни с одним диском новой и будет удален.
1. Второй диск новой спецификации (10 ГБ) будет создан и добавлен.

## Примеры использования {#examples}

* [Обновление группы виртуальных машин под нагрузкой](../../../tutorials/updating-under-load.md)