- 更新:2021-03-07 23:58:04
- 首发:2021-03-07 23:54:29
- 教程
- 2859
云服务器云盘扩容相关文章挺多的,坑也比较多。特整理正确操作如下。
支持的发行版
- Ubuntu
- CentOS
- Debain
- Alpine
- Arch
在 Ubuntu 16.04
、Ubuntu 18.04
、Ubuntu 20.04
测试过。
在CentOS 6
、CentOS 7
、CentOS 8
测试过。
在阿里云
、腾讯云
、AWS EC2
实测过扩容,以上云服务商都支持云盘扩容。
需要注意的是,虽然扩容方法支持系统盘和数据盘,然而部分云服务提供商并不支持系统盘扩容,只支持在购买云服务器/VPS的时候选择系统盘大小。通常这些服务商都支持对系统盘进行备份,可以通过新购服务器还原系统盘镜像然后再执行此文操作的方式进行迁移扩容。
此方法不支持ARM服务器扩容。一般来说,ARM服务器、Raspberry Pi、NanoPi等arm架构的设备都有专门的扩容方法,需要查阅相应文档进行扩容。
磁盘管理常用命令
df -TH #查询磁盘挂载和使用情况
fdisk -l #查看磁盘信息和分区信息
lsblk #查看block设备的信息
blkid /dev/vda1 #查询分区文件系统
安装和使用方法不再赘述。进行扩容前请查询相关信息,谨慎操作。
growpart说明
growpart - 在分区表中扩展分区以填充可用空间,默认扩展所有剩余空间。
第一个参数 - 磁盘:要操作的设备或磁盘映像。
第二个参数 - 分区号:要调整大小的分区号(从1开始计算)。
此命令在磁盘或磁盘映像中重写分区表,以使给定的分区尽可能多的占用空间。运行后,该分区将在磁盘末尾或下一个分区的开始处结束。
扩容方法
首先,到云服务器提供商管理后台进行系统盘/数据盘扩容。部分云服务提供商购买新服务器后采用镜像还原的方式,因此得到的系统盘大小和购买的不一致,此方法也适用于此类情况的扩容。
安装扩容工具growpart
。
Ubuntu and Debian:
sudo apt update
sudo apt install cloud-utils -y
CentOS:
sudo yum install cloud-utils-growpart -y
Alpine
和Arch
,参考这里。
如果是XFS文件系统
,还需要安装xfsprogs
,否则会提示xfs_growfs command not found
。
执行扩容空命令:
sudo growpart -N /dev/sdb 1
对应修改磁盘和分区号,将报告程序会如何扩容。
确认无误后,执行扩容命令:
sudo growpart /dev/sdb 1
如果提示unexpected output in sfdisk --version
错误,运行LANG=en_US.UTF-8
切换字符编码类型,再试。
growpart
只是扩容了磁盘分区,还需要进行文件系统分区扩容调整。
通过blkid /dev/vda1
查询文件系统。
调整文件系统分区命令说明:
- resize2fs 针对ext2 ext3 ext4文件系统
- xfs_growfs 针对xfs文件系统
执行
resize2fs /dev/vda1
或
xfs_growfs /dev/mapper/cl00-root
执行后,可以通过df -TH
查看扩容成功。
关于cloud-utils
cloud-utils:一组实用的云服务器工具程序。
cloud-localds
-为cloud-init创建磁盘以利用nocloud数据源ec2metadata
-查询和显示AWS EC2 metadatagrowpart
-重写分区表,以便分区占用所有可以使用的空间mount-image-callback
-将文件挂载到临时挂载点,然后调用命令和参数resize-part-image
-将分区映像和包含的文件系统调整为新大小ubuntu-cloudimage-query
-获取符合特定条件的最新Ubuntu AWS AMIvcs-run
-获取存储库并执行带有参数的命令write-mime-multipart
-用于创建mime-multipart文件的实用程序,需要通过用户数据和cloud-init进行使用
暂无内容




由于我使用的方案并不需要“快捷指令”等APP的配合。也无需任何系统权限。因此存在被滥用可能,请大家不要因为此事联系我,谢谢。
直接问AI吧😂
作者老哥,代码不开源。可以大致说一下实现思路吗😕
谢谢,你写的最详细,也很有效的解决了撕裂问题
很棒的教程,比我之前配置ap的方式更优雅