简单介绍:

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
请输入图片描述

扩容方案:

①添加新硬盘,并把新硬盘通过mount挂载到指定挂载点;(比如新建一个/data目录,把新硬盘挂载到/data下提供使用)

②添加新硬盘,通过LVM把新硬盘的空间划给原系统盘,实现动态扩容系统盘;(也可以在虚拟机设置里调大原有磁盘,再扩容)

本文重点记录方案②的操作步骤

测试目标:

将一台CentOS7.6的虚拟机的系统盘从20G扩容至30G。(扩容10G)

操作步骤:

  1. 给虚拟机增加一块硬盘大小10G(可根据自己的需求来)

请输入图片描述

2.查看新增硬盘
命令 df -h

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  2.0G   16G   12% /       //扩容后,再来看该项,作对比
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M  4.0K  487M    1% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               1014M  140M  875M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk              //新加的硬盘命名为sdb,已经存在,但是还没分区无法给系统使用
sr0              11:0    1 1024M  0 rom

3.新硬盘分区(此处默认分一个区)

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x295e5fb2 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n     //创建新分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):       //回车,默认p,主分区
Using default response p
分区号 (1-4,默认 1):    //回车,默认1
起始 扇区 (2048-20971519,默认为 2048):    // 回车,默认起始位置
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):    // 回车,默认最后位置
将使用默认值 20971519
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):t    // 更改分区格式
已选择分区 1
Hex 代码(输入 L 列出所有代码):L    // 查看可选项

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec     (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4      DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec     (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统    数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M /     CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4      SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-    12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0      Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware     VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware     VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux     raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):8e       // 更改分区格式为LVM
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w    // 保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

4.再次查看分区,因为我们现在还只是分完区,没挂载加入系统根,无法使用

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk
└─sdb1            8:17   0   10G  0 part
sr0              11:0    1 1024M  0 rom

5.把新的分区转换为物理卷

[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

6.查看现有的卷组名,这里为centos

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos      // 这是Centos系统下默认的VG Name,RHEL系统显示为rhel
  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               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               zEEEH9-6WwH-cocn-IVI7-xFXD-MqKv-z1GRks

7.把转换号的物理卷并到vg(卷组)中

[root@localhost ~]# vgextend centos /dev/sdb1
  Volume group "centos" successfully extended

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               28.99 GiB    //对比,变大了约10G
  PE Size               4.00 MiB
  Total PE              7422
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               zEEEH9-6WwH-cocn-IVI7-xFXD-MqKv-z1GRks

8.查看逻辑卷,默认系统分了2个,选择对应逻辑卷路径

[root@localhost ~]# lvdisplay                                          
  --- Logical volume ---                                               
  LV Path                /dev/centos/swap       //系统默认分了2G给swap,不用管                           
  LV Name                swap                                          
  VG Name                centos                                        
  LV UUID                1PbG1Y-3oCj-REdJ-PFGS-gMWF-eyCi-PyTwWs        
  LV Write Access        read/write                                    
  LV Creation host, time localhost, 2019-04-20 17:23:28 +0800          
  LV Status              available                                     
  # open                 2                                             
  LV Size                2.00 GiB                                      
  Current LE             512                                           
  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                y7s5K6-EQzX-mhoi-nZOB-tSww-Opn5-JQZGCs        
  LV Write Access        read/write                                    
  LV Creation host, time localhost, 2019-04-20 17:23:29 +0800          
  LV Status              available                                     
  # open                 1                                             
  LV Size                <17.00 GiB                                    
  Current LE             4351                                          
  Segments               1                                             
  Allocation             inherit                                       
  Read ahead sectors     auto                                          
  - currently set to     8192                                          
  Block device           253:0                                         

9.给逻辑卷扩展空间

[root@localhost ~]# lvextend /dev/centos/root /dev/sdb1
  Size of logical volume centos/root changed from <17.00 GiB (4351 extents)     to 26.99 GiB (6910 extents).
  Logical volume centos/root successfully resized.

10.写入系统文件,是扩容生效

[root@localhost ~]# lvextend /dev/centos/root /dev/sdb1
  Size of logical volume centos/root changed from <17.00 GiB (4351 extents)     to 26.99 GiB (6910 extents).
  Logical volume centos/root successfully resized.
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4455424, 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 4455424 to 7075840

如果是ext系统,可以使用resize2fs命令替换xfs_growfs命令。

11.检查扩容效果

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   27G  2.0G   26G    8% /
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M  4.0K  487M    1% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               1014M  140M  875M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   27G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk
└─sdb1            8:17   0   10G  0 part
  └─centos-root 253:0    0   27G  0 lvm  /
sr0              11:0    1 1024M  0 rom