🏆 LVM逻辑卷

⭐️ LVM

LVM 逻辑卷,在企业中,随着企业的发展,数据量也会越来越大,原来数据增大,就需要挂载新的硬盘然后在取做数据迁移,这样不方便且会造成一定的业务损失,采用LVM技术可以实现文件系统跨越不通的磁盘和分区。
安装红帽系统时默认就是以LVM方案进行安装,但是boot分区比较特殊,不能基于LVM创建
 
linux支持的常见文件系统
    Ext3::是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并 能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也 会很长,而且也不能百分之百地保证资料不会丢失。
    它会把整个磁盘的每个写入 动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分, 然后尝试进行修复、
    Ext4:Ext3的改进版本,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系 统能够批量分配 block 块,从而极大地提高了读写效率。
    XFS:是一种高性能的日志文件系统,他的又是在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB, 
    这几乎满足了所有需求
pp: 物理分区,用来存储数据的块设备,可以是分区,磁盘,RAID或者SAN设备
PV: LVM基本存储逻辑块,但和基本物理存储介质(分区、磁盘)比较,包含有LVM相关的管理参数
VG: 卷组是存储池,由一个或多个物理卷组成,一个PV只能分配给一个VG
LV: LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统
PE: 每一个物理卷被花费称为PE的基本单元,是LV的最小存储单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB
LE: 逻辑卷也被划分为被称为LE的课被选址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。设置特定LV选项将会更改此映射。


    受内核限制,一个逻辑卷最多只能包含65536个PE,一个PE的大小就决定了逻辑卷的最大容量,4MB的PE最大容量为256G,希望大于256G的逻辑卷,则创建卷组就需要指定更大的PE,也就是PE卷设置更大的MB
比如小明家里想吃馒头但是面粉不够了,于是妈妈从隔壁老王家、老李家、老张家分别借来一些面粉,准备蒸馒头吃。首先需 要把这些面粉(物理卷[PV,Physical Volume])揉成一个大面团(卷组[VG,Volume Group]), 然后再把这个大团面分割成一个个小馒头(逻辑卷[LV,Logical Volume]),而且每个小馒头 的重量必须是每勺面粉(基本单元[PE,Physical Extent])的倍数。
查看显示 创建 删除 扩容 激活 扫描查找
LV lvdisplay lvcreate lvremove lvextend lvchange lvscan
PV pvdisplay pvcreate pvremove pvchange pvscan
VG vgdisplay vgcreate vgremove vgextend vgchange vgscan
pvchange -x n [pv卷]    pv不可被分配
pvchange -x y [pv卷]    pv可被分配

vgchange -ay [vg卷]    激活卷组
vgchange -an [vg卷]    禁用捐助

lvchange -ay [lv卷]    激活逻辑卷
lvchange -an [lv卷]    禁用逻辑卷
lvchange -pr [lv卷]    设置只读
lvchange -prw [lv卷]   设置读写

⭐️ 实验

添加两块硬盘
[root@abc ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
nvme0n1       259:0    0  100G  0 disk 
├─nvme0n1p1   259:1    0  300M  0 part /boot
└─nvme0n1p2   259:2    0 99.7G  0 part 
  ├─rhel-root 253:0    0 75.8G  0 lvm  /
  ├─rhel-swap 253:1    0    4G  0 lvm  [SWAP]
  └─rhel-home 253:2    0   20G  0 lvm  /home
nvme0n2       259:3    0   10G  0 disk 
nvme0n3       259:4    0   10G  0 disk 
扫描除来系统所有的物理卷
pvsan
    -e 仅仅显示属于输出卷组的物理卷
    -n 仅显示不属于任何卷组的物理卷
[root@abc ~]# pvscan
  PV /dev/nvme0n2     VG storage         lvm2 [<10.00 GiB / 9.31 GiB free]
  PV /dev/nvme0n3     VG storage         lvm2 [<10.00 GiB / <10.00 GiB free]
  PV /dev/nvme0n1p2   VG rhel            lvm2 [99.70 GiB / 0    free]
  Total: 3 [<119.70 GiB] / in use: 3 [<119.70 GiB] / in no VG: 0 [0   ]


按照顺序优先创建PV卷 pvcreate命令创建
[root@abc ~]# pvcreate /dev/nvme0n2 /dev/nvme0n3 
  Physical volume "/dev/nvme0n2" successfully created.
  Physical volume "/dev/nvme0n3" successfully created.
查看已经创建的卷 pvdisplay
[root@abc ~]# pvdisplay
  "/dev/nvme0n2" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme0n2
  VG Name           
  PV Size               10.00 GiB ##PV大小
  Allocatable           NO  ##该pv能不能分给LV
  PE Size               0   ##PE的大小
  Total PE              0   ##PE的总数
  Free PE               0   ##PE可分配数
  Allocated PE          0   ##分配PE数
  PV UUID               MnKdcO-CTjQ-35Gp-T9qu-ICYm-UXly-MUO1wI
   
  "/dev/nvme0n3" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme0n3
  VG Name           
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               LRX2Bn-3QAT-b3PC-Y7HZ-zJU2-0EZ7-719YRt

创建storage VG卷并把刚刚创建的两个PV卷加入到VG卷中 
    -l    卷组上允许创建最大逻辑卷数
    -s    是指定PE的大小
    -p    卷组中允许添加的最大物理卷数
[root@abc ~]# vgcreate storage /dev/nvme0n2 /dev/nvme0n3 
  Volume group "storage" successfully created
[root@abc ~]# vgdisplay 
  --- Volume group ---
  VG Name               storage
  System ID         
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.99 GiB
  PE Size               4.00 MiB
  Total PE              5118
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               fvbHCf-Il4B-s1k6-ftrM-seGs-S3Vn-ujrlz 

创建LV lvcrate 
            -n LV卷名 
            -L lv卷大小
            -l 指定PE数量
[root@abc ~]# lvcreate -n vo -L 500MB storage 
  Logical volume "vo" created.
[root@abc ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/storage/vo
  LV Name                vo
  VG Name                storage
  LV UUID                vt3q8l-k5oq-8jat-2lcC-34SY-LZNJ-Tr608T
  LV Write Access        read/write
  LV Creation host, time abc.com, 2022-09-12 01:28:09 -0400
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

创建好的LV卷在 /dev/[VG卷名]/[LV卷名] 内

格式化逻辑卷,创建挂载目录将其挂载
[root@abc ~]# mkfs.ext4 /dev/storage/vo
[root@abc ~]# mkdir /LVM





⭐️ 扩展/缩小逻辑卷

如果一个逻辑卷不够用了,我们还可以给它扩展,扩展前需要将挂载的LVM卷取消挂载
lvextend 扩展逻辑卷
    -L 指定逻辑卷大小
[root@abc ~]# umount /LVM
[root@abc ~]# lvextend -L 600MB /dev/storage/vo
[root@abc ~]# mount /dev/storage/vo /LVM/
 使用e2fsck -f 命令来检查文件完整性
[root@abc ~]# e2fsck -f /dev/storage/vo 
重启空间,如果时ext4文件系统使用 resize2fs命令来重置,如果是xfs就需要使用xfs_growfs,应为你的逻辑卷之前格式化有400MB现在你扩大到了600MB,但是只是LV卷扩大了,你的文件系统还停留在之前的400MB中,这时候你就需要用到文件系统重置更新了,其实格式化也可以解决但是,格式化危险程度高
[root@abc ~]# resize2fs /dev/storage/vo 

收缩 -- XFS文件系统不支持缩小的
lvreduce 
    -L LV卷指定大小
[root@abc ~]# umount /dev/storage/vo 
缩小逻辑卷
[root@abc ~]# lvreduce -L 500MB  /dev/storage/vo
[root@abc ~]# e2fsck -f /dev/storage/vo
缩小文件系统
[root@abc ~]# resize2fs  -L 500MB /dev/storage/vo 

⭐️ LVM快照

LVM还具备快照卷的功能,该功能类似与虚拟机的还原时间点的功能。lvm快照卷有两个特点:
    快照卷的容量必须同等与逻辑卷的容量;
    快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
使用 -s 操作生成一个快照卷,-L 填写要创建快照的逻辑卷多大这里就填多大,在加上-n SNAP快照命令格式为
lvcreate -L [大小] -s -n SNAP [逻辑卷设备]
用SNAP快照,快照在你dev中你创建的卷组的目录中
使用要先卸载挂载,使用快照格式为 
lvconvert --merge [快照]

⭐️ 数据迁移PV

1.先卸载逻辑卷
2.umount [lv]
3.禁用卷组
4.vgchange -an [vg]
5.创建新的PV加入到vg中
6.使用pvs -o +pv_used 查看使用度
7.使用pvmove命令
    -n    指定逻辑卷的名称
    -b    后台允许
    -i    几秒打印一次信息
8.pvmove -n [逻辑卷] [设备1] [设备2] 
9.迁移完成再次在查看pvs -o +pv_used
9.使用 vgreduce命令移除损坏的盘

⭐️ 条带盘和镜像盘

镜像盘是基于LE和PE的映射关系,如果不做镜像盘那么LE和PE是一一对应的关系,如果做了镜像盘,LE可以同时影射多个PE内,也就是做了镜像,保证了数据的备份
条带卷 也就是RAID0