一、LVM简介   

    LVM(Logical Volume Manager)即:逻辑卷管理器,它可以整合多个物理分区在一起,让这些分区看起来像一个磁盘一样,其主要用处之一是实现一个可以弹性调整容量的文件系统;第二就是实现系统快照,这样就可以是备份和还原就变的很简单。下面来分别介绍LVM这两方免得重要功能。

二、逻辑卷(LV)的扩展和缩减

1、将/dev/sda5制作成LV。其步骤如下:

(1)创建分区并将其卷标改为8e。

    [root@localhost ~]# fdisk /dev/sda  
  1.  
  2. The number of cylinders for this disk is set to 15665.  
  3. There is nothing wrong with that, but this is larger than 1024,  
  4. and could in certain setups cause problems with:  
  5. 1) software that runs at boot time (e.g., old versions of LILO)  
  6. 2) booting and partitioning software from other OSs  
  7.    (e.g., DOS FDISK, OS/2 FDISK)  
  8.  
  9. Command (m for help): n  
  10. First cylinder (5367-15665, default 5367):    
  11. Using default value 5367  
  12. Last cylinder or +size or +sizeM or +sizeK (5367-15665, default 15665): +10G  
  13.  
  14. Command (m for help): t  
  15. Partition number (1-5): 5  
  16. Hex code (type L to list codes): 8e  
  17. Changed system type of partition 5 to 8e (Linux LVM)  
  18.  
  19. Command (m for help): n  
  20. First cylinder (6584-15665, default 6584):   
  21. Using default value 6584  
  22. Last cylinder or +size or +sizeM or +sizeK (6584-15665, default 15665): +5G  
  23.  
  24. Command (m for help): t  
  25. Partition number (1-6): 6   
  26. Hex code (type L to list codes): 8e  
  27. Changed system type of partition 6 to 8e (Linux LVM)  
  28.  
  29. Command (m for help): p  
  30.  
  31. Disk /dev/sda: 128.8 GB, 128849018880 bytes  
  32. 255 heads, 63 sectors/track, 15665 cylinders  
  33. Units = cylinders of 16065 * 512 = 8225280 bytes  
  34.  
  35.    Device Boot      Start         End      Blocks   Id  System  
  36. /dev/sda1   *           1          13      104391   83  Linux  
  37. /dev/sda2              14        5235    41945715   8e  Linux LVM  
  38. /dev/sda3            5236        5366     1052257+  82  Linux swap / Solaris  
  39. /dev/sda4            5367       15665    82726717+   5  Extended  
  40. /dev/sda5            5367        6583     9775521   8e  Linux LVM  
  41. /dev/sda6            6584        7192     4891761   8e  Linux LVM  
  42.  
  43. Command (m for help): w 

以上创建了两个分区/dev/sda5和/dev/sda6其卷标都为8e

(2)将/dev/sda5创建成pv(物理卷)。

    [root@localhost ~]# pvcreate /dev/sda5  
  1.   Writing physical volume data to disk "/dev/sda5"  
  2.   Physical volume "/dev/sda5" successfully created  
  3. [root@localhost ~]# pvdisplay /dev/sda5  
  4.   "/dev/sda5" is a new physical volume of "9.32 GB"  
  5.   --- NEW Physical volume ---  
  6.   PV Name               /dev/sda5  
  7.   VG Name                 
  8.   PV Size               9.32 GB  
  9.   Allocatable           NO  
  10.   PE Size (KByte)       0  
  11.   Total PE              0  
  12.   Free PE               0  
  13.   Allocated PE          0  
  14.   PV UUID               X1mEFY-Hk3e-LT10-ori0-Dpz9-2ucd-VktkXg 

(3)将/dev/sda5创建卷组myvg。

    [root@localhost ~]# vgcreate myvg1 /dev/sda5  
  1.   Volume group "myvg1" successfully created  
  2. [root@localhost ~]# vgdisplay myvg1   
  3.   --- Volume group ---  
  4.   VG Name               myvg1  
  5.   System ID               
  6.   Format                lvm2  
  7.   Metadata Areas        1  
  8.   Metadata Sequence No  1  
  9.   VG Access             read/write  
  10.   VG Status             resizable  
  11.   MAX LV                0  
  12.   Cur LV                0  
  13.   Open LV               0  
  14.   Max PV                0  
  15.   Cur PV                1  
  16.   Act PV                1  
  17.   VG Size               9.32 GB  
  18.   PE Size               4.00 MB  
  19.   Total PE              2386  
  20.   Alloc PE / Size       0 / 0     
  21.   Free  PE / Size       2386 / 9.32 GB  
  22.   VG UUID               wHo82H-hk3K-gK8j-vMY3-X83q-Fcof-SqT88x  
  23.     

(4)在myvg1上创建创建2G的LV(逻辑卷)。

    [root@localhost ~]# lvcreate -L 2G -n mylv1 myvg1  
  1.   Logical volume "mylv1" created  
  2. [root@localhost ~]# lvdisplay /dev/myvg1/mylv1   
  3.   --- Logical volume ---  
  4.   LV Name                /dev/myvg1/mylv1  
  5.   VG Name                myvg1  
  6.   LV UUID                HIVsSx-X318-RbZl-fcTs-jy82-I59N-1Z4pre  
  7.   LV Write Access        read/write  
  8.   LV Status              available  
  9.   # open                 0  
  10.   LV Size                2.00 GB  
  11.   Current LE             512  
  12.   Segments               1  
  13.   Allocation             inherit  
  14.   Read ahead sectors     auto  
  15.   - currently set to     256  
  16.   Block device           253:3 

这样一个逻辑卷就创建成功了。

2、放大LV的容量。

放大LV要先扩展卷组的容量,再来扩展

    [root@localhost ~]# pvcreate /dev/sda7  
  1.   Writing physical volume data to disk "/dev/sda7"  
  2.   Physical volume "/dev/sda7" successfully created  
  3. [root@localhost ~]# vgextend myvg1 /dev/sda7  
  4.   Volume group "myvg1" successfully extended  
  5. [root@localhost ~]# vgs  
  6.   VG    #PV #LV #SN Attr   VSize  VFree   
  7.   myvg    1   1   0 wz--n-  4.66G  3.66G  
  8.   myvg1   2   1   0 wz--n- 14.91G 12.91G  
  9.   vol0    1   2   0 wz--n- 40.00G  5.84G  
  10. [root@localhost ~]# lvresize -L +1G /dev/myvg1/mylv1   
  11.   Extending logical volume mylv1 to 3.00 GB  
  12.   Logical volume mylv1 successfully resized 

这样就将LV的容量扩大到3G了。

3、缩小LV的容量。

    缩小逻辑卷是比较危险的操作,必须按照一定的步骤进行。首先要先卸载卷,而且要强制进行文件系统检测,然后用resize2fs缩减逻辑边界,再次用lvreduce缩减物理边界,最后就可以挂载使用了,其具体步骤如下:

  1. root@localhost ~]# umount /backup  
  2. [root@localhost ~]# fsck -f /dev/myvg1/mylv1   
  3. fsck 1.39 (29-May-2006)  
  4. e2fsck 1.39 (29-May-2006)  
  5. Couldn't find ext2 superblock, trying backup blocks...  
  6. ext3 recovery flag is clear, but journal has data.  
  7. Recovery flag not set in backup superblock, so running journal anyway.  
  8. /dev/myvg1/mylv1: recovering journal  
  9. Pass 1: Checking inodes, blocks, and sizes  
  10. Pass 2: Checking directory structure  
  11. Pass 3: Checking directory connectivity  
  12. Pass 4: Checking reference counts  
  13. Pass 5: Checking group summary information  
  14. Free blocks count wrong for group #0 (15717, counted=15716).  
  15. Fix<y>? yes  
  16.  
  17. Free blocks count wrong (498882, counted=498881).  
  18. Fix<y>? yes  
  19.  
  20. Free inodes count wrong for group #0 (16373, counted=16372).  
  21. Fix<y>? yes  
  22.  
  23. Free inodes count wrong (262133, counted=262132).  
  24. Fix<y>? yes  
  25.  
  26.  
  27. /dev/myvg1/mylv1: ***** FILE SYSTEM WAS MODIFIED *****  
  28. /dev/myvg1/mylv1: 12/262144 files (8.3% non-contiguous), 25407/524288 blocks  
  29. [root@localhost ~]# resize2fs /dev/myvg1/mylv1  1G  
  30. resize2fs 1.39 (29-May-2006)  
  31. Resizing the filesystem on /dev/myvg1/mylv1 to 262144 (4k) blocks.  
  32. The filesystem on /dev/myvg1/mylv1 is now 262144 blocks long.  
  33.  
  34. [root@localhost ~]# lvreduce -L 1G /dev/myvg1/mylv1  
  35.   WARNING: Reducing active logical volume to 1.00 GB  
  36.   THIS MAY DESTROY YOUR DATA (filesystem etc.)  
  37. Do you really want to reduce mylv1? [y/n]: y  
  38.   Reducing logical volume mylv1 to 1.00 GB  
  39.   Logical volume mylv1 successfully resized  
  40. [root@localhost ~]# lvs  
  41.   LV    VG    Attr   LSize  Origin Snap%  Move Log Copy%  Convert  
  42.   mylv1 myvg  -wi-a-  1.00G                                        
  43.   mylv1 myvg1 -wi-a-  1.00G                                        
  44.   home  vol0  -wi-ao  4.88G                                        
  45.   root  vol0  -wi-ao 29.28G                                       

三、LVM系统快照的建立

1、创建快照区

  1. [root@localhost backup]# lvcreate -l 60 -s -n my-lvshot /dev/myvg1/mylv1   
  2.   Logical volume "my-lvshot" created  
  3. [root@localhost backup]# lvs  
  4.   LV        VG    Attr   LSize   Origin Snap%  Move Log Copy%  Convert  
  5.   mylv1     myvg  -wi-a-   1.00G                                        
  6.   my-lvshot myvg1 swi-a- 240.00M mylv1    0.00                          
  7.   mylv1     myvg1 owi-ao   1.00G                                        
  8.   home      vol0  -wi-ao   4.88G                                        
  9.   root      vol0  -wi-ao  29.28G                                       

2、利用快照进行备份

  1. [root@localhost backup]# mount /dev/myvg1/my-lvshot /mnt/snapshot/  
  2. [root@localhost backup]# df -lh  
  3. Filesystem            Size  Used Avail Use% Mounted on  
  4. /dev/mapper/vol0-root  
  5.                        29G  4.6G   23G  17% /  
  6. /dev/mapper/vol0-home  
  7.                       4.8G  139M  4.4G   4% /home  
  8. /dev/sda1              99M   35M   60M  37% /boot  
  9. tmpfs                 252M     0  252M   0% /dev/shm  
  10. /dev/mapper/myvg1-mylv1  
  11.                      1008M   67M  891M   7% /backup  
  12. /dev/mapper/myvg1-my--lvshot  
  13.                      1008M   67M  891M   7% /mnt/snapshot  
  14. [root@localhost backup]# ls /backup  
  15. fstab  lost+found  
  16. [root@localhost backup]# cp /etc/inittab ./  
  17. [root@localhost backup]# ls  
  18. fstab  inittab  lost+found  
  19. [root@localhost backup]# rm fstab   
  20. rm: remove regular file `fstab'? y  
  21. [root@localhost backup]# ls  
  22. inittab  lost+found  
  23. [root@localhost backup]# ls /mnt/snapshot/  
  24. fstab  lost+found  
  25. [root@localhost backup]# tar -jcf /root/backup.tar.bz2 /mnt/snapshot/*  
  26. tar: Removing leading `/' from member names 

3、备份完成后就可以将快照删除了

  1. [root@localhost ~]# umount /mnt/snapshot/  
  2. [root@localhost ~]# lvremove -f /dev/myvg1/my-lvshot   
  3.   Logical volume "my-lvshot" successfully removed  
  4. [root@localhost ~]# lvs  
  5.   LV    VG    Attr   LSize  Origin Snap%  Move Log Copy%  Convert  
  6.   mylv1 myvg  -wi-a-  1.00G                                        
  7.   mylv1 myvg1 -wi-ao  1.00G                                        
  8.   home  vol0  -wi-ao  4.88G                                        
  9.   root  vol0  -wi-ao 29.28G                                       

这样快照就被移除了,以上内容只是对逻辑卷的创建、缩减、扩展和快照的创建简单的实现,希望对大家有所帮助。