且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

LVM应用(一)

更新时间:2022-06-26 17:44:35

一、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

LVM应用(一)

LVM应用(一)

//这两种类都是lvm

LVM应用(一)

//其中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,如需转载请自行联系原作者