resizedCentos7逻辑卷管理(LVM)
⼀、LVM概念
1、物理设备是⽤于保留逻辑卷中所存储数据的存储设备。它们是块设备,可以是磁盘分区、整个磁盘、RAID阵列或SAN磁盘。设备必须初始化为LVM物理卷,才能与LVM结合使⽤。整个“设备”将⽤作⼀个物理卷。
2、物理卷(PV)⽤于注册基础物理设备以便在卷组中使⽤。LVM⾃动将PV划分为物理区块(PE);
它们是充当PV上最⼩存储块的⼩块数据。
3、卷组(VG)是存储池,由⼀个或多个物理卷组成。⼀个PV只能分配给⼀个VG。VG可以包含未使⽤的空间和任意数⽬的逻辑卷。
4、逻辑卷(LV)根据卷组中的空闲物理范围创建,提供应⽤、⽤户和操作系统所使⽤的“存储”设备。LV是逻辑区块(LE)的集合,LE 映射到物理区块(PV的最⼩存储块)。默认情况下,每个LE将映射到⼀个PE。设置特定LV选项将会更改此映射;例如,镜像会导致每个LE映射到两个PE。
⼆、LVM创建
1、准备物理设备
使⽤fdisk、gdisk或parted创建新分区,以便与LVM结合使⽤。在LVM分区上,始终将分区类型设置为Linux LVM;对于MBR式分区,使⽤0x8e。如有必要,使⽤partprobe向内核注册新分区。也可以使⽤完整磁盘、RAID阵列或SAN磁盘。
只有当没有已准备好的物理设备并且需要新物理卷来创建或扩展卷组时,才需要准备物理设备。
#通过# lsblk 查看磁盘名称
[root@localhost ~]# fdisk /dev/sdb
使⽤m获取帮助,p打印现有分区表,n创建新分区,t更改分区类型,w写⼊更改,并使⽤q退出。
2、创建物理卷
使⽤pvcreate为分区(或其他物理设备)添加标签,使其作为物理卷与LVM结合使⽤。会将⽤于存储LVM配置数据的⼀个标头直接写⼊到PV。PV分为多个固定⼤⼩的物理范围(PE);例如4MiB的块。使⽤以空格分隔的设备名称作为pvcreate的参数,同时标记多个设备。
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
此命令会将设备/dev/sdb1和/dev/sdb2标记为PV,准备好分配到卷组中。仅当没有空闲的PV可以创建或扩展VG时,才需要创建PV。
3、创建卷组
vgcreate⽤于创建包含⼀个或多个物理卷的池,称为卷组。VG的⼤⼩由池中物理范围的总数决定。VG负责通过向LV分配空闲PE来托管⼀个或多个逻辑卷;因此,在创建LV时,VG必须具有⾜够的空闲PE可⽤。
[root@localhost ~]# vgcreate vg-alpha /dev/sdb1 /dev/sdb2
Volume group "vg-alpha" successfully created
此命令将创建名为vg-alpha的VG,它的⼤⼩是/dev/sdb1和/dev/sdb2这两个PV的总⼤⼩(以PE单位计)。仅单没有现有VG时才需要创建VG。可能会出于管理原因创建额外的VG,⽤于管理PV和LV的使⽤。否则,可在需要时扩展现有VG以容纳新的LV。
4、创建逻辑卷
lvcreate根据卷组中的可⽤物理范围创建新的逻辑卷。⾄少为lvcreate使⽤以下参数:使⽤-n选项设置LV名称,使⽤-L选项设置LV⼤⼩(以字节单位),并确定要在其中创建LV的VG名称。
[root@localhost ~]# lvcreate -n hercules -L 2G vg-alpha
Logical volume "hercules" created.
此命令将在VG vg-alpha中创建⼀个名为hercules的LV,其⼤⼩为3GiB。必须有⾜够的空闲物理范围来分配2GiB,如有必要,会将其取整为PE单元⼤⼩的倍数。
有多种⽅式可以指定⼤⼩:-L要求以字节或更⼤指定值为单位的⼤⼩,例如,兆字节(⼆进制兆字节)和千兆字节(⼆进制千兆字节)。-l 选项要求以物理范围数进⾏衡量的⼤⼩。以下⽰例:
lvcreate -L 128M:将逻辑卷的⼤⼩确定为正好128MiB
lvcreate -l 128:将逻辑卷的⼤⼩确定为正好128个范围的⼤⼩。字节总数取决于基础物理卷上物理范围块的⼤⼩。
5、添加⽂件系统
使⽤mkfs在新逻辑卷上创建xfs⽂件系统。或者,根据你⾸选的⽂件系统创建⽂件系统;例如,ext4.
[root@localhost ~]# mkfs -t xfs /dev/vg-alpha/hercules
meta-data=/dev/vg-alpha/hercules isize=512    agcount=4, agsize=131072 blks
=                      sectsz=512  attr=2, projid32bit=1
=                      crc=1        finobt=0, sparse=0
data    =                      bsize=4096  blocks=524288, imaxpct=25
=                      sunit=0      swidth=0 blks
naming  =version 2              bsize=4096  ascii-ci=0 ftype=1
log      =internal log          bsize=4096  blocks=2560, version=2
=                      sectsz=512  sunit=0 blks, lazy-count=1
realtime =none                  extsz=4096  blocks=0, rtextents=0
要使⽂件系统在重新启动后依然可⽤:
使⽤mkdir创建挂载点⽬录
[root@localhost ~]# mkdir /mnt/hercules
向/etc/fstab⽂件添加条⽬
[root@localhost ~]# vi /etc/fstab
/dev/vg-alpha/hercules /mnt/hercules  xfs defaults 0 0
运⾏mount -a以挂载/etc/fstab中的所有⽂件系统,包括刚才添加的条⽬
[root@localhost ~]# mount -a
#查看结果
[root@localhost ~]# df -HT
Filesystem                    Type      Size  Used Avail Use% Mounted on
/
dev/mapper/centos-root        xfs        15G  1.2G  14G  8% /
devtmpfs                      devtmpfs  952M    0  952M  0% /dev
tmpfs                          tmpfs    964M    0  964M  0% /dev/shm
tmpfs                          tmpfs    964M  9.2M  955M  1% /run
tmpfs                          tmpfs    964M    0  964M  0% /sys/fs/cgroup
/dev/sda1                      xfs      1.1G  153M  912M  15% /boot
tmpfs                          tmpfs    193M    0  193M  0% /run/user/0
/dev/mapper/vg--alpha-hercules xfs      2.2G  34M  2.2G  2% /mnt/hercules
三、查看LVM状态信息
1、物理卷使⽤pvdisplay显⽰有关物理卷的信息。如果未随命令指定任何参数,则它将列出有关系统上所有PV的信息。如果参数为特定设备名称,则将仅显⽰该特定PV的信息
[root@localhost ~]# pvdisplay  /dev/sdb1
--- Physical volume ---
PV Name              /dev/sdb1
VG Name              vg-alpha
PV Size              1.00 GiB / not usable 4.00 MiB
Allocatable          yes
PE Size              4.00 MiB
Total PE              255
Free PE              254
Allocated PE          1
PV UUID              u2sCoW-nq5i-gSKJ-K6GU-pdtA-Lbog-lIVzAY
PV Name:映射到设备名称
VG Name:显⽰将PV分配到卷组
PV Size:显⽰PV的物理⼤⼩,包括任何不可⽤的空间
PE Size:是物理范围⼤⼩,它是逻辑卷中可分配的最⼩⼤⼩。它也是计算以PE单位报告的任何值(如Free PE)的⼤⼩时的倍数;例如:26个PE x 4MiB(PE Size)可提供104MiB可⽤空间。逻辑卷⼤⼩取整为PE单位的倍数。LVM会⾃动设置PE⼤⼩,但也可以指定该⼤⼩
Free PE:显⽰有多个PE单位可⽤于分配给新逻辑卷
2、卷组
使⽤vgdisplay显⽰有关卷组的信息。如果没有为命令指定任何变量,则它将显⽰有关所有VG的信息。使⽤VG名称作为变量将仅显⽰该特定VG的信息
[root@localhost ~]# vgdisplay vg-alpha
--- Volume group ---
VG Name              vg-alpha
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  2
VG Access            read/write
VG Status            resizable
MAX LV                0
Cur LV                1
Open LV              1
Max PV                0
Cur PV                2
Act PV                2
VG Size              2.99 GiB
PE Size              4.00 MiB
Total PE              766
Alloc PE / Size      512 / 2.00 GiB
Free  PE / Size      254 / 1016.00 MiB
VG UUID              ZzGhNJ-RWH4-CkMS-MGHX-E65d-Zl0h-lU5rXb
VG Name:是此卷组的名称
VG Size:是存储池可⽤于逻辑卷分配的总⼤⼩
Total PE:是以PE单位表⽰的总⼤⼩
Free PE / Size:显⽰VG中有多少空闲空间可⽤于分配给新LV或扩展现有LV
3、逻辑卷
使⽤lvdisplay显⽰有关逻辑卷的信息。同样,如果未随命令指定任何参数,则将显⽰有关所有LV的信息;⽽使⽤LV设备名称作为参数将仅显⽰有关该特定设备的信息
[root@localhost ~]# lvdisplay /dev/vg-alpha/hercules
--- Logical volume ---
LV Path                /dev/vg-alpha/hercules
LV Name                hercules
VG Name                vg-alpha
LV UUID                pgcH5w-JN2R-DvId-SzAg-1WLr-fcM8-iy0qqB
LV Write Access        read/write
LV Creation host, time localhost.localdomain, 2019-11-07 02:01:41 -0500
LV Status              available
# open                1
LV Size                2.00 GiB
Current LE            512
Segments              2
Allocation            inherit
Read ahead sectors    auto
- currently set to    8192
Block device          253:2
LV Path:显⽰此逻辑卷的设备名称。某些⼯具可能会将设备名报告为/dev/mapper/vgname-lvname;两个名称都表⽰同⼀LV
VG Name:显⽰从其分配LV的卷组
LV Size:显⽰LV的总⼤⼩。使⽤⽂件系统⼯具检查可⽤空间和数据存储的已⽤空间
Current LE:显⽰此LV使⽤的逻辑范围数。LE通常映射到VG中的物理范围,并因此映射到物理卷
四、扩展逻辑卷和XFS⽂件系统
1、验证卷组是否具有可⽤的空间
使⽤是gdisplay验证是否有⾜够的物理区段可供使⽤。
[root@localhost ~]# vgdisplay vg-alpha
--- Volume group ---
VG Name              vg-alpha
...
Free  PE / Size      254 / 1016.00 MiB
...
检查输出中的Free PE / Size 它应报告⼀个等于或⼤于所需额外空间的值。如果没有⾜够的可⽤空间,则卷组扩展幅度⾄少要达到所需空间的⼤⼩。
2、扩展逻辑卷
lvextend可将逻辑卷扩展为新的⼤⼩。添加LV设备名称作为命令的最后⼀个参数
[root@localhost ~]# lvextend -L +300M /dev/vg-alpha/hercules
Size of logical volume vg-alpha/hercules changed from 2.00 GiB (512 extents) to 2.29 GiB (587 extents).
Logical volume vg-alpha/hercules successfully resized
此命令会将逻辑卷hercules的⼤⼩增加300MiB。请注意⼤⼩前⾯的“+”,它表⽰向现有⼤⼩增加此值;如⽆该符号,该值定义LV的最终确切⼤⼩。与lvcreate类似,有多钟⽅式可以指定⼤⼩:-l通常要求物理区段值,⽽-L要求以字节或更⼤指定值(例如兆字节或千兆字节)为单位的⼤⼩。⽰例如下:
lvextend -l 128:将逻辑卷的⼤⼩调整为正好128个范围
lvextend -l +128:向逻辑卷的当前⼤⼩添加128个范围
lvextend -L 128M:将逻辑卷的⼤⼩调整为正好128MiB
lvextend -L +128:向逻辑卷的当前⼤⼩添加128MiB
lvextend -l +50%FREE:向LV添加VG中当前可⽤空间的50%
3、扩展⽂件系统
xfs_growfs  /mountpoint 扩展⽂件系统以占⽤已扩展的LV。xfs_growfs要求在⽂件系统运⾏时挂载该系统;在调整⼤⼩操作期间仍然可以使⽤该⽂件系统。
[root@localhost ~]# xfs_growfs /mnt/hercules
meta-data=/dev/mapper/vg--alpha-hercules isize=512    agcount=4, agsize=131072 blks
=                      sectsz=512  attr=2, projid32bit=1
=                      crc=1        finobt=0 spinodes=0
data    =                      bsize=4096  blocks=524288, 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 524288 to 601088
#对⽐之前的⼤⼩增加了300M
[root@localhost ~]# df -HT
Filesystem                    Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        xfs        15G  1.2G  14G  8% /
devtmpfs                      devtmpfs  952M    0  952M  0% /dev
tmpfs                          tmpfs    964M    0  964M  0% /dev/shm
tmpfs                          tmpfs    964M  9.2M  955M  1% /run
tmpfs                          tmpfs    964M    0  964M  0% /sys/fs/cgroup
/dev/sda1                      xfs      1.1G  153M  912M  15% /boot
/dev/mapper/vg--alpha-hercules xfs      2.5G  34M  2.5G  2% /mnt/hercules
tmpfs                          tmpfs    193M    0  193M  0% /run/user/0
五、扩展逻辑卷和ext4
扩展基于ext4的逻辑卷的步骤基于与扩展xfs的LV相同,只有调整⽂件系统⼤⼩的步骤不同。
1、验证卷组是否具有可⽤的空间
使⽤ vgdisplay vgname 验证是否有⾜够的物理区段可供使⽤
2、扩展逻辑卷
lvextend -l +extens /dev/vgname/lvname 对逻辑卷 /dev/vgname/lvname进⾏扩展,扩展的幅度为范围值
3、扩展⽂件系统
resize2fs /dev/vgname/lvname 扩展⽂件系统以占⽤新扩展的LV。正与xfs_growfs⼀样,可以在⽂件系统正在运⾏时挂载并使⽤该⽂件系统。(可选)包含-p选项查看调整⼤⼩操作的进度。
[root@localhost ~]# resize2fs /dev/vg-alpha/hercules
注意:
xfs_growfs与resize2fs之间的主要区别是为识别⽂件系统⽽传递的参数
xfs_growfs采⽤挂载点,⽽resize2fs采⽤逻辑卷名称