华为云 ECS 数据盘挂载踩坑清单:从格式化到 fstab 的 5 个坑
华为云 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 验证。前者防设备漂移,后者防开机失败——这两个动作能避开本文一半的坑。
- 点赞
- 收藏
- 关注作者
评论(0)