华为云 ECS 挂载 EVS 数据盘并配置开机自动挂载的完整实践(10-11更新)
在华为云上新建 ECS 时,系统盘往往只给 40GB,一旦跑数据库、日志或容器镜像,很快就不够用。标准做法是单独购买一块 EVS 数据盘挂载上去。下面把整套流程从零到开机自动挂载完整走一遍,全部命令可直接复制执行。
一、前置条件
- 一台已开机的 ECS,能通过 SSH 登录(本文以 CentOS 7 / x86_64 为例)。
- 在 EVS 控制台购买一块数据盘(本文为 100GB 高 IO),并「挂载」到该 ECS,记录挂载点,例如
/dev/vdb。 - 确认数据盘上没有任何需要保留的数据——格式化会清空整盘。
二、确认磁盘已就位
登录后先用 lsblk 查看块设备,应该能看到一块没有分区、没有挂载点的 vdb:
lsblk
# 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 <-- 新数据盘,尚无分区
三、分区与格式化
数据盘如果只放一种数据,建议直接整盘建一个分区,便于以后扩容和备份。用 fdisk 建分区:
fdisk /dev/vdb
# n -> p -> 1 -> 回车(默认起始) -> 回车(默认结束) -> w 写入分区表
partprobe /dev/vdb
# 格式化为 ext4(大文件、通用场景推荐)
mkfs.ext4 /dev/vdb1
如果只是挂一块盘且不打算再分区,也可以直接 mkfs.ext4 /dev/vdb 整盘格式化。二者选其一即可,本文按分区方式继续。
四、临时挂载并确认容量
mkdir -p /data
mount /dev/vdb1 /data
df -h /data
# Filesystem Size Used Avail Use% Mounted on
# /dev/vdb1 99G 60M 94G 1% /data
五、写入 /etc/fstab 实现开机自动挂载
关键点:不要用 /dev/vdb1 这种设备名写 fstab,重启后盘符可能变化。正确做法是用文件系统的 UUID:
blkid /dev/vdb1
# /dev/vdb1: UUID="3f2a1c9e-...." TYPE="ext4"
# 把 UUID 追加进 fstab(用 >> 追加,别覆盖)
echo "UUID=3f2a1c9e-.... /data ext4 defaults,nofail 0 2" >> /etc/fstab
# 校验 fstab 语法,避免重启后进入 emergency mode
mount -a
findmnt --verify
其中 nofail 很重要:万一数据盘异常,系统仍能正常启动,不至于卡在修复模式。0 2 表示不 dump、开机第二顺位做 fsck。
六、验证
# 卸载后重挂,模拟开机流程
umount /data && mount -a && df -h /data
# 重启做最终确认
reboot
重启后再次执行 df -h /data,若能看到 /dev/vdb1 已挂载,说明自动挂载生效。
七、常见坑点
- 用设备名写 fstab:重启后 /dev/vdb 变 /dev/vdc,导致挂载失败,务必用 UUID。
- 忘记 nofail:数据盘掉线时系统无法启动,只能进控制台救援。
- ext4 与 xfs 选择:海量小文件、需要在线扩容选 xfs(
mkfs.xfs,fstab 末列写 0 0);通用场景 ext4 即可。 - 后续扩容:EVS 在线扩容后,分区盘需
growpart+resize2fs,整盘格式化则直接resize2fs /dev/vdb。
按以上步骤,ECS 的数据盘即可稳定挂载并开机自启,配合华为云的快照/备份服务,数据可靠性也有保障。
八、小结与延伸
数据盘挂载本身并不复杂,真正容易翻车的是「用设备名写 fstab」和「忘记 nofail」这两点,生产环境务必避免。如果对数据可靠性要求更高,建议同时开启 EVS 的自动备份策略与云服务器快照,并定期做一次恢复演练。对于多盘场景,可以统一用 UUID 管理,配合 Ansible 等配置管理工具批量下发,避免逐台手工操作带来的不一致。
另外,如果后续需要把数据盘从一台 ECS 迁移到另一台,华为云支持先卸载再挂载到目标机器,只要目标机器架构与文件系统一致,挂载后即可直接使用;跨可用区迁移则需借助快照或备份完成。掌握这些细节,云上存储的日常运维基本就够用了。
- 点赞
- 收藏
- 关注作者
评论(0)