Linux—LVM逻辑卷管理

一.什么是LVM

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

二.为什么要使用LVM

在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

三.LVM工作机制

LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

四.重要专业名词

  • 物理卷(PV, Physical Volume)
    物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

  • 卷组(VG, Volume Group)
    LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

  • 逻辑卷(LV, Logical Volume)
    LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。

五.关于LVM逻辑卷相关操作

1.LVM逻辑卷的制作

  • 新建3个分区并将分区类型转换为LVM
    fdisk -l查看分区情况,fdisk /dev/vdb新建分区
    Linux—LVM逻辑卷管理
    Linux—LVM逻辑卷管理
  • 将新建分区类型转为LVM
    Linux—LVM逻辑卷管理
  • 创建物理卷
    pvcreate /dev/vdb{1..3}
    Linux—LVM逻辑卷管理
  • 创建卷组
    vgcreate 卷组名 /dev/vdb{1..3}
    Linux—LVM逻辑卷管理
  • 创建逻辑卷
    lvcreate -n 逻辑卷名 -L 逻辑卷的大小 卷组名
    Linux—LVM逻辑卷管理
    打开一个shell监控设备信息,通过监控shell可以看到,我们的LVM制作成功
    watch -n 'pvs; echo ====; vgs; echo ====; lvs'
    Linux—LVM逻辑卷管理
    Linux—LVM逻辑卷管理

2.LVM逻辑卷的应用

  • 格式化逻辑卷设备
    mkfs.ext4 /dev/juan/lvjuan
    Linux—LVM逻辑卷管理
  • 将逻辑卷设备挂载到文件系统上
    mount /dev/juan/lvjuan /juan
    Linux—LVM逻辑卷管理
  • 编辑开机自动挂载
    vim /etc/fstab
    将这条信息写入fstab文件mount /dev/mapper/juan-lvjuan /juan ext4 defaults 0 0Linux—LVM逻辑卷管理

3.ext格式LVM逻辑卷的拉伸与缩减

(1)拉伸逻辑卷

将逻辑卷拉伸到1.8G的步骤

  • 确定卷组是否有足够的空间可以拉伸
    vgs
    Linux—LVM逻辑卷管理
  • 逻辑卷拉伸的命令,lvs查看拉伸后逻辑卷设备的大小
    lvextend -L 1.8G /dev/juan/lvjuan
    lvextend -L +300M /dev/juan/lvjuan
    Linux—LVM逻辑卷管理
  • 更新文件系统,查看更新后的文件系统
    Linux—LVM逻辑卷管理

(2)拉伸物理卷组

将逻辑卷拉伸到3.5G实现步骤

  • 确定卷组是否有足够的空间可以拉伸
    vgs
    Linux—LVM逻辑卷管理
  • 卷组剩余空间不能满足拉伸到3.5G的要求,故需再创建一个物理卷
    pvcreate /dev/vdb5

Linux—LVM逻辑卷管理

  • 将新的物理卷添加到物理卷组中
    vgextend juan /dev/vdb5
    Linux—LVM逻辑卷管理
  • 查看拉伸后的物理卷空间
    Linux—LVM逻辑卷管理
  • 拉伸物理卷后,再对逻辑卷进行拉伸
    lvextend -L 3.5G /dev/juan/lvjuan
    Linux—LVM逻辑卷管理
  • 更改文件系统的空间,用df -h查看是否更新成功
    resize2fs /dev/juan/lvjuan
    Linux—LVM逻辑卷管理注:更改逻辑卷大小时,文件系统的大小不会更改,所以我们在更改完逻辑卷大小后,要再更新文件系统的大小

(3)缩小逻辑卷

  • 移除挂载的逻辑卷umount /juan
    Linux—LVM逻辑卷管理
  • 对文件系统进行校验
    e2fsck -fv /dev/juan/lvjuan
    Linux—LVM逻辑卷管理Linux—LVM逻辑卷管理
  • 缩小文件系统大小为1G
    resize2fs /dev/juan/lvjuan 1G
    Linux—LVM逻辑卷管理
  • 缩小逻辑卷大小为1G
    lvreduce -L 1G /dev/juan/lvjuan
    Linux—LVM逻辑卷管理
  • 缩减之后重新挂载设备,查看缩减是否生效
    Linux—LVM逻辑卷管理
  • 我们可以在监控的shell中查看卷组中是否有空间分区,如果有的话,就移除空闲分区
    通过监控shell我们可以发现vdb3和vdb5物理卷是没有被占用,所以我们移除vdb3和vdb5
    vgreduce juan /dev/vdb{3,5}从卷组中移除3和5
    pvremove /dev/vdb{3,5}移除物理卷3和5
    Linux—LVM逻辑卷管理

4.xfs格式逻辑卷的拉伸(不能缩减)

根据逻辑卷的创建步骤重新新建逻辑卷,将新逻辑卷的以xfs格式格式化,格式化之后重新挂载,xfs格式不能实现在线拉伸
将逻辑卷拉伸到1.8G的实现步骤

  • vgs确定卷组是否有足够的空间可以拉伸
    Linux—LVM逻辑卷管理
    Linux—LVM逻辑卷管理
  • 拉伸逻辑卷到1.8G
    lvextend -L 1.8G /dev/westos/lv0
    lvextend -L +300M /dev/westos/lv0
    Linux—LVM逻辑卷管理
  • 更新文件系统,并查看更新后的文件系统
    xfs_growfs /dev/juan/lvjuan
    Linux—LVM逻辑卷管理