Linux虚机磁盘扩容

179 阅读5分钟

在工作中经常遇到一种情况,就是虚机磁盘容量不足了。遇到这种情况,一般会选择重建一个磁盘容量更大的虚机或者对当前虚机磁盘进行扩容,重建虚机会丢失当前虚机上的所有文件,一切工作都得重新来,显然不太划算。因此,磁盘扩容是更好的选择。本文将演示如何向centos7虚机添加一块20G的虚拟硬盘。如下所示,当前虚机只剩100M左右的存储空间了:

devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G  9.0M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   36G   35G  112M 100% /
/dev/sda1               1014M  194M  821M  20% /boot
tmpfs                    379M     0  379M   0% /run/user/0

前置条件

  • 虚机已设置LVM作为默认磁盘管理类型

如果不满足此条件,则本教程不会有太大帮助,因为使用传统路线在物理磁盘上创建分区,是无法按此方式扩展现有分区的

  • 关闭当前虚机电源

操作流程

1.为虚机添加一块物理磁盘

这一步比较简单,打开vmware workstation,进入对应虚机管理界面

编辑虚拟机设置 >> 添加 >> (选择类型为硬盘)下一步 >> 创建新的磁盘 >> 将虚拟磁盘存储为单个文件 >> 保存

物理磁盘添加完成之后,启动虚机 image.png

2.将新的物理磁盘添加到现有卷组

此时登录虚机,执行fdisk -l,可以看到一个大小为10.7G的驱动器。

# fdisk -l
Disk /dev/sda: 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: 0x000bb400

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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

现在我们需要将新的磁盘加入到现有卷组。执行vgdisplay可以查看当前的卷组信息:

# vgdisplay
--- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <39.00 GiB
  PE Size               4.00 MiB
  Total PE              9983
  Alloc PE / Size       9982 / 38.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               2sO9FM-jPG3-aYxt-sm2T-Pd6k-vOGO-JLwTlL

在添加磁盘到卷组之前,需要执行一下pvcreate将其格式化为物理卷,这是为了让磁盘和LVM兼容:

# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created

现在sdb已经是物理卷了,可以将其添加到当前卷组:

# vgextend centos /dev/sdb
  Volume group "centos" successfully extended

3.使用新的空间扩展逻辑卷

下面,我们需要使用lvextend工具来扩展当前卷,首先我们需要找到当前的逻辑卷,执行lvdispaly即可看到

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                qcOqiS-Vcth-vHu9-3vh4-oERU-DN0w-5we2jb
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-04-19 00:54:02 -0400
  LV Status              available
  # open                 0
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                mZ7t1Q-Us8U-Bk6d-OjlE-B2c4-Pxhf-Fzr078
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-04-19 00:54:03 -0400
  LV Status              available
  # open                 1
  LV Size                <35.12 GiB
  Current LE             8990
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

lvdispal显示了两个逻辑卷,通过观察Size可以看出/dev/centos/root是我们需要找的路径 接下来,执行lvextend对数据卷进行扩容:

# lvextend -L9.9G /dev/centos/root
  Rounding size to boundary between physical extents: 9.90 GiB.
  New size given (2535 extents) not larger than existing size (8990 extents

现在数据卷已经扩容成功,当时文件系统还不知道这事,因此还得更新下文件系统

4.更新文件系统

执行xfs_growfs /dev/centos/root更新文件系统,这里由于centos7默认的文件系统是xfs类型,所以这里使用xfs_growfs,其他文件文件系统一般可使用resize2fs进行更新

# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=2301440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=9205760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=4495, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 9205760 to 11801600

更新完成之后查看挂载点,大小已经改变

# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G   17M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   46G   36G   10G  78% /
/dev/sda1               1014M  194M  821M  20% /boot
tmpfs                    379M     0  379M   0% /run/user/0