LVM的概念

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

基本术语

  • 物理存储介质(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)
    PE是物理卷PV的基本划分单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
  • 逻辑块(Logical Extent,LE)
    逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

使用逻辑卷流程

  • 先对硬盘进行分区—>再创建物理卷—>创建卷组,并给把物理卷分配给卷组—>使用卷组创建逻辑卷—>对刚创建的逻辑卷进行格式化—>挂载使用。

  • —>逻辑卷扩容,可以不卸载挂载点进行扩容—>同步文件系统容量到内核,不然看不到容量变化。

  • —>逻辑卷缩容,需要先卸载挂载点—>检查文件系统完整性—>通知系统内核将逻辑卷的容量设置成指定容量—>将逻辑卷的容量修改与上一步同样容量—>挂载使用。

  • —>删除逻辑卷,需先卸载挂载点—>删除逻辑卷—>删除卷组—>删除物理卷。

操作命令

  • lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。

  • df命令 用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

    例子:df -h

  • fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。

    列出所有分区表:fdisk -l

    对硬盘进行分区:fdisk 指定硬盘名,例子:fdisk /dev/vdc

  • pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。

    创建物理卷:pvcreate 分区名1 分区名2,例子:pvcreate /dev/vdc1 /dev/vdc2

  • pvdisplay命令 用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。

  • pvs命令 用于输出格式化的物理卷信息报表。使用pvs命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplay命令。

  • vgcreate命令 用于创建LVM卷组。卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。

    创建卷组并加入物理卷:vgcreate 组名 物理卷,例子:vgcreate myvg /dev/vdc1

  • vgs命令 报告关于卷组的信息。

  • vgdisplay命令 用于显示LVM卷组的信息。如果不指定”卷组”参数,则分别显示所有卷组的属性。

  • lvcreate命令 用于创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。

    创建逻辑卷并加入到卷组:lvcreate -n 逻辑卷名 -L 指定大小 卷组名,例子:lvcreate -n lvo0 -L 50G myvg

  • 格式化逻辑卷: mkfs.ext4 逻辑卷名,例子:mkfs.ext4 /dev/myvg/lvo0

  • lvs 命令可以报告有关逻辑卷的信息。

  • lvdisplay命令 用于显示LVM逻辑卷空间大小、读写状态和快照信息等属性。如果省略”逻辑卷”参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。

  • 临时挂载命令(重启会失效) mount 逻辑卷名 目录名,例子:mount /dev/myvg/lvo0 /opt

  • 卸载挂载命令 umount 目录名或逻辑卷名,例子:mount /dev/myvg/lvo0

  • 永久挂载硬盘 打开编辑vim /etc/fstab,添加要挂载的配置,添加完成后执行mount -a载入挂载

    1
    2
    逻辑卷名 目录名 文件格式类型 defaults 0 0
    例子:/dev/myvg/lvo0 /opt ext4 defaults 0 0
  • lvextend命令 用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。使用lvextend命令动态在线扩展磁盘空间,整个空间扩展过程对于应用程序来说是完全透明的。

    扩容操作:lvextend -L +5G 逻辑卷名,例子:lvextend -L +5G /dev/myvg/lvo0

  • resize2fs命令 被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize。linux kernel 2.6支持在mount状态下扩容但仅限于ext3文件系统。

    同步文件系统容量到内核:resize2fs 逻辑卷名,例子:resize2fs /dev/myvg/lvo0

  • lvremove命令 用于删除指定LVM逻辑卷。如果逻辑卷已经使用mount命令加载,则不能使用lvremove命令删除。必须使用umount命令卸载后,逻辑卷方可被删除。

    删除逻辑卷:lvremove 逻辑卷名,例子:lvremove /dev/myvg/lvo0

  • vgremove命令 用于用户删除LVM卷组。当要删除的卷组上已经创建了逻辑卷时,vgremove命令需要进行确认删除,防止误删除数据。

    删除卷组:vgremove 卷组名,例子:vgremove myvg

  • pvremove命令 用于删除一个存在的物理卷。使用pvremove指令删除物理卷时,它将LVM分区上的物理卷信息删除,使其不再被视为一个物理卷。

    删除物理卷:pvremove 物理卷名, 例子:pvremove /dev/vdc1