Подключить файловое хранилище к виртуальной машине
Важно
Файловое хранилище можно подключить только к ВМ под управлением операционной системы Linux с версией ядра 5.4 или выше.
Чтобы проверить версию ядра, выполните команду sudo uname -r
.
-
Если ВМ запущена и работает (статус
RUNNING
), остановите ее. -
Привяжите файловое хранилище к ВМ в Compute Cloud:
Консоль управленияCLITerraformAPI- В консоли управления
выберите каталог, в котором создано файловое хранилище. - Выберите сервис Compute Cloud.
- На панели слева выберите
Файловые хранилища. - Выберите нужное хранилище.
- Перейдите на вкладку Виртуальные машины.
- Нажмите кнопку
Подключить к ВМ. - В открывшемся окне:
- Выберите ВМ.
- Укажите имя устройства, под которым файловое хранилище будет доступно в ВМ. Сохраните это значение: оно понадобится при монтировании хранилища.
- Нажмите Подключить к ВМ.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--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
— имя устройства, под которым файловое хранилище будет доступно в ВМ. Необязательный параметр.По умолчанию в качестве имени устройства используется идентификатор файлового хранилища.
Результат:
id: epdj4upltbiv******** folder_id: b1g681qpemb4******** created_at: "2024-04-29T15:50:19Z" name: vm-01 ... filesystems: - mode: READ_WRITE device_name: attached-filesystem filesystem_id: epdtcr9blled******** ...
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Если вы не указали для ВМ параметр
allow_stopping_for_update
в значенииtrue
, сделайте это.Чтобы подключить файловое хранилище к ВМ, добавьте к ее описанию блок
filesystem
с параметромfilesystem_id
(см. пример).-
Откройте файл конфигурации Terraform и добавьте фрагмент с описанием хранилища к описанию ВМ:
Пример описания хранилища в конфигурации ВМ в Terraform
... resource "yandex_compute_instance" "vm-1" { name = "test-vm" platform_id = "standard-v3" zone = "ru-central1-a" filesystem { filesystem_id = "fhmaikp755gr********" } } ...
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
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.
- В консоли управления
-
Смонтируйте файловое хранилище на ВМ.
-
Если вы не знаете имя устройства для монтирования, получите его:
yc compute instance get <имя_ВМ>
Результат:
... filesystems: - mode: READ_WRITE device_name: storagename filesystem_id: epdb1jata63j******** ...
Сохраните значение поля
device_name
в блокеfilesystems
. Это имя устройства для монтирования, которое понадобится далее. -
Подключитесь к ВМ по SSH.
-
Выполните команду:
sudo mount -t virtiofs <имя_устройства> <путь_монтирования>
Где:
<имя_устройства>
— значение поляdevice_name
, сохраненное ранее. В примере выше имя устройства —storagename
. У вас имя устройства может отличаться.<путь_монтирования>
— каталог или диск, в который будет смонтировано файловое хранилище. Например:/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
-