LVM 与快照

LVM: Logical Volume Manager

概念

它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。

允许对卷进行方便操作的抽象层,包括重新设定
文件系统的大小
 允许在多个物理设备间重新组织文件系统
• 将设备指定为物理卷
• 用一个或者多个物理卷来创建一个卷组
• 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
• 在物理卷上创建的逻辑卷是由物理区域(PE)组成
• 可以在逻辑卷上创建文件系统

原理描述

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
 通过创建LVM,我们可以更轻松的管理磁盘分区,将若干个不同大小的不同形式的磁盘整合为一个整块的卷组,然后在卷组上随意的创建逻辑卷,既避免了大量不
同规格硬盘的管理难题,也使逻辑卷容量的扩充缩减不再受限于磁盘规格;并且LVM的snapshot(快照)功能给数据的物理备份提供了便捷可靠的方式

要想理解好LVM的原理,我们必须首先要掌握4个基本的逻辑卷概念。

① PE  (Physical Extend)  物理拓展,物理磁盘上的每一个分区

② PV  (Physical Volume)  物理卷, fdisk工具修改卷标为 8e,形成一个PV

③ VG  (Volume Group)  卷组,将多个PV组合起来成为一个大的硬盘

④ LV  (Logical Volume)  逻辑卷, 在VG上划分出来的逻辑卷
LVM 与快照

lvm, lvm2

dm: device mapper
    功用:将一个或多个底块设备(包括RAID)组织一个逻辑存储空间;
    其边界:可动态扩展或缩减;

lv, multipath

PE, LE
    Pysical Extent
    Logical Extent

管理命令:

    pv: pvcreate, pvdisplay, pvs, pvscan, pvremove, pvmove
    vg: vgcreate, vgdisplay, vgs, vgscan, vgremove, vgextend, vgreduce
    lv: lvcreate, lvdisplay, lvs, lvresize, lvextend, lvreduce, lvremove

LVM 与快照

创建PV **pvcreate /dev **
示例:
    创建一个10G vg:

PV:

创建pv:

        准备块设备,调整其id为8e;
        pvcreate [-f] /dev/DEVICE

       查看

        # pvdisplay [/dev/DEVICE] 
        查看的是更详细的信息
        # pvs

LVM 与快照
LVM 与快照        

       移动pv上的pe到其它pv:

        # pvmove

       删除pv:

        # pvremove

VG:

       创建vg: 新增一个vg,并指明其包含哪个或哪些pv实现;

        # vgcreate VGNAME /dev/PV1...

LVM 与快照
-L 指明容量
-n 起个名

         删除vg:

           # vgremove VGNAME...

       缩减vg: 通过从vg中移除pv实现
           注意:计划移除的pv不能包含已经存储数据的pe;如果有需要先使用pvmove移动到同vg内其它pv上;

           pvmove /dev/SOME_PV
           vgreduce VG_NAME /dev/some_PV

          扩展vg: 向vg中添加更多的pv实现

           vgextend VG_NAME /dev/some_PV...

LV: Logical Volume

       查看
           lvs  lvdisplay

创建lv:

        lvcreate -L 指明的大小 -n 名字 VG_name
         LogicalVolume{Name|Path}]  VG_NAME  -L指明大小

        设备路径:
            (1) /dev/VGNAME/LVNAME
            (2) /dev/mapper/VGNAME-LVNAME

            实际路径:/dev/dm-#

        注意:lv的大小必须为pe的整数倍

       移除lv:
           lvremove LV_PATH

       扩展lv:

        存储设备有:物理边界
        文件系统有:逻辑边界

扩展:先扩展物理边界,而后拉伸逻辑边界
               lvextend, lvresize
               resize2fs

LVM 与快照

          如何扩展lv:

            1、先确定目标大小:要确保此lv所在vg中有足够的空闲可用;
                2G --> 4G
                    4G
                    +2G
            2、扩展物理边界
                lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME
            3、拉伸逻辑边界
                resize2fs /dev/VGNAME/LVNAME

       缩减lv:

        注意:
            1、缩减要离线!
            2、先缩减文件系统大小,再缩减lv的大小;

        过程:
            1、先确定缩减后的目标大小:要确保缩减后的大小能够容纳现在的所有数据;
            2、卸载逻辑卷,并强制做文件系统一致性检查;
                e2fsck -f /dev/VGNAME/LVNAME
            3、缩减逻辑边界
                resize2fs /dev/VGNAME/LVNAME #[bBsSkKmMgGtTpPeE]
            4、缩减物理边界
                lvreduce -L [-]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME

快照卷:

         访问原卷上数据另一个路径,备份工具可以通过此路径完成数据备份;
        快照卷自身仅是为备份工具提供一个时间点一致的访问路径;

        备份开始之前创建快照卷,完成之后即可删除之;快照卷的生命周期;

        如何保证通过快照所访问到的数据的时间点一致?
            通过把那些要发生改变的位于原卷上的数据自动复制一份至快照卷进行的,因此,快照卷上的数据如果有效,则必须能完成存储原卷即将发生改变的所有的数据的原有版本。

        创建快照卷:
            (1) 快照卷要与原卷在同一卷组中,因此创建快照卷无须指定卷组;
            (2) 快照卷大小要精心设定;另外,快照卷应该是只读的;

        创建命令:
            lvcreate -L SIZE -n Name -p r -s /dev/VGNAME/LVNAME

练习:

1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能

一 、

1、用fdisk分区 把 /dev/sdd 和/dev/sde 各分出10G

LVM 与快照

如果不同步就用 partprobe 命令同步一下!

2、创建两个pv并组成一个vg

vgcreate testvg -s 16M /dev/sdd1 /dev/sde1

LVM 与快照

LVM 与快照

3、创建testlv 并挂载

lvcreate -L 5G -n testlv testvg
mkdir /users
mkfs.ext4 /dev/testvg/testlv 
 mount /dev/testvg/testlv /users

二、
1、

useradd archlinux  -d /users/archlinux

LVM 与快照

三、扩展testlv、

1、扩展扩展物理边界

lvextend -L +2G /dev/testvg/testlv

2、扩展逻辑边界

resize2fs /dev/testvg/testlv

LVM 与快照

四、收缩testlv

1、卸载逻辑卷,并强制做文件系统一致性检查

umount /dev/testvg/testlv 
e2fsck -f /dev/testvg/testlv

2、缩减

resize2fs /dev/testvg/testlv  3G
lvreduce -L 3G /dev/testvg/testlv

3、挂载查看

mount /dev/testvg/testlv /users/

LVM 与快照

五、创建快照

[root@localhost ~ ]# lvcreate -L 2G -n kuaizhao -p r -s /dev/testvg/testlv
  Logical volume "kuaizhao" created.

将快照挂载

 mount -r /dev/testvg/kuaizhao /mnt/kuaizhao

[root@localhost /mnt/kuaizhao ]# ll
总用量 20
drwx------. 6 archlinux archlinux  4096 9月   2 22:07 archlinux

删除/users中的archlinux

[root@localhost /mnt/kuaizhao ]# cd /users
[root@localhost /users ]# ls
archlinux  lost+found
[root@localhost /users ]# rm -rf archlinux
[root@localhost /users ]# ls
lost+found
[root@localhost /users ]# ls /mnt/kuaizhao/
archlinux  lost+found
[root@localhost /users ]# cp -arp /mnt/kuaizhao/archlinux .
[root@localhost /users ]# ls
archlinux  lost+found

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/43318

(0)
qzxqzx
上一篇 2016-09-05
下一篇 2016-09-05

相关推荐

  • DNS服务基础

    DNS服务:是一种工作在应用层的特定应用,也是.c/s架构模式的,DNS的是一种应用层协议,他的端口是UPD协议的53号端口,()根据应用场景不同也会用到tcp协议)这就意味着DNS是默认通过UDP协议进行通信的 我们访问任何一个网站都是通过主机名的方式进行访问的;例如www.baidu.com,这是个主机名.称之为FQDN(完全限定域名) 常见的顶级域中的…

    Linux干货 2016-11-07
  • 马哥教育网络班20期+第五周博客作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; ]# grep  "^[[:space:]]\+" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; ]#…

    Linux干货 2016-07-12
  • MarkdownPad2 简单使用指南

    MarkdownPad2 简单使用指南 一级标题 二级标题 三级标题加代码 四级标题 这里是加粗 这里是正文and English 888 这里有正文嵌入代码这种样式 这里是代码块 这种使用的代码块 还有引用 这种格式 这种格式再加粗 拖下来一点的格式加个代码 斜体 斜体内的加粗 自我改好的样式 注意是这种风格的样式! 附:一个很全的颜色代码网页h…

    2016-11-13
  • 马哥教育网络班22期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 # fdisk /dev/sdb <<EOF> n> p> 1> &g…

    Linux干货 2016-11-28
  • bash编程初体验(二)

    bash编程初体验(二) read if case 概述 在本篇文章中,我们将介绍bash编程中有关if语句的简单用法,if语句的基本思路是判断给定的条件是否满足,即结果是真还是假,从而选择执行哪种操作。如此,如果条件为真,if会执行一种指令,如果条件为假,if会选择执行另一种指令,这种执行就是所谓的选择结构,它能够改变命令的基本顺序流结构,以选择流的形式运…

    Linux干货 2016-08-19
  • Linux权限管理与grep命令应用(第四周)

    第四周作业 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# ch…

    Linux干货 2016-09-15