1、LVM概述
LVM全称逻辑卷管理(LogicVolume Manager,LVM),是Linux 系统对磁盘分区的一种管理机制,LVM是建立在硬盘和分区至上的一个逻辑层,可以将多个物理分区通过软件,整合在一起,让这些分区看起来就像是一个独立的大磁盘一样,来提高磁盘分区管理的灵活性,可灵活的对磁盘大小进行动态调整。LVM 仅能弹性地使用(或调整)磁盘空间,无法提供磁盘阵列的容错能力。如果 LVM 出现故障,所有存储于 LVM 上的文件可能就会永久消失。
2、LVM术语
物理卷(PhysicalVolume,PV) 是LVM存储结构中处于最底层,物理卷可以是整个硬盘,也可是其中的某个分区,这里可以简单看作为LVM物理卷的分区,其分区系统识别码(System ID)必须是标识为“8e Linux LVM”.
卷组(Volume Group,VG)是建立在物理卷之上,它由一个或多个物理卷组成卷组组成,可以动态添加卷组中,在卷组上可以创建一个或多个”LVM分区”(逻辑卷)一个LVM 系统中可以自由一个卷组,也可以包含多个卷组LVM的卷组类似于非LVM系统中的物理硬盘
逻辑卷(Logic Volume,LV)建立在卷组之上,它是从卷组中”切出”的一块空间逻辑卷船舰之后,其大小可以伸缩。这里可以分享下从某本书中看到一个事例,这样方便记忆与理解。事例:物理卷 好比面粉; 卷组好比面团; 逻辑卷好比馒头,馒头可大可小,可控制。
物理扩展单元(Physical Extent):物理卷可以进一步细分为物理扩展单元,每个物理扩展单元具有唯一的编号, 也是LVM能够寻址的最小单元。物理扩展单元的大小可以配置,默认值为4MB.
逻辑扩展单元(Logical Extent):逻辑卷可以划分寻址的逻辑扩展单元。在同一个卷组中,物理扩展单元与逻辑扩展单元的大小相同,且一一对应。
LVM 创建流程:
3、LVM的管理命令
4、创建和管理LVM
4.1 创建LVM
4.1.1 创建分区
使用分区工具fdisk创建LVM分区,方法和创建其他一般分区的方式是一样的,并将此分区System ID 更改为:”8eLinux”
1 | [root@dirhost140 ~]# fdisk /dev/sdd |
4.1.2 创建物理卷
创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。这里这里以磁盘分区/dev/sdd1为例,将 /dev/sdd1 初始化成物理卷:
1 | [root@dirhost140 ~]# pvcreate /dev/sdd1 |
4.1.3 创建卷组
1 | [root@dirhost140 ~]# vgcreate vg04 /dev/sdd1 |
4.1.4 创建逻辑卷
1 | [root@dirhost140 ~]# lvcreate -L +5G -n lvtest01 vg04 |
这里通过lvdisplay 命令去查看LV 的详细信息
1 | [root@dirhost140 ~]# lvdisplay /dev/vg04/lvtest01 |
4.1.5 挂载并读取LVM
1 | [root@dirhost140 ~]# mount /dev/vg04/lvtest01 /aaa/ |
4.2 调整逻辑卷大小
4.2.1 扩大LVM逻辑卷的大小
调整逻辑卷大小需要先扩大LV,再放大文件系统, 在扩大LVM逻辑卷大小之前,先检查下其LV 的Block大小
1 | [root@DirHost140 ~]# tune2fs -l /dev/vg04/lvtest01 |grep 'Block' |
扩大逻辑卷1GB 大小
1 | [root@DirHost140 ~]# lvextend -L +1G /dev/vg04/lvtest01 |
虽然已经将LV空间扩充了1GB大小,但文件系统仍然是5G,所以这里需要放大下文件系统.
1 | [root@DirHost140 ~]# df -Th/dev/mapper/vg04-lvtest01 |
4.2.2 减小LVM逻辑卷的大小
减小LVM 3GB的大小空间
由于LVM 不支持在线减小LVM,因此需要umountLV,离线进行减少LVM 3G大小空间先减小逻辑卷大小,再减小文件系统大小(前提备份,卸载操作),
1 | [root@dirhost140 /]# umount /aaa |
4.3 LVM高级应用
4.3.1 创建逻辑卷快照
LVM提供了快照功能可以用此技巧,灵活的使用磁盘空间以及备份文件系统,这里用之前创建过的lvtest01 作快照
建立并读取逻辑卷快照
1 | [root@DirHost140 ~]# df -Th/dev/mapper/vg04-lvtest01 |
虽然从上面看到新创建的快照backup1 已挂载到/aaa 目录, 且显示总共用的大小为3G,可用空间为2.7G。由于之前创建快照时只给了300M大小,因此次lv快照backup1最多只能存储300M 空间,当超过300M空间时,系统将会报错;
1 | [root@DirHost140 ~]# lvdisplay /dev/mapper/vg04 |
当在此逻辑卷快照backup1存储超过300M左右大小的文件,系统会提示I/O错误(这里会出现短暂的延时),当我们再查看逻辑卷快照时,它的状态将变为inactive状态,从而导致逻辑卷快照将被损毁,即不可用。同时自动umount /aaa 挂载,具体细节请见下列清单
1 | [root@DirHost140 ~]# dd if=/dev/mapper/vg04-backup1 of=/aaa/300M bs=30M count=10 |
即使逻辑卷快照能扩大其空间大小并激活它,但里面的数据已破坏,已经失去备份文件的机制,相当于一个无效的快照文件,因此需要移除它。
1 | [root@DirHost140 /]# lvchange -ay /dev/vg04/backup1 |
4.3.2 卸载逻辑卷快照
快照也占用了卷组的空间,因此适当的卸载未多大作用的快照 是非常有必要的.
1 | [root@DirHost140 /]# lvremove /dev/vg04/backup1 |
4.3.3 移动物理卷
用来实体磁盘的分区快要出故障了,或者你打算用较快SDD硬盘来换较慢的硬盘.这里LVM采用pvremove 指令可以将某个物理卷的数据移动另一个物理卷上.
必须采取的步骤:
(1)加入新的物理卷到卷组中.
加入新的物理卷
1 | [root@DirHost140 ~]# pvcreate /dev/sdd2Physicl |
扩展卷组大小
1 | [root@DirHost140 ~]# vgextendvg04 /dev/sdd2 |
查看卷组
通过pvscan可以发现新增的物理卷成功加入到卷组中了.
1 | [root@DirHost140 ~]# pvscanPV /dev/sdd1VG vg04lvm2 |
4.3.4 移动物理卷数据到新加入的物理卷
新增的物理卷加入到卷组后就可以移动旧物理卷的数据了,这会用到指令pvmove 指令
进行数据的移动. 同时移动物理卷数据是一个高风险的行为. 请在执行这个步骤前,务必备份好所有数据.
1 | [root@DirHost140 ~]# pvmove /dev/sdd1 /dev/sdd2 |
4.3.5 将旧的物理卷从物理卷中移除
通过以上事例的话就可以卸载原来(旧)物理卷,需要使用指令,pvremove 进行卸载工作.
在卸载物理卷前,我们必须先卸载卷组,才可以进行. 按顺序实施.
1 | [root@DirHost140 /]# umount/aaa |
sdd1已经从卷组中卸载掉了,数据已经迁移到sdd2上了,并投入使用了。其数据不会丢失,在此查询并挂载刚才之前的lvtest01,可发现数据依然存在.
1 | [root@DirHost140 /]# mount /dev/vg04/lvtest01 /aaa/ |
4.3.6 迁移整个LVM磁盘系统至其他Linux系统
迁移LVM到另外一台计算机中,通常采取三个步骤即可。第一步,在原先的计算机中导出卷组;第二步,将LVM的磁盘安装到目的计算机上,第三步,在目的计算机中输入卷组.
导出卷组
用到vgexport 指令,导出前卸载该卷组中的所有逻辑卷,并使用vgchange 将卷组修改为非有效(Inactive)配置.
1 | [root@DirHost140 ~]# umount /dev/vg04/lvtest01 |
导出卷组后,就可以把该群组的所有物理卷的磁盘安装到目的计算机上了,即可实施导入卷组。
在另外一台Linux导入卷组
在开始导入卷组前,确认先扫描下所有物理卷,让RedHatLinux可以驱动这些物理卷.可以使用vgimport指令来导入卷组,导入后 修改有效的(Active)配置,才可以挂载使用其文件系统.
1 | [root@dirhost162 ~]# pvscanPV /dev/sdd2 |
验证新导入卷组的数据
1 | [root@dirhost162 ~]# mount /dev/vg04/lvtest01 /mnt |
根据上面的实例可以看到,LVM具有很好的可伸缩性,使用起来非常方便,可以方便地对卷组、逻辑卷的大小进行调整,它也可结合群集系统一起使用,也可以更好的发挥特性,同时通过本篇的文章可以掌握LVM使用技巧。