逻辑卷的基础应用
一、LVM简介
LVM(Logical volume Manager)即逻辑卷管理。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都有类似与LVM这种磁盘管理软件。
LVM是通过将底层的物理块设备,抽象组织起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
理解LVM,必须要掌握4个基本的逻辑卷概念。
PV (Physical Volume) 物理卷
PE (Physical Extend) 物理拓展
VG (Volume Group) 卷组
LV (Logical Volume) 逻辑卷
二、LVM的基本用法
首先要将物理块设备创建成物理卷(PV),创建为PV后,其中就是一个个的PE(此时没有大小),然后指定以哪些物理卷(PV)来创建哪个卷组(VG),此时PE有大小,之后可以在卷组(VG)这个边界内创建任意逻辑卷(LV)。
LVM的设备文件
/dev/VG_NAME/LV_NAME --> /dev/mapper/VG_NAME_LV_NAME--> /dev/dm-#
LVM管理
1、lvm的 管理工具
#rpm -qa | grep lvm 可以通过软件包管理器,查看当前系统中已安装的软件
2、lvm的基本管理命令
备注:在实际的生产环境使用中,lvm一般都会建立在RAID之上,以保证数据的安全、可靠存储。
创建物理卷PV
pvcreate
#pvcreate /dev/{sdb1,sdb2,sdb3}
pvs简要显示当前的物理卷(PV)
#pvs
pvdisplay详细显示当前的物理卷(PV)
#pvdisplay
pvscan简单显示及使用情况
#pvscan
创建VG
#vgcreate myvg /dev/sdb1 /dev/sdb2
常用选项:-s # 指明PE大小,默认4M
简单显示卷组信息
#vgs(VG)
详细显示卷组信息
#vgdisplay(VG)
卷组信息说明:
VG Name VG的名称
VG Size VG的总大小
PE Size PE的大小,默认为4MB
Total PE PE的总数量,5114 x 4MB = 19.98GB
Free PE / Size 剩余空间大小
创建逻辑卷(LV)
#lvcreate -L 1G -n mylv myvg在卷组myvg中创建一个大小为1G的逻辑卷
常用选项:
-L 指定创建的LV 的大小
-l 指定创建的LV 的PE 数量
-n LV的名字
#lvdisplay显示逻辑卷的详细信息
逻辑卷的信息说明:
LV Path LV 的路径
LV Name LV的名字
VG Name 所属的卷组(VG)
LV Size LV的大小
此时卷组信息
#vgs
在创建的逻辑卷设备上创建文件系统
#mkfs.xfs /dev/myvg/mylv (centos7.3)
之后即可,mount命令挂载使用;或是,编辑/etc/fstab
备注:centos中,对逻辑卷创建文件系统,最好是指定卷标,以更好的来挂载使用逻辑卷设备,当然也可使用其UUID挂载使用。通过设备文件来挂载,重启后的识别可能会有问题。
三、LVM的扩容操作
LVM最大的好处就是可以对磁盘进行动态管理,而且不会丢失现有的数据。如生产环境中需要扩容,那我们该怎么做呢?
逻辑卷mylv是在卷组myvg中创建的,此时我们的myvg卷组中还有剩余空间(如此时卷组myvg中没有可以空间,也可以通过添加其他磁盘块设备,创建为物理卷并添加到卷组myvg中),所以我们可以从myvg中划分出更多的空间给逻辑卷来使用。
#vgcreate /dev/sdb3 准备一个新的物理卷设备
#vgextend myvg /dev/sdb3向卷组myvg中添加物理卷,此时,扩展了物理卷的空间
#vgdisplay myvg 此时,再次查看卷组myvg,已向卷组中添加/dev/sdb3,扩展了整个卷组的空间
#lvextend -L +1.5G /dev/myvg/mylv逻辑卷mylv在原有1G的空间上,扩展1.5G空间(或扩展为2.5G空间)
#vgdisplay myvg此时,再次查看卷组的信息
#lvdisplay /dev/myvg/mylv逻辑卷mylv已扩展了空间
#df -lh /dev/myvg/mylv此时,逻辑卷的设备文件系统没有扩展
#xfs_growfs /dev/myvg/mylv扩展文件系统大小至逻辑卷的可用空间大小
#df -lh /dev/myvg/mylv再次查看逻辑卷mylv的文件系统空间大小,此时完成扩充。
四、逻辑卷的缩减
备注:和扩展逻辑卷相反,且需要先卸载(不支持在线缩减),并强制进行文件系统检查。但一般不建议在生产环境中不进行逻辑卷的缩减。
#umount /dev/myvg/mylv
# e2fsck -f /dev/myvg/mylv 检查文件系统一致性(centos6)
#resize2fs /dev/myvg/mylv 1.5G 缩减1.5G空间大小
#lvreduce -L 1.5G /dev/myvg/mylv 缩减逻辑卷
#pvmove /dev/sdb3 如果要移除某物理卷设备,需要先移动其上面的pe到卷组中其他物理卷
#vgreduce myvg /dev/sdb3 此时,移除指定物理卷
五、LVM快照(snapshot)
一定理解,任何数据必须可以序列化,才能存储在磁盘中。在线数据经常会有读写操作,数据改变会比较频繁,为保证数据的可靠性、安全性,除了RAID冗余之外,我们通常还要制定备份计划任务,以防人为错误等操作。数据一般会比较大,在进行备份时,很可能数据也在进行写操作,无法保证备份数据的一致性。快照则可以实现某时间点的数据的一致性。
快照就相当于一个监视器。监视着文件系统的元数据信息的变化情况。当我们某时刻需要对某逻辑卷建立快照时,其会将逻辑卷的元数据保存至快照卷中,这个时间很短就可以完成(保证此时没有写操作),这样,我们就有两个访问数据的路径,即通过逻辑卷本身访问和通过快照卷访问。同时,快照卷还监视着逻辑卷的数据变化,逻辑卷的数据修改发生变化,数据本身的元数据会先改变,快照卷发现逻辑卷上的某元数据改变,会复制这个数据的未修改之前的数据(原数据),至快照卷中保存。通过快照卷访问的数据是,建立快照那一时刻之前的原数据。这样我们即可通过快照卷,方便的实现完全备份数据。
快照卷的大小,要有足够的空间来保证,在完全备份完成之前,逻辑卷中数据的变化的原数据的存储。完全数据备份完成后,逻辑卷就没有存在的意义了。
#lvcreate -L 100M -p r -s -n mylvsnap /dev/myvg/mylv对mylv逻辑卷创建快照卷mylvsnap
#lvremove /dev/myvg/mylv 备份完成后,可移除快照卷