• LVM使用与管理


    LVM
    LVM使用大概如下图,最终使用的单位是lv 逻辑卷

    在这里插入图片描述

    一、LVM基本术语
    1、 物理卷(PV)
    是由物理分区创建而成,使用命令 pvcreate 分区名
    物理卷是组成卷组的单位
    2、 卷组(VG)
    由多个物理卷组成,使用命令 vgcreate 物理卷名
    卷组可以理解为一块逻辑意义上的磁盘,提供给逻辑卷使用
    3、 逻辑卷(LV)
    类似与物理分区,提供分区的磁盘是卷组,创建逻辑卷

     lvcreate [-L 1size ] -n LVNAME VGNAME
    

    逻辑卷创建好后,就可以进行创建文件系统,并挂在使用了
    4、 物理块(PE)
    是物理分区的最小寻址单位,默认大小是4MB
    5、 逻辑块(LE)
    是逻辑卷的最小寻址单位,默认大小是4MB

    二、建立LVM卷
    #我这里使用的是虚拟机进行操作,增加一块硬盘,进行实验
    使用fdisk -l 查看新的磁盘
    在这里插入图片描述

    1、 创建3个分区

    fdisk /dev/sdb
    
    	n		创建分区
    	p		创建主分区	(1-3为主分区,4为扩展分区)
    #first sector默认,last sector为 +200M 代表第一个分区200M	  
    

    在这里插入图片描述

    t	将分区类型改为8e
    

    在这里插入图片描述

    	#使用 P 查看分区情况
    

    在这里插入图片描述

    	#按之前的操作,创建分区2和3 第三个最后的大小不用写,默认剩下的都会给最后的分区
    
    	wq 保存退出
    

    在这里插入图片描述

    2、 创建物理卷

    pvcreate /dev/sdb[1-3]
    

    在这里插入图片描述

    #使用pvs查看物理卷情况

    在这里插入图片描述

    3、 创建卷组vg0,将物理卷都加入到vg0中
    在这里插入图片描述

    #使用vgs查看卷组情况
    在这里插入图片描述

    #可以看到现在卷组由3个物理卷
    4、 创建3个逻辑分区,lv0 lv1 lv2,并将它们挂载到/data/lv0 /data/lv1 /data/lv2

    1. 创建逻辑卷
      命令 : lvcreate [ -L SIZE ] -n LVNAME VGNAME

      lvcreate -L 200M -n lv0 vg0
      lvcreate -L 200M -n lv1 vg0

    #在创建第3个逻辑卷时,发现卷组可用空间不足200M
    在这里插入图片描述

    #所以指定第三个逻辑卷lv2的大小为188M
    lvcreate -L 188M -n lv2 vg0
    #查看逻辑卷
    lvs
    在这里插入图片描述

    	2)为逻辑卷创建文件系统ext4
    	#逻辑卷文件在/dev/vg0 下面 使用 ll 查看一下
    

    在这里插入图片描述

    #创建文件系统 命令: mkfs

    mkfs.ext4 /dev/vg0/lv0
    mkfs.ext4 /dev/vg0/lv1
    mkfs.ext4 /dev/vg0/lv2
    

    3)将逻辑卷分别挂载到/data/lv0 /data/lv1 /data/lv2
    #创建/data/lv0 /data/lv1 /data/lv2 文件

    mkdir -p /data/lv0 /data/lv1 /data/lv2
    

    #进行挂载

    mount /dev/vg0/lv0 /data/lv0
    mount /dev/vg0/lv1 /data/lv1
    mount /dev/vg0/lv2 /data/lv2
    

    #使用df -h 查看是否挂载上
    在这里插入图片描述

    #分别在 /data/lv0 /data/lv1 /data/lv2 创建文件,查看是否可以正常使用
    在这里插入图片描述

    #lvm到这里就创建成功了

    三、管理LVM
    #lvm的管理大概就是这些东西了
    在这里插入图片描述

    #查看卷的信息就不看了,直接来实验一下扩容缩容
    1、 卷组进行扩容和缩容
    1)扩容
    #假设新加入了一块磁盘需要加入到lvm卷组中在这里插入图片描述

    #将/dev/sdc进行分区,并创建物理卷,然后加入已有卷组
    fdisk /dev/sdc

    n
    p
    1
    t
    8e
    P
    

    在这里插入图片描述

    wq
    #将新的分区创建为物理卷
    在这里插入图片描述

    #查看物理卷
    pvs
    在这里插入图片描述

    #可以看出/dev/sdc1现在已经是物理卷了

    查看卷组
    在这里插入图片描述

    #现已有的卷组为vg0

    #将物理卷/dev/sdc1加入到卷组vg0实现卷组扩容
    vgextend vg0 /dev/sdc1
    在这里插入图片描述

    #查看/dev/sdc1是否加入到了卷组
    pvs
    在这里插入图片描述

    #使用vgs查看卷组是否扩容了
    在这里插入图片描述

    #可以看出vg0卷组已经被扩容了

    2)缩容
    #所有就是将vg0中的物理卷卸载掉,这个物理卷必须是没有被使用
    vgreduce vg0 /dev/sdc1

    #查看物理卷情况
    pvs
    在这里插入图片描述

    #可以看出物理卷/dev/sdc1已经被移除了vg0卷组

       #在来看下卷组
    	vgs
    

    在这里插入图片描述

    #可以看出卷组多余的空间已经没有了

    2、 逻辑卷进行扩容和缩容
    1) 扩容
    #先放大lv 在放大文件系统
    #ext4文件系统使用resize2fs来调整缩容和缩容
    #xfs系统通过 xfs_growfs /dev/mapper/cl-root (设备路径) 来进行扩容,无法缩容

    #逻辑卷扩容的前提是卷组中必须由多余的空闲空间
    vgs
    在这里插入图片描述

    #如何卷组没有空间需要加入新的物理卷到卷组,这里不在演示了

    #命令格式

    lvextend -L SIZE LV_DEVICE		#扩容到一个固定值
    lvextend -L +SIZE LV_DEVICE		#增加多少空间
    

    #查看逻辑卷情况

    lvs
    

    在这里插入图片描述

    将逻辑卷lv0扩容200M,设备所在的位置在/dev/vg0/lv0
    ! 在进行扩容前最好对文件系统进行备份,以免误操作导致,导致文件丢失

    lvextend -L 400M /dev/vg0/lv0 或者 lvextend -L +200M /dev/vg0/lv0

    在这里插入图片描述

    #查看一下逻辑卷情况
    在这里插入图片描述

    #可以看到逻辑卷已经被扩大了

    #再来扩大文件系统(扩大文件系统时可以在已挂载的情况下进行)
    resize2fs -p /dev/vg0/lv0
    在这里插入图片描述

    #使用df -h来查看一下文件系统是否被扩容
    在这里插入图片描述

    #可以看出已经从200M变成400M了

    2) 缩容
    #缩容时,文件系统容量必须大于现在的占有量

    #命令格式

    lvreduce -L SIZE LV_DEVICE		#缩容到一个固定值
    lvreduce -L -SIZE LV_DEVICE		#缩容多少空间
    

    #将lv1缩容200M
    !缩容前最好配分一下文件系统,以免误操作,导致文件丢失
    !缩容前需要卸载文件lv的文件系统

    umount /data/lv0
    fsck -f /dev/vg0/lv0
    

    在这里插入图片描述

    resize2fs -p /dev/vg0/lv0 200M	#缩小文件系统
    

    在这里插入图片描述

    lvreduce -L -200M /dev/vg0/lv0	#缩小逻辑卷
    

    在这里插入图片描述

      mount /dev/vg0/lv0 /data/lv0	#挂载文件系统
      df -h							#查看是否缩容
    

    在这里插入图片描述

    #可以已经缩容了200M了

    四、LVM高级应用
    1、卷快照
    #为lv卷做一个快照,保存当时状态(只支持逻辑卷)
    命令:lvcreate -n LVNAME -s -L SIZE LVDEVICE #快照的大小取原来lv的15%-20%

    #可以配合上面的扩容缩容进行备份

    #查看lv的情况

    lvs
    

    在这里插入图片描述

    #进入lv0的挂载点,给lv0创建5个文件

    for i in {1..5};do touch $i;done
    

    在这里插入图片描述

    #为lv0创建一个快照,保留当前状态,快照名为lv0-snap

    lvcreate -n lvo-snap -s -L 40M /dev/vg0/lv0		#快照大小取原lv卷的15%-20%
    

    在这里插入图片描述

    #lvs查看lv情况
    在这里插入图片描述

    #挂载lvo-snap 并查看文件
    首先先创建挂载点,在挂载

    mkdir -p /data/lvo-snap
    mount  /dev/vg0/lvo-snap /data/lvo-snap
    

    在这里插入图片描述

    #可以看到,快照内的文件和lv卷的一样,这个快照功能可以起到很好的备份功能(当然是在vg容量够的情况下)

    #当快照不需要时可以进行卸载,前提升快照不能被挂载
    命令: lvremove LVDEVICE

    umount /data/lvo-snap		#卸载lv0快照的挂载点,不能在/data/lvo-snap里面卸载
    
    lvremove /dev/vg0/lvo-snap	#卸载lv-snap快照
    

    在这里插入图片描述

    lvs查看
    在这里插入图片描述

    发现快照已经被卸载了

    3、 移动卷
    #假如某个物理卷代表的分区即将损坏或者需要更快的磁盘来代替旧的磁盘时,需要将旧的物理卷的数据转移到另一个容量较大的物理卷中

    #查看物理卷情况
    pvs
    

    在这里插入图片描述

    #假如/dev/sdb1即将损坏,现在要将/dev/sdb1的数据转移到/dev/sdc1中
    #需要先做好备份

    命令:pvmove [OPTIONS] [SOURCE] [DESTINATION]
    

    在这里插入图片描述

    pvs
    

    在这里插入图片描述

    可以看出/dev/sdb1已经没有被使用

    #从卷组中卸载物理卷
    命令:vgreduce VGNAME PVNAME

    vgreduce vg0  /dev/sdb1
    

    在这里插入图片描述

    #物理卷/dev/sdb1已经脱离了vg0卷组了

    #删除物理卷
    命令:pvremove PVNAME

    pvremove /dev/sdb1
    

    在这里插入图片描述
    在这里插入图片描述

    #可以看到已经成功被删除了

    五、删除所有LV,pV,VG,还原分区
    1、卸载所有逻辑卷

    lvs		#查看所有的逻辑卷
    

    在这里插入图片描述

    #卸载所有挂载点

    umount /data/lv[0-2]
    

    在这里插入图片描述

    #删除所有逻辑卷

    lvremove /dev/vg0/lv[0-2]
    

    在这里插入图片描述
    在这里插入图片描述

    #可以看到逻辑卷已经被删除了

    2、删除所有的物理卷
    #卸载物理卷,先把物理卷从vg中移除,在lvm中删除
    #查看物理卷

    pvs
    

    在这里插入图片描述

    #将所有物理卷移除vg0卷组

    vgreduce vg0 /dev/sda2 /dev/sdb[23] /dev/sdc1 
    

    在这里插入图片描述

    #最后保留了一个物理卷(估计是无法全部移除卷组)

    #将所有物理卷删除

    pvremove /dev/sda2 /dev/sdb[23]
    pvremove --force --force /dev/sdc1		#由与/dev/sdc1没有被移出卷组,就强制删除它
    

    在这里插入图片描述

    #查看物理卷

    pvs
    

    在这里插入图片描述

    #之前创建的物理卷已经不在了

    #查看卷组

    vgs
    

    在这里插入图片描述

    #物理卷被删除了卷组就自动消失了

    4、 还原分区
    #查看磁盘和分区情况

     fdisk -l
    

    在这里插入图片描述

    #我们之前实验用的是sdb和sdc这两块磁盘,分区都被设置为LVM了,所有需要先分区删除,在重新创建分区

    fdisk /dev/sdb
    d
    1
    d
    2
    d
    3
    P
    wq
    

    #还有一个LVM分区也一样删掉

  • 相关阅读:
    vs2022中使用gridview显示sqlserver中的数据时只显示了列而没有显示表中的数据
    70、window11+visual studio2019+共享内存进行数据传输
    java单例模式
    Leetcode 239 滑动窗口最大值
    LeetCode-子数组的最小值之和
    js垃圾回收机制
    NodeJS使用npm安装vue脚手架
    为什么香肠能激活手机屏幕,手套不能
    YOLOv6、PP-YOLOE、PicoDet选择TOOD
    使用 类加载器 或者 类对象 读取文件
  • 原文地址:https://blog.csdn.net/qq_50247813/article/details/127097747