如何在 Magalu Cloud 中通过 CLI 将 Block Storage 卷附加到您的 Linux VM
Source: Dev.to
介绍
当我们开始使用云时,常常把虚拟机想象成“整台电脑”:CPU、内存以及操作系统所在的磁盘。许多供应商的系统盘是临时的:如果重新创建 VM、切换类型、删除实例或发生故障,存储可能会消失。对于测试环境这或许还能接受,但对重要数据则不可行。
这时 Block Storage(块存储)就派上用场了。它提供一个块磁盘,像第二块硬盘或 SSD 一样暴露给 VM,独立于虚拟机的生命周期。你在操作系统内部管理文件系统(ext4、XFS 等),而云平台负责性能、复制和可用性。
在 Magalu Cloud 中,卷按不同工作负载提供了基于 NVMe、低延迟的优化配置,适用于数据库、共享文件系统、I/O 密集型应用,以及职责分离(例如:数据库卷、上传卷、日志卷)。
典型使用场景
- 数据库在重新创建 VM 时不能丢失。
- 电商的上传目录需要独立于 VM 扩容。
- 将应用日志存放在弹性磁盘上,以便后续分析。
- 为预生产环境准备的卷,基于生产快照创建。
本文的目标是一步步演示 如何创建 Block Storage 卷、将其附加到 Magalu Cloud 的 Linux VM 并进行使用,使用 mgc CLI。
在 Magalu Cloud 中创建和使用块存储卷
假设你已经在 Magalu Cloud 上拥有一台 Linux VM,安装并登录了 mgc CLI,并且需要一个 10 GiB 的新磁盘。
重要提示: 卷和 VM 必须位于同一 区域 和 可用区 (AZ)。卷是物理关联到特定基础设施的;尝试将其附加到不同可用区的 VM 会失败。
典型流程如下:
- 在正确的区域/AZ 创建卷。
- 将卷附加到 VM。
- 在 VM 内部格式化设备并挂载到目录。
- 使挂载在重启后保持持久。
通过 CLI 创建卷
mgc block-storage volumes create \
--name volume-app-prod \
--size 10 \
--type.name cloud_nvme1k
--name为卷在所在区域内指定逻辑标签。--size指定大小(GiB)。--type.name选择 IOPS/延迟配置(如cloud_nvme1k)。
创建完成后,检查状态:
mgc block-storage volumes list
新卷应显示状态为 available,表示可以附加。
将卷附加到虚拟机
获取 VM 和卷的 ID 后,执行:
mgc block-storage volumes attach \
--id vol-1234567890abcdef \
--virtual-machine-id vm-abcdef1234567890
稍等片刻;卷的状态会从 available 变为 in-use,表明已与 VM 关联。虽然平台支持在运行中的实例上附加卷,但在关键环境中建议先关闭实例。
在 VM 内部准备卷
在 VM 中,新卷会以块设备形式出现,通常是 /dev/vdb。列出设备:
lsblk
输出会显示系统盘(vda)和新卷(vdb),后者没有分区也没有文件系统。
创建文件系统
如果卷是全新的,使用(例如)ext4创建文件系统:
sudo mkfs.ext4 /dev/vdb
注意: 如果卷是从快照创建的,它已经包含文件系统和数据;不要 再次格式化。
将卷挂载到目录
选择挂载点,例如 /mnt/data:
sudo mkdir -p /mnt/data
sudo mount /dev/vdb /mnt/data
df -h | grep /mnt/data
此后,写入 /mnt/data 的所有数据都会存储在 Block Storage 卷上。
使用 /etc/fstab 使挂载持久化
为了在重启后自动重新挂载,需要在 /etc/fstab 中添加一条记录。使用文件系统的 UUID,即使设备顺序变化也保持稳定:
sudo blkid /dev/vdb
示例输出:
/dev/vdb: UUID="abcd-1234-ef56-7890" TYPE="ext4"
编辑 /etc/fstab:
sudo nano /etc/fstab
添加以下行(将 abcd-1234-ef56-7890 替换为实际 UUID):
UUID=abcd-1234-ef56-7890 /mnt/data ext4 defaults,nofail 0 2
保存后测试挂载:
sudo mount -a
df -h | grep /mnt/data
如果一切正常,卷将在每次系统启动时自动挂载。