在日常使用阿里云服务器时,经常会遇到数据盘写满的情况。如果只是单纯在控制台扩容磁盘,却发现系统里 /dev/vda2 并没有立刻扩展,这时需要手动操作分区和文件系统。本篇文章整理了从扩容到 resize2fs 报错,再到最终解决的完整过程。
一、问题现象
服务器磁盘情况如下:
bash
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 850G 0 disk
├─vda1 253:1 0 500G 0 part /
└─vda2 253:2 0 350G 0 part /lostData
在对 /dev/vda 扩容后,尝试执行:
bash
resize2fs /dev/vda2
报错:
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Device or resource busy while trying to open /dev/vda2
Couldn't find valid filesystem superblock.
可以看到系统自带的 resize2fs 版本过低,无法正确识别新分区。
二、解决步骤
1. 确认磁盘扩容是否生效
bash
fdisk -l /dev/vda
如果 /dev/vda 大小大于之前的 850G,说明控制台扩容已经传递到系统。
2. 扩展分区
扩容后的空间不会自动分配到 /dev/vda2,需要手动扩展分区。
bash
yum install -y cloud-utils-growpart
growpart /dev/vda 2
执行完成后,再次确认:
bash
lsblk
此时 /dev/vda2 应该已经变大。
3. 检查文件系统
在调整文件系统前,先运行 e2fsck 检查:
bash
e2fsck -f /dev/vda2
4. 扩展文件系统
接下来使用 resize2fs 将文件系统扩展到整个分区:
bash
resize2fs /dev/vda2
如果旧版本报错,可以升级 e2fsprogs:
bash
wget https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.5/e2fsprogs-1.46.5.tar.gz
tar -xzf e2fsprogs-1.46.5.tar.gz
cd e2fsprogs-1.46.5
./configure
make && make install
安装完成后,再次运行 resize2fs 即可成功。
5. 验证扩容结果
bash
df -hT | grep lostData
可以看到 /lostData 文件系统大小已经扩展到新的磁盘容量。
三、总结
在阿里云 CentOS 环境下,磁盘满了之后的扩容流程可以总结为:
- 控制台扩容云盘
growpart扩展分区e2fsck检查文件系统resize2fs扩展文件系统(必要时升级 e2fsprogs)df -hT验证结果
这样就可以安全、在线地扩展数据盘容量,避免因磁盘满导致业务中断。