ArchGuide

lvm实验及操作配置

前言:lvm作为极强的功能性是非常推荐学习并使用

转载链接:https://blogs.thornfield.cn/2022/04/07/lvmBasicOperation/

lvm概述

    LVM(Loical Volume Manager)逻辑卷管理。本质上就是一个虚拟设备驱动,在内核中块设备和物理设备直接添加一个层次。可以将几块物理的硬盘,每个硬盘都是一个物理卷(PhysicalVolume),然后再由多个物理卷上组合成一个卷组(volume group),然后在卷组上在划分出不同大小的LV(LogicalVolume)。这样磁盘就不是由kernel直接调用而是经过了lvm的管理后返回给kernel这样就能在lvm层实现更多的功能,也不再数据也不再局限于单块物理盘。数据维度可以跨越N多块硬盘。可以随意的调整大小、跨越多个物理卷等。
    具体的实现分层为:
            硬盘或分区做成pv,然后将pv或多个pv建立vg,vg上建立lv

安装lvm

    红帽分支RHEL、Fedora、Centos等:
            #yum install -y lvm2
    Debian分支Debian、Ubuntu、kali等:
            #apt install lvm2
            或者:
            #apt-get install lvm2
    Arch及分支Archlinux、Manjaro、Blackarch等:
            #pacman -S lvm2

lvm操作

    本次操作使用Centos7.8.2003来演示:
    环境:系统盘sda 30G,数据盘sdb、sdc、sdd、sde各5G。
    要求:
            1.安装lvm2管理工具。
            2.把sdb分成2个主要分区、sdc分成3个扩展分区,把sdd和sde各分成1个主要分区。在分区时注意修改硬盘类型。
            3.使用lvm2创建2个vg,一个由sdb和sdc(VG1),一个由sdd和sde(VG2)。
            4.并把所有创建分区都变成物理卷pv。
            5.在VG1上创建三个lv分别使用1G的容量,名称为lv0、lv1、lv2。
            6.格式化lv0为ext4格式,lv2为xfs格式,然后在创建/lv0和/lv2并挂载上去。
            7.在VG2上创建两个lv,lv3使用3G容量剩下的给lv4。
            8.删除VG2上所有的lv卷组,并把VG2并入VG1。
            9.合并后扩容lv2到4G容量lv0增加到5G容量后在缩小到3G空间。
            10.把sde1移出VG1。
            11.物理添加一块硬盘到sdf 3G容量,新建为主分区。然后添加到VG1内。
            12.删除所有LVM。

解题过程:

1.安装lvm2管理工具。

            [root@lvm2 ~]#yum install lvm2 -y

2.把sdb分成2个主要分区,修改硬盘类型。

            [root@lvm2 ~]# fdisk /dev/sdb
                    Command (m for help): n
                    Select (default p): p
                    Partition number (1-4, default 1):
                    First sector (2048-10485759, default 2048):
                    Using default value 2048
                    Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2500MB
                    Command (m for help): t
                    Selected partition 1
                    Hex code (type L to list all codes): 8e
                    Command (m for help): n
                    Select (default p): p
                    Partition number (2-4, default 2):
                    First sector (4884480-10485759, default 4884480):
                    Using default value 4884480
                    Last sector, +sectors or +size{K,M,G} (4884480-10485759, default 10485759): +2500MB
                    Command (m for help): t
                    Partition number (1,2, default 2): 2
                    Hex code (type L to list all codes): 8e
                    Command (m for help): w

lvmBasicOperation_1.png

    2.sdc分成3个扩展分区,修改硬盘类型。
            [root@lvm2 ~]# fdisk /dev/sdc
                Command (m for help): n
                Select (default p): e
                Partition number (1-4, default 1):
                First sector (2048-10485759, default 2048):
                Using default value 2048
                Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +3G
                Command (m for help): n
                Select (default p): l
                Adding logical partition 5
                First sector (4096-6293503, default 4096):
                Using default value 4096
                Last sector, +sectors or +size{K,M,G} (4096-6293503, default 6293503): +1G
                Command (m for help): t
                Partition number (1,5, default 5):
                Hex code (type L to list all codes): 8e
                Command (m for help): n
                Select (default p): l
                Adding logical partition 6
                First sector (2103296-6293503, default 2103296):
                Using default value 2103296
                Last sector, +sectors or +size{K,M,G} (2103296-6293503, default 6293503): +1G
                Command (m for help): t
                Partition number (1,5,6, default 6):
                Hex code (type L to list all codes): 8e
                Command (m for help): n
                Select (default p): l
                Adding logical partition 7
                First sector (4202496-6293503, default 4202496):
                Using default value 4202496
                Value out of range.
                Last sector, +sectors or +size{K,M,G} (4202496-6293503, default 6293503):
                Command (m for help): t
                Partition number (1,5-7, default 7):
                Hex code (type L to list all codes): 8e
                            Command (m for help): w

lvmBasicOperation_2.png

    2.把sdd和sde各分成1个主要分区,修改硬盘类型。
            [root@lvm2 ~]# fdisk /dev/sdd
                    Command (m for help): n
                    Select (default p): p
                    Partition number (1-4, default 1):
                    First sector (2048-10485759, default 2048):
                    Using default value 2048
                    Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
                    Command (m for help): t
                    Selected partition 1
                    Hex code (type L to list all codes): 8e
                    Command (m for help): w

lvmBasicOperation_3.png

    2.把sdd和sde各分成1个主要分区,修改硬盘类型。
            [root@lvm2 ~]# fdisk /dev/sde
                    Command (m for help): n
                    Select (default p): p
                    Partition number (1-4, default 1):
                    First sector (2048-10485759, default 2048):
                            Using default value 2048
                   Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
                    Command (m for help): t
                            Selected partition 1
                    Hex code (type L to list all codes): 8e
                    Command (m for help): w

lvmBasicOperation_4.png

            到此已经做到第二小题完
                    [root@lvm2 ~]# pvcreate /dev/sdb{1,2} /dev/sdc{5,6,7} /dev/sdd1 /dev/sde1

lvmBasicOperation_5.png

3.使用lvm2创建2个vg,一个由sdb和sdc(VG1),一个由sdd和sde(VG2)。

                    [root@lvm2 ~]# vgcreate VG1 /dev/sdb{1,2} /dev/sdc{5,6,7}
                    [root@lvm2 ~]# vgcreate VG2 /dev/sdd1 /dev/sde1

lvmBasicOperation_6.png

4.并把所有创建分区都变成物理卷pv。

5.在VG1上创建三个lv分别使用1G的容量,名称为lv0、lv1、lv2。

                    [root@lvm2 ~]# lvcreate -n lv0  -L 1G VG1
                    [root@lvm2 ~]# lvcreate -n lv1  -L 1G VG1
                    [root@lvm2 ~]# lvcreate -n lv2  -L 1G VG1

lvmBasicOperation_7.png

6.格式化lv0为ext4格式,lv2为xfs格式,然后在创建/lv0和/lv2并挂载上去。

                    [root@lvm2 ~]# mkfs.ext4 /dev/VG1/lv0
                    [root@lvm2 ~]# mkfs.xfs /dev/VG1/lv2
                    [root@lvm2 ~]# mkdir /lv0
                    [root@lvm2 ~]# mkdir /lv2
                    [root@lvm2 ~]# mount /dev/VG1/lv0 /lv0/
                    [root@lvm2 ~]# mount /dev/VG1/lv2 /lv2/

lvmBasicOperation_8.png

7.在VG2上创建两个lv,lv3使用3G容量剩下的给lv4。

                    [root@lvm2 ~]# lvcreate -n lv3 -L 3G VG2
                    [root@lvm2 ~]# lvcreate -n lv4 -l 100%FREE VG2

lvmBasicOperation_9.png

                    [root@lvm2 ~]# lvremove lv3 VG2
                    [root@lvm2 ~]# lvremove lv4 VG2

lvmBasicOperation_10.png

8.删除VG2上所有的lv卷组,并把VG2并入VG1。

                    [root@lvm2 ~]# vgmerge -v VG1 VG2

lvmBasicOperation_11.png

9.合并后扩容lv2到4G容量lv0增加到5G容量后在缩小到3G空间。

                    [root@lvm2 ~]# umount  /lv0
                    [root@lvm2 ~]# umount  /lv2
                    [root@lvm2 ~]# lvextend -L +3G /dev/VG1/lv2
                    [root@lvm2 ~]# lvextend -L +4G /dev/VG1/lv0
                    [root@lvm2 ~]# resize2fs -f  /dev/VG1/lv0
                    [root@lvm2 ~]# lvreduce -L 2G -r /dev/VG1/lv0

lvmBasicOperation_12.png

10.把sde1移出VG1。

                    [root@lvm2 ~]# pvmove /dev/sde1

lvmBasicOperation_13.png

11.物理添加一块硬盘到sdf 3G容量,新建为主分区。然后添加到VG1内。

                    [root@lvm2 ~]#reboot

lvmBasicOperation_14.png

                    [root@lvm2 ~]# fdisk /dev/sdf
                            Command (m for help): n
                            Select (default p): p
                            全部默认回车
                            Command (m for help): t
                            Hex code (type L to list all codes): 8e
                            Command (m for help): w
                    [root@lvm2 ~]# vgextend VG1 /dev/sdf1

lvmBasicOperation_15.png

12.剩下删除所有LVM

                    [root@lvm2 ~]# lvremove /dev/VG1/lv*
                    [root@lvm2 ~]# vgremove VG1
                    [root@lvm2 ~]# pvremove /dev/sd*

lvmBasicOperation_16.png

总结

    总体来说LVM是非常强大的组件,需要学会并使用它,而且这是不难的。以上操作就使用到了几个命令fdisk、pvcreate、vgcreate、lvcreate、vgextend等。主要是多练习,多想想真正使用中会出现哪种需求然后实现它。以下我列出几个命令供大家参考:
    PV管理命令:
            pvscan                          扫描
            pvcreate                        创建
            pvdisplay                      显示
            pvremove                        移除
            pvs                             查看
    VG管理命令:
            vgscan                          扫描
            vgcreate                        创建
            vgdisplay                       显示
            vgremove                        移除
            vgextend                        扩展
            vgreduce                        减少
            vgs                             查看
    LV管理命令:
            lvscan                          扫描
            lvcreate                        创建
            lvdisplay                       显示
            lvremove                        移除
            lvextend                        扩展
            lvreduce                        减少
            lvs                             查看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注