1. 概述
LVM全称是Logical Volume Manager,即逻辑卷管理器。它是Linux环境下对磁盘分区进行管理的一种机制;它可以将多个物理分区整合在一起,并且可以根据实际需要动态调整文件系统空间。
2. LVM的相关概念
(1) 物理卷(Physical Volume)
物理卷是组成LVM的最底层的元素,即Linux上的物理分区。
(2) 卷组(Volume Group)
将各个独立的PV组合起来形成的一个存储空间就称为VG,VG的大小就是整个LVM的大小。
(3) 逻辑卷(Logical Volume)
可以被用户格式化、挂载并提供数据存储的对象就是LV。
(4) 物理扩展块(Physical Extent)
PE相当于Linux分区中的block,它是LVM的最小存储单位,默认为4M。
做成lvm的优势:
可以灵活变动大小
可以自定义设备名(物理卷也可以改名,使用udev)
可以做线型(linear),条带(stripe),镜像(mirror)
可以做lvm快照
3. LVM基本操作
- 创建PV
1 | # pvcreate /dev/md0 |
- 划分vg
1 | # vgcreate vg01 /dev/md10 |
- 把vg划分为逻辑卷(线性卷linear)
1 | # lvcreate -L 1000M -n lv01 vg01 --L指定大小,n指定lv的名字 |
- 创建条带卷
1 | # lvcreate -L 3060M -i3 -n stripe_lv_01 vg01 |
- 镜像卷
当您创建一个镜像卷时,您可使用 lvcreate 命令的 -m 参数来指定数据的备份数目。指定 -m1 生成一个镜像,也就是生成两个文件系统副本:一个线性逻辑卷加上一个副本。同样的,指定 -m2 会生成两个镜像,也就是生成三个文件系统副本。
镜像卷的大小由最小的PV和副本数(也就是-m后接的数字)来决定
以这个为例
PV VG Fmt Attr PSize PFree
/dev/md0 vg01 lvm2 a– 2.00g 2.00g
/dev/md1 vg01 lvm2 a– 1020.00m 1020.00m
/dev/md10 vg01 lvm2 a– 2.00g 2.00g
如果-m 1,那么他会选md0和md10这两个来做镜像,所以最大大小为2G
如果-m 2,那么他会选这三个一起来做,最大大小为1020M
不能-m 3或者更大;因为我这里只有三个PV
1 | 以下面的为例 |
- 关于三种卷之间的转换:
1 | 把线性卷转化成镜像卷 |
4. LVM扩容
先考虑vg是否还有空间去扩容,如果没有,那么要先扩容vg,使用vgextend
1 | # lvextend -L 1.5g /dev/vg01/lv01 |
5. LVM缩小
做缩小操作之前,都要去验证查看一下数据的大小,缩小时不要缩到比已经存在的数据量还要小(数据库内的表空间缩小也是一样要先查看已有数据大小)
1 | # resize2fs /dev/vg01/lv01 1g --这样去缩小的话,报错已经mount了 |
6. lvm 快照功能
(1) 快照创建的速度非常快,不需要停止生产环境
(2) 快照的大小是存储差异数据,或是快照时间点的状态,不需要和lv同大小
(3) 它可以用于一些特殊的情况,比如数据库备份,或者批量复制虚拟机(不关闭虚拟机的情况下,克隆是需要关闭或暂停虚拟机的),虚拟机做快照等
1 | # dd if=/dev/zero of=/media/10m bs=1M count=10 |