Linux lvm管理使用
LVM是 LogicalVolume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
将一个或多个底层块设备映射成一个逻辑设备(底层设备可以是任意的块设备,支持使用RAID来创建LVM)
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在
将一个或多个底层块设备映射成一个逻辑设备(底层设备可以是任意的块设备,支持使用RAID来创建LVM)
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上次服务的是以逻辑卷的方式。传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上次服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!
底层块设备:Block Device
PV: (Physical Volume) 物理卷(底层块设备)
PE:(Pysical Extent) 物理拓展( 把底层的物理设备,任意组织成类似扩展分区这种形式)
VG:(Volumn Group) 卷组(卷组由物理卷组成,卷组的空间大小由物理卷中PE大小来决定 )
LV: (Logical Volume)逻辑卷(把一个PE或者多个PE组合起来,当作一个逻辑卷来使用,划成一个单位或者文件系统,就是一个逻辑卷)
存储空间边界:物理边界,逻辑边界
扩展:先扩展物理空间,在扩展逻辑空间
裁剪:先裁剪逻辑空间,在裁剪物理空间(裁剪时逻辑空间不能少于物理空间大小)
LVM块设备:可以是分区文件系统,也支持RAID
创建过程pv-->vg-->lv
LVM常用命令:
PV: pvcreate,pvmove,pvdisplay,pvremove,pvs,pvscan
VG:vgcfgrestore,vgdisplay, vgcreate, vgreduce,vgs ,vgextend
LV:lvdisplay,lvscan,lvextend,lvreduce,lvcreate,lvm,lvmdiskscan,lvremove,lvs
5.1. PV:创建、删除、及查看
创建pv [root@www~]# pvcreate /dev/sdb{1,2} (pvcreate后面跟上需要创建的块设备)
查看pv [root@www~]# pvs(pvs查看当前系统上已经创建了那些pv)
[root@www ~]# pvdisplay 显示pv详细信息
查看指定pv
移除pv [root@www~]# pvremove /dev/sdb1
5.2. VG:创建、查看、扩展、删除
创建vg[root@www ~]# vgcreate myvg /dev/sdb1(vgcreate+卷组名称+指定pv可以是多个)
查看vg[root@www ~]# vgs
查看vg详细信息[root@www ~]#vgdisplay
扩展vg[root@www ~]# vgextend myvg /dev/sdb2
移除vg[root@www ~]# vgreduce myvg /dev/sdb1
(注:移除前先把pv移除保证数据移动到同组vg中)
5.3. 创建、查看、扩展、删除lv
创建lv[root@www ~]# lvcreate -L 3G -n mylv myvg (lvcreate+指定大小+lv名称+vg名称)
lv的访问路径
格式化lv[root@www ~]# mke2fs -t ext4/dev/myvg/mylv
挂载lv[root@www ~]# mount /dev/myvg/mylv/data
如何扩展逻辑卷:
扩展物理边界[root@www~]# lvextend -L 5G /dev/myvg/mylv (把mylv扩展至5G)
扩展逻辑边界[root@www ~]# resize2fs/dev/myvg/mylv
如何缩减逻辑卷
第一步,先卸载文件系统[root@www ~]# umount /dev/myvg/mylv
第二步,强制执行检测,并确保最后输出是没有问题的[
缩减逻辑边界[root@www ~]# resize2fs/dev/myvg/mylv 3G
缩减物理边界[root@www ~]# lvreduce -L 3G /dev/myvg/mylv
缩减完成,重新挂载[root@www ~]# mount /dev/myvg/mylv /data
5.4. 创建、挂载、卸载、删除快照
创建快照卷[root@www ~]# lvcreate -L 1G -n mylv-snap -p r -s/dev/myvg/mylv
[root@www~]# lvcreate -L 1G -nmylv-snap -p r -s /dev/myvg/mylv
Logicalvolume "mylv-snap" created
生产环境中创建快照的步骤:a先将设备挂载更改权限为只读,b在创建快照,c更改mount权限为读写
[root@www~]# mount -o remount,ro /dev/myvg/mylv /data
[root@www~]# lvcreate -L 1G -n mylv-snap -p r -s /dev/myvg/mylv
[root@www~]# mount -o remount,rw /dev/myvg/mylv /data
挂载快照[root@www ~]# mount/dev/myvg/mylv-snap /mylv-snap
移除快照[root@www ~]# lvremove /dev/myvg/mylv-snap(先卸载挂载点再移除快照)
删除:移除lv、移除vg
先卸载挂载点[root@www ~]# umount/mylv-snap/
移除逻辑卷 [root@www ~]#lvremove myvg
先卸载挂载点[root@www ~]# umount/data
移除卷组[root@www ~]# vgremovemyvg
移除pv[root@www ~]# pvremove/dev/sdb{1,2}
总结:
物理磁盘被格式化为PV,空间被划分为一个个的PE
不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
LV现在就直接可以格式化后挂载使用了
LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据