Подключить диск к виртуальной машине
Вы можете подключить дополнительный диск к работающей и остановленной ВМ.
На ВМ с Linux из Cloud Marketplace или из пользовательских образов с установленным набором драйверов подключенный дополнительный диск будет доступен в качестве нового устройства без перезагрузки ВМ.
Чтобы диск был успешно подключен, операционная система ВМ должна быть полностью загружена или остановлена, иначе операция завершится с ошибкой. При возникновении ошибки остановите ВМ и повторите операцию.
На ВМ с Windows подключенный дополнительный диск будет доступен в качестве нового устройства только после перезагрузки ВМ.
При выборе диска для подключения к виртуальной машине можно указать, следует ли удалять этот диск при удалении соответствующей машины. Указать это можно при создании, изменении виртуальной машины и при подключении нового диска.
Подключить диск
Примечание
Подключить локальный диск к ВМ на выделенном хосте можно только при ее создании. Подробнее см. в инструкциях.
- В консоли управления
выберите каталог, которому принадлежит ВМ. - Перейдите в сервис Compute Cloud.
- На панели слева выберите
Диски. - Выберите неподключенный диск или создайте новый.
- Напротив диска, который вы хотите подключить, нажмите
и выберите Присоединить. - В открывшемся окне:
- В поле ВМ выберите виртуальную машину, к которой нужно подключить диск.
- Если в хотите подключить зашифрованный диск, выберите сервисный аккаунт c ролью
kms.keys.encrypterDecrypterна ключ KMS, которым зашифрован диск. - Укажите название устройства.
- При необходимости включите опцию Удалять вместе с виртуальной машиной.
- Нажмите кнопку Подключить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для подключения дисков:
yc compute instance attach-disk --help -
Получите список ВМ в каталоге по умолчанию:
yc compute instance listРезультат:
+----------------------+-----------------+---------------+---------+----------------------+ | ID | NAME | ZONE ID | STATUS | DESCRIPTION | +----------------------+-----------------+---------------+---------+----------------------+ | fhm0b28lgfp4******** | first-instance | kz1-a | RUNNING | my first vm via CLI | | fhm9gk85nj7g******** | second-instance | kz1-a | RUNNING | my second vm via CLI | +----------------------+-----------------+---------------+---------+----------------------+ -
Выберите идентификатор (
ID) или имя (NAME) нужной ВМ, напримерfirst-instance. -
Получите список дисков в каталоге по умолчанию:
yc compute disk listРезультат:
+----------------------+--------------+-------------+-------------------+--------+----------------------+-----------------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | INSTANCE IDS | PLACEMENT GROUP | DESCRIPTION | +----------------------+--------------+-------------+-------------------+--------+----------------------+-----------------+-------------+ | a7lqgbt0bb9s******** | first-disk | 20401094656 | kz1-a | READY | a7lcvu28njbh******** | | | | a7lv5j5hm1p1******** | second-disk | 21474836480 | kz1-a | READY | | | | +----------------------+--------------+-------------+-------------------+--------+----------------------+-----------------+-------------+ -
Выберите идентификатор (
ID) или имя (NAME) нужного диска, напримерfirst-disk. Посмотреть список подключенных к ВМ дисков можно с помощью команды:yc compute instance get --full first-instance -
Подключите диск к ВМ:
yc compute instance attach-disk first-instance \ --disk-name first-disk \ --mode rwЧтобы диск был автоматически удален при удалении ВМ, укажите флаг
--auto-delete.Примечание
На пустых дисках файловая система отсутствует. Если вы подключаете пустой диск, разметьте и смонтируйте его вручную. Или, вместо подключения пустого диска, вы можете сделать снимок загрузочного диска и создать ВМ из этого снимка.
Если возникла ошибка, остановите ВМ:
yc compute instance stop first-instanceЗатем подключите диск повторно.
-
Если ВМ была остановлена, запустите ее заново:
yc compute instance start first-instance
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
В конфигурационном файле в описании ресурса
yandex_compute_instanceдобавьте новый блокsecondary_disk:resource "yandex_compute_instance" "vm-1" { ... secondary_disk { disk_id = "<идентификатор_диска>" } ... }Где
disk_id— идентификатор дополнительного диска.Примечание
Дополнительный диск и виртуальная машина должны находиться в одной зоне доступности.
Более подробную информацию о параметрах ресурса
yandex_compute_diskсм. в документации провайдера. -
Примените новую конфигурацию:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform обновит все требуемые ресурсы. Проверить изменения можно в консоли управления
. -
Воспользуйтесь методом REST API attachDisk для ресурса Instance или вызовом gRPC API InstanceService/AttachDisk.
Смонтировать диск, созданный из снимка или образа
-
Подключите диск к ВМ.
-
Подключитесь к ВМ по SSH.
-
Выполните команду
blkidи проверьте, что нет разделов с одинаковыми UUID:sudo blkidРезультат:
/dev/vda2: UUID="0d6dfef0-542d-47ba-b55b-18ab5f5f9210" TYPE="ext4" PARTUUID="752aa845-94ee-4850-9188-71c2f919ee7b" /dev/vdb2: UUID="0d6dfef0-542d-47ba-b55b-18ab5f5f9210" TYPE="ext4" PARTUUID="752aa845-94ee-4850-9188-71c2f919ee7b" ... -
Если вы обнаружили, что какие-то UUID дублируются, сгенерируйте новый UUID для тех дубликатов, которые идут последними в выводе команды
blkid. Для примера из предыдущего шага надо сгенерировать UUID для раздела/dev/vdb2:sudo e2fsck -f /dev/vdb2 sudo tune2fs -U $(uuidgen) /dev/vdb2Этот способ подойдет для разделов с файловыми системами
ext2,ext3иext4. Последняя используется в образах Linux, предоставляемых Yandex Cloud. Тип файловой системы возвращается командойblkidв параметреTYPE.Если у вас отличается файловая система, используйте соответствующие команды. Например, для
XFSвыполните:sudo xfs_admin -U generate /dev/vdb2Чтобы проверить, что UUID изменился, снова выполните команду
blkid:sudo blkidРезультат:
/dev/vda2: UUID="0d6dfef0-542d-47ba-b55b-18ab5f5f9210" TYPE="ext4" PARTUUID="752aa845-94ee-4850-9188-71c2f919ee7b" /dev/vdb2: UUID="ea004485-07fb-4128-b20d-e408db1e8ae8" TYPE="ext4" PARTUUID="752aa845-94ee-4850-9188-71c2f919ee7b" ...В Linux при создании снимка или образа сохраняются UUID и PARTUUID разделов диска. Эти данные Linux использует при монтировании разделов, в том числе корневого раздела, поэтому они должны быть уникальными. Например, если склонировать загрузочный диск и подключить его к той же виртуальной машине, на виртуальной машине появятся 2 раздела с одинаковыми UUID. В результате после запуска ВМ, в качестве корневого раздела может быть использован не тот диск, который вы указали загрузочным.
-
Смонтируйте разделы диска с помощью утилиты
mount, например, смонтируйте разделvdb2в папку/mnt:sudo mkdir /mnt/vdb2 sudo mount /dev/vdb2 /mnt/vdb2 -
Выполните команду
df, чтобы проверить состояние файловой системы.
-
Подключитесь к ВМ по RDP.
-
Запустите приложение Управление компьютером (оснастка
compmgmt.msc) с правами администратора. -
В меню Запоминающие устройства выберите Управление дисками.
Примечание
При подключении диска к работающей ВМ он может не отобразиться в списке. В этом случае перезагрузите ОС и повторите шаги этой инструкции.
-
Если подключенный диск Не в сети, нажмите на него правой кнопкой мыши и выберите пункт В сети.
-
При необходимости назначьте букву подключенному диску. Как это сделать читайте в документации Microsoft
. -
Откройте Проводник, чтобы убедиться, что подключенный диск смонтирован и доступен.
Разметить и смонтировать пустой диск
-
Подключите пустой диск к ВМ.
-
Проверьте, подключен ли диск как устройство, и узнайте его путь в системе:
ls -la /dev/disk/by-idРезультат:
total 0 drwxr-xr-x 2 root root 140 Jan 16 12:09 . drwxr-xr-x 6 root root 120 Jan 13 13:51 .. lrwxrwxrwx 1 root root 9 Jan 16 12:09 virtio-fhm1dn62tm5d******** -> ../../vdc lrwxrwxrwx 1 root root 9 Jan 13 13:51 virtio-fhm4ev6dodt9******** -> ../../vdb lrwxrwxrwx 1 root root 10 Jan 13 13:51 virtio-fhm4ev6dodt9********-part1 -> ../../vdb1 lrwxrwxrwx 1 root root 10 Jan 13 13:51 virtio-fhm4ev6dodt9********-part2 -> ../../vdb2 lrwxrwxrwx 1 root root 9 Jan 13 13:51 virtio-nvme-disk-0 -> ../../vdaГде:
- Сетевым дискам соответствуют ссылки вида
virtio-<идентификатор_диска>. Например, записьvirtio-fhm1dn62tm5d******** -> ../../vdcозначает, что неразмеченный диск с IDfhm1dn62tm5d********имеет меткуvdc. - Локальным дискам на выделенных хостах соответствуют ссылки вида
virtio-nvme-disk-<номер_диска>(если вы подключали диски к ВМ при ее создании). Диски нумеруются с нуля. Например, записьvirtio-nvme-disk-0 -> ../../vdaозначает, что первый (нулевой) локальный диск имеет меткуvda.
- Сетевым дискам соответствуют ссылки вида
-
Разметьте диск. Для этого создайте на нем разделы
с помощью утилитыcfdisk, утилитыfdiskили утилитыparted.Выполняйте команды с правами суперпользователя. Для этого в каждой команде используйте
sudoили перед началом работы выполните командуsudo su -, чтобы перевести терминал в режим суперпользователя. Для примера создадим разделы с помощьюfdisk:-
Запустите утилиту:
sudo fdisk /dev/<метка_диска>Где
<метка_диска>— метка диска, который нужно разметить, напримерvdbилиvdc.Вы попадете в меню программы
fdisk. Чтобы получить список доступных команд, введитеmи нажмите Enter. -
Создайте новый раздел — введите
nи нажмите Enter. -
Укажите, что раздел будет основным — введите
pи нажмите Enter. -
Появится предложение выбрать номер раздела. Нажмите Enter, чтобы создать раздел
1. -
Номера первого и последнего секторов раздела оставьте по умолчанию — нажмите Enter дважды.
-
Убедитесь, что раздел успешно создан. Для этого запросите список разделов диска: введите
pи нажмите Enter.Результат:
Device Boot Start End Sectors Size Id Type /dev/vdc1 2048 41943039 41940992 20G 83 LinuxГде
vdc1— метка раздела, состоящая из метки диска и номера раздела. Метка раздела понадобится при выполнении дальнейших действий с разделом. -
Чтобы сохранить внесенные изменения, введите
wи нажмите Enter.
-
-
Отформатируйте раздел в нужную файловую систему. Для этого можно воспользоваться утилитой
mkfs. Например, чтобы отформатировать раздел вext4, выполните команду, указав метку созданного ранее раздела:sudo mkfs.ext4 /dev/<метка_раздела>Результат:
Creating filesystem with 261888 4k blocks and 65536 inodes Filesystem UUID: 584a800c-e1fc-4f66-9228-a444f2d7440d Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: doneГде
Filesystem UUID— уникальный идентификатор раздела. Идентификатор раздела понадобится при настройке автоматического монтирования этого раздела к системе. Получить идентификатор раздела также можно с помощью командыsudo blkid /dev/<метка_раздела>. -
Смонтируйте раздел диска с помощью утилиты
mount. Чтобы смонтировать раздел/dev/<метка_раздела>в директорию/mnt/new_disk, выполните следующую команду:sudo mkdir /mnt/new_disk && sudo mount /dev/<метка_раздела> /mnt/new_disk -
Настройте разрешения на чтение и запись в разделе с помощью утилиты
chmod. Например, чтобы разрешить всем пользователям запись в раздел, выполните следующую команду:sudo chmod a+w /mnt/new_disk -
Настройте автоматическое монтирование раздела в директорию
mnt/new_diskпри запуске ВМ:-
Откройте файл
/etc/fstabс помощью текстового редактораnano:sudo nano /etc/fstab -
Допишите в конец файла следующую строку, указав в параметре
UUIDидентификатор вашего раздела:UUID=<идентификатор_раздела> /mnt/new_disk ext4 defaults 0 2Где
UUID— уникальный идентификатор раздела, полученный ранее при форматировании. Например584a800c-e1fc-4f66-9228-a444f2d7440d. -
Сохраните изменения и закройте файл.
-
-
Проверьте состояние файловых систем:
dfРезультат:
Filesystem 1K-blocks Used Available Use% Mounted on udev 989424 0 989424 0% /dev tmpfs 203524 816 202708 1% /run /dev/vdb2 13354932 2754792 10015688 22% / tmpfs 1017608 0 1017608 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 1017608 0 1017608 0% /sys/fs/cgroup tmpfs 203520 0 203520 0% /run/user/1000 /dev/vdc1 523260 3080 520180 1% /mnt/vdc1
-
Подключитесь к ВМ по RDP.
-
Запустите приложение Управление компьютером (оснастка
compmgmt.msc) с правами администратора. -
В меню Запоминающие устройства выберите Управление дисками.
Примечание
При подключении диска к работающей ВМ он может не отобразиться в списке. В этом случае перезагрузите ОС и повторите шаги этой инструкции.
-
Если подключенный диск Не в сети, нажмите на него правой кнопкой мыши и выберите пункт В сети.
-
Инициализируйте диск. Для этого нажмите на него правой кнопкой мыши и выберите пункт Инициализировать диск. Откроется окно Инициализация диска.
-
Выберите стиль разделов
и нажмите ОК. -
Создайте разделы на диске. Для этого нажмите правой кнопкой мыши на пустой диск и выберите пункт Создать простой том.
-
С помощью Мастера создания простых томов задайте размер раздела, назначьте букву
диска и укажите файловую систему. -
Откройте Проводник, чтобы убедиться, что подключенный диск смонтирован и доступен.