今天就写一篇关于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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@xyly ~]# fdisk -l Disk /dev/sda: 42.9 GB, 42949672960 bytes 255 heads, 63 sectors/track, 5221 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device 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 Linux Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 1305 10482381 83 Linux Disk /dev/sdc: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes |
以上是我格式化好的2个 /dev/sdb1 和 /dev/sdbc1.
2,把分区转成物理卷pv
1 2 3 4 5 |
[root@xyly ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@xyly ~]# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created |
使用pvdisplay 查看系统所有的pv信息 或者 指定的单个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@xyly ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name nyvg1 PV Size 10.00 GB / not usable 717.00 KB Allocatable yes PE Size (KByte) 4096 Total PE 2559 Free PE 2506 Allocated PE 53 PV UUID W23uI8-kZ46-4W3y-L0tW-Za22-nMeG-YbLeoD --- Physical volume --- PV Name /dev/sdc1 VG Name nyvg1 PV Size 10.00 GB / not usable 717.00 KB Allocatable yes PE Size (KByte) 4096 Total PE 2559 Free PE 2521 Allocated PE 38 PV UUID Mzv5fV-xret-4IyG-s2fC-py33-mvCW-iBVF0Z |
3,创建VG卷组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@xyly ~]# [root@xyly ~]# vgcreate lvm001 /dev/sd[bc]1 #讲/dev/sdb1 和/dev/sdbc1 加入到卷组lvm001 中 /dev/cdrom: open failed: Read-only file system Volume group "lvm001" successfully created [root@xyly ~]# vgdisplay #使用vgdisplay 查看卷组 --- Volume group --- VG Name lvm001 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 19.99 GB PE Size 4.00 MB #默认的PE大小为4M Total PE 5118 Alloc PE / Size 0 / 0 Free PE / Size 5118 / 19.99 GB #一共5118个pe,未使用的。 VG UUID oKhjBB-L9At-I2KC-Zrd3-fR2g-QoTe-3x0AST |
4,创建逻辑卷LV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
[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/test1 VG Name lvm001 LV UUID ZiqMqR-XqD6-tNuv-dnv1-6a1C-PN0n-ZmRP2T LV Write Access read/write LV Status available # open 0 LV Size 1000.00 MB Current LE 250 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/lvm001/test2 VG Name lvm001 LV UUID oDWKde-dLeM-HsEi-CHOr-b9TF-SH3J-Gh6esL LV Write Access read/write LV Status available # open 0 LV Size 1000.00 MB Current LE 250 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 |
把这2个LV 格式化为ext3文件系统
1 2 3 |
[root@xyly ~]# mkfs -t ext3 /dev/lvm001/test1 或者 [root@xyly ~]# mkfs.ext3 /dev/lvm001/test2 |
都可以格式化为ext3的文件系统
格式化完毕。现在要挂载
1 2 3 4 5 6 7 8 9 10 |
[root@xyly ~]# mkdir /lvm /lvm1 #创建挂载点 [root@xyly ~]# mount /dev/lvm001/test1 /lvm [root@xyly ~]# mount /dev/lvm001/test2 /lvm1 [root@xyly ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/lvm001-test1 985M 18M 918M 2% /lvm /dev/mapper/lvm001-test2 985M 18M 918M 2% /lvm1 |
挂载逻辑卷完毕。
5,创建lvm快照。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
[root@xyly ~]# lvcreate -L 100M -s -n test1_snap /dev/lvm001/test1 #-L表示快照的大小。-s 表示创建快照 -n 是快照的名字 Logical volume "test1_snap" created [root@xyly ~]# lvscan ACTIVE Original '/dev/lvm001/test1' [1000.00 MB] inherit ACTIVE '/dev/lvm001/test2' [1000.00 MB] inherit ACTIVE Snapshot '/dev/lvm001/test1_snap' [100.00 MB] inherit [root@xyly ~]# lvdisplay /dev/lvm001/test1* --- Logical volume --- LV Name /dev/lvm001/test1 VG Name lvm001 LV UUID ZiqMqR-XqD6-tNuv-dnv1-6a1C-PN0n-ZmRP2T LV Write Access read/write LV snapshot status source of #lvm快照源 /dev/lvm001/test1_snap [active] LV Status available # open 1 LV Size 1000.00 MB #lvm 大小 Current LE 250 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/lvm001/test1_snap VG Name lvm001 LV UUID 9mapX2-7OD2-emXG-rG37-XLj5-hcAl-DmanQv LV Write Access read/write #是否可写 LV snapshot status active destination for /dev/lvm001/test1 #处于活动状态,镜像的路径 LV Status available # open 0 LV Size 1000.00 MB Current LE 250 COW-table size 100.00 MB COW-table LE 25 Allocated to snapshot 0.01% #快照使用的百分比 Snapshot chunk size 4.00 KB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 |
快照创建完成,下边演示快照的作用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[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 /lvm1 lost+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 MB Logical 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]: y Logical volume "test_snap2" successfully removed |
移除快照成功! 到此就算有一个段落。
从网上搜索的资料,看到lvm快照还有其他的应用,用LVM快照的其他应用:
1),虚拟化
2),数据库
3),数据回溯
其他的就不一一列举了。LVM的删除,我在这里也写一下吧 ,有创建就有删除
1 2 3 4 5 6 7 |
[root@xyly ~]# umount /lvm #首先要卸载挂载目录,否则删除不了 [root@xyly ~]# lvremove /dev/lvm001/test1 #使用lvremove命令可以删除卷组里的LVM逻辑卷 Do you really want to remove active logical volume test1? [y/n]: y Logical volume "test1" successfully removed [root@xyly ~]# vgremove lvm001 #使用vgremove命令可以删除现有LVM卷组 Volume group "lvm001" successfully removed [root@xyly ~]# vgdisplay #查看卷组。 |
关于lvm 更多的介绍我就不再一一说了,如果想看这方面更多的信息,请参考lvm指南(http://tldp.org/HOWTO/LVM-HOWTO/index.html)
请继续关注我的blog,期待更新!