1、基本概念

LVM:logical volume manager 逻辑卷管理器

LVM构成:物理卷PV,卷组VG(PE物理区域,最小存储单元),逻辑卷LV(LE逻辑区域,最小存储单元)

三者如下图所示:

  -1  即VG可以包含多个PV,LV可以占用VG的全部或者一部分

  -2  LE==PE

  -3    lvm2已经不限制LE和PE的上限,故LE和PE的数值可大于65536

2、为什么要用LVM

LVM可以方便的进行磁盘缩放,当最初规划的空间不够用的时候,可以通过增加PV,VG,扩展LV的大小。

3、怎么创建

基本思路:构建PV->VG->LV->格式化->挂载LV

具体步骤:

  -1  创建PV

     pvcreate /dev/sd[a-z][1-9]

     eg:  

     pvcreate /dev/sdb1

     pvcreate /dev/sdb2

  -2  创建卷组VG  (可指定PE大小,最小为4K,最大根据操作系统版本而定,必须为2的倍数,默认是4M   -s 8M指定pe为8M,则创建lv必须为8M的倍数)

     vgcreate vg_name pv_device

     eg:  

     vgcreate myvg /dev/sdb1 /dev/sdb2

  -3  创建逻辑卷LV  

       lvcreate -l 100%free -n lv_name vg_name

     or

     lvcreate -L [+]size -n lv_name vg_name

     (-l(非i)表示将多少百分比的空闲空间划给lv

      -L表示将多少单位空闲空间划给lv,单位M,G等)

     eg:  

     lvcreate -L 100M -n mylv myvg 指定mylv大小为100M(若是+100M,则表示给mylv增加100M)

  -4  格式化处理

     mke2fs -t ext4 /dev/myvg/mylv

  -5  挂载逻辑卷

     mount -t ext4 /dev/myvg/mylv

  -6  自动挂载

     编辑/etc/fstab

     /dev/myvg/mylv /testlvm    ext4    defaults        0 0

3、怎么扩展缩放

  -1  扩展lv

    --1   检查当前vg剩余空间

        vgdisplay vg_name

        eg:vgdisplay myvg | grep Free

    --2  若VG空间足够,则直接进行lv扩展

       ---1 扩展物理边界,务必先扩展物理边界

          lvextend -L [+]SIZE lv_device

            eg:lvextend -L +5G /dev/mapper/myvg-mylv  #追加5G空间

       ---2 请先确保物理边界扩展成功(successfully resized),扩展逻辑边界

           resize2fs lv_drvice

           eg:resize2fs /dev/mapper/myvg-mylv

    --3  若VG空间不够,则先进行VG扩展,后进行lv扩展

       ---1 创建新的pv

          pvcreate /dev/sd[a-z][1-9]

          eg:pvcreate /dev/sdb3

       ---2 扩展VG

          vgextend vg_name pv_device

          eg:vgextend myvg /dev/sdb3

       ---3 此时和--2就一致了

  -2  缩减lv(必须先umount+备份后操作[备份非必须,不过建议备份])

    --1  缩减就是将扩展步骤反过来,先缩减逻辑边界,再缩减物理边界

       ---1 resize2fs lv_device SIZE  (这里只能直接指定缩减后的空间大小,故务必先确定逻辑卷已经使用的空间大小)

          eg:

          resize2fs /dev/mapper/myvg-mylv 17G

       ---2 lvreduce -L [-]SIZE lv_device

          eg:

          lvreduce -L -5G /dev/mapper/myvg-mylv

    --2  缩减VG

       ---1 确定需要移除的pv,及所属vg

          pvdisplay

       ---2 转移pv数据

          pvmove pv_device

          eg:

          pvmove /dev/sdb1

       ---3 缩减vg

          vgreduce -a   #清除vg中的所有空闲pv,或者指定pv,指定和-a不能同时使用

          eg:       

          vgreduce mylv /dev/sdb1 

       ---4 删除pv

          pvremove pv_device

          eg:

          pvremove /dev/sdb1      

4、快照卷用于备份(创建一个区域,用来存储快照卷生成时数据改变前的源数据,只要有数据发生变化,就备份一份放于快照卷,未变的不备份)。 

  原理:linux自带的快照卷使用的是cow技术,即copy-to-write,也就是只复制发生变化前的源数据,从而保证数据一致性。

  创建快照卷的过程:

  1、快照卷初始化,复制源卷的所有inode至快照卷的inode map,并监视源卷的block变化

  2、当源卷数据发生变化时,将变化前的数据复制到快照卷中,并将对应的bit map位更改成1

  3、此时用户访问新数据就通过源卷的inode进入,而老数据就通过快照卷的inode进入

  4、需要注意的是,因为快照卷是复制的源卷的inode,故inode号和存储的文件属性和源卷一模一样,但是并不是硬链接中指向了同一个inode,而是两个分区下的两个号相同的inode。

  5、当快照卷创建完毕后,若修改源卷的数据,则会发现源卷的数据对应inode会发生变化,而快照卷的依然不变。

  -1 特点:

    --1  生命周期为整个snap占满前所用时间,生成快照卷期间,发生变化的源数据的原始大小总和不能超过快照卷设定的大小,如果超过,则快照会释放

    --2  需设定为只读属性,保证快照卷内容不发生改变

    --3  跟关联的原逻辑卷同一个卷组

    --4  ls快照卷的时候,输出的大部分数据都是源卷的数据,而真正存储的数据仅仅是生成快照卷期间发生变化的数据块的源数据,因此快照卷不必大于源lv卷(可以查看快照卷挂载路径的inode和源卷的inode,发现是一致的,即显示的数据都是相同数据块的内容)

  -2 创建快照卷

     lvcreate -L SIZE -s -p r -n lv_snap_name lv_device

     (-L指定大小,-s表明创建一个快照卷snap,-p [r|rw]只读|读写权限,-n快照卷名)

     eg:

     lvcreate -L 100M -s -p r -n mylvsnap /dev/mapper/myvg-mylv

  -3 挂载快照卷

     mount -t ext4 lv_snap_device path

     eg:

     mount -t ext4 /dev/mapper/mylvsnap /mylvsnap

     (此时可以看到/mylvsnap目录inode号已经指向了源卷的挂载目录)              

5、移除逻辑卷

   lvremove lv_device

6、移除卷组

   vgremove vg_name

7、pv载体出现问题解决步骤

  -0  确定问题pv所在的vg

     eg:

     pvdisplay /dev/sdb3  (假设此处是myvg)

  -1  新加一个pv,扩大vg,增加lv
     eg:
     pvcreate /dev/sdb4  (10G)
     vgextend /dev/mapper/myvg /dev/sdb4
     lvextend -L +10G /dev/mapper/myvg-mylv
     resize2fs /dev/mapper/myvg-mylv
  -2  转移要出问题的数据pv(确定转移的pv容量以及pv_device)
     eg:
     pvdisplay /dev/sdb3   #假设sdb3大小为5G
     pvmove /dev/sdb3   #将sdb3转移到其他空余资源上
  -3  缩减lv
     eg:
     lvdisplay /dev/mapper/myvg-mylv #假设扩充后的lv大小为20G
     resize2fs /dev/mapper/myvg-mylv 15G  #缩减lv至15G,保证有删除sdb3正常执行
     lvreduce -L -5G /dev/mapper/myvg-mylv
  -4  缩减vg
     eg:
     vgreduce myvg /dev/sdb3    #若sdb3中含有数据,则会提醒
  -5  删除掉出问题的数据pv
 
     eg:
     pvremove /dev/sdb3

8、做出修改之后,建议进行文件系统检测

  fsck -a 自动修复

  或者(e2fsck仅用来检测ext系列)
     e2fsck [-t fs_type] [-f] [-p] /path/to/device
     -f 强行检查

    

磁盘管理二-LVM相关内容的更多相关文章

  1. Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用

    在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...

  2. 【转载】Linux磁盘管理:LVM逻辑卷管理

    Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一. ...

  3. 20190410Linux中磁盘管理及LVM(week2day1)

    Linux磁盘管理及LVM讲解(week2_day2)   硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接 ...

  4. Linux命令-磁盘管理(二)

    Linux命令-磁盘管理(二) Linux mmount命令 Linux mmount命令用于挂入MS-DOS文件系统. mmount为mtools工具指令,可根据[mount参数]中的设置,将磁盘内 ...

  5. linux磁盘管理系列-LVM的使用

    LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...

  6. Linux磁盘管理及LVM讲解

    硬盘接口 硬盘接口分为IDE.SATA.SCSI和SAS四种, IDE接口硬盘多用于家用产品中,也部分应用于服务器.不支持热添加,比较老. SCSI接口的硬盘则主要应用于服务器市场.linux. 而S ...

  7. Linux磁盘管理及LVM讲解(1)

    硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上,价 ...

  8. Linux进阶之磁盘管理及LVM逻辑卷

    本节内容 磁盘管理 LVM 一.磁盘管理 1.硬盘接口 种类及其应用: IDE接口硬盘多用于家用产品,部分应用于服务器 SATA SCSI接口硬盘主要应用于服务器 SAS只在高端服务器上,价格昂贵 2 ...

  9. Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理

    一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该 ...

随机推荐

  1. 逃离迷宫(HDU 1728 BFS)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. DataTables获取表单输入框数据

    $(document).ready(function() { var table = $('#example').DataTable(); $('button').click(function() { ...

  3. hex、bin、elf、axf文件区别

    AXF和ELF axf文件是ARM的调试文件,除了包含bin的内容之外,还附加了其他的调试信息,这些调试信息加在可执行的二进制数据的前面.在调试的时候,这些调试信息是不必下到RAM中去的,真正下到RA ...

  4. 负载均衡 > 常见问题

    证书管理相关问题 常用证书申请流程 1.本地生成私钥:openssl genrsa -out privateKey.pem 2048 其中privateKey.pem为您的私钥文件,请妥善保管. 2. ...

  5. 阵列卡,组成的磁盘组就像是一个硬盘,pci-e扩展出sata3.0

    你想提升性能,那么组RAID0,主板上的RAID应该是软RAID,肯定没有阵列卡来得稳定.如果你有闲钱,可以考虑用阵列卡. 不会的.即使不能起到RAID的作用,起码也可以当作直接连接了2个硬盘.不会影 ...

  6. What’s the difference between an interface and an abstract class in Java?

    原文 What’s the difference between an interface and an abstract class in Java? It’s best to start answ ...

  7. Calculate Number Of Islands And Lakes 解答

    Question 1 1 1 1 1 01 0 1 0 0 11 0 1 0 0 11 1 0 1 1 1 1 is earth, 0 is water. i) count the number of ...

  8. 使用skin++进行MFC界面美化范例

    1.下载skin++皮肤库和皮肤库,skin++皮肤库主要包括:SkinPPWTL.dll,SkinPPWTL.lib,SkinPPWTL.h这三个文件.把这三个文件 拷贝到工程目录下. 2.在工程中 ...

  9. 微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记

    微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记 微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏 之前有写过几篇关于微信内置浏览器(WebView) ...

  10. WEB应用知识一二三

    1.HTTP协议 |--基于请求(Request)和响应(Response)的无状态通讯协议 浏览器和WEB应用程序通过HTTP进行通信.客户端通过URL对指定服务器要求特定位置的数据 |--POST ...