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

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

Список сетевых дисков находится в панели управления в разделе проекта Диски. Диски распределены по зонам доступности, в которых они были созданы. Сетевым диском можно управлять в карточке диска, на странице сервера, к которому он подключен, и с помощью OpenStack 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. Введите новое имя.

Изменение имени диска с помощью консольных клиентов

Подробно о начале работы через консольные клиенты читайте в инструкции Работа с OpenStack CLI.

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

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

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

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

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

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

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

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

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

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

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

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

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

Увеличить сетевой диск в панели управления можно в разделе Диски или в разделе Серверы в проекте.

В разделе Серверы:

  1. В меню сервера перейдите на вкладку Сетевые диски.
  2. В меню (⋮) необходимого диска выберите Размер диска.
  3. Укажите новое значение размера диска в ГБ и сохраните изменения.

В разделе Диски:

  1. В меню (⋮) необходимого диска выберите Увеличить размер или раскройте карточку диска и перейдите на вкладку Размер.
  2. Укажите новое значение размера диска в ГБ и сохраните изменения.

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

Подробно о начале работы через консольные клиенты читайте в инструкции Работа с OpenStack CLI.

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

openstack server remove volume <server> <volume>

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

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

Если увеличение диска не произошло автоматически

Если автоматическое расширение диска не происходит, то необходимо расширить объем диска вручную.

На современных дистрибутивах ОС (наример, 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-режиме и выполните команды:

growpart /dev/sda 1
resize2fs /dev/sda1

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

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

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

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

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

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

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

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

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

Примечание: рекомендуется сразу создавать виртуальную машину с нужным загрузочным диском.

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

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

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

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

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

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

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

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

В разделе Диски:

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

В разделе Серверы:

  1. В меню сервера перейдите на вкладку Сетевые диски.
  2. Нажмите кнопку Подключить диск, выберите диск и подтвердите подключение к серверу.

Диск появится в списке дисков машины.

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

Подробно о начале работы через консольные клиенты читайте в инструкции Работа с 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. Откройте меню (⋮) диска и выберите пункт Отключить от сервера или раскройте карточку диска, перейдите на вкладку Управление и нажмите кнопку Отключить.

В разделе Серверы:

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

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

Подробно о начале работы через консольные клиенты читайте в инструкции Работа с 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. Нажмите кнопку Принять.

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

Перенос диска между проектами с помощью консольных клиентов

Подробно о начале работы через консольные клиенты читайте в инструкции Работа с 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. Создайте диск из этого образа в нужном регионе.