linux基础之lvm操作流程

linux基础之lvm基本操作流程
    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
   

LVM模型

linux基础之lvm操作流程

LVM模型

前言

      每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
      虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。
     因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。
     LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
      基本术语
      前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:
      物理存储介质(PhysicalStorageMedia)
      指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
      
物理卷(Physical Volume,PV)
      指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
     卷组(Volume Group,VG)
      类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
     
逻辑卷(Logical Volume,LV)
     类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
    物理块(Physical Extent,PE)
    每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
   
逻辑块(Logical Extent,LE)

LVM抽象模型

linux基础之lvm操作流程

LVM抽象模型
    逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
    图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:
    和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
   系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
   安装
   首先确定系统中是否安装了lvm工具:
   [root@wwwroot]#rpm –qa | grep lvm
   lvm-1.0.3-4
   如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVMrpm工具包。

创建lvm逻辑卷

    一、准备分区或硬盘

   fdisk  进行分区  并更改system ID(t  -L)  8e(mbr分区表上的lvm)   15(gpt分区表上lvm)  
   二、.创建物理卷(pv)
   pvcreate  /dev/sd{b,c1}
    可以通过查看命令查看是否创建成功
    pvs 查看
    pvdisplay 查看详细信息
    blkid
  三、创建卷组       
     vgcreate  vg0  -s 16M /dev/sd{b,c1}   
    pvdisplay  查看详细信息
    vgs   查看卷组信息
    ll /dev/vg0  是没有这个设备的
 四、创建逻辑卷
    lvcreate  -n  lv0  -l 1000  vg0
    -n  指定逻辑卷名称
    -l  多少个pe个数

    -L  直接指定容量大小 

    lvs   查看逻辑卷

 五、格式化 创建文件系统
     mkfs.xfs /dev/vgo/lv0   格式化并创建为xfs文件系统
     mkfs.ext4 /dev/vgo/lv0   格式化并创建为ext4文件系统
六.手动挂载
     mkdir /mnt/lv0
     mount  /dev/vgho/lv0  /mnt/lv0  
七、配置成开机自动挂载
     vim  /etc/fstab
     UUID=”07a34e17-7833-4ec8-8846-c6b590e36fba”    /mnt/lv0  xfs   defaults 0 0 
     mount -o remount /mnt/lv0 
    mount

扩展逻辑卷 

       一、扩展逻辑卷容量大小
               lvextend  -L 5G   /dev/vg0/lv0
               lvextend -r  -L 5G   /dev/vg0/lv0  同时扩展容量并更新扩展文件系统
                          5G  增加到5G  也就是算上原有的容量到5G
                         +5G  就是在原有的基础上再增加5G
                   -l  多少个pe个数
                   -L  直接指定容量大小 
            lvextend    /dev/vg0/lv0  -l +100%FREE  剩余空闲空间全部用完
                 df -h  查看分区信息
    二、卷容量扩展后需要更新ext4文件系统的大小信息
           resize2fs  /dev/vg0/lv0
           resize2fs  同步ext系列文件系统
      如果是xfs文件系统:卷容量扩展后需要更新xfs文件系统的大小信息
          xfs_growfs /dev/vg0/lv0
          xfs_growfs 同步xfs文件系统
卷组扩
      1.磁盘变成物理卷
         pvcreate /dev/sdd
         pvs
     2.扩展卷组
        vgextend vg0 /dev/sdd
缩减逻辑卷
       缩减不支持在线,必须离线
        ext4可以缩减
        xfs 只能增长不能缩减

1.)因为缩减只能离线,所以必须把需要缩减的逻辑卷取消挂载
  umount  /mnt/lv0   卸载(取消挂载)
2.)缩减逻辑卷上的文件系统大小(lvm上的文件系统)
  resize2fs /dev/vgo/lv0 5G   (操作这个步骤后会出现报错提示,提示你需要先校验文件系统后,再进行这一步操作)
     5G  缩减到5G  也就是在原有的空间熔炼上缩减到5G
     +5G  在原有的容量基础基础直接减去5G
e2fsck -f /dev/vg0/lv0  
      校验文件系统
resize2fs /dev/vgo/lv0 5G 
       执行缩减文件系统操作
3.)缩减逻辑卷(lvm)
lvreduce -L 5G /dev/vg0/lv1
 注意:逻辑卷(lvm)缩减的大小要与文件系统上缩减的大小一致
            在做缩减前,做好把需要缩减的逻辑卷的数据做一下备份,避免导致文件丢失
4.)缩减完成后再进行挂载
mount -a     (如果挂载信息已经写入到/etc/fstab文件中了,可以使用该命令,反之就手动挂载) 
mount /dev/vg0/lv1  /mnt/lv1  (手动挂载)
5.)查看缩减后的容量信息
   df -h

从卷组(vg)中移除单个物理卷pv(硬盘或者分区)

1)移动pv  sdb的空间,到其他卷组上去(空间搬移过去,数据也是一并移动过去)
     pvmove  /dev/sdb  
     pvmove 是表示移动某个pv上的空间到同一个卷组中其他成员上面去,至于其他成员是谁,这个系统会自动分配。  (pvmove 移动 迁移)
2)显示迁移过后的物理卷信息
     pvdisplay
3) 把sdb从vg0卷组中移除
     vgreduce vg0 /dev/sdb    
4)把物理卷(pv) sdb删除
    pvremove /dev/sdb       
5) 显示其他物理卷信息
    pvdisplay  

逻辑卷删除

 1) 取消逻辑卷(lvm)的挂载  
      umount /mnt/lv1  或者 umount /dev/vg0/lv1
 2)删除取消挂载的逻辑卷(lvm)
      lvremove /dev/vg0/lv1
  3)显示移除逻辑卷后的逻辑卷信息
       lvdisplay 
13.卷组删除
1) 取消挂载该卷组上所有的逻辑卷lvm
   umount /dev/vg0/lv#
 2)删除该卷组上所有取消的挂载逻辑卷(lvm)
      lvremove /dev/vg0/lv#
3)删除卷组
    vgremove vg0     
4)显示删除卷组后其他的未删除的卷组信息
       vgdisplay 或 vgs

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

(0)
上一篇 2017-03-19 18:35
下一篇 2017-03-19 20:52

相关推荐

  • 22期第四周课程练习

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

    Linux干货 2016-09-08
  • 1021作业

    关于用户和组相关配置文件的总结 /etc/passwd:用户及相关属性信息 在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。但是Linux /etc/passwd文件中都有些什么内容呢? #cat/etc/pass…

    Linux干货 2016-10-24
  • 浅谈编译kernel+busybox构建拥有远程ssh登录和web功能最小linux系统(二)

    忘了介绍本文的源码的版本了 dropbear-2013.58.tar.bz2    busybox-1.21.1.tar.bz2 linux-3.13.6.tar.xz  nginx-1.4.7 基于上文,我们还差group文件没有写 root@mysql etc]# vi group  …

    Linux干货 2015-09-22
  • 一个不想被打断腿的人的学习宣言

    听说不晒学习宣言的会被某人打断腿,忍了好几天,思考了好几天,想了想,还是腿比较重要。废话就不多说了。上图~~!  生命中总要去经历一些,好让自己在老的时候回忆起来,不至于说:“哎,怎么就没有去拼一下呢!”

    Linux干货 2016-10-27
  • God进程监控框架

    监控重启进程的方案有很多种: 最简单的方法,写个脚本fork进程运行,然后waitpid,如果获pid后就再次启动 最土的方法,配置cron任务,固定时间运行脚本检查进程是否存在,不存在则启动 百度使用qmail里的supervised程序,通过supervised监管进程。 优点:supervised可以启动daemon程序,对于非daemon需要采用no…

    Linux干货 2015-02-13
  • nginx的模块应用

    1.location的定义 (1)当location中午定义时,默认使用server中的相关定义。 (2)当locating中有了相关定义,此时则启用location中的定义的内容。 nginx -t检查配置文件是否有语法错误 nginx -s reload重载nginx (3)即使server中的root中的目录下有了/admin的目录,但是同时又在loc…

    Linux干货 2016-10-30