存储管理:

这里我们要学介绍两种磁盘阵列:

磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

一、RAID 

1.RAID是什么:

  RAID:Redundant Arrays of Inexpensive Disks即:廉价磁盘冗余阵列

  1988年由加利福尼亚大学伯克利分校(University of California-Berkeley)提出的“A Case for Redundant Arrays of Inexpensive Disks”。旨在将多个相对廉价的IDE接口的磁盘合成一个“阵列”来提供更好的IO性能、实现磁盘冗余,或者两者都提供。


2.RAID的功能:

  提高IO能力:

    磁盘并行读写

  提高耐用性;

    磁盘冗余来实现

  级别:多块磁盘组织在一起的工作方式有所不同

  RAID实现的方式:

    外接式磁盘阵列:通过扩展卡提供适配能力

    内接式RAID:主板集成RAID控制器

      安装OS前在BIOS里配置

    Software RAID:


RAID几个级别:

RAID-0:条带卷

  读、写性能提升;

  可用空间:N*min(S1,S2,...)

  无容错能力

  最少磁盘数:2, 2

RAID-1:镜像卷

  读性能提升、写性能略有下降;

  可用空间:1*min(S1,S2)

  有冗余能力

  最少磁盘数:2, 2+

RAID-4:

  多块数据盘异或运算值,存于专用校验盘

  坏了一块硬盘仍然可以继续工作的模式称为降级模式

  校验盘压力最大,很容易形成性能瓶颈;

RAID-5:

  读、写性能提升

  可用空间:(N-1)*min(S1,S2,...)

  有容错能力:允许最多1块磁盘损坏

  最少磁盘数:3, 3+

RAID-6:

  读、写性能提升

  可用空间:(N-2)*min(S1,S2,...)

  有容错能力:允许最多2块磁盘损坏

  最少磁盘数:4, 4+

RAID混合类型级别

  RAID-10:

    读、写性能提升

    可用空间:N*min(S1,S2,...)/2

    有容错能力:每组镜像最多只能坏一块

    最少磁盘数:4, 4+

    RAID-01、RAID-50

/// 注意:混合级别的RAID阵列,其实就是将两个不同级别的阵列组合,从而完善各自的不足,向RAID 10 ,就是先组合几个RAID1阵列,再将RAID1整列组合成RAID0阵列 

  RAID7:可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式

  JBOD:Just a Bunch Of Disks

    功能:将多块磁盘的空间合并一个大的连续空间使用

    可用空间:sum(S1,S2,...)

  常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD


实现方式:

  硬件实现方式

  软件实现方式


RAID磁盘阵列的创建工具:

mdadm:模式化工具

      命令的语法格式:

        mdadm [mode] [options]

          支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10,...

      模式:

        创建模式:-C

        装配模式:-A

        监控模式:-F

        管理模式:-f, -r, -a


注意:

   :/dev/md#

   :任意块设备,注意如果是分区的话,其分区类型要改为fd

-C:创建模式

 -n #:使用#个块设备来创建此RAID

 -l #:指明要创建的RAID的级别

 -a {yes|no}:自动创建目标RAID设备的设备文件

 -c CHUNK_SIZE:指明块大小, 默认值为512K

 -x #:指明空闲盘的个数


混杂模式:

 1) 显示RAID的详细信息:mdadm -D /dev/md#

 2) 停止md设备:mdadm -S /dev/md0


管理模式:

 -f:为指定的磁盘或分区添加损坏标记

 -a:添加磁盘或分区到md设备中

 -r:从md设备中移除磁盘或分区  

装配模式:Assemble

  -A

 用于将停止的RAID设备重新装配使之能够正常工作。

 在装配RAID设备的时候,需要依赖/etc/mdadm.conf文件进行


 mdadm -D --scan >> /etc/mdadm.conf

 mdadm -S /dev/md2

 mdadm -S /dev/md0

 mdadm -C -n 2 -l 0 /dev/sdc /dev/sdf

 mdadm -A /dev/md2

 mdadm /dev/md2 -a /dev/md0

注意: 我们用cat /proc/mkstat命令来查看md的状态

watch命令:

  -n #:刷新时间间隔,单位为秒,默认为1秒;

  watch -n # 'COMMAND


LVM2

  Logical Volume Manager,逻辑卷管理器,Version 2

  IBM


  使用纯软件的方式组织一个或多个底层的块设备,将它们重新定义为一个逻辑块设备的解决方案;


  利用内核中的dm模块实现;

  dm:device mapper,设备映射表

  dm模块可以将一个或多个底层块设备组织成一个逻辑块设备;

  用户空间中的相应命令来向dm模块发出系统调用,就可以完成后逻辑块设备的管理;


  逻辑块设备统一存放在/dev/dm-#


重点:使用DM机制实现LVM管理的步骤:

    1.创建并表示物理卷,PV

      注意:如果用来创建物理卷的设备是普通分区,一定要将分区的ID修改为8e;

    2.基于PV创建卷组,逻辑块设备,创建的卷组的同时指定PE的大小;

      注意:一旦PE大小被指定,就不允许更改;

    3.在已经创建的卷组中创建逻辑卷

    4.在逻辑卷中创建文件系统(高级格式化)

    5.挂载


  物理卷(pv)的管理操作:

    pvcreate:创建物理卷

    pvdisplay:显示物理卷的详细信息

    pvs:显示物理卷的简单信息

    pvremove:删除物理卷

    pvmove:将某个物理卷中的所有的PE移动到其他物理卷中;


  卷组(vg)的管理操作:

    vgcreate:创建卷组

      -s #{kKmMgG}:指定PE的大小,如果省略该选项,默认的PE为4M;

    vgremove:删除卷组

    vgextend:扩展卷组容量,将新的pv添加到卷组中

          vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

    vgreduce:缩减卷组容量,将pv从卷组中移除;在做此操作之前,应该先使用pvmove,保证被移           除的pv上没有被占用的PE;

          vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

    vgdisplay:显示卷组的详细信息

    vgs:显示卷组的简短信息


  逻辑卷(lv)的管理操作:

    lvcreate:创建逻辑卷

      -L LV_SIZE(#{kK|mM|gG}):指定逻辑卷的大小,不能超过卷组的容量;

      -l #%{FREE|VG|ORIGIN|PVS}:指定逻辑卷占用对应存储单元的百分比;

      -n LV_NAME:指定逻辑卷的名称

      -i #:在创建逻辑卷的时候,以条带的方式创建,并指明这个逻辑卷上有#个条带

      -I #:在创建逻辑卷的时候,以条带的方式创建,并指明CHUNK的大小;

    lvremove:移除逻辑卷

    lvdisplay:显示逻辑卷的详细信息

    lvs:显示逻辑卷的简短信息

    lvchange:修改LV的状态

      -ay:激活逻辑卷

      -an:停用逻辑卷

    lvextend:扩展逻辑卷的空间,

///注意:一定要先扩展逻辑卷的物理边界,再扩展逻辑卷的逻辑边界;使用ext系列文件系统的时候,resize2fs命令扩展逻辑边界;


 1)扩大逻辑卷的物理边界:

   lvextend -L [+]SIZE /PATH/TO/LVM

        如果SIZE有+:表示在原有逻辑卷容量的基础上,增加SIZE空间

        如果SIZE无+:表示将逻辑卷的容量扩大到SIZE空间

 2)扩大逻辑卷的逻辑边界:

        e2fsck /PATH/TO/LVM

        resize2fs [-f] /PATH/TO/LVM

    

    lvreduce:缩减逻辑卷的空间

注意:先缩减逻辑卷的逻辑边界,再缩减逻辑卷的物理边界;使用ext系列文件系统的时候,resize2fs命令缩减逻辑边界

 

  lvreduce -L [-]SIZE /PATH/TO/LVM

    如果SIZE有-:表示在原有逻辑卷容量的基础上,削减SIZE空间

    如果SIZE无-:表示将逻辑卷的容量直接削减至SIZE空间

    umount /PATH/TO/LVM

    e2fsck /PATH/TO/LVM            //强制校验数据一致性

    resize2fs -f /PATH/TO/LVM LV_SiZE //修改逻辑卷的逻辑边界,LV_SIZE为调整后的逻辑卷大小

    lvchange -an /PATH/TO/LVM      //关闭逻辑卷

    lvreduce -L [+]SIZE /PATH/TO/LVM  //修改逻辑卷的物理边界,大小要和逻辑边界保持一致

    lvchange -ay /PATH/TO/LVM      //重新激活逻辑卷

    mount /PATH/TO/LVM /PATH/TO/LVM_MOUNT_POINT


为了更方便的使用逻辑卷,为/dev/dm-#设备创建了两个符号链接文件:

  /dev/mapper/VG_NAME-LV_NAME --> ../dm-#

  /dev/VG_NAME/LV_NAME --> ../dm-#


三、逻辑卷的快照:

  1.什么是快照?

 快照本身也是一种逻辑卷;目标逻辑卷的另外一个访问路径;快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝;对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。快照只有在它们和原来的逻辑卷不同时才会消耗空间。在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据,也可以使用lvextend扩展快照卷。

 快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享。

 由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须要要在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量。


快照逻辑卷

  lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM

    -L SIZE:指定快照逻辑卷的大小

    -s:创建一个快照逻辑卷

    -p r:创建处理的逻辑卷是只读权限

    -n SNAPSHOT_NAME:指定快照逻辑卷的名称