华为云云硬盘 EVS 实操:给 ECS 挂载数据盘、分区格式化与在线扩容

举报
yd_212552561 发表于 2026/11/04 09:07:13 2026/11/04
【摘要】 本文以华为云ECS和云硬盘EVS为例,完整介绍给实例挂载数据盘、分区格式化、用UUID设置开机自动挂载,以及控制台扩容后在实例内扩展分区和文件系统的在线扩容流程,并总结常见易错点。

当云服务器的系统盘空间吃紧、数据库文件和日志越长越大时,最稳妥的做法往往不是直接扩系统盘,而是给实例挂一块独立的数据盘。数据与系统分离之后,重装系统、迁移业务和扩容都会更从容。本文以华为云弹性云服务器 ECS 和云硬盘 EVS 为例,完整走一遍挂载数据盘、分区格式化、开机自动挂载,以及业务不中断的在线扩容,全部步骤都可以在一台测试实例上复现。

一、先想清楚:为什么要单独挂数据盘

系统盘装操作系统和运行环境,数据盘只放业务数据,两者分开有三个直接好处。第一是隔离风险,系统出问题需要重装时,数据盘可以先卸载、事后再挂回,不用跟着系统盘一起被覆盖。第二是扩容灵活,数据盘可以单独扩容,不必动系统盘。第三是迁移方便,数据盘可以从一台实例卸载后挂到另一台同可用区的实例上,数据跟着盘走。

动手之前先确认三件事:云硬盘和云服务器在同一个可用区,否则挂载会失败;实例处于运行中;你已经用有权限的账号登录控制台,并且清楚这块盘是全新的空盘。这一点特别重要:格式化会清空磁盘上的全部数据,全新空盘才能执行格式化,已经有数据的盘绝对不要格式化。

二、把云硬盘挂载到实例上

第一步是在控制台创建一块云硬盘,容量按业务预留量来定,类型选择与业务匹配的普通高性能盘即可。创建后在云硬盘列表中找到它,选择挂载,目标实例选择要扩容的那台 ECS。挂载成功后,控制台上这块盘的状态会变为正在使用,挂载点一般显示为类似 /dev/vdb 的设备名。

挂载只是让实例在硬件层面看到这块盘,操作系统里还看不到可用的文件系统,这就引出了下一步。先登录实例,用下面这条命令确认新盘是否已经出现:

lsblk

如果输出里多了一块没有分区、没有挂载点的盘,例如 vdb,那就是刚挂上的数据盘。系统盘一般是 vda,千万不要把两者弄混。确认设备名是后续所有操作的前提,写错设备名可能误伤系统盘。

三、分区:给新盘划分一块可用空间

对于容量在 2TB 以内的单块数据盘,划分一个主分区是最简单实用的做法。用交互式分区工具打开这块盘:

fdisk /dev/vdb

在交互界面里依次输入 n 新建分区,p 选择主分区,分区号和起止扇区直接回车取默认值,也就是把整块盘划为一个分区,最后输入 w 保存退出。退出后再次执行 lsblk,应当能看到 vdb 下面多了一个 vdb1,这就是刚建好的分区。

如果盘的容量超过 2TB,或者后续还要划分多个分区,分区方案需要另外规划,本文先不展开。单分区方案的好处是步骤少、出错点少,适合大多数存放数据文件、日志和备份的场景。

四、格式化:让分区变成可用的文件系统

分区只是划出了边界,还需要格式化才能存放文件。Linux 上常用的文件系统是 ext4,它的兼容性和稳定性都很好,适合一般业务数据。如果业务是数据库或者对小文件读写特别频繁,也可以根据实际情况选择 xfs,本文以 ext4 为例:

mkfs -t ext4 /dev/vdb1

格式化完成后,用 blkid 查看分区的唯一标识 UUID,后面做开机自动挂载要用到它:

blkid /dev/vdb1

记下输出里的 UUID。设备名在实例重启或盘符变化时可能漂移,UUID 不会变,所以持久化挂载一定要用 UUID,这是很多挂载失败案例的根源。

五、挂载并设置开机自动挂载

先创建一个挂载目录,例如把数据统一放在 /data 目录下:

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

执行 df -h 之后,如果能看到 /dev/vdb1 挂载在 /data 上,并且容量与购买的容量一致,说明手动挂载已经成功。此时可以往 /data 里写一个测试文件,再读出来验证读写正常。

手动挂载在实例重启后会失效,所以必须写进 fstab 文件实现开机自动挂载。编辑 /etc/fstab,追加一行,格式如下,其中的 UUID 换成你自己用 blkid 查到的值:

UUID=你的分区UUID /data ext4 defaults 0 2

保存之后不要立刻重启,先执行 mount -a 模拟一次开机挂载,如果没有任何报错,再执行 df -h 确认 /data 仍然正常挂载。fstab 写错会导致实例启动卡在挂载步骤,这一步的验证不能省。

六、在线扩容:不停业务把盘变大

数据量涨上来之后,经常需要在业务不中断的情况下扩容。EVS 支持在线扩容,流程分控制台和实例内两步,缺一不可。

第一步在控制台操作:找到这块云硬盘,选择扩容,输入新的目标容量并确认。控制台扩容只放大了磁盘本身,分区和文件系统还没有变大,所以实例里看到的可用空间暂时不会变化。

第二步在实例内操作:先用 lsblk 确认磁盘本身已经变大,分区还是原来的大小。然后安装 growpart 工具并扩展分区:

growpart /dev/vdb 1

注意这里写的是整块盘 vdb 加分区号 1,中间有一个空格。分区扩展完成后,再根据文件系统类型扩展文件系统,ext4 用 resize2fs,xfs 用 xfs_growfs:

resize2fs /dev/vdb1

最后执行 df -h 验证,/data 的容量应当已经变为扩容后的大小,里面的原有文件都还在。整个过程不需要卸载数据盘,正在运行的业务也不用停,但扩容前仍然建议先对重要数据做一次备份,这是任何存储操作都应当遵守的习惯。

七、容易踩的几个坑

第一个坑是格式化错盘。操作前务必用 lsblk 核对设备名和容量,新盘是空盘、无分区、无挂载点,满足这三点再格式化。第二个坑是 fstab 用设备名而不是 UUID,盘符漂移后实例可能无法正常启动。第三个坑是只在控制台扩容,忘记在实例内扩展分区和文件系统,结果 df -h 里容量一直不变。第四个坑是把数据直接写在系统盘的某个目录里,时间一长系统盘被日志撑满,实例会因为磁盘满而出现各种奇怪故障。

另外还要注意,云硬盘挂载有可用区限制,跨可用区挂载是行不通的;卸载数据盘之前,要先确认没有进程正在使用它上面的文件,否则卸载会失败。养成操作前备份、操作后验证的习惯,比记住任何一条命令都重要。

八、总结

完整流程可以归纳为五步:控制台创建并挂载云硬盘,实例内用 lsblk 确认设备,分区工具划分一个主分区,格式化并用 UUID 写入 fstab 实现开机自动挂载,需要扩容时先在控制台扩容、再在实例内扩展分区和文件系统。数据盘与系统盘分离之后,存储的扩展性和安全性都会明显提升,后续无论是迁移、备份还是扩容,都有了更大的操作空间。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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