内容:

    1. LVM条带化简介

    2. LV条带化前后数据存储结构探究

 

LVM的条带化:
  描述:
  为了性能考虑,考虑将数据跨越多个磁盘上存储,即把LV上连续的数据分成大小相同的块,然后依次存储在各个磁盘PV上,类似于RAID-0的数据存放形式,实现数据读写的并发;管理员依据自己的数据需求,定义数据分块大小,分布PV磁盘个数信息,从而实现读写的性能最佳化;
  但是如RAID-0一样,这样带来的数据丢失的危险性也增大,因此的实际的生产活动中,实际数据后台是基于RAID-1或RAID-5的做过了数据冗余形式;所以条带化后即使有PV硬盘损坏,也能数据保证数据不丢失。当然仅仅的用几个磁盘组成VG,然后条带化建立LV,这样数据是危险的;所以选择基于RAID的条带化(镜像的条带化);
  注:没有条带化的LVM存储数据时是按顺序进行的,在一个PV划分LV完毕后再从下一个PV中划分空间;


示意图:
  简单的条带化:

 

LVM条带化_LVM

  基于RAID的条带化:

LVM条带化_striping_02

条带化实现:

  1. [root@bogon ~]# pvcreate /dev/sd{b,c,d,e}1 
  2.   Physical volume "/dev/sdb1" successfully created 
  3.   Physical volume "/dev/sdc1" successfully created 
  4. # 创建VG:
  5. [root@bogon ~]# vgcreate vg0 /dev/sd[bc]1 
  6.   Volume group "vg0" successfully created 
  7.  # 创建条带化的LV:
  8. [root@bogon ~]# lvcreate -L 1G -n test2 -i 2 -I 64 vg0  
  9.   Logical volume "test2" created 
  10. # -i 指定跨PV的个数 
  11. # -I 指定条带单元的大小 

条带单元(stripe size):即条带单元的大小,对应于I/O中数据单元块的大小;数值必须为2的幂,单位KB;

 

探究条带化数据存储形式:

  1.  非条带化时:

  1. # 此时VG0由两个PV:sdb1、sdc1构成: 
  2. [root@bogon ~]# vgdisplay  
  3.   --- Volume group --- 
  4.   VG Name               vg0 
  5.   System ID              
  6.   Format                lvm2 
  7.   Metadata Areas        2 
  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                2 
  16.   Act PV                2 
  17.   VG Size               3.73 GB 
  18.   PE Size               4.00 MB     #默认的PE为4M 
  19.   Total PE              956      #总PE个数为956个 
  20.   Alloc PE / Size       0 / 0       #分出的PE个数/大小 
  21.   Free  PE / Size       956 / 3.73 GB   #空闲的PE个数/大小 
  22.   VG UUID               vAAETX-iGO9-jNUl-qIle-kLFR-F0y8-nIRR3F 
  23.  
  24. # 创建一个1G的LV: 
  25. [root@bogon ~]# lvcreate -L 1G -n test1 vg0  
  26.   Logical volume "test1" created 
  27.  
  28. # 查看该LV状态: 
  29. [root@bogon ~]# lvdisplay  
  30.   --- Logical volume --- 
  31.   LV Name                /dev/vg0/test1 
  32.   VG Name                vg0 
  33.   LV UUID                XIltjY-VKVh-eqUH-YkZx-kxRb-aisu-TNqrXQ 
  34.   LV Write Access        read/write 
  35.   LV Status              available 
  36.   # open                 0  #使用状态,表示是否正在挂载使用;
  37.   LV Size                1.00 GB    #LV大小 
  38.   Current LE             256    #LE(Logical extentes)数量对应于PE 
  39.   Segments               1 
  40.   Allocation             inherit 
  41.   Read ahead sectors     auto 
  42.   - currently set to     256 
  43.   Block device           253:1 
  44.  
  45. [root@bogon ~]# vgdisplay  
  46.   --- Volume group --- 
  47.   VG Name               vg0 
  48.   System ID              
  49.   Format                lvm2 
  50.   Metadata Areas        2 
  51.   Metadata Sequence No  2 
  52.   VG Access             read/write 
  53.   VG Status             resizable 
  54.   MAX LV                0 
  55.   Cur LV                1 
  56.   Open LV               0 
  57.   Max PV                0 
  58.   Cur PV                2 
  59.   Act PV                2 
  60.   VG Size               3.73 GB 
  61.   PE Size               4.00 MB 
  62.   Total PE              956 
  63.   Alloc PE / Size       256 / 1.00 GB   #此时PE已经分出了256个,大小是1G 
  64.   Free  PE / Size       700 / 2.73 GB   #空闲的PE及为划分的剩余空间 
  65.   VG UUID               vAAETX-iGO9-jNUl-qIle-kLFR-F0y8-nIRR3F 
  66.  
  67. [root@bogon ~]# pvdisplay  
  68.   --- Physical volume --- 
  69.   PV Name               /dev/sdb1 
  70.   VG Name               vg0 
  71.   PV Size               1.87 GB / not usable 1.96 MB 
  72.   Allocatable           yes  
  73.   PE Size (KByte)       4096 
  74.   Total PE              478     #PV中总PE块数 
  75.   Free PE               222     #PV中空闲的PE块数 
  76.   Allocated PE          256     #已经分出的PE数量:256*4M=1G 
  77.   PV UUID               NeBQU9-4TGz-Dp1y-nGq1-M25t-vdQ7-oYzsEj 
  78.     
  79.   --- Physical volume --- 
  80.   PV Name               /dev/sdc1 
  81.   VG Name               vg0 
  82.   PV Size               1.87 GB / not usable 1.96 MB 
  83.   Allocatable           yes  
  84.   PE Size (KByte)       4096 
  85.   Total PE              478     #总PE数 
  86.   Free PE               478     #对应上面的 
  87.   Allocated PE          0       #对应上面的已分配空间 
  88.   PV UUID               LRmTY8-J066-bOXu-dlee-7VTM-ELMg-n3NIbP 

   由上面可以从看出:不条带化时,划分LV是顺序划分的,所以数据肯定也顺序存储了;只有在一个PV磁盘存储完毕,才会使用下一个PV;

  2.  条带化时:

  1. # 先清除一下上面非条带化时数据;
  2. [root@bogon ~]# lvremove /dev/vg0/test1  
  3. Do you really want to remove active logical volume test1? [y/n]: y 
  4.   Logical volume "test1" successfully removed 
  5. # 建立条带化的LV:
  6. [root@bogon ~]# lvcreate -L 1G -n test2 -i 2 -I 64 vg0  
  7.   Logical volume "test2" created 
  8. # -i 指定跨PV的个数为2 
  9. # -I 指定条带单元的大小为64KB 
  10.  
  11. [root@bogon ~]# lvdisplay  
  12.   --- Logical volume --- 
  13.   LV Name                /dev/vg0/test2 
  14.   VG Name                vg0 
  15.   LV UUID                Eceigt-gLe1-x1lW-3vyi-l6Rx-HM2r-i4F6vw 
  16.   LV Write Access        read/write 
  17.   LV Status              available 
  18.   # open                 0 
  19.   LV Size                1.00 GB 
  20.   Current LE             256  # 256*4M=1G
  21.   Segments               1 
  22.   Allocation             inherit 
  23.   Read ahead sectors     auto 
  24.   - currently set to     512 
  25.   Block device           253:1 
  26.     
  27. [root@bogon ~]# vgdisplay  
  28.   --- Volume group --- 
  29.   VG Name               vg0 
  30.   System ID              
  31.   Format                lvm2 
  32.   Metadata Areas        2 
  33.   Metadata Sequence No  4 
  34.   VG Access             read/write 
  35.   VG Status             resizable 
  36.   MAX LV                0 
  37.   Cur LV                1 
  38.   Open LV               0 
  39.   Max PV                0 
  40.   Cur PV                2 
  41.   Act PV                2 
  42.   VG Size               3.73 GB 
  43.   PE Size               4.00 MB 
  44.   Total PE              956 
  45.   Alloc PE / Size       256 / 1.00 GB # 整个VG中已分配出去256个PE块
  46.   Free  PE / Size       700 / 2.73 GB 
  47.   VG UUID               vAAETX-iGO9-jNUl-qIle-kLFR-F0y8-nIRR3F 
  48.  
  49. [root@bogon ~]# pvdisplay  
  50.   --- Physical volume --- 
  51.   PV Name               /dev/sdb1 
  52.   VG Name               vg0 
  53.   PV Size               1.87 GB / not usable 1.96 MB 
  54.   Allocatable           yes  
  55.   PE Size (KByte)       4096 
  56.   Total PE              478 
  57.   Free PE               350 
  58.   Allocated PE          128  # 此时,在sdb1整个PV上划分出了128个PE块
  59.   PV UUID               NeBQU9-4TGz-Dp1y-nGq1-M25t-vdQ7-oYzsEj 
  60.     
  61.   --- Physical volume --- 
  62.   PV Name               /dev/sdc1 
  63.   VG Name               vg0 
  64.   PV Size               1.87 GB / not usable 1.96 MB 
  65.   Allocatable           yes  
  66.   PE Size (KByte)       4096 
  67.   Total PE              478 
  68.   Free PE               350 
  69.   Allocated PE          128  # 此时,在sdb1整个PV上划分出了128个PE块
  70.   PV UUID               LRmTY8-J066-bOXu-dlee-7VTM-ELMg-n3NIbP 
  71.  

由上面数据:条带化时,LV会跨多个PV磁盘,数据存储在PV上循环存储;

 

拓展:

    条带化后,LV扩展机制是怎么样的,是否因为存储形式的不同需要对PV增加个数有限制?!(待续,做实验,出来结果跟预期有差距...o(╯□╰)o)