【系统操作】centos7 lvm 分区管理

CentOS中的LVM(Logical Volume Manager)是一种逻辑卷管理工具,允许对硬盘上的存储空间进行灵活的分区、管理和调整,提供了更高级的存储管理功能。


1. LVM的基础架构介绍:

  • PV(Physical Volume):物理卷,是LVM的基本组成部分,通常一个PV就是一个物理磁盘。
  • VG(Volume Group):卷组,它将一个或多个物理卷组织在一起,为逻辑卷提供集中管理和分配的存储池。
  • LV(Logical Volume):逻辑卷,通过在卷组上创建逻辑卷,实现对物理存储的灵活分配和管理,提供给操作系统使用的逻辑存储空间。
  • PE(Physical Extent):物理区块,是存储池中最小的可分配单位,用于在物理卷和逻辑卷之间进行数据存储的基本单元。

操作顺序:

  • PV —-> VG(PE,需这里指定大小) —-> LV

其他说明:

上面介绍了LVM部分的架构,创建完成LVM后得到的LV即真正的可用逻辑空间,你还需要对LV所划分的空间进行格式化操作,格式化为EXT4后,挂载使用。

LVM和XFS文件系统兼容性不佳,推荐LVM+EXT4使用。

在创建PV时一定需要物理磁盘是未初始化状态,连分区表也不能有,否则要删除才可以进行创建,通常就是硬盘的GPT和MBR分区表,必须删除才可以进行创建LVM。

删除分区表可以用dd命令,用0填充一次磁盘后操作。


2.扩容根分区:

2-1.查看系统的物理磁盘和文件系统格式:

lsblk
df -Th
blkid

2-2.使用分区工具查看硬盘详细信息:

parted -l

如果返回的值中,你新加的物理磁盘,显示信息如下:

错误: /dev/sdb: unrecognised disk label
Model: VMware Virtual disk (scsi)                                         
Disk /dev/sdb: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
  • 如果Partition Table: unknown,则可以直接进行LVM的创建,否则需要用dd命令用0填充一次硬盘后操作。
  • 数据请提前备份

用零填充整个磁盘空间(相当于格式化磁盘):

dd if=/dev/zero of=/dev/sdb bs=1M status=progress
  • if=/dev/zero:表示输入文件/dev/zero,此文件提供无限的零字节
  • of=/dev/sdb:表示输出文件/dev/sdb,此文件代表一个完整的物理磁盘
  • bs=1M:表示块大小,从/dev/zero读取一个1M大小的文件,反复写入/dev/sdb
  • status=progress:显示操作进度

2-3.扩展LVM根分区

2-3-1.创建PV

2-3-1-1.查看PV详细信息:

pvdisplay

2-3-1-2.创建PV:

pvcreate /dev/sdb
  • 替换为你的实际磁盘路径

2-3-2.扩展根分区的VG:

2-3-2-1.查看VG详细信息:

[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               14.80 GiB
  PE Size               4.00 MiB
  Total PE              3789
  Alloc PE / Size       3789 / 14.80 GiB
  Free  PE / Size       0 / 0   
  VG UUID               12tM9N-Glyp-YpGb-xjL1-Gnqy-YKmb-A3gPsa
   
[root@localhost ~]# 

2-3-2-2.扩展VG:

vgextend centos /dev/sdb
  • VG Name替换为实际值
  • 替换为你的实际磁盘路径

2-3-3.扩展根分区的LV:

2-3-3-1.查看LV详细信息:

[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                W02qq7-6zw4-drkl-KCg1-fmtV-2DHl-medraX
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-01-03 11:04:34 +0800
  LV Status              available
  # open                 1
  LV Size                13.80 GiB
  Current LE             3533
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                Zli88C-aKtW-Fh4E-1G2w-RlRw-eArV-WS2U3b
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-01-03 11:04:34 +0800
  LV Status              available
  # open                 2
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
[root@localhost ~]#
  • 只扩容根分区就行,SWAP是虚拟内存分区不需要管

2-3-3-2.先去查看VG的详细信息,看空闲多少个PE空间,再进行下面的扩展LV操作:

lvextend -l +4095 /dev/centos/root
  • 扩展4095个PE的空间给根分区的LV

2-3-4.刷新EXT4的存储空间:

resize2fs /dev/centos/root

2-3-5.查看是否扩容成功:

df -Th
  • 如果容量变大了就代表成功了,否则代表失败。

3.新建LVM分区

3-1.创建PV

3-1-1.查看PV详细信息:

pvdisplay

3-1-2.创建PV:

pvcreate /dev/sdc

3-2.创建VG

3-2-1.查看VG详细信息:

vgdisplay

3-2-2.创建PE为4MIB大小的VG:

vgcreate -s 4M storage1 /dev/sdc

3-3.创建LV

3-3-1.查看LV详细信息:

lvdisplay

3-3-2.创建4095个PE大小的LV:

lvcreate -l 4095 -n disk1 storage1

3-4.格式化LV的磁盘空间为EXT4文件系统:

mkfs.ext4 /dev/storage1/disk1

3-5.挂载存储空间:

mount /dev/storage1/disk1 /mnt/disk1
  • 如果目录不存在自行创建一个

3-6.查看是否挂载成功:

df -Th

永久挂载需要修改fstab文件生效。

end…