在阿里云 ECS 实例上挂载数据盘(即云盘,如高效云盘、SSD云盘、ESSD云盘等)分为 在线挂载(热挂载) 和 离线挂载(需重启) 两种场景。以下是完整、安全、推荐的操作流程(以 Linux 系统为例,如 CentOS/Alibaba Cloud Linux/Ubuntu):
✅ 前提条件
- 已购买并创建好一块未挂载的数据盘(云盘);
- 该云盘与 ECS 实例处于同一可用区(Zone);
- ECS 实例处于 运行中(Running) 或 已停止(Stopped) 状态(推荐先停止再挂载,避免数据风险;若需热挂载,需确保应用支持且已做好备份);
- 操作系统为 Linux(Windows 挂载方式不同,本文不展开)。
📌 步骤一:在阿里云控制台挂载云盘(在线或离线)
- 登录 阿里云控制台 → 进入 ECS 实例列表;
- 找到目标实例 → 点击实例 ID 进入详情页;
- 在左侧菜单选择 云盘(Disks) → 点击右上角 挂载云盘;
- 选择已购但未挂载的云盘(状态为“待挂载”);
- 设置挂载点(即设备名,如
/dev/vdb、/dev/xvdb或/dev/nvme1n1—— 实际设备名需登录后lsblk查看确认);- ⚠️ 注意:不要随意指定不存在的设备名,控制台会自动分配可用设备名(如
vdb,vdc…),你只需选择云盘即可;
- ⚠️ 注意:不要随意指定不存在的设备名,控制台会自动分配可用设备名(如
- (可选)勾选 随实例释放(建议勾选,避免资源泄露);
- 点击 确定 完成挂载。
✅ 控制台挂载后,云盘已连接到实例,但尚未格式化、也未挂载到文件系统目录,需继续执行步骤二、三。
📌 步骤二:登录 ECS,确认磁盘设备并分区(首次使用必做)
# 1. 查看所有块设备(确认新盘设备名)
lsblk
# 或
sudo fdisk -l | grep "Disk /dev/"
✅ 输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 100G 0 disk ← 新挂载的数据盘(未分区、未格式化)
💡 提示:
vdb是设备名(可能为xvdb、nvme1n1等,取决于实例规格和OS),请以lsblk输出为准。
🔹 若是首次使用(无分区、无文件系统)→ 需要分区 + 格式化:
# 2. 对新盘分区(如使用 parted 更适合大容量盘;此处以 fdisk 为例)
sudo fdisk /dev/vdb
# fdisk 交互操作(按提示输入):
# n → 创建新分区(主分区 p,默认1)
# 回车 → 默认起始扇区
# 回车 → 默认结束扇区(用满整块盘)
# w → 写入分区表
# 3. 同步分区信息(部分内核需)
sudo partprobe /dev/vdb
# 4. 格式化为 ext4 文件系统(推荐;也可用 xfs)
sudo mkfs.ext4 /dev/vdb1
# 或(XFS):
# sudo mkfs.xfs -f /dev/vdb1
✅ 注意:
- 若云盘 ≤ 2TB 且无需特殊需求,
fdisk即可;- 若 > 2TB,必须使用
parted+ GPT 分区表(fdisk不支持);- 格式化会清空所有数据!请确保是全新盘或已备份。
📌 步骤三:创建挂载目录 & 挂载文件系统
# 1. 创建挂载目录(如 /data)
sudo mkdir -p /data
# 2. 临时挂载(立即生效,重启失效)
sudo mount /dev/vdb1 /data
# 3. 验证挂载是否成功
df -h /data
lsblk
✅ 应看到类似输出:
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 99G 61M 94G 1% /data
📌 步骤四:设置开机自动挂载(关键!否则重启后丢失)
⚠️ 务必使用 UUID(而非设备名 /dev/vdb1),防止设备名因内核加载顺序变化而错乱。
# 1. 获取分区 UUID
sudo blkid /dev/vdb1
# 输出示例:/dev/vdb1: UUID="a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8" TYPE="ext4"
# 2. 备份 fstab(重要!)
sudo cp /etc/fstab /etc/fstab.bak
# 3. 编辑 fstab(添加一行)
echo "UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 /data ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
# 🔍 参数说明:
# defaults:默认挂载选项(rw,suid,dev,exec,auto,nouser,async)
# noatime:提升IO性能(不记录访问时间)
# 0:不备份(dump)
# 2:非根文件系统,启动时 fsck 检查顺序(根为1)
✅ 验证 fstab 是否正确(避免语法错误导致无法启动):
sudo mount -a # 重新读取并挂载所有 fstab 条目(无输出即成功)
sudo systemctl daemon-reload # (可选,部分系统需要)
✅ 强烈建议:执行
mount -a后再df -h /data确认挂载成功,再重启测试。
🧪 最终验证(可选但推荐)
# 1. 重启测试(生产环境请在业务低峰期操作)
sudo reboot
# 2. 登录后检查
df -h /data
lsblk
cat /proc/mounts | grep vdb1
❗常见问题与注意事项
| 问题 | 原因与解决方案 |
|---|---|
mount: unknown filesystem type 'LVM2_member' |
误将 LVM 物理卷当普通盘挂载 → 用 sudo pvs/vgs 检查,勿直接格式化 |
Device is busy |
进程正在使用该盘 → sudo lsof +D /mnt/path 或 sudo fuser -v /dev/vdb1 查杀 |
| 挂载后写入慢/IO异常 | 检查云盘类型(是否选错性能等级)、IOPS配额、实例规格是否匹配;启用 noatime 可提升性能 |
| Windows 实例? | 使用「磁盘管理」初始化并新建简单卷,无需命令行;注意在线扩容需先扩展卷再扩展分区 |
| 数据盘已存在数据? | 跳过 mkfs! 直接 mount /dev/vdb1 /data 即可;挂载前建议 file -s /dev/vdb1 确认文件系统类型 |
✅ 补充:一键脚本(谨慎使用,建议先理解原理)
# 示例:自动挂载 /dev/vdb 为 /data(仅限全新盘)
DEV="/dev/vdb"
MOUNT_POINT="/data"
PART="${DEV}1"
sudo mkdir -p $MOUNT_POINT
sudo fdisk -u -w always -W always $DEV <<EOF
n
p
1
w
EOF
sudo partprobe $DEV
sudo mkfs.ext4 -F $PART
sudo mount $PART $MOUNT_POINT
UUID=$(sudo blkid -s UUID -o value $PART)
echo "UUID=$UUID $MOUNT_POINT ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
sudo mount -a && echo "✅ Success! $(df -h $MOUNT_POINT)"
⚠️ 生产环境请勿直接运行脚本,务必逐条验证!
如需 扩容数据盘、更换云盘类型、跨可用区迁移 或 Windows 挂载指南,欢迎继续提问 👍
需要我为你生成对应 Ubuntu/Alibaba Cloud Linux 的适配命令,或提供自动化脚本(含错误处理),也可以告诉我 😊
云知道CLOUD