linux lvm 条带化示例demo(收藏)

linux lvm 条带化示例demo(收藏)
--begin 由itlife365.com 收集整理于csdn的cybertan
一、条带化的概念

一般以LVM管理的存储,一个vg中可能会有很多pv,同样的,一个lv可能跨越多块pv,为了使硬盘存储速度加快,就会用到条带化的技术,即把连续的数据分成大小相同的数据块,然后依次存储在各个pv上。类似于RAID0,使存储速度加快。但并不会使数据像RAID0一样危险容易丢失,因为在正式使用中,不会像此时做测试一样没有任何保障地将多块硬盘做成一个vg,而是普遍连接的后台存储,在划分LUN之前,已经在物理硬盘上做好RAID5或RAID1,在RAID5或RAID1的基础上再划分出多块LUN,即系统上的pv,即使pv所在硬盘损坏,但有底层的硬RAID冗余,并不会丢失数据。
条带单元大小:即条带化的LV中,每一个条带单元的大小,对应于I/O中数据块的大小。对于Oracle来讲,db_block_size即设定的数据块大小。而db_file_multiblock_read_count就一次读取时最多并行的数据块的个数,db_block_size和db_file_multiblock_read_count相乘即一次总的I/O大小。这个大小不能超过操作系统的最大I/O (max_io_size)值。在ORACLE应用中,lv条带的大小一般设置为两倍或两倍以上的Oracle块大小,因为假如设置成与Oracle数据块相同大小,无法保证Oracle数据块的边界正好与条带单元的边界对应,如果不对应的话,就会出现大量的一个I/O由两个条带单元,来处理的情况。
条带大小的原则
对于高并发并且IO请求小的情况下,一块物理硬盘处理多个I/O请求,低并发但I/O请求较大时,可能需要多块硬盘处理一个I/O请求。原则上的要求是一次I/O请求能被一次性处理完成。
大概的条带化的概念就是这样。

二、条带化lv的创建

先看本机中的VG情况,只有一个vg00,物理硬盘个数是从/dev/sdd到/dev/sdi一共6块。
[root@itlife365.com~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "vg00" using metadata type lvm2

将每块硬盘做为一个PV,先全部执行完成。为了一会做lvextend的测试,先用前三块硬盘创建vg01
[root@itlife365.com~]# pvcreate /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi
  Physical volume "/dev/sdd" successfully created
  Physical volume "/dev/sde" successfully created
  Physical volume "/dev/sdf" successfully created
  Physical volume "/dev/sdg" successfully created
  Physical volume "/dev/sdh" successfully created
  Physical volume "/dev/sdi" successfully created
[root@itlife365.com~]# vgcreate /dev/vg01 /dev/sdd /dev/sde /dev/sdf
  Volume group "vg01" successfully created
[root@itlife365.com~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               5.99 GB
  PE Size               4.00 MB
  Total PE              1533
  Alloc PE / Size       0 / 0
  Free  PE / Size       1533 / 5.99 GB
  VG UUID               W6EwVP-YIva-iCqr-KuZf-B3jt-4cA3-4XcSv4

再创建条带化的lv,下面用到的lvextend的参数如下:
-i:此处写lv用到的pv的数量,不能超过所在vg的pv数量,一般设置与vg的pv个数相同
-I:条带单元大小,单位Kb
-L:lv的大小,默认为Mb,可带单位G,M,K
-l:小写L,分配给lv的LE个数,对应于VG中的PE,在上条vgdisplay的输出中可看到VG中一共有1533个PE。
-n:自定义lv的名字,默认从lvol0开始往下排。
为了下面测试条带化下的lvextend,所以将此vg的所有空间都给这个lv,即1533个LE,一共5.99G的可用空间。

lvcreate -i 2 -I  8192  -l 2558 -n crmdb 
[root@itlife365.com~]# lvcreate -i 3 -I 64 -l 1533 -n stripe_lv vg01
  Logical volume "stripe_lv" created
[root@itlife365.com~]# lvdisplay /dev/vg01/stripe_lv
  --- Logical volume ---
  LV Name                /dev/vg01/stripe_lv
  VG Name                vg01
  LV UUID                TyF4aW-gegH-Vmxi-hWUl-a7t7-Vw5V-B64Eik
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                5.99 GB
  Current LE             1533
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     768
  Block device           253:4

执行格式化和挂载
[root@itlife365.com~]# mkfs.ext3 /dev/vg01/stripe_lv
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
784896 inodes, 1569792 blocks
78489 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1610612736
48 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@itlife365.com ~]# mkdir /stripe
[root@itlife365.com ~]# mount /dev/vg01/stripe_lv /stripe/
[root@itlife365.com ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vg00-lv_root     6.0G  398M  5.3G   7% /
/dev/mapper/vg00-lv_usr      6.8G  1.7G  4.8G  26% /usr
/dev/mapper/vg00-lv_data      93M  5.6M   83M   7% /data
/dev/sdc1                    988M   24M  914M   3% /boot
/dev/mapper/vg01-stripe_lv  5.9G  141M  5.5G   3% /stripe

三、条带化lv的扩展
然后测试给此条带化的lv扩容,先vgextend,再lvextend.
条带化的lv扩展需要新增pv的时候,有个重要条件,增加的pv数量必须与lv现有的pv数量相同或成倍数关系。想想RAID0的原理就知道了,抽象地说,数据分成大小相同的数据块,然后依次存储在每块硬盘,如果要扩大,必然要每块硬盘都相应扩大。此处先只增加一块硬盘看是否可以。
[root@itlife365.com~]# vgextend /dev/vg01 /dev/sdg
  Volume group "vg01" successfully extended

增加硬盘后,可以看到vg size变大为7.98G,并且PE数量变为2044,pv数量变为4个。
[root@itlife365.com~]# vgdisplay /dev/vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               7.98 GB
  PE Size               4.00 MB
  Total PE              2044
  Alloc PE / Size       1533 / 5.99 GB
  Free  PE / Size       511 / 2.00 GB
  VG UUID               W6EwVP-YIva-iCqr-KuZf-B3jt-4cA3-4XcSv4

因为有2G的可用空间,此处试着增加100M,但是结果是失败的,提示不够用。
[root@itlife365.com ~]# lvextend -L+100 /dev/vg01/stripe_lv
  Using stripesize of last segment 64.00 KB
  Rounding size (1558 extents) down to stripe boundary size for segment (1557 extents)
  Extending logical volume stripe_lv to 6.08 GB
  Insufficient suitable allocatable extents for logical volume stripe_lv: 24 more required

然后再以LE的方式增加,一共有511个可用的PE,即最大应该可增加511个LE,此处只增加10个仍然失败,提示需要额外的9个。

[root@itlife365.com ~]# lvextend -l+10 /dev/vg01/stripe_lv   Using stripesize of last segment 64.00 KB   Rounding size (1543 extents) down to stripe boundary size for segment (1542 extents)   Extending logical volume stripe_lv to 6.02 GB   Insufficient suitable allocatable extents for logical volume stripe_lv: 9 more required 

看起来增加1个应该可以,每次执行也都提示成功。但是每次都提示增加到1534个LE。
[root@itlife365.com ~]# lvextend -l+1 /dev/vg01/stripe_lv
  Using stripesize of last segment 64.00 KB
  Rounding size (1534 extents) down to stripe boundary size for segment (1533 extents)
  Extending logical volume stripe_lv to 5.99 GB
  Logical volume stripe_lv successfully resized
[root@itlife365.com ~]# lvextend -l+1 /dev/vg01/stripe_lv
  Using stripesize of last segment 64.00 KB
  Rounding size (1534 extents) down to stripe boundary size for segment (1533 extents)
  Extending logical volume stripe_lv to 5.99 GB
  Logical volume stripe_lv successfully resized

然后以lvdisplay查看,LE的数量仍为1533,并未增加。至于为何会显示增加1个成功,就不晓得了~~~但从结果知道,其实并没有增加
[root@itlife365.com ~]# lvdisplay /dev/vg01/stripe_lv
  --- Logical volume ---
  LV Name                /dev/vg01/stripe_lv
  VG Name                vg01
  LV UUID                TyF4aW-gegH-Vmxi-hWUl-a7t7-Vw5V-B64Eik
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                5.99 GB
  Current LE             1533
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     768
  Block device           253:4

再把剩余的另外2个pv加上,就一共增加了3个pv,正好与vg01的原pv数量相同,成倍数关系。此时vg01的pv个数变成了6个,是原来的2倍。

[root@itlife365.com ~]# vgextend /dev/vg01 /dev/sdh /dev/sdi   Volume group "vg01" successfully extended [root@itlife365.com ~]# vgdisplay /dev/vg01   --- Volume group ---   VG Name               vg01   System ID   Format                lvm2   Metadata Areas        6   Metadata Sequence No  7   VG Access             read/write   VG Status             resizable   MAX LV                0   Cur LV                1   Open LV               1   Max PV                0   Cur PV                6   Act PV                6   VG Size               11.98 GB   PE Size               4.00 MB   Total PE              3066   Alloc PE / Size       1788 / 6.98 GB   Free  PE / Size       1278 / 4.99 GB   VG UUID               W6EwVP-YIva-iCqr-KuZf-B3jt-4cA3-4XcSv4 

再用lvextend扩展空间,分别从LE和SIZE的角度扩展,均提示成功。

[root@itlife365.com ~]# lvextend -L+1024 /dev/vg01/stripe_lv   Using stripesize of last segment 64.00 KB   Rounding size (1789 extents) down to stripe boundary size for segment (1788 extents)   Extending logical volume stripe_lv to 6.98 GB   Logical volume stripe_lv successfully resized [root@itlife365.com ~]# resize2fs /dev/vg01/stripe_lv resize2fs 1.39 (29-May-2006) Filesystem at /dev/vg01/stripe_lv is mounted on /stripe; on-line resizing required Performing an on-line resize of /dev/vg01/stripe_lv to 1830912 (4k) blocks. The filesystem on /dev/vg01/stripe_lv is now 1830912 blocks long. [root@itlife365.com ~]# lvdisplay /dev/vg01/stripe_lv   --- Logical volume ---   LV Name                /dev/vg01/stripe_lv   VG Name                vg01   LV UUID                TyF4aW-gegH-Vmxi-hWUl-a7t7-Vw5V-B64Eik   LV Write Access        read/write   LV Status              available   # open                 1   LV Size                6.98 GB   Current LE             1788   Segments               2   Allocation             inherit   Read ahead sectors     auto   - currently set to     768   Block device           253:4 [root@itlife365.com ~]# lvextend -l+1278 /dev/vg01/stripe_lv   Using stripesize of last segment 64.00 KB   Extending logical volume stripe_lv to 11.98 GB   Logical volume stripe_lv successfully resized [root@itlife365.com~]# resize2fs /dev/vg01/stripe_lv resize2fs 1.39 (29-May-2006) Filesystem at /dev/vg01/stripe_lv is mounted on /stripe; on-line resizing required Performing an on-line resize of /dev/vg01/stripe_lv to 3139584 (4k) blocks. The filesystem on /dev/vg01/stripe_lv is now 3139584 blocks long. [root@dbabc.net ~]# lvdisplay /dev/vg01/stripe_lv   --- Logical volume ---   LV Name                /dev/vg01/stripe_lv   VG Name                vg01   LV UUID                TyF4aW-gegH-Vmxi-hWUl-a7t7-Vw5V-B64Eik   LV Write Access        read/write   LV Status              available   # open                 1   LV Size                11.98 GB   Current LE             3066   Segments               2   Allocation             inherit   Read ahead sectors     auto   - currently set to     768   Block device           253:4 

查看大小

[root@itlife365.com~]# df -h Filesystem                    Size   Used Avail Use% Mounted on /dev/mapper/vg00-lv_root      6.0G  398M  5.3G   7% / /dev/mapper/vg00-lv_usr       6.8G  1.7G  4.8G  26% /usr /dev/mapper/vg00-lv_data       93M  5.6M   83M   7% /data /dev/sdc1                    988M    24M  914M   3% /boot /dev/mapper/vg01-stripe_lv 12.0G  141M  11.6G   97% /stripe

--end 由itlife365.com 收集整理

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2