云服务器磁盘扩容实战:系统盘和数据盘怎么加?

云服务器磁盘扩容实战:系统盘和数据盘怎么加?

你的服务器磁盘又满了。df -h显示/分区100%。网站开始报错,数据库写不进去。你第一反应是删文件,但发现没什么可删的了。这时候你想起云厂商说可以“扩容磁盘”——但你没操作过,怕数据丢,怕服务器起不来。

今天把磁盘扩容的完整流程拆开讲。先做一件事,然后分两步走。

先做一件事:创建快照

扩容前必须创建快照。云盘扩容涉及分区表和文件系统操作,万一操作失误,数据可能丢失。快照是回滚的保险

各大云厂商都支持在线创建快照,不需要关服务器。创建快照期间不支持扩容,等快照完成再操作

第一步:在控制台扩容云盘

登录云厂商控制台,找到云盘列表,选择目标云盘,点击“扩容”

两个关键参数:

扩容方式:推荐在线扩容,不需要重启实例,修改后直接生效。部分老旧实例规格或特定操作系统版本仅支持离线扩容,需要关机操作

新容量:只能扩大不能缩小。系统盘一般上限1TiB,数据盘上限32TiB

控制台扩容完成后,云盘容量变大了,但操作系统还不认——需要登录服务器执行第二步。

第二步:扩容分区和文件系统(Linux)

这一步是最容易出错的。不同场景操作不同,先搞清楚你的情况。

场景一:数据盘没有分区,直接挂载了文件系统

bash

# 先确认设备名和挂载点
df -Th
# 输出示例:/dev/vdb    ext4    40G     /data

扩展现有文件系统:

  • ext4文件系统:sudo resize2fs /dev/vdb
  • xfs文件系统:sudo xfs_growfs /data(挂载点)

场景二:数据盘已有分区(最常见)

先确认设备名和分区号:

bash

lsblk
# 输出示例:vdb   150G
#          └─vdb1  100G  /data

安装扩容工具(如果没装):

  • Ubuntu/Debian:sudo apt-get install -y cloud-guest-utils
  • CentOS/RHEL:sudo yum install -y cloud-utils-growpart

扩容分区(设备名和分区号之间有空格):

bash

sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1

返回CHANGED表示成功。然后扩容文件系统,和场景一命令一样。

场景三:系统盘扩容

系统盘操作和数据盘类似,但有一点要注意——需要先确认MBR还是GPT分区格式。

bash

fdisk -l /dev/vda
# 如果输出 "Disk label type: dos" 是MBR
# 如果输出 "Disk label type: gpt" 是GPT

如果系统盘使用了MBR分区,且扩容后容量超过2TiB,MBR不支持超过2TiB的空间,需要将分区格式转换为GPT,这个操作会清除数据,建议在扩容前就评估清楚,必要时重新初始化系统盘

场景四:Windows系统扩容

登录服务器,打开“磁盘管理”。右键点击“重新扫描磁盘”。如果新增空间没有自动显示,可能需要重启实例(部分旧版virtio驱动需重启才能识别)

右键C盘或数据盘分区,选择“扩展卷”,按向导操作即可

扩容后检查

bash

df -Th

确认分区大小已增加到目标值。再检查业务是否正常运行。

一个真实案例

一台数据库服务器,数据盘/dev/vdb容量100GB,使用率95%。通过控制台扩容到200GB后,执行lsblk看到设备容量已变,但分区/dev/vdb1还是100GB。执行growpart /dev/vdb 1后分区扩容,再执行resize2fs /dev/vdb1df -h显示分区变为200GB,数据库恢复正常写入。

最后一句

磁盘扩容分两步:控制台扩容+操作系统扩容。先创建快照,再操作。Linux下用growpart扩分区,用resize2fsxfs_growfs扩文件系统。系统盘和数据盘的区别在于扩容内容和操作细节——系统盘影响操作系统运行,数据盘只存数据。两者扩容流程类似,但系统盘需要更谨慎(确保分区格式兼容),数据盘相对更灵活。MBR分区扩容不能超过2TiB,GPT分区没有这个限制。扩容前查一下分区格式,避免白忙一场。

知识库

网站图片CDN加速选型:免费vs付费怎么选?

2026-7-7 18:11:12

知识库

对象存储入门:用云存储存放网站图片和备份

2026-7-8 17:34:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧