LVM:Logic Volume Manager, 逻辑卷管理器
     是一种逻辑设备,像软raid一样,将几个磁盘分区或块设备组织起来。
 
PV(Physical Volume):物理卷,可以是任意的块设备
 注意

       (1)PV的id是8e
       (2)PV不能格式化,也不能存储数据

VG(Volume Group):卷组,至少包含一个PV,相当于扩展分区,可以位于不同的磁盘设备上。
 
LV(Logic Volume):逻辑卷,可以格式化、挂载,VG的大小依靠PV的增大或减小而改变。

快照卷:可以对LV做快照,保存数据某一时刻的状态。快照卷只是访问原文件的一个路径,即multipath(提供两个以上的访问通道)。快照卷的大小决于数据变化的频度和时间。
 

例子一:创建一个大小为10G的卷组,逻辑卷大小为5G。

1、首先创建分区,这里创建了两个5G的扩展分区,分区大小可以随意设置,分区个数也是随意设置的,只要总分区大小是10G就OK了。

2、创建PV:

 

也可以使用pvdisplay显示PV的详细内容:

3、创建VG:

PE:类似于Raid中的chunk,是在LV的基础上新增的另外一层数据的块大小,也是另一张逻辑层次上的空间大小的组成单元,这种块是一种空间块,在扩展LV大小时,就是通过新增一些PE来实现的。

在创建VG时可以使用-s选项指定PE大小,默认PE大小是4M。

 

 

注意:这里使用pvdisplay命令显示的PE大小:

 4、创建大小为5G的LV:

lvcreate命令的常用参数:

  -L    指定LV大小

  -l     指定LV 大小(以PE的个数表示)

  -n    指定LV的名字

  -p   指定权限

下面开始创建LV:

 
  
  1. //格式化lv1并挂载至/mydata下:  
  2. [root@linli ~]# mke2fs -j /dev/myvg/lv1  
  3. [root@linli ~]# mkdir  /mydata  
  4. [root@linli ~]# mount /dev/myvg/lv1 /mydata/  
  5. [root@linli ~]# mount  
  6. /dev/mapper/myvg-lv1 on /mydata type ext3 (rw)  
  7.  
  8. //想要开机自动挂载,可以修改/etc/fstab文件,添加如下一行:  
  9. /dev/myvg/lv1           /mydata                 ext3    defaults        0 0 

5、缩减LV(由5G缩减至2G)

缩减LV时存在着风险,在缩减之前需要首先卸载、强制检测文件系统,然后再缩减逻辑边界、物理边界。

 
  
  1. //先复制一个文件到/mydata/下,以测试缩减过LV之后数据没有问题  
  2. [root@linli ~]# cp /var/log/messages /mydata/  
  3. [root@linli ~]# ls /mydata/  
  4. lost+found  messages 

 
  
  1. //挂载LV,检测lv1的大小及messages文件:  
  2. [root@linli ~]# mount /dev/myvg/lv1 /mydata/  
  3. [root@linli ~]# df -lh  
  4. /dev/mapper/myvg-lv1  2.0G  136M  1.8G   8% /mydata  
  5. [root@linli ~]# ll /mydata/  
  6. total 208  
  7. drwx------ 2 root root  16384 Jul  5 22:55 lost+found  
  8. -rw------- 1 root root 185649 Jul  7 17:26 messages 

6、扩展LV (由2G扩展至3G)

需要先卸载LV,然后再扩展物理边界、逻辑边界:

 
  
  1. [root@linli ~]# cp -r /etc/* /mydata/  
  2. [root@linli ~]# ll -d /mydata  
  3. drwxr-xr-x 91 root root 4096 Jul  7 17:35 /mydata  
  4. [root@linli ~]# umount /dev/myvg/lv1   
  5. //扩展物理边界  
  6. [root@linli ~]# lvextend -L 3G /dev/myvg/lv1  
  7.   Extending logical volume lv1 to 3.00 GB  
  8.   Logical volume lv1 successfully resized  
  9. [root@linli ~]# lvs  
  10.   LV   VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert  
  11.   lv1  myvg -wi-a-  3.00G                                                    
  12. [root@linli ~]# mount /dev/myvg/lv1 /mydata/  
  13. [root@linli ~]# df -lh  
  14. Filesystem            Size  Used Avail Use% Mounted on  
  15. /dev/mapper/myvg-lv1  2.0G  240M  1.7G  13% /mydata  
  16. //扩展逻辑边界,此时不用指定大小,就会自动扩展至物理边界大小  
  17. [root@linli ~]# resize2fs /dev/myvg/lv1  
  18. resize2fs 1.39 (29-May-2006)  
  19. Filesystem at /dev/myvg/lv1 is mounted on /mydata; on-line resizing required  
  20. Performing an on-line resize of /dev/myvg/lv1 to 786432 (4k) blocks.  
  21. The filesystem on /dev/myvg/lv1 is now 786432 blocks long.  
  22.  
  23. [root@linli ~]# df -lh  
  24. Filesystem            Size  Used Avail Use% Mounted on  
  25. /dev/mapper/myvg-lv1  3.0G  240M  2.6G   9% /mydata 
  26.  
  27. [root@linli ~]# ll -d /mydata/
  28. drwxr-xr-x 91 root root 4096 Jul  7 17:35 /mydata/

7、创建快照卷:

 
  
  1. [root@linli ~]# lvcreate -L 128M -s -p r -n snap_lv1 /dev/myvg/lv1   
  2.   Logical volume "snap_lv1" created  
  3. [root@linli ~]# mkdir /backup  
  4. [root@linli ~]# mount /dev/myvg/snap_lv1 /backup/  
  5. mount: block device /dev/myvg/snap_lv1 is write-protected, mounting read-only  
  6. //可以看到/backup/的大小与/mydata一样大  
  7. [root@linli ~]# ll -d /backup/  
  8. drwxr-xr-x 91 root root 4096 Jul  7 17:35 /backup/  
  9.  
  10. //编辑/mydata下的一个文件添加一行,然后查看/backup下的这个文件是否有改动:  
  11. [root@linli ~]# vim /mydata/passwd  
  12. 添加一行:This is a new line  
  13. [root@linli ~]# tail -1 /mydata/passwd  
  14. This is a new line!!!  
  15. [root@linli ~]# tail -1 /backup/passwd  
  16. magedu:x:502:502::/home/magedu:/bin/bash 

通过快照卷可以进行数据备份:

 
  
  1. [root@linli ~]# tar jcf /tmp/mydata.tar.bz2 /backup/*  
  2. [root@linli ~]# ll /tmp/mydata.tar.bz2   
  3. -rw-r--r-- 1 root root 7108187 Jul  7 17:51 /tmp/mydata.tar.bz2  
  4. [root@linli ~]# umount /backup/  
  5. [root@linli ~]# lvremove /dev/myvg/snap_lv1   
  6. Do you really want to remove active logical volume snap_lv1? [y/n]: y  
  7.   Logical volume "snap_lv1" successfully removed  
  8. //此时可以查看一下,没有snap_lv1了,证明移除快照卷成功:  
  9. [root@linli ~]# lvs  
  10.   LV   VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert  
  11.   lv1  myvg -wi-ao  3.00G                                        
  12.   home vol0 -wi-ao  1.94G                                        
  13.   root vol0 -wi-ao 31.25G