有台阿里云的服务器,数据盘利用率到了90%,需要立马扩容。之前没有操作过,担心把数据搞丢了。就在阿里云上按量购买了一台服务器测试下,这里记录一下。
首先购买的服务器的系统用centos 7.8和线上的一样。(阿里云的磁盘扩容文档,分为linux和windows两类),所有的linux系统应该都一样。
这里需要一个额外的数据盘20G。终扩容的结果是要把这个20G硬盘,扩容至30G。
用的一些linux命令的简介
- lsblk -- 列出块设备,还可以查看到具体的分区情况
- fdiks -- 创建和维护磁盘分区的程序
- growpart -- 调整分区的一个命令,磁盘中未使用的空间,调整到指定的分区中
- blkid -- 查看分区的类型/属性
- resize2fs -- 扩容文件系统的大小
- df -- 查看linux服务器的文件系统的磁盘空间占用情况
如果遇到 growpart 命令不存在
yum install cloud-utils-growpart
#yum install xfsprogs
阿里云磁盘扩容的操作步骤
- 登陆阿里云控制台对需要操作的磁盘,进行快照。!!数据安全一位
- 阿里云控制台扩充磁盘的大小,并重启。
- 扩容分区,扩容文件系统。
准备工作(正常扩容不用这个步骤,这里是准备一个需要扩容的磁盘)
因为是新使用的一块磁盘,没有格式化和建立文件系统,所以首行格式化和建立文件系统的操作。
fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c07c3
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 41943039 20970496 83 Linux
Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
可以看到二块硬盘 /dev/vdb还没有使用, 使用lsblk
也可以。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
vdb 253:16 0 20G 0 disk
创建分区
fdisk /dev/vdb
# 输入 n 新建一个分区,这里测试,一路回车 后 输入 w
后看到 The partition table has been altered! 表示操作成功。
操作结果是在 /dev/vdb 创建一个分区,这个分区占用的整块的磁盘空间。
使用 mkfs.ext4 /dev/vdb1 创建文件系统
mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
...
Writing superblocks and filesystem accounting information: done
进行挂载操作
mkdir /data
mount /dev/vdb1 /data
echo "/dev/vdb1 /data ext4 defaults 0 0" >> /etc/fstab
这样扩容的准备工作就做好了,
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
vdb 253:16 0 20G 0 disk
└─vdb1 253:17 0 20G 0 part /data
这里可以看到一个可以正常使用的磁盘 /dev/vdb ,分区已经做好,文件夹系统也正常。
具体的操作的步骤
扩容前查看一下文件系统的信息
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 461M 0 461M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 464K 471M 1% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/vda1 20G 1.9G 17G 11% /
tmpfs 95M 0 95M 0% /run/user/0
/dev/vdb1 20G 45M 19G 1% /data
这里终操作的结果是文件系统 /dev/vdb1 的大小是 30G
1) -- 阿里云控制台调整磁盘大小,并重启。(操作前记得快照,防止误操作导致数据丢失)
2) -- 连接服务器 查看下磁盘的信息
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
vdb 253:16 0 30G 0 disk
└─vdb1 253:17 0 20G 0 part /data
可以看到磁盘 vdb 磁盘已经到30G, 分区 vdb1 占用的是20G (通过df可以看到文件系统也是20g)。
扩充分区
# @一个参数是 磁盘
# @二个参数是 那个分区
growpart /dev/vdb 1
CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=62912479 end=62914527
# 再次查看磁盘信息,可以看到 vdb1 分区已经完整的占用30G (df 中文件系统还是20G)
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
vdb 253:16 0 30G 0 disk
└─vdb1 253:17 0 30G 0 part /data
扩容文件系统
resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vdb1 is mounted on /data; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vdb1 is now 7864059 blocks long.
查看结果
df -h | grep "vdb1"
/dev/vdb1 30G 44M 28G 1% /data
可以看到文件系统已经调整到了 30G
总结
阿里云磁盘扩容话比较简单的, 其实操作是调整了三个大小。
1. 磁盘大小 -- 通过阿里云控制台调整(调整后重启)
2. 分区大小 -- 通过 growpart /dev/vdb 1
3. 文件系统大小 -- 通过 resize2fs /dev/vdb1