Linux之逻辑卷LV(挂载点)扩容教程

目录

    • 前言
    • 1. 创建分区而不进行格式化
      • 1.1 `lsblk`查看本系统内所有磁盘及其分区信息
      • 1.2 `parted`查看磁盘分区类型与分区信息
      • 1.3 根据磁盘分区表类型使用`fdisk/gdisk`工具创建分区
      • 1.4 更新Linux磁盘分区表信息
      • 1.5 删除分区
    • 2. 使用未格式化分区创建实体卷轴PV
      • 2.1 查看目前系统的PV状态
      • 2.2 使用未格式化分区创建PV
      • 2.3 再次查看文件系统的PV状态
      • 2.4 查看创建的PV详细信息
    • 3. 将PV添加到卷轴群组VG
      • 3.1 查看所有VG状态
      • 3.2 确定需要扩容的LV及其所在的VG
        • 1)查看挂载点使用情况,定位需要扩容的挂载点
        • 2)查看需要扩容的挂载点所在磁盘分区及类型
        • 3)查看对应磁盘分区对应的LV
        • 4)查看对应的VG信息
      • 3.3 添加新建的PV到需要扩容的VG中
      • 3.4 再次查看扩容后的VG状态
    • 4. 给指定的LV扩容
      • 4.1 查看指定LV使用情况
      • 4.2 给指定LV扩容
      • 4.3 查看扩容后的LV使用情况
      • 4.4 查看扩容LV后挂载点文件系统使用情况
      • 4.5 增加挂载点对应文件系统容量
        • 1)查看指定挂载点文件系统容量
        • 2)对指定挂载点对应的文件系统进行扩容
        • 3)再次查看对应的挂载点文件系统容量
        • 至此就已经实现了指定LV(挂载点)的扩容
    • 参考资料
    • End~

前言

  • 现在设置Linux挂载时,除了/boot启动项挂载点直接使用格式化后的物理分区进行挂载,其他分区一般都使用逻辑卷管理(Logical Volume Manager,LVM),即使用逻辑卷轴(Logical Volume,LV) 挂载文件路径,其最大的优点在于后期能够进行弹性扩容。本次主要演示如何使用磁盘剩余空间创建分区,进而对某逻辑卷轴LV(挂载点)进行扩容,挂载点扩容的前提是其挂载设备为逻辑卷轴LV类型

  • 扩展逻辑卷轴(Logical Volume,LV) 时,需要先使用未格式化的分区创建实体卷轴(Physical Volume, PV) ,然后再将其添加到卷轴群组(Volume Group, VG) 中,最后实现此VG对应的逻辑卷轴(Logical Volume,LV) 扩容。大致过程如下图所示:

Linux之逻辑卷LV(挂载点)扩容教程_第1张图片


1. 创建分区而不进行格式化


1.1 lsblk查看本系统内所有磁盘及其分区信息

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

1.2 parted查看磁盘分区类型与分区信息

parted /dev/sda print # /dev/sda为需要创建分区的磁盘设备
[root@localhost ~]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  标志
 1      1049kB  211MB   210MB   primary  xfs          启动
 2      211MB   13.1GB  12.9GB  primary               lvm

查看Partition Table一行的输出内容,其中msdos指的是MBR分区表,gpt指的是GPT分区表


1.3 根据磁盘分区表类型使用fdisk/gdisk工具创建分区

MBR分区表使用fdisk工具创建分区,GPT分区表使用gdisk工具创建分区。这里因为原有磁盘的分区表格式为MBR,因此此处使用fdisk来在指定磁盘上创建新分区。

fdisk /dev/sda
命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

使用fdisk创建分区的过程总大致需要进行以下几个过程:

1)查看分区情况: 输入命令p

2)创建分区: 输入命令n,表示创建分区

  • 选择分区类型: 此处选择Primary,即选择主分区类型
  • 选择分区号: 此处直接enter,即选择默认分区号,紧接上一个分区号
  • 选择起始扇区: 此处直接enter,即选择默认起始扇区,紧接上一个已使用扇区
  • 选择结束扇区: 此处不能直接enter**,如果直接enter选择默认则是将磁盘中所有剩余空间都分配给当前分区,建议使用+size{K,M,G}的方式手动选择需要分配给此分区的磁盘空间,如+5G则表示分配给当前分区5G磁盘空间,分区工具会自动计算其对应的扇区数量

3)修改分区system id: 输入命令t

  • 选择分区号: 选择之前创建的分区号
  • 输入修改后分区号Hex代码: 此处输入8e

4)再次查看分区情况: 输入命令p,其中新建分区Id为8e,System为Linux LVM

5)写入分区: 输入命令w,表示将内存中的修改在磁盘中实现。

注意: 在写入分区之前,任何操作都可以使用q命令直接退出,如果修改错误直接退出即可,写入命令w使用之前需要三思!!!如果分区创建错误,则可以参考>1.5 删除分区


1.4 更新Linux磁盘分区表信息

由于本次扩容中,创建分区的磁盘正在使用,因此磁盘分区表并未被即使更新,因此需要将磁盘分区表更新后才能继续后续操作。

更新磁盘分区表的方式主要有二,此处使用后者:

  • ①万能重启

  • ②使用partprobe -s命令


1.5 删除分区

如果因为不小心创建了错误分区,则依旧可以使用fdisk/gdisk工具来删除分区,注意删除时也千万不要搞错分区号,删除前需要保证分区没有在使用中。以fdisk工具删除分区表格式为MBR的磁盘分区为例,只需要几步即可完成分区删除:

fdisk /dev/sda

1)查看所有分区: 输入命令p

2)删除分区: 输入命令d

3)再次查看分区: 输入命令p

4)写入修改: 输入命令w

最后更新磁盘分区表信息即可,更新磁盘分区表方式同>1.4 更新Linux磁盘分区表信息


2. 使用未格式化分区创建实体卷轴PV

与PV操作相关的命令工具有:

  • pvcreate:将实体partition创建成为PV;
  • pvscan:搜寻目前系统中任何具有PV的磁盘;
  • pvdisplay:显示出目前系统上的PV的状态;
  • pvremove:将PV属性移除,使得指定分区Partition不再作为PV;

要创建实体卷轴PV其实很简单,只要直接使用pvcreate 工具即可,本次用于创建PV的分区为/dev/sda3。


2.1 查看目前系统的PV状态

pvscan 
[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [12.00 GiB / 4.00 MiB free]
  Total: 1 [12.00 GiB] / in use: 1 [12.00 GiB] / in no VG: 0 [0   ]

2.2 使用未格式化分区创建PV

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

2.3 再次查看文件系统的PV状态

pvscan
[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [12.00 GiB / 4.00 MiB free]
  PV /dev/sda3                      lvm2 [5.00 GiB]
  Total: 2 [17.00 GiB] / in use: 1 [12.00 GiB] / in no VG: 1 [5.00 GiB]

2.4 查看创建的PV详细信息

pvdisplay /dev/sda3
[root@localhost ~]# pvdisplay /dev/sda3
  "/dev/sda3" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               1dzbp0-d8ed-fyrp-OkN2-A9gv-uF1l-4jkLVB

3. 将PV添加到卷轴群组VG

操作卷轴群组(Volume Group, VG)的相关工具指令有:

  • vgcreate :创建VG;
  • vgscan:搜寻当前系统上的VG;
  • vgdisplay:目前系统上面的VG状态;
  • vgextend:VG内增加额外的PV;
  • vgreduce:VG内移除PV;
  • vgchange:设置VG是否启动(active)
  • vgremove:删除一个VG

3.1 查看所有VG状态

vgdisplay
[root@localhost ~]# 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               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               12.00 GiB
  PE Size               4.00 MiB
  Total PE              3073
  Alloc PE / Size       3072 / 12.00 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT

3.2 确定需要扩容的LV及其所在的VG

1)查看挂载点使用情况,定位需要扩容的挂载点

df -Th
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        10G  9.2G  853M   92% /
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   82M  829M    9% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs       197M  157M   41M   80% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/1000
  • 观察发现需要扩容的挂载点为/

2)查看需要扩容的挂载点所在磁盘分区及类型

lsblk -ip
[root@localhost ~]# lsblk -ip
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda                      8:0    0   20G  0 disk 
|-/dev/sda1                   8:1    0  200M  0 part /boot
|-/dev/sda2                   8:2    0   12G  0 part 
| |-/dev/mapper/centos-root 253:0    0   10G  0 lvm  /
| `-/dev/mapper/centos-swap 253:1    0    2G  0 lvm  [SWAP]
`-/dev/sda3                   8:3    0    5G  0 part 
/dev/sr0                     11:0    1 1024M  0 rom
  • 观察发现需要扩容的挂载点所在的分区为/dev/mapper/centos-root

3)查看对应磁盘分区对应的LV

lvdisplay /dev/mapper/centos-root
[root@localhost ~]# lvdisplay /dev/mapper/centos-root
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

4)查看对应的VG信息

vgdisplay centos
[root@localhost ~]# vgdisplay centos
  --- 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               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               12.00 GiB
  PE Size               4.00 MiB
  Total PE              3073
  Alloc PE / Size       3072 / 12.00 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT
  • 通过VG Name一行可以知道需要扩容的挂载点对应LV的所属VG为centos,因此之后针对其进行扩容,即将新建的PV添加到此VG中

3.3 添加新建的PV到需要扩容的VG中

此处将之前新建的PV对应的分区/dev/sda3添加到需要扩容的VG中,本次需要扩容的VG为centos

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

3.4 再次查看扩容后的VG状态

vgdisplay
[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               17.00 GiB
  PE Size               4.00 MiB
  Total PE              4352
  Alloc PE / Size       3072 / 12.00 GiB
  Free  PE / Size       1280 / 5.00 GiB
  VG UUID               eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT

  • 至此已经实现了LV对应的VG的扩容,接下来就只需要将VG中的剩余空间分配给指定LV即可实现挂载点扩容

4. 给指定的LV扩容

根据上一小节中>3.2 确定需要扩容的LV及其所在的VG中找到的需要扩容的挂载点对应的LV,来对其进行扩容


4.1 查看指定LV使用情况

lvdisplay /dev/centos/root
[root@localhost ~]# lvdisplay /dev/centos/root 
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

4.2 给指定LV扩容

lvresize -L +1G /dev/centos/root
[root@localhost ~]# lvresize -L +1G /dev/centos/root 
  Size of logical volume centos/root changed from 10.00 GiB (2560 extents) to 11.00 GiB (2816 extents).
  Logical volume centos/root successfully resized.

4.3 查看扩容后的LV使用情况

lvdisplay /dev/centos/root
[root@localhost ~]# lvdisplay /dev/centos/root
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
  LV Status              available
  # open                 1
  LV Size                11.00 GiB
  Current LE             2816
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

4.4 查看扩容LV后挂载点文件系统使用情况

df -Th
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        10G  9.2G  852M   92% /
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   82M  829M    9% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs       197M  157M   41M   80% /boot
tmpfs                   tmpfs     182M     0  182M    0% /run/user/1000
  • 结果发现,挂载点使用情况未发生任何变化,这是因为目前还只是扩容了LV,但是并未扩容其对应的文件系统,故还需要增加对应文件系统的容量

4.5 增加挂载点对应文件系统容量

1)查看指定挂载点文件系统容量

df -Th /
[root@localhost ~]# df -Th /
文件系统                类型  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs    10G  9.2G  865M   92% /

2)对指定挂载点对应的文件系统进行扩容

注意:因为上一步已经确定挂载点对应的文件系统为xfs类型,因此使用xfs_growfs工具对其进行扩容,若是其他文件系统类型,需要使用对应的工具

xfs_growfs /
[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, 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 2621440 to 3145728

3)再次查看对应的挂载点文件系统容量

df -Th /
[root@localhost ~]# df -Th /
文件系统                类型  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs    12G  9.2G  2.9G   77% /
  • 发现已经扩容成功

至此就已经实现了指定LV(挂载点)的扩容


参考资料

《鸟哥的Linux私房菜基础学习篇》14.3.3 放大LV容量


End~

你可能感兴趣的:(Linux,CentOS,7)