内容:

1. LVM条带化简介

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

3.如何查看当前系统LV是否条带化及大小

 

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


示意图:
简单的条带化:

164205117.gif

基于RAID的条带化:

164235589.gif

条带化实现:

 
  
  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. # 创建一个1G的LV:

  24. [root@bogon ~]# lvcreate -L 1G -n test1 vg0  

  25.   Logical volume "test1" created 

  26. # 查看该LV状态:

  27. [root@bogon ~]# lvdisplay  

  28.   --- Logical volume --- 

  29.   LV Name                /dev/vg0/test1 

  30.   VG Name                vg0 

  31.   LV UUID                XIltjY-VKVh-eqUH-YkZx-kxRb-aisu-TNqrXQ 

  32.   LV Write Access        read/write 

  33.   LV Status              available 

  34.   # open                 0#使用状态,表示是否正在挂载使用;

  35.   LV Size                1.00 GB    #LV大小 

  36.   Current LE             256    #LE(Logical extentes)数量对应于PE 

  37.   Segments               1 

  38.   Allocation             inherit 

  39.   Read ahead sectors     auto 

  40.   - currently set to     256 

  41.   Block device           253:1 

  42. [root@bogon ~]# vgdisplay  

  43.   --- Volume group --- 

  44.   VG Name               vg0 

  45.   System ID              

  46.   Format                lvm2 

  47.   Metadata Areas        2 

  48.   Metadata Sequence No  2 

  49.   VG Access             read/write 

  50.   VG Status             resizable 

  51.   MAX LV                0 

  52.   Cur LV                1 

  53.   Open LV               0 

  54.   Max PV                0 

  55.   Cur PV                2 

  56.   Act PV                2 

  57.   VG Size               3.73 GB 

  58.   PE Size               4.00 MB 

  59.   Total PE              956 

  60.   Alloc PE / Size       256 / 1.00 GB   #此时PE已经分出了256个,大小是1G 

  61.   Free  PE / Size       700 / 2.73 GB   #空闲的PE及为划分的剩余空间 

  62.   VG UUID               vAAETX-iGO9-jNUl-qIle-kLFR-F0y8-nIRR3F 

  63. [root@bogon ~]# pvdisplay  

  64.   --- Physical volume --- 

  65.   PV Name               /dev/sdb1 

  66.   VG Name               vg0 

  67.   PV Size               1.87 GB / not usable 1.96 MB 

  68.   Allocatable           yes  

  69.   PE Size (KByte)       4096 

  70.   Total PE              478     #PV中总PE块数 

  71.   Free PE               222     #PV中空闲的PE块数 

  72.   Allocated PE          256     #已经分出的PE数量:256*4M=1G

  73.   PV UUID               NeBQU9-4TGz-Dp1y-nGq1-M25t-vdQ7-oYzsEj 

  74.   --- Physical volume --- 

  75.   PV Name               /dev/sdc1 

  76.   VG Name               vg0 

  77.   PV Size               1.87 GB / not usable 1.96 MB 

  78.   Allocatable           yes  

  79.   PE Size (KByte)       4096 

  80.   Total PE              478     #总PE数 

  81.   Free PE               478     #对应上面的

  82.   Allocated PE          0       #对应上面的已分配空间 

  83.   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. [root@bogon ~]# lvdisplay  

  11.   --- Logical volume --- 

  12.   LV Name                /dev/vg0/test2 

  13.   VG Name                vg0 

  14.   LV UUID                Eceigt-gLe1-x1lW-3vyi-l6Rx-HM2r-i4F6vw 

  15.   LV Write Access        read/write 

  16.   LV Status              available 

  17.   # open                 0

  18.   LV Size                1.00 GB 

  19.   Current LE             256       # 256*4M=1G

  20.   Segments               1 

  21.   Allocation             inherit 

  22.   Read ahead sectors     auto 

  23.   - currently set to     512 

  24.   Block device           253:1 

  25. [root@bogon ~]# vgdisplay  

  26.   --- Volume group --- 

  27.   VG Name               vg0 

  28.   System ID              

  29.   Format                lvm2 

  30.   Metadata Areas        2 

  31.   Metadata Sequence No  4 

  32.   VG Access             read/write 

  33.   VG Status             resizable 

  34.   MAX LV                0 

  35.   Cur LV                1 

  36.   Open LV               0 

  37.   Max PV                0 

  38.   Cur PV                2 

  39.   Act PV                2 

  40.   VG Size               3.73 GB 

  41.   PE Size               4.00 MB 

  42.   Total PE              956 

  43.   Alloc PE / Size       256 / 1.00 GB # 整个VG中已分配出去256个PE块

  44.   Free  PE / Size       700 / 2.73 GB 

  45.   VG UUID               vAAETX-iGO9-jNUl-qIle-kLFR-F0y8-nIRR3F 

  46. [root@bogon ~]# pvdisplay  

  47.   --- Physical volume --- 

  48.   PV Name               /dev/sdb1 

  49.   VG Name               vg0 

  50.   PV Size               1.87 GB / not usable 1.96 MB 

  51.   Allocatable           yes  

  52.   PE Size (KByte)       4096 

  53.   Total PE              478 

  54.   Free PE               350 

  55.   Allocated PE          128      # 此时,在sdb1整个PV上划分出了128个PE块

  56.   PV UUID               NeBQU9-4TGz-Dp1y-nGq1-M25t-vdQ7-oYzsEj 

  57.   --- Physical volume --- 

  58.   PV Name               /dev/sdc1 

  59.   VG Name               vg0 

  60.   PV Size               1.87 GB / not usable 1.96 MB 

  61.   Allocatable           yes  

  62.   PE Size (KByte)       4096 

  63.   Total PE              478 

  64.   Free PE               350 

  65.   Allocated PE          128      # 此时,在sdb1整个PV上划分出了128个PE块

  66.   PV UUID               LRmTY8-J066-bOXu-dlee-7VTM-ELMg-n3NIbP 

  67.  

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

 

拓展:

条带化后,LV扩展机制是怎么样的,是否因为存储形式的不同需要对PV增加个数有限制?

 

 

LVM的条带化查询命令:


[root@bogon ~]#lvs -v --segments

Finding all logical volumes
LV             VG             Attr         Start     SSize     #Str    Type      Stripe    Chunk
stripe_lv     vgdata     -wi-ao      0           1.14T     4      striped   256.00K      0