1.登录阿里云控制台,找到你要扩容的磁盘,在更多下拉菜单那里,选择 “磁盘扩容”,选择想要的容量,并支付。下图里显示我有个数据盘,大小是 100G,这是我扩容之后的容量,之前它是一个 21G 的数据盘。
2.查看服务器的磁盘情况
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 8.5G 29G 23% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 824K 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs tmpfs 783M 0 783M 0% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/1001
/dev/vdb ext4 21G 18G 1.7G 92% /disk1
上面的 /dev/vda1 是我的服务器的系统盘,大小是 40G,下面的 /dev/vdb 是我的数据盘,这是我要扩容的磁盘,现在显示它的大小仍然是 21G,这个磁盘让我挂载到了 /disk1 这个目录下面。
分区工具fdisk用法介绍
fdisk命令参数介绍
p、打印分区表。
n、新建一个新分区。
d、删除一个分区。
q、退出不保存。
w、把分区写进分区表,保存并退出。
3.开始扩容/dev/vdb数据盘
$ fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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: 0x000a7708
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 83884031 41940992 83 Linux
Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 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: 0xa88e0c37
Device Boot Start End Blocks Id System
/dev/vdb1 2048 209715199 104856576 83 Linux
显示 /dev/xdb 是 107GB,其实 /dev/vdb1 是 /dev/vdb 这个磁盘的一个分区,它现在的大小是 100G,我们要去删除掉这个分区,重新再创建一个新的分区,新的分区的大小可以设置成 100G,就是我扩容以后的磁盘容量。
4.重建磁盘分区
注意:执行下面的操作之前,一定先在阿里云的控制台去给你要处理的磁盘打个快照,这样出了问题可以恢复。
先卸载掉挂载的 /disk1,我把 /dev/vdb 挂载到这个位置上了,你的这个挂载点可能跟我的不一样,你要根据自己的实际情况去执行下面的命令。卸载:
umount /disk1
如果遇到我这种情况
umount: /disk1: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
用fuser命令来查看磁盘占用情况:
$ fuser -m -v /disk1/
USER PID ACCESS COMMAND
/disk1: root kernel mount /disk1
root 5483 F.c.m java
root 6138 ..c.. nginx
hkd 10311 ..c.. bash
root 13158 ..c.. nginx
root 13159 ..c.. nginx
可以用kill命令来杀掉这些进程即可,然后再此umount
umount /disk1
5.开始扩容
删除并重建分区,执行:
$ fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
提示输入命令,输入 d,表示删除分区。
会继续提示,再提示输入命令,输入 n
然后让你选择 Partition type,分区的类型,这里输入 p,表示主分区
又让你选择分区号,输入 1
起始扇区,回车使用默认的值
last 扇区,截止扇区,回车,使用默认值
提示输入命令,输入 wq,可以退出
然后再执行命令:
$ e2fsck -f /dev/vdb
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb: 110032/1376256 files (0.7% non-contiguous), 4775668/5505024 blocks
e2fsck 是检查 ext2/ext3/ext4 文件系统用的工具。
然后再执行命令:
$ resize2fs /dev/vdb
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb to 26214400 (4k) blocks.
The filesystem on /dev/vdb is now 26214400 blocks long.
resize2fs 可以改变 ext2/ext3/ext4 文件系统的容量。
重新挂载磁盘
现在你的数据盘应该就是扩容之后的容量了,可以重新再挂载一下它
mount /dev/vdb /disk1/
再检查一下:
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 8.7G 29G 24% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 792K 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs tmpfs 783M 0 783M 0% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/1001
/dev/vdb ext4 99G 18G 76G 20% /disk1
可以看到/disk1 已经成功扩容到100G了