逻辑卷LVM

逻辑卷LVM

简介

    在实际生产应用中,磁盘的分区的容量是固定不变的,当出现分区容量不足的情况,除了新加磁盘,还有没有其他方法呢?
    逻辑卷(LVM)的概念就出现了,全称叫Logical Volume Manager。它的作用是允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小。
    LVM最大的特点是可以对磁盘进行动态管理,在不会丢失原有磁盘数据的同时,又可以对逻辑卷大小进行调整,大大提高了磁盘管理的灵活性。
    LVM的实现原理:
逻辑卷LVM

逻辑卷的实现

    之前实验我们创建了一个RAID-5,逻辑卷我们使用RAID设备、分区和磁盘来进行模拟

    1、创建PV:pvcreate
    [root@centos6 ~]#pvcreate /dev/md5 /dev/sdf /dev/sda6
    Physical volume “/dev/md5” successfully created
    Physical volume “/dev/sdf” successfully created
    Physical volume “/dev/sda6” successfully created
    查看:pvdisplay
    还可以使用命令pvs 和pvscan 查看简略信息。
逻辑卷LVM

    2、创建vg:vgcreate
逻辑卷LVM

    创建完成后再看一下PV可以看到三块物理卷被划入到同一个卷组vg0中去了。

    3、创建Lv:lvcreate
    [root@centos6 ~]#lvcreate -n lv0 -L 8G vg0        <==-n是指定LV的名字,-L 指定要创建的逻辑卷的大小
    Logical volume “lv0” created.
    mkfs.ext4 /dev/vg0/lv0                                     <==创建文件系系统
    mount /dev/vg0/lv0 /mnt/lv0                             <==挂载,创建完毕。

LVM的扩展

    前提:为了验证动态扩容对数据不影响,我们先拷贝点资料到/mnt/lv0
    cp /etc/* /mnt/lv0
    1、查看卷组有没有空间
    [root@centos6 ~]#vgs
    VG   #PV #LV #SN Attr   VSize  VFree
    vg0    3   1   0 wz–n- 16.97g 8.97g                        <==还有将近9G的空间
    2、指定扩展的大小
    [root@centos6 ~]#lvextend -L +5G  /dev/vg0/lv0    <==注意:这里指定大小的时候,如果不写“+”,就是指将LV的空间加到多少,有了“+”就是加多少
    Size of logical volume vg0/lv0 changed from 8.00 GiB (2048 extents) to 13.00 GiB (3328 extents).
    Logical volume lv0 successfully resized.
    [root@centos6 ~]#vgs
    VG   #PV #LV #SN Attr   VSize  VFree
    vg0    3   1   0 wz–n- 16.97g 3.97g            <==VG卷组还剩4G
    [root@centos6 ~]#lvs
    LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
    lv0  vg0  -wi-ao—- 13.00g                        <==LV0的大小变成13=8+5
    这个注意:现在新增空间虽然加到LV0上去了,但是df -h依然显示原来的容量,因为新增的空间上并没有创建文件系统,所以导致系统无法识别。
    3、resize2fs /dev/vg0/lv0                         <==同步文件系统,df -h才可以扩容后的大小。查看数据并未丢失。

    上面的情况是卷组VG有剩余空间,万一卷组也没有空间了呢?这时候就需要添加VG
    1、pvcreate /dev/sdg
    2、vgextend vg0 /dev/sdg                               <==把/dev/sdg扩展到vg0,这个时候就可以个需要扩容的LV扩容了。

LV的缩减

    注意:xfs的文件系统无法缩减
    1、umount /mnt/lv0                                       <==取消挂载
    2、fsck -f /dev/vg0/lv0                                   <==检查文件系统,必须要做的
    3、resize2fs /dev/vg0/lv0 5G                           <==缩减文件系统
    4、lvreduce -L 5G /dev/vg0/lv0                        <==这里的大小必须和第三步缩减的文件系统大小一致
    5、mount /dev/vg0/lv0  /mnt/lv0/                    <==重新挂载

VG、PV的缩减

    1、umount /mnt/lv0/                                      <==取消挂载
    2、pvmove /dev/sdg                                      <==移除空间,确保卷组中有足够空间放/dev/sdg的空间
    3、vgreduce vg0 /dev/sdg                              <==将/dev/sdg从vg0中移除
    4、pvremove /dev/sdg                                    <==从物理卷中删除

LVM快照

    前提:写入测试数据
    [root@centos6 lv0]#cp /etc/fstab f1
    [root@centos6 lv0]#cp /etc/fstab f2
    [root@centos6 lv0]#cp /etc/fstab f3

创建快照

    1、lvcreate -n lv0-snapshot -s -L 100M -p r /dev/vg0/lv0 
    -n lv0-snapshot:指定一个快照名字
    -s:s表示快照
    -L 100M:指定大小
    -p r:指定只读属性
    /dev/vg0/lv0:对哪个设备做快照
    2、mount /dev/vg0/lv0-snapshot /mnt/snap/        <==挂载
    [root@centos6 ~]#cd /mnt/snap/
    [root@centos6 snap]#ls
    f1  f2  f3  lost+found
    [root@centos6 snap]#cd /mnt/lv0/
    [root@centos6 lv0]#ls
    f1  f2  f3  lost+found                                          <==此时快照中还没有数据
    3、修改和删除原来LV中的数据,会讲旧的数据推送到/mnt/snap/,并且只保留旧数据。新创建数据不会推送。

还原

    1、取消挂载
    [root@centos6 ~]#umount /mnt/lv0
    [root@centos6 ~]#umount /mnt/snap
    2、[root@centos6 ~]#lvconvert –merge /dev/vg0/lv0-snapshot         <==拿快照合并数据,合并完快照的逻辑卷消失了。
    Merging of volume lv0-snapshot started.
    lv0: Merged: 100.0%
    Merge of snapshot into logical volume lv0 has finished.
    Logical volume “lv0-snapshot” successfully removed
    3、再次挂载mount /dev/vg0/lv0 /mnt/lv0/,发现数据恢复。

LVM删除

    1、lvremove /dev/vg0/lv0 
    2、vgremove /dev/vg0
    3、pvremove   /dev/md5 /dev/sda6  /dev/sdf /dev/sdg
    注意:创建的时候是从PV-VG-LV,删除的时候过程相反。

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

(0)
eleveneleven
上一篇 2017-08-12 16:39
下一篇 2017-08-12 16:52

相关推荐

  • 网络管理之多网卡bond,mode1

    一.概述 Bonding     就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式     Mode…

    Linux干货 2016-09-15
  • 【招聘】天津/赞普科技股份有限公司/Linux系统运维工程师/6-7k/五险一金

    天津赞普科技股份有限公司——简称赞普科技,成立于2003年,坐落于天津市滨海高新区,是一家专业的互联网综合服务商,主营数字网络建设、数据接入及增值服务和智能化网络产品及服务。历经11年的发展,赞普科技已成长为高新区科技型小巨人企业、国家高新技术企业,专注于移动互联与大数据、云计算、商业WIFI行业的领军者。     赞普科技计划…

    Linux干货 2015-12-03
  • magedu_20160804

    文本处理工具和grep过滤工具以及正则表达式    一.文本处理工具相关命令    前面课程中曾经使用过cat,head,tail命令查看相关文件,head,tail分别查看文件开头、结尾的行信息。对于特定想要显示的信息则需要特定的文本查看指令,比如cut,sort,paste,uniq等。如下内容分别对每个…

    Linux干货 2016-08-08
  • linux计划任务

    任务计划的分类: 一次性的任务计划:只执行一次 周期性的任务计划:每隔一定的周期去做相同的事情 设置任务计划功能的工具:at和crontab at:专门处理一次性的计划任务 crontab:根据定义的周期信息,循环做一些事情 batch:系统自行选择空闲时间去执行此处指定的任务 At命令: 查看atd状态和启动atd服务及其配置文件路径: centos6:s…

    2017-09-09
  • 浅谈RPM

    浅谈RPM    [先絮叨下编译啊]   1、 库:其实就是一个程序模块(它没有执行入口,不能独立执行,只能被能独立运行的程序调用时执行)你可以把它想象成工具螺丝刀,可执行的程序是就是你自己;螺丝刀能自己干活吗?没有螺丝刀能拧螺丝吗?或者说你现在制作一个? 螺丝刀可以实现这个功能但需要你来执行这个动作。   2、静态编译:将程序所需要的所有的库都编…

    Linux干货 2015-04-27
  • Linux 中cp 、rm和mv与inode之间的关系

    1.cp和inode          当文件不存在时,分配一个新的inode号,创建新文件;          当文件存在时,则inode号采用被覆盖之前的目标文件的inode号。 2.rm和ino…

    2017-07-21