LVM Logical Volume Manager 逻辑卷管理

LVM Logical Volume Manager 逻辑卷管理

2020/02/28 运维 Linux

LVM Logical Volume Manager 逻辑卷管理

LVM – Logical Volume Manager

LVM 就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。

四个概念

  1. PE (Physical Extend) 物理拓展
  2. PV (Physical Volume) 物理卷
  3. VG (Volume Group) 卷组
  4. LV (Logical Volume) 逻辑卷

特点

LVM 最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!

工作原理

  1. 物理磁盘被格式化为 PV,空间被划分为一个个的 PE
  2. 不同的PV加入到同一个 VG 中,不同 PV 的 PE 全部进入到了 VG 的 PE 池内
  3. LV 基于 PE 创建,大小为 PE 的整数倍,组成 LV 的 PE 可能来自不同的物理磁盘
  4. LV 现在就直接可以格式化后挂载使用了
  5. LV 的扩充缩减实际上就是增加或减少组成该 LV 的 PE 数量,其过程不会丢失原始数据

操作

查看

  • 查看 PE 的大小 (pes == pescan)

      pes
    
      pedisplay
    
  • 查看物理卷

      pvs
    
      pvdisplay
    
  • 查看卷组

      vgs
    
      vgdisplay
    
  • 查看逻辑卷

      lvs
    
      lvdisplay
    
  • 查看磁盘分区

      fdisk -L
    

创建

  1. 创建物理卷

     pvcreate 物理卷
        
     [root@localhost ~]# pvcreate /dev/hda{6,7,8,9}
     Physical volume "/dev/hda6" successfully created
     Physical volume "/dev/hda7" successfully created
     Physical volume "/dev/hda8" successfully created
     Physical volume "/dev/hda9" successfully created
    
    • 物理卷:指定要创建的物理卷对应的设备文件名
  2. 创建卷组

     vgcreate 卷组名 物理卷列表
        
     [root@localhost ~]# vgcreate vg1000 /dev/sdb1 /dev/sdb2  # 创建卷组 "vg1000"
     Volume group "vg1000" successfully created
    
    • 卷组名:要创建的卷组名称
    • 物理卷列表:要加入到卷组中的物理卷列表
  3. 创建逻辑卷

     lvcreate -n 逻辑卷 -L 大小 卷组名
        
     [root@localhost ~]# lvcreate -n lvol0 -L 100G vg1000    # 创建大小为 100G 的逻辑卷
     Logical volume "lvol0" created
    
    • 逻辑卷:指定要创建的逻辑卷名称
    • 卷组名:VG 卷组名称
    • 创建成功后,新的逻辑卷 “lvol0”,将通过设备文件 /dev/vg1000/lvol0 进行访问
  4. 格式化

     mkfs.xfs 逻辑卷完整路径
        
     [root@localhost ~]# mkfs.xfs /dev/vg1000/lvol0
    
  5. 挂载

     mount 逻辑卷完整路径 挂载点
        
     [root@localhost ~]# mount /dev/vg1000/lvol0 /data
    
    • 也可以使用 /etc/fstab 进行挂载

逻辑卷删除

  1. 卸载

     umount -v 逻辑卷完整路径
        
     [root@localhost ~]# umount -v /dev/vg1000/lvol0
     /dev/vg1000/lvol0 umounted
    

    或者

     umount -v 挂载点
        
     [root@localhost ~]# umount -v /data
     /data umounted
    
  2. 删除逻辑卷

     lvremove 逻辑卷
        
     [root@localhost ~]# lvremove /dev/vg1000/lvol0    # 删除逻辑卷"lvol0"
     Do you really want to remove active logical 
     volume "lvol0"? [y/n]: y    # 确认删除
       Logical volume "lvol0" successfully removed
    
    • 逻辑卷:指定要删除的逻辑卷
  3. 删除卷组

     vgremove 卷组
        
     [root@localhost ~]# vgremove vg1000    # 删除卷组 "vg1000"
     Volume group "vg1000" successfully removed
    
    • 卷组:指定要删除的卷组名称
  4. 删除物理卷

     pvremove 物理卷
        
     [root@localhost ~]# pvremove /dev/sdb2 # 删除物理卷
     Labels on physical volume "/dev/sdb2" successfully wiped
    
    • 物理卷:指定要删除的物理卷对应的完整路径设备文件名

逻辑卷扩展

  1. 扩展物理卷

    相当于创建物理卷

  2. 扩展卷组

     vgextend 卷组 物理卷列表
        
     [root@localhost ~]# vgextend vg2000 /dev/sdb2     # 将物理卷 "/dev/sdb2" 加入卷组 "vg2000"
     Volume group "vg2000" successfully extended
    
    • 卷组:指定要操作的卷组名称
    • 物理卷列表:指定要添加到卷组中的物理卷列表
  3. 扩展逻辑卷

     lvextend -L 扩展量 逻辑卷
        
     [root@localhost ~]# lvextend -L +100M /dev/vg1000/lvol0    # 为了解决增加 100M 空间
     Extending logical volume lvol0 to 300.00 MB  
     Logical volume lvol0 successfully resized
    
    • 逻辑卷:指定要扩展空间的逻辑卷
    • -L:指定逻辑卷的大小,单位为 kKmMgGtT
  4. 刷新文件系统 (非 xfs 格式)

     resize2fs 设备文件名
        
     [root@localhost ~]# resize2fs /dev/vbirdvg/vbirdlv
     resize2fs 1.39 (29-May-2006)
     Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-line resizing 
     Performing an on-line resize of /dev/vbirdvg/vbirdlv to 2191360 (4k) blocks.
     The filesystem on /dev/vbirdvg/vbirdlv is now 2191360 blocks long.
    
    • 设备文件名:要调整大小的文件系统所对应的设备文件名
  5. 刷新文件系统 ( xfs 格式)

    XFS 是一个开源的(GPL)日志文件系统,最初由硅谷图形(SGI)开发,现在大多数的 Linux 发行版都支持。事实上,XFS 已被 CentOS/RHEL 7 采用,成为其默认的文件系统。在其众多的特性中,包含了 “在线调整大小” 这一特性,使得现存的 XFS 文件系统在已经挂载的情况下可以进行扩展。然而,对于XFS文件系统的缩减却还没有支持。

    要扩展一个现存的 XFS 文件系统,你可以使用命令行工具 xfs_growfs,这在大多数Linux发行版上都默认可用。由于 XFS 支持在线调整大小,目标文件系统可以挂在,也可以不挂载。

    虽然 XFS 文件系统只支持增加,不支持减少。但并不是说 XFS 文件系统不能减小,只是减小后,需要重新格式化才能挂载。

     xfs_growfs info /dev/centos/root    # 检查数据块大小和数量
    
     xfs_growfs /dev/centos/root -D 1986208  # 将 XFS 文件扩展到 1986208
    
     xfs_growfs /dev/centos/root  # 自动扩展 XFS 文件系统到最大的可用大小
    

    注: 一般情况下使用 xfs_growfs 自动扩展 XFS 文件系统大小即可

逻辑卷缩小

由于 xfs 系统减小后需要格式化才能挂载使用,应尽量避免缩小 xfs 文件系统的操作,所以不在此讨论 xfs 文件系统的缩小。

注: 减小需谨慎,文件系统的减小后大小一定要和逻辑卷最终大小相等

  1. 卸载

     umount -v 逻辑卷完整路径
        
     [root@localhost ~]# umount -v /dev/vg1000/lvol0
     /dev/vg1000/lvol0 umounted
    

    或者

     umount -v 挂载点
        
     [root@localhost ~]# umount -v /data
     /data umounted
    
  2. 减少文件系统

     resize2fs 设备文件名 减小到的大小
    
    • 设备文件名:要调整大小的文件系统所对应的设备文件名
  3. 减少逻辑卷大小

     lvreduce -L -减少量的大小 逻辑卷
        
     [root@localhost ~]# lvreduce -L -50M /dev/vg1000/lvol0     # 将逻辑卷的空间大小减少 50M
     ......省略部分输出内容......  
     Do you really want to reduce lvol0? [y/n]: y  # 确认操作  
       Reducing logical volume lvol0 to 252.00 MB  
       Logical volume lvol0 successfully resized
    
    • 逻辑卷:指定要操作的逻辑卷对应的设备文件
  4. 挂载使用

     mount 逻辑卷完整路径 挂载点
        
     [root@localhost ~]# mount /dev/vg1000/lvol0 /data
    
    • 也可以使用 /etc/fstab 进行挂载

参考资料

image

Search

    Table of Contents