今天就写一篇关于lvm 逻辑卷的文章,本人对于lvm知道的也不是很多,只是根据想要实现的功能,用到了lvm快照。
LVM介绍:
LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间管理理念。以往在安装操作系统时需要规划好分区大小,即使利用了RAID技术也要规划好每个分区的大小,因为一旦分好区后要改变其大小是非常困难的事情。在Windows下有大家熟悉的Partition Magic工具可以用来调整分区大小,但它有一个缺点是要么在调整前要关闭系统或调整后重启系统。
这在普通PC机上使用还行,要在提供不间断服务的服务器上使用就会造成服务中断,不过这个问题在Linux下随着LV技术的出现一切都得到解决,LV可以在不用重启系统的情况动态增加可用空间大小,不过前提得是使用热插拔硬盘,或事先将硬盘装入而不使用。本文我将使用名词LV(可不是LV包)而不是LVM,因为LV才是主角。
首先我们要弄清楚LV领取的几个关键名词概念:
物理介质:就是我们通常说的硬盘,简称pm
物理卷:就是我们通常说的硬盘分区,简称pv物理分区:它是由LVM命令在物理卷上创建的最小LVM寻址单元,在创建物理卷时可以指定物理分区的大小,默认值是4M,简称pe卷组:由一个多多个物理卷组成的逻辑单元,简称vg逻辑分区:它与物理分区一一对应,大小相等,简称le逻辑卷:从卷组中分配一定大小的空间创建的逻辑单元,也可以使用一个完整的卷组空间大小来创建一个逻辑卷,简称lv(lvm 介绍摘抄与 51cto上)
1,创建物理卷PV
首先在2块磁盘上创建分区,这个分区会转成物理卷PV
[root@xyly ~]# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 1288 10241437+ 83 Linux/dev/sda3 1289 1925 5116702+ 83 Linux/dev/sda4 1926 5221 26475120 5 Extended/dev/sda5 1926 2056 1052226 82 Linux swap / Solaris/dev/sda6 2057 5221 25422831 83 LinuxDisk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 83 LinuxDisk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesfdisk /dev/sdb #创建物理卷并修改ID为8e
fdisk /dev/sdc #创建物理卷并修改ID为8e格式化好的2个 /dev/sdb1 和 /dev/sdc1.
2,把分区转成物理卷pv
[root@xyly ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created[root@xyly ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created使用pvdisplay 查看系统所有的pv信息 或者 指定的单个
[root@xyly ~]# pvdisplay
--- Physical volume ---PV Name /dev/sdb1VG Name nyvg1PV Size 10.00 GB / not usable 717.00 KBAllocatable yesPE Size (KByte) 4096Total PE 2559Free PE 2506Allocated PE 53PV UUID W23uI8-kZ46-4W3y-L0tW-Za22-nMeG-YbLeoD--- Physical volume ---
PV Name /dev/sdc1VG Name nyvg1PV Size 10.00 GB / not usable 717.00 KBAllocatable yesPE Size (KByte) 4096Total PE 2559Free PE 2521Allocated PE 38PV UUID Mzv5fV-xret-4IyG-s2fC-py33-mvCW-iBVF0Z3,创建VG卷组
[root@xyly ~]#
[root@xyly ~]# vgcreate lvm001 /dev/sd[bc]1 #讲/dev/sdb1 和/dev/sdbc1 加入到卷组lvm001 中/dev/cdrom: open failed: Read-only file systemVolume group "lvm001" successfully created[root@xyly ~]# vgdisplay #使用vgdisplay 查看卷组--- Volume group ---VG Name lvm001System IDFormat lvm2Metadata Areas 2Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 2Act PV 2VG Size 19.99 GBPE Size 4.00 MB #默认的PE大小为4MTotal PE 5118Alloc PE / Size 0 / 0Free PE / Size 5118 / 19.99 GB #一共5118个pe,未使用的。VG UUID oKhjBB-L9At-I2KC-Zrd3-fR2g-QoTe-3x0AST4,创建逻辑卷LV
[root@xyly ~]# lvcreate -L 1000 -n test1 lvm001 #-L 分配给lv的空间大小。 -n是创建逻辑卷的名字
Logical volume "test1" created #创建成功[root@xyly ~]# lvcreate -L 1000M -n test2 lvm001 #-lL 分配给lv空间的大小
Logical volume "test2" created[root@xyly ~]# lvdisplay #查看LV的信息
--- Logical volume ---LV Name /dev/lvm001/test1VG Name lvm001LV UUID ZiqMqR-XqD6-tNuv-dnv1-6a1C-PN0n-ZmRP2TLV Write Access read/writeLV Status available# open 0LV Size 1000.00 MBCurrent LE 250Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0--- Logical volume ---
LV Name /dev/lvm001/test2VG Name lvm001LV UUID oDWKde-dLeM-HsEi-CHOr-b9TF-SH3J-Gh6esLLV Write Access read/writeLV Status available# open 0LV Size 1000.00 MBCurrent LE 250Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:1把这2个LV 格式化为ext3文件系统
[root@xyly ~]# mkfs -t ext3 /dev/lvm001/test1
或者[root@xyly ~]# mkfs.ext3 /dev/lvm001/test2
都可以格式化为ext3的文件系统格式化完毕。现在要挂载
[root@xyly ~]# mkdir /lvm /lvm1 #创建挂载点
[root@xyly ~]# mount /dev/lvm001/test1 /lvm
[root@xyly ~]# mount /dev/lvm001/test2 /lvm1
[root@xyly ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/lvm001-test1985M 18M 918M 2% /lvm/dev/mapper/lvm001-test2
985M 18M 918M 2% /lvm1挂载逻辑卷完毕。
5,创建lvm快照。
[root@xyly ~]# lvcreate -L 100M -s -n test1_snap /dev/lvm001/test1 #-L表示快照的大小。-s 表示创建快照 -n 是快照的名字
Logical volume "test1_snap" created
[root@xyly ~]# lvscanACTIVE Original '/dev/lvm001/test1' [1000.00 MB] inheritACTIVE '/dev/lvm001/test2' [1000.00 MB] inheritACTIVE Snapshot '/dev/lvm001/test1_snap' [100.00 MB] inherit[root@xyly ~]# lvdisplay /dev/lvm001/test1*
--- Logical volume ---LV Name /dev/lvm001/test1VG Name lvm001LV UUID ZiqMqR-XqD6-tNuv-dnv1-6a1C-PN0n-ZmRP2TLV Write Access read/writeLV snapshot status source of #lvm快照源/dev/lvm001/test1_snap [active]LV Status available# open 1LV Size 1000.00 MB #lvm 大小Current LE 250Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0--- Logical volume ---
LV Name /dev/lvm001/test1_snapVG Name lvm001LV UUID 9mapX2-7OD2-emXG-rG37-XLj5-hcAl-DmanQvLV Write Access read/write #是否可写LV snapshot status active destination for /dev/lvm001/test1 #处于活动状态,镜像的路径LV Status available# open 0LV Size 1000.00 MBCurrent LE 250COW-table size 100.00 MBCOW-table LE 25Allocated to snapshot 0.01% #快照使用的百分比Snapshot chunk size 4.00 KBSegments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:2快照创建完成,下边演示快照的作用。
[root@xyly ~]# mount /dev/lvm001/test2 /lvm1 #挂载test2 到/lvm1 (前边用的是test1)
[root@xyly ~]# ls /lvm1 #查看/lvm1 目录下的内容,现在只有一个文件夹lost+found[root@xyly ~]# touch /lvm1/test{1,2,3,4,5,6} #在/lvm1目录下创建测试文件[root@xyly ~]# ls /lvm1lost+found test1 test2 test3 test4 test5 test6 #创建的文件[root@xyly ~]# mkdir /snap #创建快照挂载点[root@xyly ~]# ls /snap/ #现在/snap目录为空[root@xyly ~]# lvcreate -L 50M -s -n test_snap2 /dev/lvm001/test2 #创建快照Rounding up size to full physical extent 52.00 MBLogical volume "test_snap2" created[root@xyly ~]# mount /dev/lvm001/test_snap2 /snap/ #挂载快照[root@xyly ~]# ls /snap/ #查看快照的内容lost+found test1 test2 test3 test4 test5 test6[root@xyly ~]# umount /snap/ #卸载快照[root@xyly ~]# ls /snap/[root@xyly ~]# lvremove /dev/lvm001/test_snap2 #移除快照Do you really want to remove active logical volume test_snap2? [y/n]: yLogical volume "test_snap2" successfully removed移除快照成功! 到此就算有一个段落。从网上搜索的资料,看到lvm快照还有其他的应用,用LVM快照的其他应用:
1),虚拟化
2),数据库
3),数据回溯
其他的就不一一列举了。LVM的删除,我在这里也写一下吧 ,有创建就有删除
[root@xyly ~]# umount /lvm #首先要卸载挂载目录,否则删除不了
[root@xyly ~]# lvremove /dev/lvm001/test1 #使用lvremove命令可以删除卷组里的LVM逻辑卷Do you really want to remove active logical volume test1? [y/n]: yLogical volume "test1" successfully removed[root@xyly ~]# vgchange -a n lvm001 #使用vgchange -a n 让vgname这个vg不具有Active的标志[root@xyly ~]# vgremove lvm001 #使用vgremove命令可以删除现有LVM卷组Volume group "lvm001" successfully removed[root@xyly ~]# vgdisplay #查看卷组。
关于lvm 更多的介绍我就不再一一说了,如果想看这方面更多的信息,请参考lvm指南()
请继续关注我的blog,期待更新!