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

Изменение размера диска

Диск можно увеличить, даже если он подключён к работающей виртуальной машине (ВМ). Уменьшить диск нельзя.

  • В командной строке
  • В веб-интерфейсе
  1. Посмотрите текущий размер диска:

    d8 k get vd linux-vm-root
    

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

    NAME            PHASE   CAPACITY   VIRTUALMACHINE   AGE
    linux-vm-root   Ready   10Gi       linux-vm         10m
    
  2. Задайте новый размер в параметре .spec.persistentVolumeClaim.size:

    d8 k patch vd linux-vm-root --type merge -p '{"spec":{"persistentVolumeClaim":{"size":"11Gi"}}}'
    
    # Того же результата можно добиться, отредактировав ресурс.
    d8 k edit vd linux-vm-root
    
  3. Убедитесь, что размер изменился:

    d8 k get vd linux-vm-root
    

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

    NAME            PHASE   CAPACITY   VIRTUALMACHINE   AGE
    linux-vm-root   Ready   11Gi       linux-vm         12m
    

Размер можно изменить со страницы виртуальной машины:

  1. Перейдите на вкладку «Проекты» и выберите нужный проект.
  2. Перейдите в раздел «Виртуализация» → «Виртуальные машины».
  3. Из списка выберите ВМ, к которой подключён диск, и нажмите на её имя.
  4. На вкладке «Конфигурация» в разделе «Диски» нажмите на символ карандаша рядом с размером диска.
  5. В открывшемся окне укажите больший размер.
  6. Нажмите кнопку «Применить».

Либо со страницы самого диска:

  1. Перейдите в раздел «Виртуализация» → «Диски».
  2. Выберите нужный диск и нажмите на его имя.
  3. На вкладке «Конфигурация» в поле «Размер» укажите больший размер.
  4. Нажмите появившуюся кнопку «Сохранить».
  5. Проверьте статус диска на его странице.

Миграция дисков на другие хранилища

В коммерческих редакциях Deckhouse Platform (DP) диск можно перенести в другое хранилище, изменив его класс хранения. Перенос работает и для дисков, заданных в спецификации ВМ, и для подключённых отдельным ресурсом.

Виртуальная машина должна находиться в фазе Running, а исходное и целевое хранилища должны быть одного типа. Перенести диск с тома файловой системы на блочное устройство или наоборот нельзя.

Чтобы перенести диск, укажите новый класс хранения в параметре .spec.persistentVolumeClaim.storageClassName:

d8 k patch vd disk --type=merge --patch '{"spec":{"persistentVolumeClaim":{"storageClassName":"new-storage-class-name"}}}'

# Того же результата можно добиться, отредактировав ресурс.
d8 k edit vd disk

После этого запускается живая миграция ВМ, в ходе которой диск переезжает в новое хранилище.

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

d8 k patch vd disk1 --type=merge --patch '{"spec":{"persistentVolumeClaim":{"storageClassName":"new-storage-class-name"}}}'
d8 k patch vd disk2 --type=merge --patch '{"spec":{"persistentVolumeClaim":{"storageClassName":"new-storage-class-name"}}}'

Неудачную миграцию DP повторяет с растущей задержкой. Первая попытка идёт сразу, следующие через 5 и 10 секунд, дальше задержка удваивается и с седьмой попытки остаётся равной 300 секундам. Чтобы отменить миграцию, верните в спецификации прежний класс хранения.

Дополнительные ресурсы