• Linux系统LVM逻辑卷


    传统分区的问题:

    如果分区空间用满了,只能重新分区。

    解决方案:加一个逻辑(软件)中间层。

    以下有三个解决方案(逻辑层):

    LVM,老牌的,很成熟,可以实现在线动态扩展(不能实现高可用)。

    stratis,使用精简文件系统来解决空间浪费问题。

    3、vdo

    一、LVM

    fs (file system文件系统)

    lv (logical volume 逻辑卷):每个卷组中可以定义一个或多个逻辑卷,逻辑卷是位于物理分区上的信息集合。

    vg (volume group 卷组):卷组是可用物理硬盘的集合,可以逻辑地看成一块大硬盘,一个卷组由一个或多个物理卷组成。

    pv (physical volume物理卷):物理卷是底层真正提供容量,一个物理卷可以是整个磁盘、或磁盘上的分区。

    PE  (Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小(可以指定大小),其实PE就是我们逻辑卷管理的最基本单位(一旦确定将不能改变)。比如说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分成了100个的PE,因为PE默认的大小就是4M。

        dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;

           /dev/dm-#

    1.1、安装lvm工具

    # yum install lvm2

    常用的 LVM 部署命令

    功能/命令      物理卷管理     卷组管理        逻辑卷管理

    扫描            pvscan          vgscan          lvscan

    建立            pvcreate        vgcreate       lvcreate

    显示            pvdisplay       vgdisplay      lvdisplay

    删除            pvremove        vgremove         lvremove

    扩展            vgextend        lvextend

    缩小            vgreduce        lvreduce

    1.2、创建逻辑卷:

    1.2.1、环境准备

    使用一块硬盘的两个分区 /dev/sdb2 /dev/sdb3

    或者两个硬盘/dev/sdb 、 /dev/sdc

    1.2.2、创建pv(Physical volume物理卷)

    在分区或磁盘内写入一段元数据(标识当前分区或磁盘是一个pv)

    # pvcreate /dev/sdb2 /dev/sdb3

    如果报错:

    Device /dev/sdb excluded by a filter.

    Device /dev/sdc excluded by a filter.

    可能是因为此硬盘已经分区,存在分区表

    查看创建的pv

    我使用的是3A服务器使用ssh连接的,平时做实验挺方便的

    1、# pvs

     2、# pvdisplay

    1.2.3、创建VG(Volume group 卷组)

    将指定的PV,逻辑上进行组合成一个大的存储池

    -s 参数,可指定PE大小,默认为4MB

    把两块硬盘设备加入到fantest 卷组中,然后查看卷组的状态

    # vgcreate fantest /dev/sdb2 /dev/sdb3

    查看创建的VG

    1、# vgs

     2、# vgdisplay

    1.2.4、创建LV(Logical volume逻辑卷)

    切割出一个约为 150MB 的逻辑卷设备,这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。

    -L参数:第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。

     -l参数:另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷。

    -l参数:另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷。

     使用所有空闲空间:lvcreate -n opt -l 100%FREE centos

     查看LV:

    1、# lvs

     2、# lvdisplay

    1.2.5、格式化LV,创建文件系统

    把生成好的逻辑卷进行格式化,创建文件系统

    # mkfs -t xfs /dev/fantest/lv01

    或者

    # mkfs.ext4 /dev/fantest/lv01

    1.2.6、挂载lv

    创建一个目录,用于挂载lv:

    # mkdir /home/lv01

    # mount /dev/fantest/lv01 /home/lv01

    把挂载信息写入到配置文件,使其永久生效

    # echo "/dev/fantest/lv01 /home/lv01 xfs defaults 0 0" >> /etc/fstab

    1.3、扩容逻辑卷

    1.3.1、假如VG还有足够空间可分配时,直接分配即可

    只要卷组(VG)中有足够的资源,就可以一直为逻辑卷(LV)扩容。

    1.3.1.1、查看VG的资源情况

     

    1.3.1.2、逻辑卷扩容

    1.3.1.2.1、-l参数:另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为 4MB。例如,使用-l 37 可以生成一个大小为 37×4MB=148MB 的逻辑卷

    具体操作与-L参数相似,参考下方办法即可

    1.3.1.2.2、-L参数:是以容量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。

    >> 先查看未扩容前,逻辑卷资源占用情况

    执行以下命令,扩容逻辑卷(LV):

    # lvextend -L +100M /dev/fantest/lv01

    执行以下命令,扩容xfs文件系统 或者在lvextend 命令中加入-r 参数

    # xfs_growfs /home/lv01

    1.3.2、如果VG没有足够空间可分配,则先创建PV,扩容卷组(VG)后再扩容逻辑卷(LV)

    扩展前查看资源情况

    先创建pv

    # pvcreate /dev/sdb4

    扩容VG

    # vgextend fantest /dev/sdb4

    1.4、缩小逻辑卷

    相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产

    环境中执行相应操作时,一定要提前备份好数据。另外 Linux 系统规定,在对 LVM 逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证我们的数据安全)。在执行缩容操作前记得先把文件系统卸载掉。

    tips:缩小逻辑卷时,剩余的空间大小必须为一个PV的大小以上

    1.4.1、迁移数据

    这里拿/home 测试,先将/home下内容备份删除,并卸载/home

     注意:如果出现以下情况,可用此命令查看目录占用情况fuser -mv /home

    1.4.2、缩小逻辑卷

    1.4.2.1、ext文件系统

    将逻辑卷大小调整为10G

    # resize2fs /dev/centos/home 10G

    resize2fs命令是用来增大或者收缩未加载的“ext2/ext3/ext4”文件系统的大小

    1.4.2.2、xfs文件系统

    缩小home 逻辑卷的大小为3G

    # lvreduce -L 3G /dev/centos/home

    把生成好的逻辑卷进行格式化,创建文件系统

    # mkfs.xfs -f  /dev/centos/home

    1.5、删除逻辑卷

    当生产环境中想要重新部署 LVM 或者不再需要使用 LVM 时,则需要执行 LVM 的删除

    操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。

    1.5.1、取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。

    # umount /home/lv01

     # vi /etc/fstab

    1.5.2、删除逻辑卷设备

    # lvremove /dev/fantest/lv01

    1.5.3、删除卷组,此处只写卷组名称即可,不需要设备的绝对路径

    # vgremove fantest

    1.5.4、删除物理卷设备

    # pvremove /dev/sdb3 /dev/sdb

    1.6、逻辑卷快照

    LVM 的快照卷功能有两个特点:

    ➢ 快照卷的容量必须等同于逻辑卷的容量;

    ➢ 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

    1.6.1、使用-s 参数生成一个快照卷,使用-L 参数指定切割的大小。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作

    # lvcreate -L 100M -s -n kuaizhao /dev/fantest/fan

    1.6.2、在逻辑卷所挂载的目录中创建一个 100MB 的垃圾文件,然后再查看快照卷的状态。可以发现存储空间占的用量上升了

    #dd if=/dev/zero of=/home/lvm_test/test.txt count=1 bs=100M

    1.6.3、为了校验 kuaizhao 快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载

    #umount /home/lvm_test

    如果报错:

    umount: /home/lvm_test: target is busy.

            (In some cases useful info about processes that use

             the device is found by lsof(8) or fuser(1))

    可能是有用户正在占用目录

    #lvconvert --merge /dev/fantest/kuaizhao

    1.6.4、快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的 100MB 的垃圾文件也被清除了。

    #mount  /dev/fantest/fan /home/lvm_test

  • 相关阅读:
    【斑梨】世界最小?linux开发板?价格只要39元 Luckfox Pico Mini 超越树莓派PICO ESP32 Arduino
    TiDB x 北京银行丨新一代分布式数据库的探索与实践
    题目:2667.创建 Hello World 函数
    市面上出现的led灯什么牌子的质量好?五款质量好的led灯分享
    关于A level的习题答案
    ElasticSearch (ES)学习之路(二)Win10安装ES,可视化界面,Kibanna
    老子云携手福昕鲲鹏,首次实现3D OFD三维版式文档的重大突破
    Springboot整合dubbo&zookeeper为注册中心
    市县镇一体化视频会议系统
    行情分析——加密货币市场大盘走势(10.16)
  • 原文地址:https://blog.csdn.net/m0_72838865/article/details/126246831