本文基于vmware、kvm虚拟化环境、使用CentOS7系统验证,在原有虚拟机硬盘的基础上修改磁盘空间大小达到扩容目的,扩容期间无需重启服务器,实时生效。
本文演示了几种场景,磁盘扩容前请在测试环境中验证:
1、根磁盘使用了lvm卷,对根磁盘空间进行扩容
2、根磁盘已分区,未使用lvm卷,对根磁盘空间进行扩容
3、数据盘未分区,直接格式化挂载使用,对挂载中的数据盘空间进行扩容
4、数据盘已分区,分区后格式化挂载使用,对挂载中的数据盘空间进行扩容
注:修改磁盘空间大小后,未生效的情况,参考vmware磁盘在线扩容后不显示扩容后的空间(无需重启):https://blog.whsir.com/post-6379.html
根磁盘使用了lvm卷,对根磁盘空间进行扩容
注:理论适用于数据盘lvm卷扩容,虚拟化平台虚拟机扩容GPT分区修正分区参考:https://blog.whsir.com/post-7092.html
我这里原有磁盘/是50GB,编辑虚拟机磁盘,修改50GB为100GB,注意我这里没有添加新的磁盘,而是在原有磁盘的基础上修改
此时通过fdisk -l可以看到/dev/vda已经变成100GB了
1 |
fdisk -l |
Disk /dev/vda: 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: 0x000b9509
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 104857599 51379200 8e Linux LVM
接下来对磁盘进行分区操作(注意:LVM不一定是8e,执行8e前,先通过L查看所对应的LVM编号)
1 |
fdisk /dev/vda |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p Partition number (3,4, default 3): 默认回车 First sector (104857600-209715199, default 104857600): 默认回车 Using default value 104857600 Last sector, +sectors or +size{K,M,G} (104857600-209715199, default 209715199): Using default value 209715199 Partition 3 of type Linux and of size 50 GiB is set Command (m for help): t Partition number (1-3, default 3): 默认回车 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): p Disk /dev/vda: 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: 0x000b9509 Device Boot Start End Blocks Id System /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 104857599 51379200 8e Linux LVM /dev/vda3 104857600 209715199 52428800 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. |
至此磁盘分区已完成,此处可能会看到磁盘正在被使用的提示,无需理会
重读分区表
1 |
partprobe |
初始化
1 |
pvcreate /dev/vda3 |
查看卷组名称(VG Name)
1 |
vgdisplay |
将新分区加入卷组
1 |
vgextend centos /dev/vda3 |
查看卷详情
1 |
vgdisplay -v |
正常的话会看到以下类似内容
PV Name /dev/vda3
PV UUID irbiLE-Himw-OvWM-JtPd-vjhC-Ha2p-aeTwTc
PV Status allocatable
Total PE / Free PE 12799 / 12799
合并容量
1 |
lvextend -r -l +100%FREE /dev/mapper/centos-root |
1 2 3 4 5 6 7 8 9 10 11 12 |
Size of logical volume centos/root changed from 45.24 GiB (11582 extents) to 95.24 GiB (24382 extents). Logical volume centos/root successfully resized. meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2964992 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=11859968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=5791, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 11859968 to 24967168 |
此时df -h可以看到磁盘扩容成功
根磁盘已分区,未使用lvm卷,对根磁盘空间进行扩容
我这里原有磁盘/是50GB,编辑虚拟机磁盘,修改50GB为100GB,注意我这里没有添加新的磁盘,而是在原有磁盘的基础上修改
此时通过fdisk -l可以看到/dev/vda已经扩容了,确定根磁盘空间已显示扩容后的容量,注意根所在分区,我这里根是/dev/vda3
1 |
fdisk /dev/vda |
刷新分区
1 |
partprobe /dev/vda |
lsblki查看分区已改变
执行扩容命令(注意:我这里是xfs文件系统)
1 |
xfs_growfs /dev/vda3 |
如果是ext*系列文件系统,则执行resize2fs /dev/sdb1,执行完成后,立即生效。
此时df -h可以看到已扩容成功
数据盘未分区,直接格式化挂载使用,对挂载中的数据盘空间进行扩容
数据盘未分区操作,而是直接格式化后进行挂载,这种方式对磁盘扩容来说,最方便,也最快
将原有的数据盘大小,修改成200G,这里是直接修改数值
fdisk -l看到磁盘大小已修改成200G
既然容量显示没有问题了,接下来我们开始扩容
扩容仅需要一条命令(注意:我这里是xfs文件系统),所以执行xfs_growfs /dev/sdb即可,如果是ext*系列文件系统,则执行resize2fs /dev/sdb,执行完成后,立即生效
此时再通过df -h可以看到扩容成功,并且没有影响到已挂载的目录
数据盘已分区,分区后格式化挂载使用,对挂载中的数据盘空间进行扩容
我这里对数据盘sdb进行了分区,并且挂载了/data目录,现在对sdb1进行扩容
调整数据盘磁盘空间,调整后可以看到sdb磁盘空间已经变成200G
开始扩容数据盘
1 |
fdisk /dev/sdb |
注意:请按照下图中顺序进行,很重要。
刷新分区
1 |
partprobe /dev/sdb |
此时通过lsblki可以看到sdb1已显示200G
1 |
xfs_growfs /dev/sdb1 |
如果是ext*系列文件系统,则执行resize2fs /dev/sdb1,执行完成后,立即生效。
原文链接:虚拟化环境在线磁盘扩容无需重启立即生效,转载请注明来源!