Lvm逻辑卷的管理(在线扩容 缩容 单块PV数据转移 快照管理)

一、Lvm逻辑卷

1.Lvm简介

         LVM(Logical Volume Manager)即逻辑卷管理器,是Linux系统下对磁盘分区进行管理的一种机制。LVM在硬盘分区和文件系统之间添加了一个逻辑层,为文件系统屏蔽了下层的磁盘分区布局,提供了一个 抽象的卷组,用户可以在这个卷组上创建文件系统。

2. 关系解读

 PE与PV的关系:
       PE是物理卷(PV)中可用于分配的最小存储单元。
每个物理卷都会被划分为多个PE,这些PE是LVM进行存储分配的基本单位。

LE与LV的关系:
        LE是逻辑卷(LV)中可用于分配的最小存储单元。 每个逻辑卷都会被划分为多个LE,这些LE与卷组中的PE一一对应。

VG与PV的关系:
          卷组(VG)建立在物理卷(PV)之上,一个卷组可以包含多个物理卷。 物理卷在加入卷组之前需要被初始化为LVM物理卷。

LV与VG的关系:
         逻辑卷(LV)建立在卷组(VG)之上,卷组中的未分配空间可以用于创建新的逻辑卷。 逻辑卷在创建后可以动态地扩展和缩小空间,以适应不同的存储需求。

五个术语相互关联
         PE和LE是LVM进行存储分配的基本单位,它们分别位于物理层和逻辑层。 PV是LVM存储管理的最底层,VG是建立在PV之上的一个逻辑层,而LV则是建立在VG之上的另一个逻辑 层。 这些层次结构共同构成了LVM存储管理的框架,使得LVM能够灵活地管理存储资源。

综上所述:
        PE、LE、PV、VG和LV在LVM中扮演着不同的角色,它们之间存在密切的关系和相互作用。这些概念和层 次结构共同构成了LVM存储管理的核心,使得LVM能够高效地管理存储资源并满足不同的存储需求。

3.Lvm的优势

1.提高磁盘管理的灵活性:
        通过LVM,系统管理员可以轻松管理磁盘分区,如将若干个磁盘分区连接为一个整块的卷组,形成一个存 储池。管理员可以在卷组上随意创建逻辑卷,并进一步在逻辑卷上创建文件系统。

2.动态调整存储卷组大小:
        管理员通过LVM可以方便地调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分 配。例如,可以按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘 名“sda”和“sdb”。

3.充分利用存储空间:
       当系统添加了新的磁盘时,通过LVM,管理员不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空 间,而是直接扩展文件系统跨越磁盘即可。

4.支持跨分区文件系统:
        文件系统可以建立在LVM上,跨多个分区使用,方便数据的存储和管理。

二、创建lvm实践

1.环境部署

Rocky系统
          yum install -y lvm2
Ubuntu系统
          apt install -y  lvm2 

2.创建命令详解

基本流程
创建LVM:
        通常包括创建物理卷、卷组和逻辑卷等步骤。可以使用pvcreate命令创建物理卷,使用vgcreate命令 创建卷组,使用lvcreate命令创建逻辑卷。

命令解读

物理卷信息查看命令:
    pvs                                             # 简要 pv 信息显示
   pvdisplay                                  # 显示详细信息
创建PV命令:
   pvcreate /dev/ 磁盘名                       # 创建物理卷
卷组信息查看命令:
    vgs                                                # 简要 vg 信息显示
    vgdisplay                                       # 显示详细信息
创建VG命令:
     vgcreate [-s Size ] vgname pv1 [pv2.. .]       
                   # 创建 VG
                   # -s 指定 PE 大小,数字加单位,单位为 k|K|m|M|g|G|t|T|p|P|e|E
逻辑卷信息查看命令
     lvs                                               # 简要 lv 信息显示
     Lvdisplay                                          # 显示详细信息
     lvscan                                               # 查看 lv 的具体名称路径
创建LV命令:
      lvcreate {-L N[mMgGtT]|-l N} -n NAME VolumeGroup
选项参数:
       - L|-- size N[mMgGtT]                         # 指定大小
        -|-- extents N                                      # 指定 PE 个数 , 也可用百分比
       - n Name                                             # 逻辑卷名称

3.准备工作(这里以rocky为例添加 5块模拟磁盘)

注意在添加磁盘的时候,如果重启之后它提示需要重新安装的rocky系统,直接关闭主机
这里右键选在rocky主机,选择电源选项,选择打开电源时进入固件。

这是linux启动时候规则 只需把最原始的磁盘移动到新添加的磁盘前即可 Ctrl+F10 保存退出

       在 Rocky 主机上面,增加 5 20G 的磁盘文件,并且进行磁盘分区动作,也可以用fdisk进行分区,我这里直接用echo进行分区了 分区前看好自己的磁盘名称。  
echo - e 'n\np\n\n\n\nw' | fdisk / dev / sdb
echo - e 'n\np\n\n\n\nw' | fdisk / dev / sdc
echo - e 'n\np\n\n\n\nw' | fdisk / dev / sdd
echo - e 'n\np\n\n\n\nw' | fdisk / dev / sde
echo - e 'n\np\n\n\n\nw' | fdisk / dev / sdf

4.创建PV

将两个物理磁盘分区,创建四个pv 应用pvcreate命令创建 ,可以用pvs或者pvdisplay查看

5.创建vg组

        用vgcreate创建vg组  可以使用-s 来指定PE的大小 也就是块的大小 默认是4M每个块的大小 这个可以根据自己存放的数据来修该块的大小,要是多量的小数据 可以默认就可以了。我这里就演示一下指定块大小。

     同样可以用vgs来查看创建好的vg组,也可以用vgdisplay来查看vg组的详细信息。

6.创建lv

 1.用lvcreate命令来创建lv     从 vg_1 中创建lv1,大小为 100个PE

2.从 vg_1 中创建 10G 的lv2  直接指定大小 -L 10G

3.使用百分比来创建 lv3 以剩余PE的vg_1 的空闲空间百分之十来创建

 4.也可以直接指定 vg的 百分比来创建lv4 

7. 格式化lv并挂载在目录上

    可以创建一个挂载的目录文件 mkdir /lvm 格式化创建好的lv任选其中一个即可 我这里选择lv2

挂载

三、扩容

1.VG扩容

   之前创建五个磁盘 还有sde还没用 这个时候假如逻辑卷组的内存不够用 我们要对vg组进行扩容
   首先将sde1创建到pv

查看

用vgextend 将新创建好的pv假如到vg_1组中 

2.Vg缩容

  首先用pvdisplay 来查看单个pv的详细信息 一定确认好 没有数据

用vgreduce 来对vg_1组的缩容

3.lv在线扩容

直接已将lv2挂载在目录上了 lv扩容可以在线扩容 首先对挂载的lv2进行扩容 

原始的lv2是10G 现在lvs查看lv2大小

但是我么的文件系统的空间是没有增大的

对文件系统进行扩容

可以检查一下

4.lv缩容

取消挂载

检验完整性(这个步骤是必须要做的)

先对文件进行缩容

对lv2进行缩容 先查看lv2的大小

缩容-L 直接指定大小

重新挂载

四、创建快照

1.简介

        逻辑卷快照是逻辑卷管理(LVM)中的一种功能,它允许用户对逻辑卷(LV)进行备份或创建数据的时间点副本。也就是说,它在生成时是对原逻辑卷数据的准确拷贝,但并非实时复制所有数据,而是基于写时复制(Copy-On-Write, COW)机制。

2.特点

节省空间:由于快照仅存储变化的数据,因此相对于完全备份,快照可以大大节省存储空间。
快速创建:快照创建过程迅速,不会对系统性能产生显著影响。
数据恢复:通过快照,可以轻松地将数据恢复到创建快照时的状态,这对于数据恢复和灾难恢复非常重要。
一次性使用:快照通常是一次性使用的,一旦还原,快照就会失效并被删除

3.流程

1 创建快照:
使用lvcreate命令并添加-s参数来创建一个快照。同时,可以使用-L参数指定快照的大小,以及-n参数指定快照的名称。
2 挂载快照:
将快照挂载到一个空目录上,以便访问快照中的数据。快照通常以只读方式挂载。
3 备份数据:
在快照挂载后,可以使用常规的备份工具(如rsync、tar等)对快照中的数据进行备份。
4 恢复数据(可选):
如果需要从快照恢复数据,可以先卸载原始逻辑卷,然后使用lvconvert --merge命令将快照合并到主逻辑卷中。这将把快照时的数据状态应用到主逻辑卷上。
恢复快照的时候,快照就没有了
5 删除快照:
完成备份或数据恢复后,可以使用lvremove命令删除快照。

4.准备工作

  在原来挂载的lvm的文件上 创建几个文件

lvm的挂载目录下,添加几个文件

[root@rocky9 ~]# cp /etc/fstab /mount/lvm/

[root@rocky9 ~]# ls /mount/lvm

fstab lost+found test .file

创建专属的快照目录

[root@rocky9 ~]# mkdir /mount/lvm_snapshot

[root@rocky9 ~]# ls -d /mount/lvm

/mount/lvm    /mount/lvm_snapshot

前期工作准备完成,开始创建快照

将创建的快照挂载到快照的文件目录 lvm_snapshot下

查看一下lvm和快照的文件目录

现在直接删除lvm目录下的new.txt和fstab的文件 然后用我们的快照直接恢复我们删除的文件

恢复删除的文件

取消挂载

umount  /mount/lvm

umount  /mount/lvm_snapshot

恢复快照

lvconvert --merge /dev/vg_1/lvm_snapshot

挂载

mount  /dev/vg_1/lv2  /mount/lvm

注意一个快照只能使用一次 如果还想使用就在创建一个快照在挂载

五、实战

查看PV存储过滤出想要的数据

pvdisplay | egrep 'volume|PV Name|Total PE|Free PE'

用pvmove /dev/sad1 将数据转移到其他存储PV上 

在执行 vgreduce vg_1 /dev/sdb1 就移除指定的PV存储了

        实战2:现有一个卷组 vg_data,其中已包含物理卷 /dev/sdb1。在该卷组中有一个名为 lv_store 的逻辑卷,采用 xfs 文件系统,挂载在 /store。由于空间爆满,需要从物理盘 /dev/sdc2 处对其进行扩容。请写出:
    1. 将 /dev/sdc2 初始化为 PV 并扩展到卷组 vg_data。
    2. 扩展逻辑卷 lv_store,将卷组剩余所有空间全部加给它。
    3. 在线扩容其 xfs 文件系统。

查看状态

1. 将 /dev/sdc2 初始化为 PV 并扩展到卷组 vg_data。

2. 扩展逻辑卷 lv_store,将卷组剩余所有空间全部加给它。

3. 在线扩容其 xfs 文件系统。

 实战三:在对新磁盘配置持久挂载时,某管理员将 /etc/fstab 中的 UUID 输错了一个字符,重启后系统直接卡在了 Emergency Mode。此时根分区变为了只读。请回答:
    1. 在此终端下如果直接编辑 /etc/fstab 会遇到什么报错?(提示:只读文件系统)
    2. 请给出能够解除只读限制、恢复系统挂载并修复该配置文件的完整命令步骤。
    3. 在修改 /etc/fstab 之后重启前,应运行哪条命令验证配置正确性?

1. 在此终端下如果直接编辑 /etc/fstab 会遇到什么报错?(提示:只读文件系统)

系统根分区为只读模式,写入操作被内核阻止,执行 vi /etc/fstab 保存时会提示:

2. 请给出能够解除只读限制、恢复系统挂载并修复该配置文件的完整命令步骤。

完整修复步骤(Emergency 救援模式操作)

步骤 1:重新以可读写模式挂载根分区

mount -o remount,rw /

这条命令在不卸载根分区的前提下,将根文件系统从只读重新挂载为读写模式,获得修改文件权限

步骤 2:编辑 /etc/fstab 修正错误 UUID

vim /etc/fstab

找到填写错误 UUID 的行,修改为磁盘真实 UUID(可新开终端执行 blkid 查看正确 UUID),保存退出

步骤 3:验证 fstab 无语法 / UUID 错误,重新挂载所有条目

mount -a

步骤 4:正常重启系统

reboot

3. 在修改 /etc/fstab 之后重启前,应运行哪条命令验证配置正确性?

mount -a

实战4:开发部门在清理旧分区时,要求运维将一个容量为 500GB 的 LVM 逻辑卷缩减到 200GB。该卷上挂载的是 xfs 文件系统。请回答:
    1. 这个任务在 xfs 文件系统上可行吗?如果执行 lvreduce 会发生什么灾难?
    2. 如果文件系统是 ext4,缩减逻辑卷的正确安全步骤是怎样的?为什么缩容必须“先缩减文件系统,再缩减逻辑卷”?

1. 这个任务在 xfs 文件系统上可行吗?如果执行 lvreduce 会发生什么灾难?

        完全不可行,XFS 文件系统不支持任何缩容操作,仅支持在线扩容,官方无工具可以缩小 XFS 文件系统。

2)直接执行 lvreduce 的灾难性后果

  1. 先执行 lvreduce -L 200G /dev/vg/xxx 会直接截断逻辑卷后端 300GB 存储空间;

  2. XFS 文件系统的元数据、数据块有大量内容存放在被截断的空间中;

  3. 后果:

    • 文件系统超级块、inode、数据区直接损坏;

    • 挂载时报 bad superblock,所有数据彻底丢失;

    • 无法通过 xfs_repair 修复截断后的 XFS,数据不可恢复;

    • 系统启动进入救援模式,业务完全瘫痪。

2. 如果文件系统是 ext4,缩减逻辑卷的正确安全步骤是怎样的?为什么缩容必须“先缩减文件系统,再缩减逻辑卷”?

步骤 1:备份数据(必做,防意外)

步骤 2:卸载逻辑卷(缩容不能在线操作)

步骤 3:检测 ext4 文件系统完整性

步骤 4:先缩小 ext4 文件系统至目标容量 200G

步骤 5:再缩减 LVM 逻辑卷底层存储空间

步骤 6:重新挂载验证

六、删除逻辑卷

        删除顺序是和我们创建的是恰恰相反的 创建的时候 PV---VG-----LV 删除的时候 记得取消挂载再删除LV---VG---PV

记住先取消挂载再删除LV

lvremove  /dev/vg_1/lv1 /dev/vg_1/lv2 /dev/vg_1/lv3 /dev/vg_1/lv4

这里是交互式删除的需要属于y确认一下

删除vg_1组和PV

删除vg组

vgremove vg_1

删除PV

pvremove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sde1 /dev/sdd1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值