• linux存储管理之逻辑卷


    LVM管理


    ====================================================================================
    创建LVM
    VG扩展/缩小
    LV扩容/文件系统扩容
    LVM Snapshot [扩展]

    lvm基本术语
    • 物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
    • 物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
    • 卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
    • 逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
    • PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
    • LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
    简单来说就是:
    PV:是物理的磁盘分区
    VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。
    LV:也就是从VG中划分的逻辑分区
    如下图所示PV、VG、LV三者关系:
    file://C:UsersanliuAppDataLocalTempct_tmp/1.png


    基本分区(MBR|GPT) ----> Filesystem ----> mount
    逻辑卷 ----> Filesystem ----> mount

    一、创建LVM
    0. 准备物理磁盘
    可以是: /dev/sdb /dev/sdc1 (建立在RIAD之上)
    [root@server0 ~]# ll /dev/vd{c,d,e}
    brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/vdc
    brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/vdd
    brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/vde

    1. pv
    [root@server0 ~]# pvcreate /dev/vdd
    Physical volume "/dev/vdd" successfully created

    [root@server0 ~]# pvscan
    PV /dev/vdd lvm2 [2.00 GiB]
    Total: 1 [2.00 GiB] / in use: 0 [0 ] / in no VG: 1 [2.00 GiB]

    [root@server0 ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/vdd lvm2 a-- 2.00g 2.00g

    2. vg
    [root@server0 ~]# vgcreate vg1 /dev/vdd
    Volume group "vg1" successfully created
    [root@server0 ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 1 0 0 wz--n- 2.00g 2.00g
    [root@server0 ~]# vgscan
    Reading all physical volumes. This may take a while...
    Found volume group "vg1" using metadata type lvm2
    [root@server0 ~]# vgdisplay
    --- Volume group ---
    VG Name vg1
    System ID
    Format lvm2
    Metadata Areas 1
    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 1
    Act PV 1
    VG Size 2.00 GiB
    PE Size 4.00 MiB
    Total PE 511
    Alloc PE / Size 0 / 0
    Free PE / Size 511 / 2.00 GiB
    VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V

    3. lv
    [root@server0 ~]# lvcreate -l 10 -n lv1 vg1
    [root@server0 ~]# lvcreate -L 200M -n lv2 vg1

    [root@server0 ~]# lvscan
    ACTIVE '/dev/vg1/lv1' [640.00 MiB] inherit
    ACTIVE '/dev/vg1/lv2' [256.00 MiB] inherit

    4. 创建文件系统并挂载
    [root@server0 ~]# mkfs.xfs /dev/vg1/lv1
    [root@server0 ~]# mkfs.ext4 /dev/vg1/lv2

    [root@server0 ~]# mkdir /mnt/lv1 /mnt/lv2

    [root@server0 ~]# vim /etc/fstab
    /dev/vg1/lv1 /mnt/lv1 xfs defaults 0 0
    /dev/vg1/lv2 /mnt/lv2 ext4 defaults 0 0

    [root@server0 ~]# mount -a
    [root@server0 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/mapper/vg1-lv1 651948 32928 619020 6% /mnt/lv1
    /dev/mapper/vg1-lv2 245671 2062 226406 1% /mnt/lv2


    二、VG管理
    ==扩大VG vgextend==
    1. pv
    [root@server0 ~]# pvcreate /dev/vde

    2. vgextend
    [root@server0 ~]# vgextend vg1 /dev/vde
    Volume group "vg1" successfully extended
    [root@server0 ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 2 2 0 wz--n- 3.99g 3.76g

    ==减小VG vgreduce==
    1.查看当前的VG中PV的使用情况
    [root@server0 ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/vdd vg1 lvm2 a-- 2.00g 1.76g
    /dev/vde vg1 lvm2 a-- 2.00g 2.00g

    2. pvmove数据到其它PV
    [root@server0 ~]# pvmove /dev/vdd
    /dev/vdd: Moved: 16.7%
    /dev/vdd: Moved: 100.0%

    [root@server0 ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/vdd vg1 lvm2 a-- 2.00g 2.00g
    /dev/vde vg1 lvm2 a-- 2.00g 1.76g

    3.vgreduce VG
    [root@server0 ~]# vgreduce vg1 /dev/vdd
    Removed "/dev/vdd" from volume group "vg1"

    [root@server0 ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 1 2 0 wz--n- 2.00g 1.76g


    三、LV扩容
    1. lv扩容
    [root@server0 ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 2 2 0 wz--n- 1.88g 1.00g

    [root@server0 ~]# lvextend -L 800M /dev/vg1/lv1
    [root@server0 ~]# lvextend -L +800M /dev/vg1/lv1

    [root@server0 ~]# lvextend -l 15 /dev/vg1/lv1
    [root@server0 ~]# lvextend -l +15 /dev/vg1/lv1

    =======================================
    +50%FREE
    =======================================

    [root@server0 ~]# lvscan
    ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
    ACTIVE '/dev/vg1/lv2' [512.00 MiB] inherit

    2. FS扩容
    [root@server0 ~]# df -Th
    /dev/mapper/vg1-lv1 xfs 637M 67M 570M 11% /mnt/lv1
    /dev/mapper/vg1-lv2 ext4 240M 32M 192M 15% /mnt/lv2

    a. xfs
    [root@server0 ~]# xfs_growfs /dev/vg1/lv1

    b. ext2/3/4
    [root@server0 ~]# resize2fs /dev/vg1/lv2

    [root@server0 ~]# df -Th
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/mapper/vg1-lv1 xfs 765M 67M 698M 9% /mnt/lv1
    /dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2


    四、LVM快照snapshot
    1. 创建快照 (EXT4)
    [root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2
    [root@server0 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
    lv1 vg1 -wi-ao---- 768.00m
    lv2 vg1 owi-aos--- 512.00m
    lv2-snap vg1 swi-aos--- 128.00m lv2 5.92

    [root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/

    [root@server0 ~]# df -Th
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
    /dev/mapper/vg1-lv2--snap ext4 488M 32M 429M 7% /mnt/lv2-snap

    [root@server0 ~]# lvscan
    ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
    ACTIVE Original '/dev/vg1/lv2' [512.00 MiB] inherit
    ACTIVE Snapshot '/dev/vg1/lv2-snap' [128.00 MiB] inherit

    [root@server0 ~]# ls /mnt/lv2
    etc lost+found
    [root@server0 ~]# ls /mnt/lv2-snap/
    etc lost+found

    2. 修改原卷的数据

    3. 观察Snapshot
    [root@server0 ~]# lvs
    LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
    lv1 vg1 -wi-ao---- 768.00m
    lv2 vg1 owi-aos--- 512.00m
    lv2-snap vg1 swi-aos--- 128.00m lv2 30.56


    XFS:
    [root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/s
    挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据


    [root@server0 ~]# dmsetup ls --tree
    vg1-lv2--snap (252:5)
    ├─vg1-lv2--snap-cow (252:7)
    │ └─ (253:17)
    └─vg1-lv2-real (252:6)
    ├─ (253:17)
    └─ (253:18)
    vg1-lv2 (252:1)
    └─vg1-lv2-real (252:6)
    ├─ (253:17)
    └─ (253:18)


    快照自动增长:
    [root@server0 ~]# vim /etc/lvm/lvm.conf
    snapshot_autoextend_threshold = 70
    snapshot_autoextend_percent = 20
    [root@server0 ~]# systemctl restart lvm2-monitor.service
    [root@server0 ~]# systemctl enable lvm2-lvmetad.service
    注:快照卷 和 原卷 使用同一VG空间



    拓展:
    缩减逻辑卷至2G
    确保缩减后空间能够存储原有数据
    [root@centos5 ~]# df -lh
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/sda2              16G  4.3G   11G  29% /
    /dev/sda1              99M   12M   82M  13% /boot
    tmpfs                1005M     0 1005M   0% /dev/shm
    /dev/mapper/myvg-lv1  4.0G  137M  3.7G   4% /users

    卸载
    [root@centos5 ~]# umount /users
    强制文件系统检测
    [root@centos5 ~]# e2fsck -f /dev/myvg/lv1

    缩减
    [root@centos5 ~]# resize2fs /dev/myvg/lv1 2G

    [root@centos5 ~]# lvreduce -L 2G /dev/myvg/lv1

    重新挂载
    [root@centos5 ~]# mount -a
    查看分区大小及文件
    [root@centos5 ~]# df -lh
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/sda2              16G  4.3G   11G  29% /
    /dev/sda1              99M   12M   82M  13% /boot
    tmpfs                1005M     0 1005M   0% /dev/shm
    /dev/mapper/myvg-lv1  2.0G  135M  1.8G   8% /users

    [root@centos5 ~]# cat /users/inittab

    缩减逻辑卷;
    注意:1、不能在线缩减,得先卸载;
       2、确保缩减后的空间大小依然能存储原有的所有数据;
       3、在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态;

  • 相关阅读:
    【原创】xenomai内核解析---内核对象注册表—xnregistry(重要组件)
    【原创】xenomai内核解析--双核系统调用(三)--如何为xenomai添加一个系统调用
    【原创】xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
    【原创】xenomai内核解析--信号signal(二)---xenomai信号处理机制
    环境篇:数据同步工具DataX
    环境篇:DolphinScheduler-1.3.1安装部署及使用技巧
    大数据篇:一文读懂@数据仓库(PPT文字版)
    如何把百万级别的订单根据金额排序
    数据库系统设计概述
    《Redis设计与实现》笔记4—独立功能的实现
  • 原文地址:https://www.cnblogs.com/anttech/p/10612326.html
Copyright © 2020-2023  润新知