LVM 是什么
LVM 全称 Logical Volume Manager 是一个基于Linux内核开放的逻辑卷管理器,用来管理磁盘等存储设备。
LVM 通过将底层的物理磁盘抽象封装,然后以逻辑卷的形式呈现给上层应用。在传统的磁盘管理机制中,文件系统直接挂载到磁盘分区上,无法跨磁盘创建文件系统。而LVM作为中间层,将文件系统和物理磁盘解耦,使得文件系统无需关注具体的物理磁盘,从而可以跨越物理磁盘的限制。
图1:LVM示意图
LVM 的优缺点
优点:
- 可以动态扩展文件系统的大小;
- 文件系统可以跨硬盘;
缺点:
- 一块物理磁盘的损坏会影响整个卷组;
- 存储性能收到一定影响;
LVM 中的基本概念
Physical Volume 物理卷 (PV)
Unix块设备节点,可用作LVM的存储。例如:一个硬盘,一个MBR或GPT分区,一个环回文件,一个设备映射设备(例如dm-crypt)。它承载一个LVM头。
Volume Group 卷组(VG)
一组PV,用作LV的容器。从VG为LV分配PEs。
Logical Volume 逻辑卷(LV)
“虚拟/逻辑分区”,它存在于VG中,由PEs组成。LVs是类似于物理分区的Unix块设备,例如,它们可以直接用文件系统进行格式化。
Physical Extent 物理区段(PE)
可以分配给LV的PV中最小的连续区段(默认为4MB)。可以将PEs看作PV的一部分,可以分配给任何LV。
常用命令概述
查看显示类命令
pvs,vgs,lvs,pvdisplay,vgdisplay,lvdisplay
这类命令最常用,在做所有操作之前,都要先通过这类命令查看现状,这类命令直接执行即可,一般不需要加参数。s是查看简单信息,display是查看详细信息。
创建扩展类命令
安装操作系统时如果选择使用LVM分区的话,会有创建好的PV、VG、LV,常用的操作就是创建PV,加入现有VG,然后创建新的LV或者扩展现有LV。
# pvcreate /dev/sdb1 创建PV;其中/dev/sdb1可以是分区也可以是磁盘 # vgcreate data-vg /dev/sdb1 创建VG;其中data-vg是要创建的VG,/dev/sdb1是要加入该VG的PV # vgextend centos-vg /dev/sdb1 扩展VG;其中centos-vg是要扩展的VG,/dev/sdb1是要加入该VG的PV # lvcreate -L 100G -n data_lv centos-vg 创建LV;其中100G为LV大小,data_lv为LV名称,centos-vg为LV所在VG # lvextend -L 100G /dev/centos-vg/home_lv 扩展LV;其中100G表示扩展到100G,也可以通过+100G表示增加100G,/dev/centos-vg/home_lv为需要扩展的LV,此时不能也不需要指定VG,只能在原VG上进行扩展,如果VG剩余空间不足,应首先扩展VG |
缩减命令很少使用,项目上尽量避免。需要注意的是,xfs格式不能进行缩减操作。
基本操作
图2:基本操作流程图
需要注意的点:
1.如果是新建分区来创建PV,那么在创建完分区后需要重读分区表来让系统识别到新创建的分区。具体命令如下:
# partprobe |
2.扩展LV时的-L参数后面指定的参数表示扩展到,如果想实现增加多少的效果,需要在数字前加符号“+”。
3./etc/fstab是操作系统启动时的关键文件,该文件的编辑一定要谨慎,必须保证正确性,出错会导致操作系统无法正常启动。
基本操作示例:
对新增加的磁盘分区(当然也可以不分区,将整个硬盘创建PV) # fdisk /dev/sdc 将分区sdc1创建PV # pvcreate /dev/sdc1 查看创建的PV信息 # pvs 将新创建的PV加入到现有的VG centos-vg中 # vgextend centos-vg /dev/sdc1 查看VG信息 # vgs 此时剩余空间应该已经增加了PV提供的大小 扩展现有LV,增加100G容量 # lvextend -L +100G /dev/centos-vg/home_lv 扩展文件系统 xfs_growfs 针对xfs格式,只支持增大 resize2fs 针对ext2/ext3/ext4格式,增大减小都可以 # xfs_growfs /dev/centos-vg/home_lv 创建新LV # lvcreate -L 100G -n data_lv centos-vg 格式化LV # mkfs.xfs /dev/centos-vg/data_lv # mkfs.ext4 /dev/centos-vg/data_lv 根据需要将LV格式化成指定的格式 挂载到文件系统 # mount /dev/centos-vg/data_lv /data/ 查看挂载情况 # df -h 配置/etc/fstab # vi /etc/fstab /dev/centos-vg/data_lv /data xfs defaults 0 0 配置完成后,可以将新增加的挂载点卸载,然后使用mount -a通过该配置文件进行全部挂载,以检验新增加配置的正确性 |
swap分区的调整
调整 swap lv 大小为 32G # swapoff /dev/mapper/centos-swap # lvresize -L 32G /dev/mapper/centos-swap # mkswap /dev/mapper/centos-swap # swapon /dev/mapper/centos-swap # free -g |