Подключить файловое хранилище к виртуальной машине
Важно
Файловое хранилище можно привязать только к ВМ под управлением операционной системы Linux с версией ядра 5.4 или выше.
Чтобы проверить версию ядра, выполните команду sudo uname -r.
Подключение состоит из следующих этапов — привязки хранилища к ВМ в Compute Cloud и монтирования устройства в операционной системе ВМ. Для привязки выберите удобный интерфейс, а команды монтирования выполните внутри ВМ.
Подготовьте ВМ
Если ВМ находится в статусе RUNNING, остановите ее. Дождитесь статуса STOPPED.
Привяжите файловое хранилище
- В консоли управления
выберите каталог, в котором создано файловое хранилище. - Перейдите
в сервис Compute Cloud. - На панели слева выберите
Диски и хранилища и перейдите на вкладку Файловые хранилища. - В строке файлового хранилища нажмите
и выберите пункт Подключить к ВМ. - В открывшемся окне:
- Выберите ВМ.
- Укажите имя устройства, под которым файловое хранилище будет доступно в ВМ. Например, укажите
storagename. Сохраните это значение: оно понадобится при монтировании хранилища. - Нажмите Подключить к ВМ.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
-
Посмотрите описание команды CLI для привязки файлового хранилища к ВМ:
yc compute instance attach-filesystem --help -
Получите список файловых хранилищ в каталоге по умолчанию:
yc compute filesystem listРезультат:
+----------------------+-------------------+------------+---------------+--------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | DESCRIPTION | +----------------------+-------------------+------------+---------------+--------+-------------+ | epdtcr9blled******** | first-filesystem | 1073741824 | ru-central1-a | READY | | | epd3f4gv8bs4******** | second-filesystem | 1073741824 | ru-central1-a | READY | | +----------------------+-------------------+------------+---------------+--------+-------------+ -
Получите список виртуальных машин в каталоге по умолчанию:
yc compute instance listРезультат:
+----------------------+-------+---------------+---------+--------------+-------------+ | ID | NAME | ZONE ID | STATUS | EXTERNAL IP | INTERNAL IP | +----------------------+-------+---------------+---------+--------------+-------------+ | epdj4upltbiv******** | vm-01 | ru-central1-a | RUNNING | 51.250.**.** | 192.168.*.* | | 1pc3088tkv4m******** | vm-02 | ru-central1-a | RUNNING | 84.201.**.** | 192.168.*.* | +----------------------+-------+---------------+---------+--------------+-------------+ -
Привяжите файловое хранилище к ВМ:
yc compute instance attach-filesystem \ --id <идентификатор_ВМ> \ --filesystem-id <идентификатор_файлового_хранилища> \ --device-name <имя_устройства>Где:
-
--id— идентификатор ВМ.Вместо идентификатора вы можете указать имя ВМ в параметре
--name. -
--filesystem-id— идентификатор файлового хранилища.Вместо идентификатора вы можете указать имя файлового хранилища в параметре
--filesystem-name. -
--device-name— имя устройства, под которым файловое хранилище будет доступно в ВМ, напримерstoragename. Необязательный параметр.По умолчанию в качестве имени устройства используется идентификатор файлового хранилища. Сохраните имя устройства: оно понадобится при монтировании хранилища.
Результат:
id: epdj4upltbiv******** folder_id: b1g681qpemb4******** created_at: "2024-04-29T15:50:19Z" name: vm-01 ... filesystems: - mode: READ_WRITE device_name: storagename filesystem_id: epdtcr9blled******** ... -
-
Проверьте привязку хранилища к ВМ:
yc compute instance get <имя_ВМ>
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Если вы не указали для ВМ параметр allow_stopping_for_update в значении true, сделайте это.
Чтобы привязать файловое хранилище к ВМ, добавьте к ее описанию блок filesystem с параметром filesystem_id (смотрите пример).
-
Откройте файл конфигурации Terraform и добавьте фрагмент с описанием хранилища к описанию ВМ:
... resource "yandex_compute_instance" "vm-1" { name = "vm-01" platform_id = "standard-v3" zone = "ru-central1-a" filesystem { filesystem_id = "epdtcr9blled********" device_name = "storagename" } } ...Сохраните значение
device_name: оно понадобится при монтировании хранилища. -
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter. -
Проверьте привязку хранилища к ВМ в консоли управления
или с помощью команды CLI:yc compute instance get <имя_ВМ>
Чтобы привязать файловое хранилище к ВМ, воспользуйтесь методом REST API attachFilesystem для ресурса Instance или вызовом gRPC API InstanceService/AttachFilesystem.
Сохраните имя устройства, указанное при привязке: оно понадобится при монтировании хранилища.
Запустите ВМ
Запустите ВМ, если она остановлена, и дождитесь статуса RUNNING.
Смонтируйте файловое хранилище
-
Подключитесь к ВМ по SSH.
-
Создайте каталог монтирования, например
/mnt/vfs0:sudo mkdir -p /mnt/vfs0 -
Смонтируйте файловое хранилище:
sudo mount -t virtiofs <имя_устройства> <путь_монтирования>Где:
-
<имя_устройства>— имя устройства, которое вы указали при привязке хранилища в Compute Cloud. Например,storagename. Если вы не указали имя, используйте идентификатор файлового хранилища.Как узнать имя устройства через CLI
Выполните на компьютере с настроенным YC CLI:
yc compute instance get <имя_ВМ>Результат:
... filesystems: - mode: READ_WRITE device_name: storagename filesystem_id: epdtcr9blled******** ...Имя устройства указано в поле
device_nameв блокеfilesystems. -
<путь_монтирования>— существующий каталог, в который будет смонтировано файловое хранилище. Например,/mnt/vfs0.
-
-
Проверьте, что файловое хранилище смонтировано:
df -TРезультат:
Filesystem Type 1K-blocks Used Available Use% Mounted on udev devtmpfs 988600 0 988600 0% /dev tmpfs tmpfs 203524 780 202744 1% /run /dev/vda2 ext4 13354932 1909060 10861420 15% / tmpfs tmpfs 1017604 0 1017604 0% /dev/shm tmpfs tmpfs 5120 0 5120 0% /run/lock tmpfs tmpfs 1017604 0 1017604 0% /sys/fs/cgroup tmpfs tmpfs 203520 0 203520 0% /run/user/1000 storagename virtiofs 66774660 0 66774660 0% /mnt/vfs0 -
Чтобы файловое хранилище монтировалось при каждом запуске ВМ, добавьте в файл
/etc/fstabстроку вида:<имя_устройства> <путь_монтирования> virtiofs rw 0 0
Что дальше
- Настройте приложения на ВМ так, чтобы они записывали файлы в смонтированное хранилище.
- Для совместной работы с файлами подключите хранилище к другой ВМ в той же зоне доступности.
- Если места станет недостаточно, увеличьте размер хранилища.