在阿里云加磁盘,服务器空间不够用时通常有两条路:一是扩大现有云盘的容量,二是再加一块数据盘挂到实例上。两种操作在控制台里都是几次点击的事,但接下来在系统里要做的步骤不同。下面分别说明两种流程,最后用两个实际案例收尾。

先想清楚:扩容还是新增
判断标准不复杂。如果系统和业务数据都在同一块盘上,而且这块盘快写满了,直接扩容最省事。扩容后磁盘编号不变,程序路径和配置都不用改。如果想把日志、备份、图片这类数据和系统分开存放,或者需要另一种性能的云盘类型,就该新增一块数据盘,再把对应目录挂上去。
有一点要记住:云盘只能扩大,不能直接缩小。容量规划还没想清楚的时候,先别急着扩原盘,因为它没法缩回去。
一、扩容已有云盘
扩容分两步。先在控制台把云盘容量扩大,再到操作系统里让分区和文件系统认出新空间。只做第一步的话,系统里看到的可用空间不会有任何变化,很多人就卡在这里。
- 先做快照。在云盘页面给目标盘创建快照。扩容本身风险不高,但文件系统操作一旦出错,快照就是最后的退路。确认快照已完成再继续。
- 在控制台扩容。进入ECS控制台,在“存储与快照”下找到“云盘”,选中目标磁盘,点“扩容”,填入新容量后确认。一般不需要停机。
- 确认云盘状态。等状态回到“使用中”,同时确认控制台显示的容量已经变了。
- 在系统里核对。用SSH登录Linux实例,执行lsblk查看磁盘和分区大小。如果磁盘已经是新容量,分区还是旧值,说明后面的步骤还没做完。
- 扩展分区。以根分区为例,设备是/dev/vda、分区编号为1,就执行growpart /dev/vda 1。如果系统里没有growpart,先安装cloud-utils-growpart包。
- 扩展文件系统。ext4执行resize2fs /dev/vda1;XFS则执行xfs_growfs /,它的参数是挂载点,不是设备名。完成后用df -h确认可用空间已经增加。
Windows实例更直观。打开“磁盘管理”,右键对应分区,选“扩展卷”,按向导走完即可。如果磁盘右侧显示的是未分配空间,同样应该扩展卷。新建卷会多出一个独立分区,不是想要的效果。
案例一:电商小团队的MySQL数据盘扩容
某电商团队用一台阿里云ECS跑MySQL,数据盘是200GB的ESSD云盘。大促前订单表增长很快,数据盘使用率到了92%,再写下去有报错的风险。团队先给数据盘做了快照,然后在控制台把容量扩到500GB,等状态恢复。登录服务器后,lsblk显示磁盘已经是500GB,分区还停在200GB。运维依次执行growpart和resize2fs,再用df -h确认可用空间从约16GB增加到约316GB。整个过程大约15分钟,MySQL一直在运行,服务没有中断。
二、新增数据盘并挂载
新增数据盘分四个阶段:创建并挂载云盘,分区和格式化,挂到目录,最后配置开机自动挂载。每一步都会直接作用于设备,执行前最好逐条核对设备名。
- 创建云盘。在ECS控制台的“云盘”页面点“创建云盘”,选与实例相同的可用区,再选类型和容量。创建完成后,在列表里把它挂载到目标实例上。可用区不一致的话,挂载会失败。
- 确认设备名。登录系统,执行lsblk,找出没有挂载点的新磁盘,比如/dev/vdb。不要凭印象猜。
- 分区。容量超过2TB时必须使用GPT分区表。依次执行parted /dev/vdb mklabel gpt,再执行parted /dev/vdb mkpart primary 0% 100%,建一个占满整盘的分区。mklabel会清空分区表,只能对确认是新盘的设备执行。
- 格式化。对新分区执行mkfs.ext4 /dev/vdb1。如果之后打算用XFS,就换成mkfs.xfs。格式化同样会清掉数据,设备名一定要对。
- 挂载。先建挂载点,例如mkdir -p /data,再执行mount /dev/vdb1 /data。这一步只是临时挂载,重启后会失效。
- 设置开机挂载。用blkid /dev/vdb1取到UUID,然后在/etc/fstab里加一行,写清UUID、挂载点、文件系统类型和选项。这里用UUID而不用设备名,因为重启或挂载顺序变化后,设备名可能会变。写完先执行mount -a,没有报错再重启验证。
案例二:日志目录迁移到独立数据盘
某SaaS公司的应用服务器上,系统盘同时放着操作系统、应用程序和日志。一个月下来,日志把40GB的系统盘占满了,服务时不时出现异常。运维新增了一块500GB的高效云盘,按上面的步骤分区、格式化,挂到/data/logs。随后停掉应用,把原有日志复制到新盘,核对文件数量和大小一致,再修改应用的日志路径,重新启动服务。最后在/etc/fstab里用UUID配置挂载,并通过重启测试确认挂载正常。
三、常见问题
- 扩容后系统里没有变化。大多是忘了扩展分区或文件系统。先看lsblk,再按顺序补上这两步。
- 扩容按钮点不了。云盘可能正在做快照、挂载或其他任务,等任务结束再试。部分云盘类型两次扩容之间有间隔限制,具体以控制台提示为准。
- 重启后数据盘不见了。多半是没写进fstab,或者fstab里用的设备名已经变了。改成UUID,再用mount -a验证。
- fstab写错,机器起不来。写完一定先执行mount -a。如果已经启动失败,可以通过控制台的VNC或救援模式进入系统修正。
操作前的几个提醒
- 扩容前先建快照,并确认快照已经完成。
- 对系统盘操作前,先确认实例镜像和云盘类型是否支持在线扩容。
- 新增数据盘时,确认可用区和实例一致。
- 每条涉及分区或格式化的命令执行前,都要核对设备名,避免把数据盘当成系统盘处理。