在 VMware Workstation 中给虚拟机扩容硬盘

最初安装 centos 7 的时候,默认分配 60GB 硬盘,现在感觉空间不够,又添加了一块 500G 的硬盘,打算划拨200G给 / 根目录,剩余空间留着备用。

[TOC]

关于 LVM 知识

  • LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 系统的磁盘管理工具,它通过3层抽象来管理存储空间,分别是物理卷PV(Physical Volume)、卷组VG(Volume Group)、逻辑卷LV(Logical Volume)。下图则展示了从物理磁盘到文件系统的完整存储映射关系:

应用场景:有2块1TB的硬盘,想创建一个2TB的分区,采用标准的磁盘划分方法(只能划分出2个1TB的分区)是无法实现的。采用LVM技术,把2块1TB的磁盘做成PV(物理卷),然后将它们加入到同一个VG,该VG的容量即为2TB

  • 使用 LVM 的步骤如下:
1、基于物理磁盘创建 PV(物理卷),这样才能添加到LVM中的卷组
2、创建 VG(卷组),并将上面创建的 PV 加入里面
3、基于上面创建的 VG 创建 LV(逻辑卷)
4、对划分的 LV 进行文件系统格式化,如xfs、ext4等
5、挂载文件系统

划拨200G给根目录

  • 第1步,在 VMware Workstation 的在虚拟机列表中找到待扩容的虚拟机,将其关机,然后添加一块500G的硬盘(如下图示)

  • 第2步,将虚拟机开机,执行 fdisk -l 看到新加的物理磁盘 /dev/sdb 大小 536.9 GB,文件系统 /dev/mapper/centos-root 为 39.8 GB
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
/dev/mapper/centos-root xfs        38G  1.8G   36G   5% /                       #.看这里
/dev/mapper/centos-home xfs        19G   33M   19G   1% /home
/dev/sda1               xfs      1014M  151M  864M  15% /boot

[root@localhost ~]# fdisk -l | grep dev
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors                    #.看这里
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125829119    61864960   8e  Linux LVM
Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors                 #.看这里
Disk /dev/mapper/centos-root: 39.8 GB, 39766196224 bytes, 77668352 sectors      #.看这里
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Disk /dev/mapper/centos-home: 19.4 GB, 19415433216 bytes, 37920768 sectors

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0   37G  0 lvm  /                      #.看这里
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sdb               8:16   0  500G  0 disk                        #.看这里
sr0              11:0    1 1024M  0 rom  

[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos                                  #.看这里
  VG Size               <59.00 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       15102 / 58.99 GiB
  Free  PE / Size       1 / 4.00 MiB                            #.看这里
  • 第3步,基于物理磁盘 /dev/sdb 创建 pv 物理卷
[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
  • 第4步,确认 vg 卷组名称(示例为 centos),然后将 pv 物理卷加入卷组
[root@localhost ~]# vgdisplay | grep "VG Name"
  VG Name               centos

[root@localhost ~]# vgextend centos /dev/sdb
  Volume group "centos" successfully extended
  • 第5步,执行 vgdisplay 确认 Free PE 的数量,每个 PE 为 4MB,所以 500GB = 128000 个 PE
[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos
  VG Size               558.99 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       15102 / 58.99 GiB
  Free  PE / Size       128000 / 500.00 GiB         #.看这里
  • 第6步,执行 df -Th 确认根目录的挂载设备,示例为 /dev/mapper/centos-root,文件系统为 xfs

注:xfs 文件系统只能扩容、不能缩容,而 ext4 文件系统支持扩容、支持缩容

[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
/dev/mapper/centos-root xfs        38G  1.8G   36G   5% /
/dev/sda1               xfs      1014M  151M  864M  15% /boot
  • 第7步,为逻辑卷扩容,比如为根目录加上200GB,即 51200个PE(-l +51200 等效于 -L +200G)

注:参数 -l 后面跟 PE 的数量,-L 后面跟容量的大小,而 -L +200G 表示加200G、-L 200G 表示加到200G

[root@localhost ~]# lvextend -l +51200 /dev/mapper/centos-root
  Size of logical volume centos/root changed from <37.04 GiB (9481 extents) to <237.04 GiB (60681 extents).
  Logical volume centos/root successfully resized.

[root@localhost ~]# df -Th | grep root
/dev/mapper/centos-root xfs        38G  1.8G   36G   5% /
  • 第8步,刷新元数据以便系统识别,针对 xfs 格式使用 xfs_growfs,针对 ext4 格式使用 resize2fs

附:ubuntu 默认为 ext4 格式,扩容参考 resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=2427136 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=9708544, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=4740, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 9708544 to 6213734
  • 第9步,再次查看系统分区情况,根目录 / 已经从 38G 扩容到 238G,而 Free PE 剩余 300G
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
/dev/mapper/centos-root xfs       238G  1.8G  236G   1% /                   #.看这里
/dev/mapper/centos-home xfs        19G   33M   19G   1% /home
/dev/sda1               xfs      1014M  151M  864M  15% /boot

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0  237G  0 lvm  /                                  #.看这里
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sdb               8:16   0  500G  0 disk                                    #.看这里
└─centos-root   253:0    0  237G  0 lvm  /                                  #.看这里
sr0              11:0    1 1024M  0 rom  

[root@localhost ~]# fdisk -l | grep dev
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125829119    61864960   8e  Linux LVM
Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Disk /dev/mapper/centos-root: 254.5 GB, 254514561024 bytes, 497098752 sectors       #.看这里
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Disk /dev/mapper/centos-home: 19.4 GB, 19415433216 bytes, 37920768 sectors

[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos
  VG Size               558.99 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       66302 / 258.99 GiB
  Free  PE / Size       76800 / 300.00 GiB                  #.看这里

拓展练习

  • 基于上面的场景(根目录 / 已经从 38G 扩容到 238G),下面进行拓展练习。

1.直接将根目录扩到300G

  • 如果想进一步把根目录 / 扩到 300G,只需 lvextend 及 xfs_growfs 这2步,具体如下:
#.利用 -L 300G 直接加到 300G
[root@localhost ~]# lvextend -L 300G /dev/mapper/centos-root
  Size of logical volume centos/root changed from <237.04 GiB (60681 extents) to 300.00 GiB (76800 extents).
  Logical volume centos/root successfully resized.

#.针对 xfs 格式使用 xfs_growfs 刷新元数据
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=26, agsize=2427136 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=62137344, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=4740, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 62137344 to 78643200
  • 下面是确认过程:
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
/dev/mapper/centos-root xfs       300G  1.8G  299G   1% /                       #.看这里
/dev/mapper/centos-home xfs        19G   33M   19G   1% /home
/dev/sda1               xfs      1014M  151M  864M  15% /boot

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0  300G  0 lvm  /                                      #.看这里
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sdb               8:16   0  500G  0 disk                                        #.看这里
└─centos-root   253:0    0  300G  0 lvm  /                                      #.看这里
sr0              11:0    1 1024M  0 rom  

[root@localhost ~]# fdisk -l | grep dev
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125829119    61864960   8e  Linux LVM
Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Disk /dev/mapper/centos-root: 322.1 GB, 322122547200 bytes, 629145600 sectors       #.看这里
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Disk /dev/mapper/centos-home: 19.4 GB, 19415433216 bytes, 37920768 sectors
  • 执行 vgdisplay 看到 Free PE 剩余 237.04 GiB,因为没有把全部空间划给根目录嘛
[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos
  VG Size               558.99 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       82421 / <321.96 GiB
  Free  PE / Size       60681 / <237.04 GiB                 #.看这里

2.将剩余空间全部划给 /data

  • 第1步,执行 lsblk 看到 /dev/sdb 共 500G,根目录 / 使用了 300G,执行 vgdisplay 看到 还剩 60681 个PE可用(每个PE 为 4MB)
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0  300G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sdb               8:16   0  500G  0 disk                    #.看这里
└─centos-root   253:0    0  300G  0 lvm  /                  #.看这里
sr0              11:0    1 1024M  0 rom  

[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos
  VG Size               558.99 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       82421 / <321.96 GiB
  Free  PE / Size       60681 / <237.04 GiB                 #.看这里
  • 第2步,执行 lvcreate 创建 LV 逻辑卷,在名为 centos 的卷组中 -n 创建一个名为 data 的新逻辑卷,-l +60681 指定增加 60681 个 PE
[root@localhost ~]# lvcreate -l +60681 -n data centos 
  Logical volume "data" created.
  • 第3步,执行 vgdisplay 若 Free PE 为 0 则表示没有可用的空间了
[root@localhost ~]# vgdisplay | egrep "(Name|Size)"
  VG Name               centos
  VG Size               558.99 GiB
  PE Size               4.00 MiB
  Alloc PE / Size       143102 / 558.99 GiB
  Free  PE / Size       0 / 0                               #.看这里

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0  300G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.1G  0 lvm  /home
sdb               8:16   0  500G  0 disk 
├─centos-root   253:0    0  300G  0 lvm  /
└─centos-data   253:3    0  237G  0 lvm                     #.多了这行
sr0              11:0    1 1024M  0 rom 

[root@localhost ~]# fdisk -l | grep dev
Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125829119    61864960   8e  Linux LVM
Disk /dev/mapper/centos-root: 322.1 GB, 322122547200 bytes, 629145600 sectors
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Disk /dev/mapper/centos-home: 19.4 GB, 19415433216 bytes, 37920768 sectors
Disk /dev/mapper/centos-data: 254.5 GB, 254514561024 bytes, 497098752 sectors       #.多了这行
  • 第4步,格式化逻辑卷,示例将新逻辑卷格式化为 ext4 文件系统
[root@localhost ~]# mkfs.ext4 /dev/mapper/centos-data

......
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
  • 第5步,创建挂载点并手动挂载
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/mapper/centos-data /data
  • 第6步,执行 df -Th 看到新挂载点 /data 大小 197G
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
/dev/mapper/centos-root xfs       300G  1.8G  299G   1% /                       #.看这里
/dev/mapper/centos-home xfs        19G   33M   19G   1% /home
/dev/sda1               xfs      1014M  151M  864M  15% /boot
/dev/mapper/centos-data ext4      234G   61M  222G   1% /data                   #.看这里
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-05-22 15:50:18

results matching ""

    No results matching ""