• 青蛙学Linux—LVM


    LVM,Logical Volume Manage,逻辑卷管理,是Linux下对磁盘分区进行管理的一种机制。LVM是建立在磁盘分区和文件系统之间的一个逻辑层。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整分区大小;如果主机新增了一块硬盘,通过LVM可以直接将新增的空间扩展到原来的磁盘分区上;LVM可以跨硬盘建立。

    LVM的相关概念:

    • 物理存储设备:Physical Media,如硬盘
    • PV:Physical Volume,物理卷
    • VG:Volume Group,卷组
    • LV:Logical Volume,逻辑卷
    • PE:Physical Extent,PV中可以分配的最小存储单元
    • LE:Logical Extent,LV中可以分配的最小存储单元

    它们之间的关系如下图所示:

    1235951-20180715234526888-873904766

    LVM依赖以下软件包:

    lvm2
    lvm2-libs
    e2fsprogs
    e2fsprogs-libs
    xfsprogs

    创建LVM:

    1. 对磁盘进行分区
    2. 创建物理卷
      pvcreate part    # 将指定分区创建成PV
      pvdisplay        # 查看PV信息
    3. 创建卷组
      vgcreate VG name PV    # 将指定的PV加入到VG
      vgdisplay              # 查看VG信息
    4. 激活卷组
      vgchange -a y VG
    5. 创建逻辑卷
      lvcreate -L size|-l PE number -n LV name VG    # 在指定VG上创建LV
      lvdisplay                                      # 查看LV信息
    6. 格式化逻辑卷
      mkfs.文件系统类型 /dev/VG/LV
    7. 挂载逻辑卷

    扩展VG:

    vgextend VG PV

    扩展LV:

    lvextend -L +size|-l +PE number /dev/VG/LV

    删除LVM:

    1. 卸载逻辑卷对应的分区
    2. 删除LV
      lvremove /dev/VG/LV
    3. 删除VG
      vgremove VG
    4. 删除PV
      pvremove PV

    额外的:在线扩展xfs和ext4

    扩展xfs:

    xfs_growfs 分区

    扩展ext4:

    resize2fs 分区

    一个例子:跨硬盘创建一个LVM

    为当前主机添加了一块15GB和一块20GB的硬盘,在系统中分别为/dev/sdb和/dev/sdc。/dev/sdb分割为10GB和5GB的两个分区,/dev/sdc分割为两个10GB的分区。/dev/sdb的10GB分区和/dev/sdc的一个10GB分区组成一个名为test01的VG,并上VG上创建一个名为test1的LV,占用所有的VG空间并格式化为xfs挂载到/data1目录下。

    先用yum安装LVM所依赖的软件包:

    [root@localhost ~]# yum install lvm2 lvm2-libs e2fsprogs e2fsprogs-libs xfsprogs

    为主机添加了两块硬盘:

    1

    使用parted对这两块硬盘进行分区:

    2

    分区完成,这里要将/dev/sdb1和/dev/sdc1组成一个VG,所以先把/dev/sdb1和/dev/sdc1创建成PV:

    3

    使用pvdisplay查看两个PV是否创建成功:

    4

    通过返回的信息可以看到PV创建成功,接下来把两个PV组成一个VG,VG名为test01:

    5

    6

    7

    VG创建成功,接下来激活VG:

    8

    接下来将VG的全部空间创建一个LV,LV名为test1(这里使用PE数量创建):

    9

    10

    将LV格式化为xfs并挂载到/data1目录下:

    11

    OK,LV成功挂载到/data1目录,现在就可以先里面写入数据了。

    一个例子:为LV扩展空间

    将剩余的/dev/sdb2和/dev/sdc2加入test01的VG中,并将这些空间扩展到test1的LV上。

    创建PV并将PV扩展到VG上:

    12

    13

    注意返回结果的Free PE字段,空间已经扩展,接下来把这些空间扩展到test1的LV上(同样使用PE进行操作):

    14

    15

    16

    通过上面的显示信息可以看到,名为test1的LV空间已经成功扩展,但是在线上挂载到的/data1的空间仍没有扩展,因为是xfs,所以可以通过xfs_growfs命令实现在线扩展xfs空间:

    17

    OK,在线扩展成功。

  • 相关阅读:
    微信公众号开发:3、自定义菜单
    微信公众号开发:2、消息处理
    微信公众号开发:1、服务器配置
    基于.NetCore3.1系列 —— 日志记录之初识Serilog
    基于.NetCore3.1系列 —— 日志记录之日志核心要素揭秘
    基于.NetCore3.1系列 —— 日志记录之自定义日志组件
    基于.NetCore3.1系列 —— 日志记录之日志配置揭秘
    基于.NetCore3.1系列 —— 使用Swagger导出文档 (番外篇)
    基于.NetCore3.1系列 —— 使用Swagger导出文档 (补充篇)
    基于.NetCore3.1系列 —— 使用Swagger做Api文档 (下篇)
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/9973799.html
Copyright © 2020-2023  润新知