Linux LVM分区之VG扩容、LV扩容、LV缩减

Posted on Posted in linux
Tips: 本文创建于2016年4月5日,已超过 2 年,内容或图片可能已经失效!

LVM 的顺序

> 硬盘、物理卷、卷组、逻辑卷
> disk->PV->VG->LV

1、创建lvm分区

  1. [root@c2 ~]# fdisk /dev/sdb  
  2.   
  3. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to  
  4.          switch off the mode (command 'c') and change display units to  
  5.          sectors (command 'u').  
  6.   
  7. Command (m for help): p #查看分区结构  
  8.   
  9. Disk /dev/sdb: 5368 MB, 5368709120 bytes  
  10. 255 heads, 63 sectors/track, 652 cylinders  
  11. Units = cylinders of 16065 * 512 = 8225280 bytes  
  12. Sector size (logical/physical): 512 bytes / 512 bytes  
  13. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  14. Disk identifier: 0x92dffde6  
  15.   
  16.    Device Boot      Start         End      Blocks   Id  System  
  17.   
  18. Command (m for help): n  #新建一个分区  
  19. Command action  
  20.    e   extended  
  21.    p   primary partition (1-4)  
  22. p   #选择分区为主分区  
  23. Partition number (1-4): 1   #第一块  
  24. First cylinder (1-652, default 1):   
  25. Using default value 1  
  26. Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): +2G     #新分区大小为2G  
  27.   
  28. Command (m for help): n  
  29. Command action  
  30.    e   extended  
  31.    p   primary partition (1-4)  
  32. p  
  33. Partition number (1-4): 2  
  34. First cylinder (263-652, default 263):   
  35. Using default value 263  
  36. Last cylinder, +cylinders or +size{K,M,G} (263-652, default 652):   
  37. Using default value 652  
  38.   
  39. Command (m for help): p  
  40.   
  41. Disk /dev/sdb: 5368 MB, 5368709120 bytes  
  42. 255 heads, 63 sectors/track, 652 cylinders  
  43. Units = cylinders of 16065 * 512 = 8225280 bytes  
  44. Sector size (logical/physical): 512 bytes / 512 bytes  
  45. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  46. Disk identifier: 0x92dffde6  
  47.   
  48.    Device Boot      Start         End      Blocks   Id  System  
  49. /dev/sdb1               1         262     2104483+  83  Linux  
  50. /dev/sdb2             263         652     3132675   83  Linux  
  51.   
  52. Command (m for help): t     #改变分区类型  
  53. Partition number (1-4): 1   #选择分区号  
  54. Hex code (type L to list codes): 8e     #8e类型为lvm  
  55. Changed system type of partition 1 to 8e (Linux LVM)  
  56.   
  57. Command (m for help): t  
  58. Partition number (1-4): 2  
  59. Hex code (type L to list codes): 8e  
  60. Changed system type of partition 2 to 8e (Linux LVM)  
  61.   
  62. Command (m for help): p  
  63.   
  64. Disk /dev/sdb: 5368 MB, 5368709120 bytes  
  65. 255 heads, 63 sectors/track, 652 cylinders  
  66. Units = cylinders of 16065 * 512 = 8225280 bytes  
  67. Sector size (logical/physical): 512 bytes / 512 bytes  
  68. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  69. Disk identifier: 0x92dffde6  
  70.   
  71.    Device Boot      Start         End      Blocks   Id  System  
  72. /dev/sdb1               1         262     2104483+  8e  Linux LVM  
  73. /dev/sdb2             263         652     3132675   8e  Linux LVM  
  74.   
  75. Command (m for help): w     #写入  
  76. The partition table has been altered!  
  77.   
  78. Calling ioctl() to re-read partition table.  
  79. Syncing disks.  

2、创建物理卷

  1. [root@c2 ~]# pvcreate /dev/sdb1 /dev/sdb2^C     #这是正常的命令写法 也可以使用下面那种扩展写法  
  2. [root@c2 ~]# pvcreate /dev/sdb{1,2}  
  3.   Physical volume "/dev/sdb1" successfully created  
  4.   Physical volume "/dev/sdb2" successfully created  
  5. [root@c2 ~]# pvs  
  6.   PV         VG             Fmt  Attr PSize  PFree  
  7.   /dev/sda2  vg_lhhcentos02 lvm2 a--  19.51g    0   
  8.   /dev/sdb1                 lvm2 a--   2.01g 2.01g  
  9.   /dev/sdb2                 lvm2 a--   2.99g 2.99g  

3、将物理卷(pv)创建为卷组(vgcreate),名为VGtest

  1. [root@c2 ~]# vgcreate VGtest /dev/sdb{1,2}  
  2.   Volume group "VGtest" successfully created  
  3. [root@c2 ~]# vgs  
  4.   VG             #PV #LV #SN Attr   VSize  VFree  
  5.   VGtest           2   0   0 wz--n-  4.99g 4.99g  
  6.   vg_lhhcentos02   1   2   0 wz--n- 19.51g    0   
  7. [root@c2 ~]# vgdisplay   
  8.   --- Volume group ---  
  9.   VG Name               VGtest  
  10.   System ID               
  11.   Format                lvm2  
  12.   Metadata Areas        2  
  13.   Metadata Sequence No  1  
  14.   VG Access             read/write  
  15.   VG Status             resizable  
  16.   MAX LV                0  
  17.   Cur LV                0  
  18.   Open LV               0  
  19.   Max PV                0  
  20.   Cur PV                2  
  21.   Act PV                2  
  22.   VG Size               4.99 GiB  
  23.   PE Size               4.00 MiB  
  24.   Total PE              1277  
  25.   Alloc PE / Size       0 / 0     
  26.   Free  PE / Size       1277 / 4.99 GiB  
  27.   VG UUID               viE5aJ-fQWQ-avZu-r9Z6-zmGR-gnHc-mPFEHW    

4、在卷组里创建逻辑卷并格式化、挂载使用

  1. [root@c2 ~]# lvcreate -L 2G -n LVtest1 VGtest   #在名为VGtest的VG上创建一个名为LVtest1 大小为2G的逻辑卷  
  2.   Logical volume "LVtest1" created  
  3. [root@c2 ~]# lvs    #查看系统上的LV逻辑卷  
  4.   LV      VG             Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert  
  5.   LVtest1 VGtest         -wi-a-----  2.00g                                               
  6.   lv_root vg_lhhcentos02 -wi-ao---- 17.57g                                               
  7.   lv_swap vg_lhhcentos02 -wi-ao----  1.94g                                               
  8. [root@c2 ~]# mke2fs -t ext4 /dev/VGtest/LVtest1     #格式化新建的LVtest1逻辑卷为ext4格式  
  9. mke2fs 1.41.12 (17-May-2010)  
  10. Filesystem label=  
  11. OS type: Linux  
  12. Block size=4096 (log=2)  
  13. Fragment size=4096 (log=2)  
  14. Stride=0 blocks, Stripe width=0 blocks  
  15. 131072 inodes, 524288 blocks  
  16. 26214 blocks (5.00%) reserved for the super user  
  17. First data block=0  
  18. Maximum filesystem blocks=536870912  
  19. 16 block groups  
  20. 32768 blocks per group, 32768 fragments per group  
  21. 8192 inodes per group  
  22. Superblock backups stored on blocks:   
  23.     32768, 98304, 163840, 229376, 294912  
  24.   
  25. Writing inode tables: done                              
  26. Creating journal (16384 blocks): done  
  27. Writing superblocks and filesystem accounting information: done  
  28.   
  29. This filesystem will be automatically checked every 23 mounts or  
  30. 180 days, whichever comes first.  Use tune2fs -c or -i to override.  
  31.   
  32. [root@c2 ~]# mkdir /LVtest1     #创建一个LVtest1的目录  
  33. [root@c2 ~]# mount /dev/VGtest/LVtest1 /LVtest1/    #将/dev/VGtest/LVtest1这个逻辑卷挂载到 /LVtest1目录上  
  34. [root@c2 ~]# mount  #查看挂载情况  
  35. /dev/mapper/VGtest-LVtest1 on /LVtest1 type ext4 (rw)  

5、扩展pv卷

  1. [root@c2 ~]# pvcreate /dev/sdc  #将新硬盘/sdc加入物理卷上  
  2.   Physical volume "/dev/sdc" successfully created  
  3. [root@c2 ~]# pvs    #查看物理卷  
  4.   PV         VG             Fmt  Attr PSize  PFree    
  5.   /dev/sda2  vg_lhhcentos02 lvm2 a--  19.51g      0   
  6.   /dev/sdb1  VGtest         lvm2 a--   2.00g   4.00m  
  7.   /dev/sdb2  VGtest         lvm2 a--   2.98g 496.00m  
  8.   /dev/sdc                  lvm2 a--   5.00g   5.00g  
  9. [root@c2 ~]# vgextend VGtest /dev/sdc   #扩展卷组  
  10.   Volume group "VGtest" successfully extended  
  11. [root@c2 ~]# vgs    #查看卷组  
  12.   VG             #PV #LV #SN Attr   VSize  VFree  
  13.   VGtest           3   2   0 wz--n-  9.98g 5.48g    #从大小可以看出我们已经扩容成功  
  14.   vg_lhhcentos02   1   2   0 wz--n- 19.51g    0  

6、扩展逻辑卷 (不支持在线扩展,必须先卸载)

  1. [root@c2 ~]# cd /LVtest1/  
  2. [root@c2 LVtest1]# echo "this is a test for LVM" > lvtest   #创建lvtest的文件并写入内容  
  3. [root@c2 LVtest1]# cat lvtest   
  4. this is a test for LVM  
  5. [root@c2 LVtest1]# lvextend -L +2G /dev/VGtest/LVtest1   
  6.   Extending logical volume LVtest1 to 4.00 GiB  
  7.   Logical volume LVtest1 successfully resized  
  8. [root@c2 LVtest1]# lvs  
  9.   LV      VG             Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert  
  10.   LVtest1 VGtest         -wi-ao----  4.00g      #逻辑卷空间已经增加                                         
  11.   LVtest2 VGtest         -wi-ao----  2.50g                                               
  12.   lv_root vg_lhhcentos02 -wi-ao---- 17.57g                                               
  13.   lv_swap vg_lhhcentos02 -wi-ao----  1.94g                                               
  14. [root@c2 LVtest1]# e2fsck -f /dev/VGtest/LVtest1  
  15. e2fsck 1.41.12 (17-May-2010)  
  16. /dev/VGtest/LVtest1 is mounted.  
  17. e2fsck: Cannot continue, aborting.  
  18.   
  19.   
  20. [root@c2 LVtest1]# umount /LVtest1/     #卸载分区(也可能是目前在这个目录里)  
  21. umount: /LVtest1: device is busy.  
  22.         (In some cases useful info about processes that use  
  23.          the device is found by lsof(8) or fuser(1))  
  24. [root@c2 LVtest1]# cd ../  
  25. [root@c2 /]# umount /LVtest1/  
  26. [root@c2 /]# e2fsck -f /dev/VGtest/LVtest1 #通过 resize2fs 将文件系统的容量确实添加  
  27. e2fsck 1.41.12 (17-May-2010)  
  28. Pass 1: Checking inodes, blocks, and sizes  
  29. Pass 2: Checking directory structure  
  30. Pass 3: Checking directory connectivity  
  31. Pass 4: Checking reference counts  
  32. Pass 5: Checking group summary information  
  33. /dev/VGtest/LVtest1: 12/131072 files (0.0% non-contiguous), 25389/524288 blocks  
  34. [root@c2 /]# resize2fs -p /dev/VGtest/LVtest1   
  35. resize2fs 1.41.12 (17-May-2010)  
  36. Resizing the filesystem on /dev/VGtest/LVtest1 to 1048576 (4k) blocks.  
  37. Begin pass 1 (max = 16)  
  38. Extending the inode table     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  
  39. The filesystem on /dev/VGtest/LVtest1 is now 1048576 blocks long.  
  40.   
  41. [root@c2 /]# mount /dev/VGtest/LVtest1 /LVtest1/  
  42. [root@c2 /]# cd /LVtest1/  
  43. [root@c2 LVtest1]# ls  
  44. lost+found  lvtest  
  45. [root@c2 LVtest1]# cat lvtest   #文件没有受损  
  46. this is a test for LVM  
  47. [root@c2 LVtest1]# df 
    ;-hP
      
  48. Filesystem                          Size  Used Avail Use% Mounted on  
  49. /dev/mapper/vg_lhhcentos02-lv_root   18G  2.4G   15G  15% /  
  50. tmpfs                               491M     0  491M   0% /dev/shm  
  51. /dev/sda1                           485M   33M  427M   8% /boot  
  52. /dev/mapper/VGtest-LVtest2          2.5G   68M  2.3G   3% /LVtest2  
  53. /dev/mapper/VGtest-LVtest1          4.0G   68M  3.7G   2% /LVtest1  #挂载的分区空间已经增加  

7、缩减逻辑卷(必须先卸载)

  1. [root@c2 ~]# umount /dev/VGtest/LVtest1     #卸载/dev/VGtest/LVtest1  
  2. [root@c2 ~]# e2fsck -f /dev/VGtest/LVtest1  #强制检查文件系统  
  3. e2fsck 1.41.12 (17-May-2010)  
  4. Pass 1: Checking inodes, blocks, and sizes  
  5. Pass 2: Checking directory structure  
  6. Pass 3: Checking directory connectivity  
  7. Pass 4: Checking reference counts  
  8. Pass 5: Checking group summary information  
  9. /dev/VGtest/LVtest1: 12/262144 files (0.0% non-contiguous), 33871/1048576 blocks  
  10. [root@c2 ~]# resize2fs /dev/VGtest/LVtest1 1G   #缩减逻辑大小到1G  
  11. resize2fs 1.41.12 (17-May-2010)  
  12. Resizing the filesystem on /dev/VGtest/LVtest1 to 262144 (4k) blocks.  
  13. The filesystem on /dev/VGtest/LVtest1 is now 262144 blocks long.  
  14.   
  15. [root@c2 ~]# lvreduce -L 1G /dev/VGtest/LVtest1  
  16.   WARNING: Reducing active logical volume to 1.00 GiB  
  17.   THIS MAY DESTROY YOUR DATA (filesystem etc.)  
  18. Do you really want to reduce LVtest1? [y/n]: y  #输入y 同意裁剪  
  19.   Reducing logical volume LVtest1 to 1.00 GiB  
  20.   Logical volume LVtest1 successfully resized  
  21. [root@c2 ~]# lvs        #查看逻辑卷  
  22.   LV      VG             Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert  
  23.   LVtest1 VGtest         -wi-a-----  1.00g                                               
  24.   LVtest2 VGtest         -wi-ao----  2.50g                                               
  25.   lv_root vg_lhhcentos02 -wi-ao---- 17.57g                                               
  26.   lv_swap vg_lhhcentos02 -wi-ao----  1.94g                                               
  27. [root@c2 ~]# mount /dev/VGtest/LVtest1 /LVtest1/    #挂载逻辑卷/dev/VGtest/LVtest1  
  28. [root@c2 ~]# df -hP #查看系统分区详情  
  29. Filesystem                          Size  Used Avail Use% Mounted on  
  30. /dev/mapper/vg_lhhcentos02-lv_root   18G  2.4G   15G  15% /  
  31. tmpfs                               491M     0  491M   0% /dev/shm  
  32. /dev/sda1                           485M   33M  427M   8% /boot  
  33. /dev/mapper/VGtest-LVtest2          2.5G   68M  2.3G   3% /LVtest2  
  34. /dev/mapper/VGtest-LVtest1         1008M   67M  891M   7% /LVtest1  
  35. [root@c2 ~]# cat /LVtest1/lvtest    #查看缩减前文件是否受损  
  36. this is a test for LVM  

8、缩减磁盘空间

  1. [root@c2 ~]# pvs  
  2.   PV         VG             Fmt  Attr PSize  PFree    
  3.   /dev/sda2  vg_lhhcentos02 lvm2 a--  19.51g      0   
  4.   /dev/sdb1  VGtest         lvm2 a--   2.00g   1.00g  
  5.   /dev/sdb2  VGtest         lvm2 a--   2.98g 496.00m  
  6.   /dev/sdc   VGtest         lvm2 a--   5.00g   5.00g  
  7. [root@c2 ~]# pvmove /dev/sdb1   #将/dev/sdb1上存储的数据移到其它物理卷中  
  8.   /dev/sdb1: Moved: 0.8%  
  9.   /dev/sdb1: Moved: 100.0%  
  10. [root@c2 ~]# vgreduce VGtest /dev/sdb1  #将/dev/sdb1从VGtest卷组中移除  
  11.   Removed "/dev/sdb1" from volume group "VGtest"  
  12. [root@c2 ~]# pvremove /dev/sdb1     #将/dev/sdb1从物理卷上移除  
  13.   Labels on physical volume "/dev/sdb1" successfully wiped  
  14. [root@c2 ~]# pvs  
  15.   PV         VG             Fmt  Attr PSize  PFree    
  16.   /dev/sda2  vg_lhhcentos02 lvm2 a--  19.51g      0   
  17.   /dev/sdb2  VGtest         lvm2 a--   2.98g 496.00m  
  18.   /dev/sdc   VGtest         lvm2 a--   5.00g   4.00g  

Leave a Reply

Your email address will not be published. Required fields are marked *

18 − 5 =