根据上一节的内容,我们知道md这个内核模块可以用来做软RAID的管理。同时RAID实现了两个功能:1、提高了磁盘的读写能力;2、对于数据进行了冗余备份;
但是,如果是管理员手动误删的数据,则一样无法找回。同时,如果磁盘不够用了,这时候添加磁盘则是一件比较麻烦的事情;为了解决这两个问题,Linux系统内核提供了dm模块(device mapper)实现LVM功能;
LVM--逻辑卷管理
LVM逻辑卷管理,主要功能即为:可以灵活的管理磁盘的大小,单某个逻辑卷不够用,可以将磁盘加大,同时,如果某个逻辑卷没有使用的空间比较多,则可以将空闲空间拿出来;LVM通过dm模块来实现这个功能;
逻辑卷LVM分为三个层次:
最下层为物理卷,我们叫做PV,它是真实存在的磁盘,上层LV的最大空间就由PV物理卷来决定;
中间层为卷组VG,也就是由物理卷组成的一个集合;
最上层为逻辑卷LV,从卷组中提取空间,逻辑卷进行格式化,进行磁盘挂载,可以使用;
在一个卷组中可以有多个PV物理卷,VG的大小取决于PV总和的代销,每一个LV就是一个独立的分区,它的大小是可以改变的,同时LV逻辑卷也具有快照功能,能够对数据进行备份;
物理卷存储数据的单位叫做PE(physical extend),只有指定磁盘为PV后才会有这个概念。
同理,逻辑卷存储数据的单位叫做LE(logic extend),它是用来存储数据的单元。
【工作中,LVM经常是建立在RAID之上的】
LVM管理命令总结
首先,我们可以通过 yum install lvm* 来安装lvm工具;
lvm下常见的命令如下:
【注意:在通过pvremove命令移除物理卷的时候,一定要先通过pvmove命令将上面的数据移动到其他磁盘才行】
常见操作
创建一个lv逻辑卷,操作如下图:
其中 lvcreate 命令中 -n 指定lv名称,-L 指定lv的大小,最后接上从哪个 VG 取这个空间,即可;
除了 /dev/VGtest/LVtest 目录外,我们的逻辑磁盘还存放于 /dev/mapper 目录下面;
1、扩展逻辑卷大小
创建分区的过程就是创建逻辑边界的过程。这就已经确定了存储数据的空间大小,所以如果要扩张空间,就需要先扩展物理边界,再扩展逻辑边界,我们通过lvextend扩展物理边界,再通过resize2fs扩展逻辑边界:
lvextend -L [+2]G /dev/VGtest/LVtest #不加“+”表是扩展到2G,加“+”表示在原来的基础上扩展2G
添加LV空间以后,依然还是无法使用的,因为新加的这部分空间是没有做文件系统的,所以,我们需要通过 resize2fs 命令将新加的磁盘空间添加文件大小;
其中 -p 则是指定文件添加内容的参数;
2、减小逻辑卷
需要注意的是,不能在线缩减磁盘大小,必须先将逻辑卷卸载下来,并且确保缩减后的磁盘空间大小依然能够保存现有的数据,在缩减之前需要检查文件系统,确保文件系统处于一致性状态;
操作如下:
3、对逻辑卷做快照
首先我们要明白,快照卷是不能修改的,它存在的目的就是在数据丢失的时候能恢复到当前数据格式下来,所以快照卷是不能修改的;
lvcreate
-s 指定该卷为镜像卷
-p 指定该卷的r|w只读权限
-L 数据的增长量不能超出快照卷的大小
最后快照卷需要跟原卷在同一个卷组;
恢复镜像则是:
lvconvert --merge /dev/mapper/LVtest_backup