华为云 ECS 数据盘挂载踩坑清单:从格式化到 fstab 的 5 个坑

举报
yd_231613284 发表于 2026/11/03 12:51:32 2026/11/03
【摘要】 华为云 ECS 数据盘挂载踩坑清单:从格式化到 fstab 的 5 个坑为什么单独写这篇给 ECS 挂一块数据盘,操作本身只要五条命令,但每一个环节都有对应的翻车方式:盘买了看不到、fstab 写错开不了机、扩容了容量没变。这篇把完整命令序列和 5 个真实踩坑点放在一起,照着走一遍,坑都能避开。先给完整操作序列一块全新的数据盘,从空盘到可用就是这七步: 1. 确认盘已经挂到实例上(新盘通常叫...

华为云 ECS 数据盘挂载踩坑清单:从格式化到 fstab 的 5 个坑
为什么单独写这篇
给 ECS 挂一块数据盘,操作本身只要五条命令,但每一个环节都有对应的翻车方式:盘买了看不到、fstab 写错开不了机、扩容了容量没变。这篇把完整命令序列和 5 个真实踩坑点放在一起,照着走一遍,坑都能避开。
先给完整操作序列
一块全新的数据盘,从空盘到可用就是这七步:

1. 确认盘已经挂到实例上(新盘通常叫 /dev/vdb)

lsblk

2. 分区(小于 2TiB 用 fdisk 足够)

fdisk /dev/vdb

交互里依次输入:n(新建) → p(主分区) → 回车×3(默认) → w(写入)

3. 格式化

mkfs -t ext4 /dev/vdb1

4. 建挂载点并挂载

mkdir -p /data
mount /dev/vdb1 /data

5. 取 UUID,写进 fstab 实现随系统启动挂载

blkid /dev/vdb1
echo ‘UUID=这里换成blkid输出的值 /data ext4 defaults 0 2’ >> /etc/fstab

6. 关键一步:先验证 fstab 没写错

umount /data
mount -a
df -h

7. 验证通过,重启也不会丢

reboot # 重启后 lsblk + df -h 确认还在
下面是每一步背后的坑。
坑 1:买完盘在系统里「看不到」
控制台挂载成功后,lsblk 里会多出一个 vdb,但它下面没有分区、没有文件系统,直接 mount /dev/vdb 会报错。
原因:块设备和文件系统是两回事。新盘是空白的,必须走「分区 → 格式化 → 挂载」三步。
判断标准很简单:
lsblk -f

NAME FSTYPE LABEL UUID MOUNTPOINT

vda ext4 … /

vdb ← 没有 FSTYPE 就是空盘

坑 2:fstab 里写设备名,重启后开不了机
最经典的坑。很多人图省事在 fstab 里写 /dev/vdb1。
问题在于:云盘的设备名不保证稳定。卸载再重新挂载、调整挂载顺序后,vdb 可能变成 vdc。系统启动时按 fstab 挂载,找不到 /dev/vdb1 就会进 emergency mode,卡在启动界面。
正确做法是写 UUID——文件系统格式化时生成的唯一标识,跟设备名无关:
blkid /dev/vdb1

/dev/vdb1: UUID=“e2f1a3b4-…” TYPE=“ext4”

把输出里的 UUID 抄进 fstab。以后不管设备名怎么漂,挂载都稳。
坑 3:fstab 写错一个字符,整机进不来
fstab 是开机必读文件,写错一个空格都可能让系统卡在启动流程。两个保命动作:
写完立刻验证,不要等重启:
mount -a # 没有任何输出 = 语法正确且挂载成功
万一已经进 emergency mode,按提示输入 root 密码进去后:
mount -o remount,rw / # 根分区默认只读,先改成可写
vi /etc/fstab # 修掉错误的那行,或者注释掉
reboot
另外 fstab 最后两列数字也有讲究:0 0 表示不做 dump 备份、开机不做磁盘检查;数据盘建议 0 2(根分区是 1,其他分区排 2)。写成 0 1 会和根分区抢检查顺序。
坑 4:买了 3TiB 的盘,只看到 2TiB
fdisk 用的是 MBR 分区表,最大只支持 2TiB。超过 2TiB 的数据盘必须用 GPT:
parted /dev/vdb

(parted) mklabel gpt

(parted) mkpart primary 0% 100%

(parted) quit

或者一步到位:
parted -s /dev/vdb mklabel gpt mkpart primary 0% 100%
买盘前想清楚容量:2TiB 以内 fdisk 随手就用,超过就必须 GPT,两类工具混着用容易把自己绕进去。
坑 5:控制台扩容了,df -h 容量没变
云盘支持在线扩容,但控制台把盘从 40GiB 扩到 100GiB 后,df -h 里还是 40GiB——因为只扩了块设备,文件系统没跟上。
两步补齐:

1. 把分区扩到整个盘

growpart /dev/vdb 1

2. 扩文件系统,命令按类型选:

resize2fs /dev/vdb1 # ext4:后面跟设备名
xfs_growfs /data # xfs:后面跟挂载点,不是设备名!
最容易混的就是最后这条:ext4 和 xfs 的扩容命令参数完全不同,xfs_growfs /dev/vdb1 是错的,会报 Is not a mounted XFS filesystem。
先 lsblk -f 看清 FSTYPE 是 ext4 还是 xfs,再选命令。
完整自查清单
lsblk -f # 盘在、有分区、FSTYPE 正确
df -h # 挂载点容量符合预期
cat /etc/fstab # 用的是 UUID 不是 /dev/vd??
mount -a # 无报错
echo test > /data/1.txt && cat /data/1.txt # 读写正常
小结
数据盘挂载的坑有一个共同模式:块设备、分区、文件系统、挂载点、fstab 是五层东西,出问题时先想清楚是哪一层的问题,再用对应的命令处理。
两个习惯值得保持:fstab 永远写 UUID;每次改完 fstab 必跑 mount -a 验证。前者防设备漂移,后者防开机失败——这两个动作能避开本文一半的坑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。