很多人买阿里云ECS时只盯着CPU和内存,业务跑起来才发现系统盘不够放数据。这时候数据盘就派上用场了。它和系统盘是分开的,可以单独购买、单独扩容、单独备份,就算数据盘出了问题,操作系统也不受影响。

数据盘和系统盘有什么不同
系统盘放操作系统和基础软件,数据盘放业务数据,比如数据库文件、用户上传的图片、日志和代码仓库。两者最需要留意的差别有三点:
- 系统盘跟着实例一起创建。数据盘可以在创建实例时一起买,也可以之后单独创建再挂载。
- 数据盘只能挂载到同一地域、同一可用区的ECS实例上。迁移数据前先确认这一点,否则买好了也接不上。
- 数据盘的释放策略可以单独设置。实例释放时数据盘会不会一起删掉,购买或挂载前就要定好。
购买前先想清楚三件事
选数据盘时,先看下面三个问题。
- 云盘类型。数据库和交易类业务优先选ESSD云盘,延迟低,性能会随容量提升。日志、备份、归档这类数据用高效云盘就够了,单价也低一些。
- 实例规格。不同ECS规格能挂载的云盘数量和性能上限不一样,买之前去官方文档查一下你选的规格。
- 计费方式。数据盘可以按量付费,也可以包年包月。临时测试用按量,长期稳定跑的业务包年包月一般更划算。
举个例子,数字为示意。一个做本地生活服务的小团队,订单库最初放在高效云盘上,高峰期查询明显变慢,监控里磁盘延迟经常超过10毫秒。他们只把数据盘换成ESSD云盘,ECS规格没动,查询响应时间就明显缩短了。很多性能问题其实出在磁盘上,不一定是CPU或内存不够。
挂载和格式化的步骤
新买的数据盘不能直接用,要在操作系统里完成分区、格式化和挂载。以Linux为例,假设新盘的设备名是/dev/vdb,步骤如下:
- 先用lsblk确认设备名,别把系统盘当成了新盘。
- 用parted创建GPT分区表和主分区。
- 执行mkfs.ext4 /dev/vdb1完成格式化。注意,格式化会清空分区上的数据,只能对新盘或确定无用的盘操作。
- 创建挂载点,比如mkdir /data,再执行mount /dev/vdb1 /data。
- 用blkid查到分区的UUID,把挂载信息写入/etc/fstab,这样重启后才会自动挂载。
fstab里建议用UUID,不要用/dev/vdb这种设备名。设备名可能会因为重启或增减磁盘而变化,fstab写错了,系统甚至可能起不来。改之前先备份这个文件。
在线扩容要注意什么
业务数据涨起来以后,可以直接在控制台扩容数据盘,一般不用停机。但控制台只扩大了云盘本身,操作系统里的分区和文件系统还得单独处理。ext4用resize2fs,XFS用xfs_growfs,分区比较大时可以先用growpart扩展分区。另外,数据盘只能扩容不能直接缩小,扩之前最好先算清楚容量需求。
再看一个真实感更强的情况。某日志服务的数据盘两周内使用率从60%涨到92%,运维在控制台把容量从200GB扩到500GB,接着扩展分区和文件系统,服务没有中断。如果只做了前一步,没处理文件系统,df看到的容量不会变,很容易误以为扩容失败了。
备份和快照
数据盘最常见的风险是误删、误操作和勒索病毒,所以备份比容量更要紧。阿里云可以给数据盘创建快照,既能手动做,也能配置自动快照策略,设定时间点和保留天数。快照适合快速回滚,但不能替代异地备份。数据库最好用自带的备份工具,定期把逻辑备份导出到OSS对象存储。
常见问题怎么排查
- 挂载后容量不对:多半是分区或文件系统还没扩展,回到上面的步骤逐项检查。
- 重启后数据盘没挂上:看看fstab是不是用了设备名,或者有没有语法错误。
- 实例释放后数据没了:购买时就要确认释放策略。重要数据盘建议设置为实例释放时保留。