今天就写一篇关于lvm 逻辑卷的文章,本人对于lvm知道的也不是很多,只是根据想要实现的功能,用到了lvm快照。

LVM介绍:

LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间管理理念。以往在安装操作系统时需要规划好分区大小,即使利用了RAID技术也要规划好每个分区的大小,因为一旦分好区后要改变其大小是非常困难的事情。在Windows下有大家熟悉的Partition Magic工具可以用来调整分区大小,但它有一个缺点是要么在调整前要关闭系统或调整后重启系统。

这在普通PC机上使用还行,要在提供不间断服务的服务器上使用就会造成服务中断,不过这个问题在Linux下随着LV技术的出现一切都得到解决,LV可以在不用重启系统的情况动态增加可用空间大小,不过前提得是使用热插拔硬盘,或事先将硬盘装入而不使用。本文我将使用名词LV(可不是LV包)而不是LVM,因为LV才是主角。trans.gif

首先我们要弄清楚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

fdisk /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/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 ~]# 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,期待更新!