Управление дисками

Локальный диск всегда подключен к облачному серверу и управлять им можно только в панели управления Облачной платформой на странице сервера.

Список сетевых дисков находится в панели управления в разделе проекта Диски. Диски распределены по зонам доступности, в которых они были созданы. Сетевым диском можно управлять в карточке диска, на странице сервера, к которому он подключен, и с помощью OpenStack CLI.

Помимо рассмотренных ниже операций с дисками, можно создавать снапшоты диска и образы диска.

Просмотр информации о сетевых дисках с помощью CLI

Подробно о начале работы с OpenStack CLI.

Просмотр списка дисков

Для просмотра списка сетевых дисков проекта введите команду с ключом --long для отображения полей Type (тип диска) и Bootable (true — загрузочный или false — незагрузочный диск):

openstack volume list --long

Просмотр типов дисков

Для просмотра списка доступных типов дисков (это может пригодиться, например, для создания диска) введите команду:

openstack volume type list

Ответ будет выглядеть следующим образом:

+--------------------------------------+-----------------+-----------+
| ID                                   | Name            | Is Public |
+--------------------------------------+-----------------+-----------+
| ce80ecbd-385a-4e5a-aed9-8b6e5f3359ba | iso.ru-3a       | True      |
| f42f37b2-062f-4ce2-a6b3-28ca5e619030 | basic.ru-3a     | True      |
| 9c16598e-342b-4ff2-b948-8c05cf8f1490 | fast.ru-3a      | True      |
| fca113dd-a80f-4996-be54-cf2515d4ddee | universal.ru-3a | True      |
+--------------------------------------+-----------------+-----------+

Тип диска отображается в формате ТипДиска.НазваниеЗоны, например fast.ru-3a. Он может быть базовым (basic), быстрым (fast), универсальным (universal) или iso.

Если загрузочный диск имеет тип iso, то при запуске облачного сервера запускается инсталлятор операционной системы.

Просмотр свойств диска

Для просмотра свойств диска:

openstack volume show <volume>

Пример свойств диска:

+------------------------------+---------------------------------------------------------------------------------------------------+
| Field                        | Value                                                                                             |
+------------------------------+---------------------------------------------------------------------------------------------------+
| attachments                  | []                                                                                                |
| availability_zone            | ru-2b                                                                                             |
| bootable                     | true                                                                                              |
| consistencygroup_id          | None                                                                                              |
| created_at                   | 2020-04-28T00:43:21.000000                                                                        |
| description                  | None                                                                                              |
| encrypted                    | False                                                                                             |
| id                           | 08ed209f-5e7f-465c-b1e1-221b850298db                                                              |
| multiattach                  | False                                                                                             |
| name                         | Volume                                                                                            |
| os-vol-tenant-attr:tenant_id | 04d92ef9fe2i4caia90d6ecd2849c1cf89u                                                               |
| properties                   |                                                                                                   |
| replication_status           | None                                                                                              |
| size                         | 5                                                                                                 |
| snapshot_id                  | None                                                                                              |
| source_volid                 | None                                                                                              |
| status                       | available                                                                                         |
| type                         | fast.ru-2b                                                                                        |
| updated_at                   | 2020-04-28T00:43:22.000000                                                                        |
| user_id                      | d38f89ea67f94083803c5066f4586698i4a                                                               |
| volume_image_metadata        | {u'x_sel_os_type': u'linux', u'x_sel_image_agent_type': u'cloud-init', u'container_format':       |
|                              | u'bare', u'min_ram': u'512', u'hw_scsi_model': u'virtio-scsi', u'x_sel_image_type': u'master',    |
|                              | u'watchdog': u'pause', u'size': u'2133000192', u'os_distro': u'ubuntu', u'disk_format': u'raw',   |
|                              | u'x_sel_kpti_patch': u'True', u'hw_disk_bus': u'scsi', u'x_sel_image_owner': u'Selectel',         |
|                              | u'x_sel_image_source_file': u'ubuntu-bionic-amd64-selectel-master-product-0.1.img',               |
|                              | u'x_sel_image_os_dist': u'ubuntu', u'hw_qemu_guest_agent': u'yes', u'x_sel_image_os_arch':        |
|                              | u'amd64', u'image_name': u'Ubuntu 18.04 LTS 64-bit', u'image_id': u'c5c8d3cc-9a2c-48ce-adfe-      |
|                              | 93e066e9ae6e', u'min_disk': u'5', u'checksum': u'd4b69f195a23edaaf3b88b7807f980cc', u'os_type':   |
|                              | u'linux'}                                                                                         |
+------------------------------+---------------------------------------------------------------------------------------------------+

Изменение типа диска

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

  • создать из диска новый диск другого типа (клонировать его);
  • создать снапшот диска, а затем создать из снапшота новый диск другого типа;
  • создать образ диска, а затем создать из образа новый диск;
  • создать пустой диск нужного типа и перенести на него данные — подробнее об этом способе ниже.

Изменение типа диска с помощью создания пустого диска

Чтобы изменить тип диска:

  1. Создайте пустой диск нужного типа.
  2. Подключите его к виртуальной машине (старый диск должен быть также подключен).
  3. Перенесите данные со старого диска на новый средствами операционной системы виртуальной машины: скопируйте файлы или перенесите содержимое диска с помощью утилиты dd в rescue-режиме.

Если меняется тип загрузочного диска, то при создании нового диска через OpenStack CLI нужно указать свойства диска.

Пример:

openstack volume create \
      --size <size gb> \
      --type <new type> \
      --property hw_disk_bus=scsi \
      --property hw_scsi_model=virtio-scsi \
<new volume name>

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

Изменение имени диска в панели управления

Для изменения имени диска в панели управления:

  1. Перейдите в раздел Диски в проекте.
  2. Откройте меню (⋮) диска и выберите пункт Переименовать.
  3. Введите новое имя.

Изменение имени диска с помощью CLI

Подробно о начале работы с OpenStack CLI.

Для изменения имени диска введите:

openstack volume set --name <new name> <volume>

Увеличение объема диска

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

Подробнее об ограничениях размеров дисков.

Увеличение объема локального диска

Размер локального диска невозможно увеличить напрямую — для этого нужно изменить конфигурацию облачного сервера, для которого диск является загрузочным.

Для увеличения локального диска в панели управления:

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

Изменение конфигурации и ресайз диска может быть длительным (30—40 минут), так как виртуальная машина мигрирует на другой хост виртуализации.

Увеличение объема сетевого диска

Увеличение объема сетевого диска в панели управления

Чтобы увеличить сетевой диск (загрузочный или дополнительный) в панели управления:

  1. Перейдите в раздел Серверы.
  2. На странице сервера откройте вкладку Сетевые диски.
  3. В меню (⋮) необходимого диска выберите Размер диска.

    Примечание: также вы можете изменить размер в разделе Диски. Для этого в меню (⋮) диска выберите Увеличить размер или раскройте карточку диска и перейдите на вкладку Размер.

  4. Укажите новое значение размера диска в ГБ и сохраните изменения.

  5. Чтобы применить изменения, завершите настройку:

Увеличение объема сетевого диска с помощью CLI

Подробно о начале работы с OpenStack CLI.

Для изменения размера диска в ГБ введите:

openstack volume set --size <size> <volume>

Чтобы применить изменения, завершите настройку.

Если был увеличен загрузочный сетевой диск, перезагрузите облачный сервер или используйте утилиты для расширения диска. Если был увеличен дополнительный сетевой диск, то используйте утилиты.

Утилиты для расширения диска

Linux

На современных дистрибутивах ОС (например, Ubuntu 18.04 LTS 64-bit) перед расширением диска можно не выключать виртуальную машину.

Для расширения диска для серверов на базе Unix используйте утилиту growpart из пакета cloud-initramfs-growroot:

# growpart --help
growpart disk partition
   rewrite partition table so that partition takes up all the space it can
   options:
    -h | --help       print Usage and exit
         --fudge F    if part could be resized, but change would be
                      less than 'F' bytes, do not resize (default: 1048576)
    -N | --dry-run    only report what would be done, show new 'sfdisk -d'
    -v | --verbose    increase verbosity / debug
    -u | --update  R  update the the kernel partition table info after growing
                      this requires kernel support and 'partx --update'
                      R is one of:
                       - 'auto'  : [default] update partition if possible
                       - 'force' : try despite sanity checks (fail on failure)
                       - 'off'   : do not attempt
                       - 'on'    : fail if sanity checks indicate no support

   Example:
    - growpart /dev/sda 1
      Resize partition 1 on /dev/sda

После изменения размера разделов через growpart запустите дополнительно изменение самой файловой системы через resize2fs.

Пример запуска:

growpart /dev/sda 1
resize2fs /dev/sda1

Обратите внимание! Если что-то не получилось (например, в вашем образе нет нужных утилит, или дистрибутив не поддерживает изменение размера на лету), то загрузитесь в Rescue-режим и выполните те же команды.

Windows

Для облачного сервера с ОС Windows после увеличения объема диска для завершения настройки используйте утилиту Disk ManagementExtend Volume.

Уменьшение объема диска

Чтобы не нарушить целостность файловой системы диска и данных, уменьшение размера диска недоступно.

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

Подключение диска к серверу

К облачному серверу с локальным загрузочным диском можно подключить только дополнительные сетевые диски. У облачного сервера с сетевым загрузочным диском можно сменить загрузочный диск, а также подключить к серверу дополнительные сетевые диски.

Обратите внимание! Если облачный сервер создавался из образа с property=virtio-blk, к нему можно подключить не более 26 дисков, включая загрузочный. Если виртуальная машина создана из образа с property=virtio-scsi (это свойство установлено по умолчанию в готовых образах), то ограничение на количество подключаемых дисков – 255. Подробнее о свойствах образов.

Подключение (смена) загрузочного сетевого диска

У облачного сервера с загрузочным сетевым диском можно сменить загрузочный диск.

Чтобы сменить загрузочный сетевой диск на другой:

  1. Отключите облачный сервер. Подробнее об управлении облачными серверами.
  2. Отключите все диски от сервера.
  3. Первым подключите сетевой диск, с которого требуется выполнить загрузку облачного сервера — этот диск автоматически станет загрузочным.

    Обратите внимание! На диск заранее потребуется перенести загрузчик/ОС и все сопутствующее ПО.

  4. При необходимости подключите дополнительные сетевые диски.

Подключение дополнительного сетевого диска

Подключение дополнительного диска в панели управления

Обратите внимание! Убедитесь в том, что машина выключена, либо включена и полностью загружена (включая операционную систему). Подробнее в инструкции Управление облачным сервером.

Чтобы подключить дополнительный диск к серверу в панели управления:

  1. Перейдите в раздел Диски в проекте.
  2. В карточке диска откройте вкладку Управление.
  3. В поле Подключить к серверу выберите нужный сервер и нажмите кнопку Подключить.

    Примечание: также вы можете подключить диск в разделе Серверы. Для этого на странице сервера на вкладке Сетевые диски нажмите кнопку Подключить диск и выберите диск.

  4. Подготовьте диск к работе – выполните форматирование и монтирование.

Подключение дополнительного диска с помощью CLI

Подробно о начале работы с OpenStack CLI.

Перед подключением диска убедитесь в том, что машина полностью загружена (включая операционную систему), или остановите сервер:

openstack server stop <server>

Для подключения диска к серверу:

openstack server add volume <server> <volume>

Подготовьте диск к работе – выполните форматирование и монтирование.

Форматирование и монтирование дополнительного диска

Перед использованием подключенного дополнительного диска нужно подготовить его к работе.

На подключенном пустом сетевом диске нет файловой системы, поэтому нужно создать на диске таблицу разделов, а затем смонтировать его. Если к машине подключен дополнительный диск, созданный из источника (образа, другого диска или снапшота), то перед использованием этот диск нужно только смонтировать.

Для подготовки диска к работе:

  1. Подключитесь к виртуальной машине по SSH.
  2. Чтобы просмотреть список всех дисков, подключенных к виртуальной машине, используйте команду lsblk:

    lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0    8G  0 disk 
    ├─sda1    8:1    0    8G  0 part /
    └─sda14   8:14   0    8M  0 part 
    sdb       8:16   0    7G  0 disk 

    В примере sdb – дополнительный диск.

  3. Если подключенный диск был создан из источника, то перейдите к шагу 7. Если диск пустой, то запустите утилиту parted для создания файловой системы и разделов диска:

    parted /dev/sdb
  4. Создайте таблицу разделов с разметкой GPT:

    (parted) mklabel gpt
  5. Создайте разделы с помощью команды mkpart и укажите начало и конец раздела:

    (parted) mkpart primary 0 1GB 
    (parted) mkpart primary 1GB 3GB 

    В примере создан первый раздел размером в 1 ГБ и второй раздел размером 2 ГБ (сектор от 1 ГБ до 3 ГБ).

  6. Просмотрите созданную таблицу разделов и выйдите из утилиты:

    (parted) print 
    (parted) quit 
  7. Отформатируйте каждый раздел диска с помощью команды mkfs (используется формат разбиения ext4):

    mkfs.ext4 /dev/sdb1 
    mkfs.ext4 /dev/sdb2
  8. Создайте директорию для монтирования диска и смонтируйте в неё разделы:

    mkdir -p /mnt
    mount /dev/sdb1 /mnt
    mount /dev/sdb2 /mnt
  9. Проверьте результат с помощью команды lsblk.

Для облачного сервера с ОС Windows после подключения дополнительного пустого диска используйте инструкцию Инициализация новых дисков, а для диска, созданного из источника – Изменение буквы диска.

Переподключение диска

Для переподключения диска отключите диск от сервера, а затем заново подключите диск.

Отключение диска от сервера

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

Отключение диска в панели управления

Чтобы отключить диск от сервера в панели управления:

  1. Перейдите в раздел Диски в проекте.
  2. Если требуется отключить загрузочный диск, остановите сервер.
  3. Откройте меню (⋮) диска и выберите пункт Отключить от сервера или раскройте карточку диска, перейдите на вкладку Управление и нажмите кнопку Отключить.

Примечание: также вы можете отключить диск в разделе Серверы. Для этого на странице сервера на вкладке Сетевые диски в меню (⋮) диска выберите пункт Отключить.

Отключение диска с помощью CLI

Подробно о начале работы с OpenStack CLI.

Если требуется отключить загрузочный диск, остановите сервер:

openstack server stop <server>

Для отключения диска от сервера:

openstack server remove volume <server> <volume>

Перенос диска между проектами

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

Перенос диска между проектами в панели управления

Для переноса диска в панели управления:

  1. Отключите диск от сервера.
  2. Перейдите в раздел Диски в проекте.
  3. В меню диска (⋮) выберите Перенести в другой проект или разверните карточку диска, откройте вкладку Управление и нажмите кнопку Перенести диск. Появятся данные для переноса — ID трансфера и Ключ, сохраните их.

    Примечание: чтобы перенести несколько дисков сразу, в меню (⋮) раздела Диски выберите Перенести диски в другой проект. В открывшемся списке отметьте нужные диски и нажмите Перенести. Автоматически начнётся загрузка на локальный компьютер JSON-файла, в котором содержатся данные для трансфера дисков, сохраните его.

  4. Диски будут готовы к переносу и перейдут в статус AWAITING-TRANSFER, в котором они недоступны для работы.

    Обратите внимание! Если вы хотите отменить передачу диска, переведите диск из AWAITING-TRANSFER в нормальное состояние. Для этого нажмите кнопку Отменить перенос на вкладке Управление в карточке диска.

  5. Перейдите в раздел Диски в проекте, в который нужно перенести диски.

  6. В меню (⋮) раздела выберите пункт Принять диски из другого проекта.

  7. Заполните поля ID трансфера и Ключ, значения которых были сохранены ранее – они находятся на вкладке Управление карточки переносимого диска.

    Примечание: чтобы принять несколько дисков сразу, нажмите кнопку Загрузить список и загрузите ранее сохранённый JSON-файл с данными трансфера.

  8. Нажмите кнопку Принять.

Диски будут перенесены в другой проект.

Перенос диска между проектами с помощью CLI

Подробно о начале работы с OpenStack CLI.

Отключите диск от виртуальной машины:

openstack server remove volume <server> <volume>

Для переноса диска между проектами:

openstack volume transfer request create <volume>

Для переноса нескольких дисков:

openstack volume transfer request create <volume 1> <volume 2> <volume 3>

Пример переноса диска между проектами:

openstack volume transfer request create fda41064-1aec-4b11-a427-5b46dafce12

Ответ будет выглядеть следующим образом:

+------------+--------------------------------------+
| Field      | Value                                |
+------------+--------------------------------------+
| auth_key   | 766e89ce43c8b96f                     |
| created_at | 2020-04-28T01:52:32.649970           |
| id         | c095a116-9728-4f79-846d-1ba52cf93ed6 |
| name       | None                                 |
| volume_id  | fda41064-1aec-4b11-a427-5b46dafce12  |
+------------+--------------------------------------+

Значение ключа auth_key и ID трансфера id необходимо сохранить для принятия трансфера в другом проекте.

Если перенос не понадобился, то переведите диск из состояния AWAITING-TRANSFER в нормальное состояние через удаление запроса на перенос:

openstack volume transfer request delete <transfer request id>

В проекте, в который переносится диск, укажите ключ и ID трансфера:

openstack volume transfer request accept --auth-key <auth key> <transfer request id>

Перенос диска в другую зону

Для переноса диска в другую зону:

  1. Создайте образ из диска.
  2. Скопируйте образ в другую зону.
  3. Создайте диск из этого образа в нужном регионе.