Attaching a file storage to a VM
Warning
You can only attach a file storage to VMs running Linux OS with kernel version 5.4 or higher.
To check the kernel version, run sudo uname -r
.
-
If the VM is running (its status is
RUNNING
), you should stop the VM first. -
Attach a file storage to the VM in Compute Cloud:
Management consoleTerraformAPI- In the management console
, select the folder where you created the file storage. - Select Compute Cloud.
- In the left-hand panel, select
File storages. - Select the required storage.
- Go to the Virtual machines tab.
- Click
Attach to VM. - In the window that opens:
- Select the VM.
- Specify the device name for accessing the file storage in the VM. Save this name as you will need it when mounting the storage.
- Click Attach to VM.
If you don't have Terraform, install it and configure the Yandex Cloud provider.
Set the
allow_stopping_for_update
parameter totrue
on your VM, if you have not done it yet.To attach a file storage to the VM, add the
filesystem
section with thefilesystem_id
parameter to the VM description (see the example below).-
Open the Terraform configuration file and add a fragment with the storage description to the VM description:
Sample storage description in the VM configuration in Terraform... resource "yandex_compute_instance" "vm-1" { name = "test-vm" platform_id = "standard-v3" zone = "ru-central1-a" filesystem { filesystem_id = "fhmaikp755gr********" } } ...
-
Apply the changes:
-
In the terminal, change to the folder where you edited the configuration file.
-
Make sure the configuration file is correct using the command:
terraform validate
If the configuration is correct, the following message is returned:
Success! The configuration is valid.
-
Run the command:
terraform plan
The terminal will display a list of resources with parameters. No changes are made at this step. If the configuration contains errors, Terraform will point them out.
-
Apply the configuration changes:
terraform apply
-
Confirm the changes: type
yes
in the terminal and press Enter.
-
You can check the storage attachment to the VM using the management console
or this CLI command:yc compute instance get <VM_name>
Use the attachFilesystem REST API method for the Instance resource or the InstanceService/AttachFilesystem gRPC API call.
- In the management console
-
Mount the file storage on the VM:
-
If you do not know the device name, run this command:
yc compute instance get <VM_name>
Result:
... filesystems: - mode: READ_WRITE device_name: storagename filesystem_id: epdb1jata63j******** ...
Save the
device_name
field value from thefilesystems
section. This is the name of the device to mount the file storage on that you will need later. -
Connect to the VM over SSH.
-
Run this command:
sudo mount -t virtiofs <device_name> <mount_path>
Where:
<device_name>
: Previously saveddevice_name
field value. In the example above, it isstoragename
. Your device name may differ.<mount_path>
: Folder or disk on which to mount the file storage, e.g.,/mnt/vfs0
.
-
Check that the file storage has been mounted:
df -T
Result:
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
-
For the file storage to be mounted every time the VM is started, add the following string to the
/etc/fstab
file:<device_name> <mount_path> virtiofs rw 0 0
-