天天看点

LVM应用(一)

一、LVM简介

    LVM:logical Volume Manager,Version 2

    他们的驱动刚好相反

    raid用的内核模块是:md

    lvm用的是dm:device mapper 设备映射,将一个或多个底层快设备组织成一个逻辑设备的模块

        dm:也能实现raid

        pv--vg(pe,pe,,,,)-lv

        PE:phsical Extent //默认是4M

            //把PV所拥有的存储空间划分为n个存储块,

            //PV创建后,并没有pe,只有加入到vg后,才会具有pe,每个vg对pe的大小定义是不同的

            //pe的大小取决于vg的定义

        lv //就是指定多少个pe组成一个fs的过程

            //少了可以加,多了可以减去(不损坏已经存在文件)

            //默认centos就是使用的lv

        LE //一旦PE被分配给某个lv后,pe就变成了logical extent

    //可以动态伸缩,但是使用软件实现,一旦数据发生损坏,修复困难,因为文件不是直接存储在硬盘上的,而是在软件上组织的

        /dev/mapper/VG_NAME-LV_NAME  //例如vg0-root,vg0上一个叫root的vg

            /dev/VG_NAME-LV_NAME  // /dev/vol0/root 也是可以的,一个链接文件,便于识别

            ls -l /dev/mapper/* //都是链接文件,到/dev/dm0.*文件

二、创建和使用逻辑卷

     fdisk /dev/sdb (10g,5g,8g) 8e

     partx -a /dev/sdb

    pv相关命令:

        pvck

        pvcreate

            -f 强制

            -v verbose

            -u 指定uuid

            pvcreate /dev/sdb3

        pvdisplay //显示详细信息

        pvmove //移动pv上的pe数据,为了移除该pv

        pvremove 

        pvresize

        pvs        //简要显示pv

        pvscan

    vg相关命令

        vgs

        vgdisplay

        vgremove

        vgextend

        vgreduce

        vgsplit

        vgcreate

            -s 指定pe大小,bBsSkKmMgGtTpPeE

            vgcreate -s 4M myvg /dev/sdb3

            //缩减操作,需要先移动数据,然后操作

            vgextend myvg /dev/sdb5  //添加一个新的硬盘

            vgdisplay myvg

            pvmove /dev/sdb5 //移动pv,sdb5上的数据

            vgreduce myvg /dev/sdb5 //先从vg移除

            //移除的话,pvmove移动数据,vgreduce,最后pvremove

    lv相关命令

        lvcreate

            -L lv的大小

            -n name

            -l 指定逻辑盘区的数量pe的数量,-L和-l使用一个就可以

                lv的大小必须小于将要使用的vg的大小

                lv的大小未必精确,取决于pe的大小,pe默认为4M

                lvcreate -L 4G -n lv0 myvg

                ls -l /dev/mapper/myvg-lv0

                mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/lv0

                mount /dev/myvg/lv0 /tmp/test2 

            扩展逻辑卷://问题不大

                lvextend -L [+][mMgGtT] /dev/VG_name/LV_name

                        //增加了,和增加到,使用+ 和不使用+

                lvextend -L 5G /dev/myvg/lv0

                df -h //仍然是4G,已经挂载了,改变lv大小后,不会直接改变

                resize2fs /dev/myvg/lv0 //重新计算大小,不需要卸载

                        //resize2fs修改lv的逻辑边界,lvextend修改的是物理边界

            缩减逻辑卷://必须umount

                先缩减逻辑边界,然后缩减物理边界

                umount /dev/myvg/lv0 

                e2fsck -f /dev/myvg/lv0 //强制检查

                resize2fs /dev/myvg/lv0  3G

                lvreduce -L [-][mMgGtT] /dev/VG_NAME/LV_NAME

            逻辑{_____}                resize2fs

            物理{_____________}        lvreduce,lvextend

        lvs

        lvdisplay

        lvextend

        lvremove

        lvmove

        lvconf //设置lv的配置文件

        lvreduce

        lvresize

三、快照

    找了一张照片,例如把fs上的所有的元数据备份了一份(不精确)

    然后始终监控着元数据,

    创建一个快照:意味着创建了一个监视器,监视着元数据

        //快照卷是访问源文件的另外一个入口一样,源文件上的数据发生改变的话,相应也会变化

        //任何时刻当元数据要发生变化的时候,先复制一份到快照卷上,

        //再次访问的时候,没有发生改变的,找原卷,发生改变的,查看快照卷上的复制的那一份

    //快照卷上存储的是发生变化的文件

    //监视器,监视数据的改变

    //快照卷的大小,最好根据

    //创建快照卷后,新增加的数据不会需要做增量备份

    //同一卷组中,不能跨fs

    -p r|rw //快照卷只能是只读的,一般建议

    -n|--name 原卷 -s|--snapshot 目标卷 

    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name 

    lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/lv0

    mount /dev/myvg/mylv_snap /mnt/test2

    在源卷中修改文件,在这里看是否发生改变

    快照卷是在原有vg的基础上创建的,不用格式化

    umount /mnt/test2

    lvremove /dev/myvg/mylv_snap -y

四、文件系统挂载使用

    挂载光盘设备

        光盘设备文件:/dev/cdrom,sr0,dvd,sr1,cdrw

    mount -r /dev/cdrom /media/cdrom 

    fdisk -l //查看光盘驱动

五、dd命令

    dd if=/PATH/TO/FROM/SRC of=/PATH/TO/DEST

    bs=# :block size ,复制单元大小

    count=# 复制多少个bs

    dd if=/etc/fstab of=/tmp/fstab bs=1 count=100 //1字节,复制前100个字节

    磁盘拷贝:

        dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

        dd if=/dev/zero of=/dev/sda bs=512 count=1 //清除mbr

六、LVM设备验证

1.ls /dev/mapper

<a href="https://s3.51cto.com/oss/201711/14/44b5e5fa1bebfec8b6066895d7d18f5f.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201711/14/42bd4e42b57ad24bfb3a003deb7fcfb4.png-wh_500x0-wm_3-wmp_4-s_2293615180.png" target="_blank"></a>

//这两种类都是lvm

<a href="https://s3.51cto.com/oss/201711/14/9a7635d7f7404a807ed83cd94c8935da.png-wh_500x0-wm_3-wmp_4-s_3181954482.png" target="_blank"></a>

//其中252是主设备好,2,1分别是此设备号

sar -d 1 2 //也可以看到设备号

练习题

    1.创建一个至少有两个pv组成的大小为20g的名为testvg的vg,要求PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv,挂载到/usr目录

    2.新建用户archlinux,要求其家目录为/users/archlinux,而后su到archlinux用户,复制/etc/pam.d目录至自己的家目录

    3.扩展testlv至7G,要求archlinux用户的文件不能丢失

    4.收缩testlv至3g,要求archlinux用户的文件不能丢失

    5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1950136,如需转载请自行联系原作者