今天就写一篇关于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 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

[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/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卷组

[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

[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文件系统

[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 -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快照。

[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

快照创建完成,下边演示快照的作用。

[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的删除,我在这里也写一下吧 ,有创建就有删除

[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,期待更新!

转载于http://blog.yunvi.com/916.html