一般业务初期,由于业务量不大,没有做长远考虑,导致有些服务器磁盘容量配置比较小。
但是随着业务量起来,各种数据量也越来越大,此时我们的硬盘容量已经无法满足,日益新增的数据。
那么问题来了?现在怎么扩容硬盘?
难道买一块更大的硬盘,然后分区格式化,重新挂载把数据迁移过去?这种方案显然可以实现,但是数据不停的在新增,怎么保证迁移的数据和源数据一致呢?那就只有把业务停了,再迁移数据了,但是这样又对业务造成了影响。那么非要这么干,只有就等到夜深人静,大家都睡觉的时候,你再停掉业务,慢慢迁移。
如果一开始使用了逻辑卷也没这么多麻烦,直接扩展逻辑卷就好了。
难道除了上面的方案,就没有其他办法了吗?答案是肯定有,那么接来下阿汤博客就通过实际操作来分享,在未配置LVM逻辑卷的情况下如何实现磁盘热扩容,云服务器和Vmware虚拟机都可以。
注:在实际测试过程中,Vmware虚拟机如果只有一块系统盘,运行中状态无法编辑磁盘的大小,如果是两块硬盘,非系统盘可以直接扩容磁盘大小,实现热扩容。
1、安装growpart工具和resize2fs工具。
[root@amd5.cn ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@amd5.cn ~]# yum install cloud-utils-growpart xfsprogs -y
2、安装好工具以后,扩容现有磁盘,如果是阿里云或者其他云服务器,直接在线扩容,然后服务器就自动识别了。这里主要说下Vmware的在线扩容。
①先查看服务器的磁盘容量
[root@amd5.cn ~]# fdisk -l 磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x65618af9 设备 Boot Start End Blocks Id System /dev/sdb1 2048 83886046 41941999+ 83 Linux 磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c0b38 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 84912127 41943040 83 Linux /dev/sda3 84912128 93300735 4194304 82 Linux swap / Solaris /dev/sda4 93300736 209715199 58207232 5 Extended /dev/sda5 93302784 209715199 58206208 83 Linux [root@amd5.cn ~]# df -lh | grep sdb /dev/sdb1 40G 213M 40G 1% /test
②在sdb1挂载的目录创建一个文件。
[root@amd5.cn ~]# cat /test/www.amd5.cn.txt 阿汤博客测试文件
③登录Vcenter把sdb 40G扩容到50G。
④、让系统重新识别/dev/sdb磁盘。
[root@amd5.cn ~]# echo 1 > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan [root@amd5.cn ~]# fdisk -l 磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x65618af9 设备 Boot Start End Blocks Id System /dev/sdb1 2048 83886046 41941999+ 83 Linux 磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000c0b38 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 84912127 41943040 83 Linux /dev/sda3 84912128 93300735 4194304 82 Linux swap / Solaris /dev/sda4 93300736 209715199 58207232 5 Extended /dev/sda5 93302784 209715199 58206208 83 Linux
此时查看/dev/sdb已经比原来多了10G,说明系统已经重新读取磁盘容量。
3、使用growpart工具扩容分区。
[root@amd5.cn ~]# growpart /dev/sdb 1 #1表示第一个分区扩容。 unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2] [root@amd5.cn ~]# LANG=en_US.UTF-8 [root@amd5.cn ~]# growpart /dev/sdb 1 CHANGED: partition=1 start=2048 old: size=83883999 end=83886047 new: size=104855519 end=104857567
如果执行growpart /dev/sdb 1报错“unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]”,就设置LANG=en_US.UTF-8,再执行。
4、使用resize2fs工具扩容文件系统。
①先查看分区格式。
[root@amd5.cn ~]# blkid /dev/sdb1 /dev/sdb1: UUID="7006eed9-3fb5-444c-a467-4b98fcf25cd5" TYPE="xfs"
②扩容文件系统。
[root@amd5.cn ~]# xfs_growfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=9, agsize=1310656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=10485499, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 10485499 to 13106939
注:如果是ext4格式,则使用resize2fs /dev/sdb1
5、查看扩容情况。
[root@amd5.cn ~]# df -h | grep sdb /dev/sdb1 50G 214M 50G 1% /test [root@amd5.cn ~]# cat /test/www.amd5.cn.txt 阿汤博客测试文件