阿汤博客-承接Linux服务器维护、服务器配置与管理,有意者可以联系博主!

Linux未配置LVM逻辑卷,如何实现磁盘热扩容

运维命令 157℃ 0评论

一般业务初期,由于业务量不大,没有做长远考虑,导致有些服务器磁盘容量配置比较小。

但是随着业务量起来,各种数据量也越来越大,此时我们的硬盘容量已经无法满足,日益新增的数据。

那么问题来了?现在怎么扩容硬盘?

难道买一块更大的硬盘,然后分区格式化,重新挂载把数据迁移过去?这种方案显然可以实现,但是数据不停的在新增,怎么保证迁移的数据和源数据一致呢?那就只有把业务停了,再迁移数据了,但是这样又对业务造成了影响。那么非要这么干,只有就等到夜深人静,大家都睡觉的时候,你再停掉业务,慢慢迁移。

如果一开始使用了逻辑卷也没这么多麻烦,直接扩展逻辑卷就好了。

难道除了上面的方案,就没有其他办法了吗?答案是肯定有,那么接来下阿汤博客就通过实际操作来分享,在未配置LVM逻辑卷的情况下如何实现磁盘热扩容,云服务器和Vmware虚拟机都可以。

注:在实际测试过程中,Vmware虚拟机如果只有一块系统盘,运行中状态无法编辑磁盘的大小,如果是两块硬盘,非系统盘可以直接扩容磁盘大小,实现热扩容。

1、安装growpart工具和resize2fs工具。

[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[[email protected] ~]# yum install cloud-utils-growpart  xfsprogs -y

2、安装好工具以后,扩容现有磁盘,如果是阿里云或者其他云服务器,直接在线扩容,然后服务器就自动识别了。这里主要说下Vmware的在线扩容。

①先查看服务器的磁盘容量

[[email protected] ~]# 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

[[email protected] ~]# df -lh | grep sdb
/dev/sdb1        40G  213M   40G    1% /test

②在sdb1挂载的目录创建一个文件。

[[email protected] ~]# cat /test/www.amd5.cn.txt 
阿汤博客测试文件

③登录Vcenter把sdb 40G扩容到50G。

Linux未配置LVM逻辑卷,如何实现磁盘热扩容

④、让系统重新识别/dev/sdb磁盘。

[[email protected] ~]# echo 1 > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan 
[[email protected] ~]# 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工具扩容分区。

[[email protected] ~]# growpart /dev/sdb 1  #1表示第一个分区扩容。
unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
[[email protected] ~]# LANG=en_US.UTF-8
[[email protected] ~]# 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工具扩容文件系统。

①先查看分区格式。

[[email protected] ~]# blkid /dev/sdb1
/dev/sdb1: UUID="7006eed9-3fb5-444c-a467-4b98fcf25cd5" TYPE="xfs"

②扩容文件系统。

[[email protected] ~]# 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、查看扩容情况。

[[email protected] ~]# df -h | grep sdb
/dev/sdb1        50G  214M   50G   1% /test
[[email protected] ~]# cat /test/www.amd5.cn.txt 
阿汤博客测试文件

转载请注明:阿汤博客 » Linux未配置LVM逻辑卷,如何实现磁盘热扩容

喜欢 (0)or分享 (0)