Linux学习18-RAID与逻辑卷

RAID与逻辑卷

知识点

  • 了解RAID组成及软RAID实现
  • LVM逻辑卷实现,迁移,删除

1RAID

1. 1 RAID概述

  • 什么是RAID
    多个磁盘合成一个‘阵列’来提供更好的性能、冗余,或两者都提供
  • RAID作用
    1. 提高IO能力
    2. 提高耐用性
  • RAID实现的方式:
    1. 外接式磁盘阵列:通过扩展卡提供适配能力
    2. 内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
    3. 软件RAID:通过OS实现
  • RAID级别
    把多块硬盘逻辑的组合在一起,要求每组磁盘空间相同

    1. RAID-0 (条带集)

      • 构成: 读、写性能提升,存数据时会将数据分割成n块chunk,N块磁盘并行操作,使同一时间内磁盘读写的速度提升了N倍,最少2块磁盘。
      • 缺点: 硬盘较多,出现故障几率变高,坏其中一个坏掉,数据就丢失了,冗余性差
      • 应用:对数据安全性要求不高的情况下使用,如图形工作站,数据库从库
    2. RAID-1
      • 构成:也叫磁盘镜像,写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性。写入性能不高,读取提升可以,最少2块磁盘。
      • 缺点:磁盘利用率为50%
      • 应用:保存关键性重要数据,对速度要求不高的场合,如服务器
    3. RAID-4 带校验位的条带集
      与5类似,只是将校验位统一放到其中一个硬盘上,硬盘压力大容易损坏。
    4. RAID-5 (带校验位的条带集)

      • 构成:数据分割,均匀分布,每块硬盘都利用异或校验法算出一个校验位,可以通过校验位反算丢失的数据。反算过程会带来性能降级,至少3块才能组成RAID-5,校验位会占用空间。有容错性,但是只能容错1块硬盘。备用一个空闲硬盘(spare disk),如果RAID有一个损坏,自动将空闲的换上。读出效率很高,写入效率一般。
      • 缺点:磁盘损坏时,校验位反算修复数据,会带来性能降级,磁盘利用率为(n-1)/n
      • 应用:安全性、速度和容量居中,较平衡的场合,如金融,数据库
    5. RAID-6
      总算两块硬盘做校验位,最少4块组成,运行最多2块硬盘损坏n-2/n

    6. RAID-10
      • 构成:数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。写入和读取能力都好。性能与01差不多,容错性比01好
      • 缺点:CPU占用率同样也更高,而且磁盘的利用率比较低
      • 应用:对安全和性能都有要求的场合,如银行,金融领域
    7. RAID-01
      • 构成:把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力名,RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。
      • 缺点:CPU占用率同样也更高,而且磁盘的利用率比较低
      • 应用:如视频服务器
    8. RAID-50
      多块磁盘先实现RAID5,再组合成RAID0
    9. JBOD:just a Bunch Of Disks
      功能:将多块磁盘的空间合并一个大的连续空间使用

1.2 软RAID

结合内核中的md(multi devices)
RAID设备可命名为/dev/md0、/dev/md1….

  • 创建RAID1
    准备2块容量大小相同的分区,这里以sdb、sdc、sdd、sde为例

    1. 分区,将sdb磁盘分出5G容量的分区,将分区ID改为fd

      $fdisk /dev/sdb
      Device Boot      Start      End         Blocks   Id  System
       /dev/sdb1        2048    10487807     5242880   fd  Linux raid autodetect
      
    2. 复制sdb1磁盘分区格式给sdc、sdd、sde

       $dd if=/dev/sdb of=/dev/sdc  bs=1 count=66 skip=446 seek=446
       $dd if=/dev/sdb of=/dev/sdd  bs=1 count=66 skip=446 seek=446
       $dd if=/dev/sdb of=/dev/sde  bs=1 count=66 skip=446 seek=446
      
    3. 创建RAID 0

      mdadm –C  /dev/mdo  -a  yes  -l0  -n 4 /dev/sd{a,b,d,e}1
      
    4. ll /dev/sdo 或mdadm -D /dev/md0查看生成的设备

      /dev/md0:
          Version : 1.2                                                   <==版本
       Creation Time : Mon Aug 27 20:57:52 2018     <==创建日期
           Raid Level : raid0                                          <==RAID级别
          Array Size : 20951040 (19.98 GiB 21.45 GB)    <==容量
        Raid Devices : 4                                                    <==组成RAID的磁盘数量
       Total Devices : 4                                                    <==包括SPARE的总磁盘数
         Persistence : Superblock is persistent
      
         Update Time : Mon Aug 27 20:57:52 2018       <==运行时长
           State : clean                                                    <==状态
      Active Devices : 4                                                <==启动的装置数
             Working Devices : 4                                      <==活动的RAID成员
      Failed Devices : 0                                                 <==出错的RAID成员
       Spare Devices : 0                                                <==预备的磁盘数量
      
          Chunk Size : 512K                                            <==文件片大小
      
          Consistency Policy : none
      
        Name : V9centos7.5:0  (local to host V9centos7.5)      <==在那个主机上创建的
        UUID : 7555ea43:6c7a7e75:1c439021:b8c0524d
      Events : 0
      
      Number   Major   Minor   RaidDevice State
         0       8       17        0      active sync   /dev/sdb1
         1       8       33        1      active sync   /dev/sdc1
         2       8       49        2      active sync   /dev/sdd1
         3       8       65        3      active sync   /dev/sde1
      
    5. 将设备UUID信息存到配置文件中,防止被重启,找不到设备

      mdadm –Ds   /dev/mdo>/etc/mdadm.conf        
      
    6. 创建文件系统

      mkfs.xfs  /dev/md0    
      
    7. 写入挂载配置文件/etc/fstab
    8. 测试性能dd

      $dd if=/dev/zero of=/data/mdo/f1 bs=1M count=1024   conv=fdatasync
      
  • 删除

    1. 取消挂载

      $umount /data/mdo/
      
    2. 禁用掉

      $mdadm  -S  /dev/md0
      
    3. 删除保存的配置文件

      $rm -f /etc/mdadm.conf
      
    4. 清除超级块

      $mdadm  - -zero-superblock   /dev/sd{b,c,d,e}1 
      
    5. 清除文件系统

      $dd if=/dev/zero of=/dev/sdb1
      
  • 创建raid5
    这里以sdb1、sdc1、sdd1、sde1及sda7为例

    1. 创建4个阵列,1个备用(spare disk)

      $mdadm -C /dev/md5 -a yes  -l5  -n4  -x1  /dev/sd{b,c,d,e}1  /dev/sda7
      PS:-n4表示4个磁盘参与raid  -x1表示有一个磁盘作为spare disk  
          参与的磁盘在前,备用磁盘写在后面
      
    2. 查看文件/proc/mdstat可以观察制作过程

    3. 存配置文件

      $mdadm -Ds /dev/md5 > /etc/mdadm.conf
      
    4. 格式化文件系统

      $mkfs.xfs /dev/md5
      
    5. 挂载配置文件,激活
  • 创建raid10

    1. 方法一
      • $mdadm -C /dev/md1 -a yes -l1 -n 2 /dev/sd{d,e}1 <==先创建两组raid1
      • $mdadm -C /dev/md0 -a yes -l1 -n 2 /dev/sd{b,c}1
      • $mdadm -C /dev/md2 -a yes -l10 -n 2 /dev/md{0,1} <==将两组raid1组合进raid10
    2. 方法二
      • $mdadm -C /dev/md10 -a yes -l10 -n 4 /dev/sd{b,c,d,e}1 <==直接创建raid10

1.3 RAID管理工具

  1. mdadm:模式化的工具 为软RAID提供管理界面
  2. 格式:mdadm [mode] ‘raiddevice’ [options] ‘component-devices’
  3. 支持的RAID级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
  4. 模式:

    • -C:创建
      • 参数
        n#:使用#个块设备来创建次RAID
        -l#:指明要创建的RAID的级别
        -a{yes|no}:自动创建目标RAID设备的设备文件
        -c CHUNK_SIZE:指明块大小,单位k
        -x#:指明空闲盘的个数
    • -D:显示raid的详细信息,长格式为–detail

      # mdadm  -D  /dev/md0
      
    • -A:装配预先存在的设备,激活用

      #mdadm  -A   /dev/md0
      
    • -S: 停止设备

      #mdadm  -S  /dev/md0
      
    • -G:改变活动数组的大小或类型
    • -R:强制启动

      #mdadm  -R  /dev/md0
      
    • –zero-superblock:删除raid信息

      #mdadm  --zero-superblock  /dev/sdb1
      
    • 管理模式:

      1. -f:模拟磁盘为损坏
      2. -r:移除磁盘
      3. -a:添加磁盘

1.4 软RAID测试修复

  1. 模拟磁盘故障

    $mdadm /dev/md5 -f /dev/sdd1   <==模拟将md5中的sdd1损坏
    $mdadm -D /dev/md5 
       ...                               <==前面省略
    Update Time : Tue Aug 28 09:11:36 2018
    State : clean, degraded, recovering      <==状态信息增加了,被降级,恢复
    Active Devices : 3                       <==工作磁盘减少
    Working Devices : 4
    Failed Devices : 1                      <==损坏的数量增加
    Spare Devices : 1
    
  2. 移除磁盘

    $mdadm  /dev/md5  -r  /dev/sdd1           <==移除损坏的磁盘sdd1  
    $mdadm -D /dev/md5 
       ...                               <==前面省略
    Update Time : Tue Aug 28 09:11:36 2018
    State : clean
    Active Devices : 4                       <==spare磁盘自动替换损坏的部分
    Working Devices : 4
    Failed Devices : 0                      <==已移除sdd1
    Spare Devices : 0                      
    
  3. 添加磁盘
    使用虚拟机添加一块5G的磁盘,磁盘不需要更换ID,ID是针对分区的

    $mdadm  /dev/md0  -a  /dev/sdf      <==使用命令添加进RAID中
    $mdadm -D /dev/md5
      ...                               <==前面省略
    Active Devices : 4                       
    Working Devices : 5                 <==总磁盘数增加到5
    Failed Devices : 0                     
    Spare Devices : 1                   <==新增的磁盘sdf补充在Spare上       
    

1.5 软RAID扩展容量

  • 取一个干净分区,这里使用sdd1

    $mdadm --zero-superblock  /dev/sdd1       <==清除RAID信息,作为干净分区
    
  • 增加新的成员

    $mdadm -G /dev/md5 -n5  -a /dev/sdd1      
    模式-G,原RAID为-n4,这里要加一个所以为-n5,-a添加
    $mdadm -D /dev/md5  
      ...                               <==前面省略
    Active Devices : 5                    <==组成RAID增加为5
    Working Devices : 6                 <==总磁盘数增加到6
    Failed Devices : 0                     
    Spare Devices : 1                  <==新增的磁盘sdf补充在Spare上 
    
  • 同步文件系统来生效
    增加后容量不会增长,因为没有在RAID整体文件系统中,所以还要同步文件系统
    1. xfs_growfs /mnt/raid0 (挂载点) xfs文件系统
    2. resize2fs /dev/md5 (设备名) exf文件系统

2. 逻辑卷管理器(LVM)

逻辑卷管理器是一种把硬盘空间分配成逻辑卷的方法。相比硬盘分区,逻辑卷更容易改变容量

2.1 概述

  • 基本信息

    1. LVM:Logical Volume Manager,Version:2
    2. 逻辑卷命名
      设备名:/dev/dm-#
      解释:dm(device mapper):将一个或多个底层块设备组织成一个逻辑设备的模块
    3. 逻辑卷搭接
      • Linux Block Device :准备块设备,使用分区工具,分区ID为8e,与RAID不同,不要求所有块设备大小相同
      • Physical Volumes:使用命令pvcreate将设备指定为物理卷,是用固定大小的物理区域(Physical Extent,PE)来定义的,设备名称不会改变,只是贴个标签
      • Volume Group:使用命令vgcreate将一个或者多个物理卷来pv创建为卷组
      • Logical Volumes:使用命令lvcreate从VG上分割出LV
      • 格式化档案系统后,就可以挂载了
    4. 优点:
      • 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
      • 允许在多个物理设备间重新组织文件系统
  • LVM更改文件系统的容量
    LVM可以弹性的更改LVM的容量 PE(extend)
    通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LVM中以加大容量

2.2 pv管理工具

  • 显示pv信息
    1. pvs:简要pv信息显示
    2. pvdisplay :详细信息显示
  • 创建pv
    pvcreate /dev/DEVICE

2.3 vg管理工具

  • 显示卷组
    1. vgs
    2. vgdisplay
  • 创建卷组
    vgcreate [-s #[kKmMgGtTpPeE]] ‘卷组名’ ‘物理卷路径 …’
    管理卷组
    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
    删除卷组
    先做pvmove,再做vgremove

2.4 lv管理工具

  • 显示信息
    1. lvs
    2. lvdisplay
  • 创建逻辑卷
    1. lvcreate -L #[mgtMGT] -n NAME VolumeGroup
    2. lvcreate -l 60%VG -n mylv testvg
    3. lvcreate -l 100%FRE -n yourlv testvg
  • 删除逻辑卷
    lvcreate /dev/VG_NAME/LV_NAME
  • 重设文件系统大小
    1. xfs系列的只能涨不能缩,ext可以减可以涨
    2. 增减时要取消挂载,不然会影响用户使用
    3. fsadm [options] resize device [new_size[BKMGTEP]]
      resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

2.5 扩展和缩减逻辑卷

  1. 扩展逻辑卷
    • lvextend -L [+]#[mgtMGT] /dev/VG_NAME/LV_NAME
    • resize2fs /dev/VG_NAME/LV_NAME
    • lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
  2. 缩减逻辑卷
    • umount /dev/VG_NAME/LV_NAME
    • e2fsck -f dev/VG_NAME/LV_NAME
    • resize2fs /dev/VG_NAME/LV_NAME #[mgtMGT]
    • lvreduce -L [-]#[mgtMGT] /dev/VG_name/lv_name
    • mount

2.6 示例

  1. 分区,分出准备做逻辑卷的分区,改分区ID为逻辑卷8e,这里以sdb2、sde2和sdf1为例
  2. 标记为物理卷

    #pvcreate /dev/sde2 /dev/sdf1
    
  3. 创建卷组
    PE大小为2的n次方,最小为128k

    #vgcreate      vg0      -s   16M         /dev/sde2     /dev/sdf1
                   卷组名     指定PE大小      物理卷
    
  4. 创建逻辑卷,从vg0分割出1500M作为LV容量

    #lvcreate  -n  lv0    -L  1500M   vg0
    
    -l  (小写L)按pe数指定大小
    -L   按容量大小
    -n   命名
    
  5. 创建文件系统

    #mkfs.ext4 /dev/vg0/lv0
    
  6. 挂载

    #mount /dev/vg0/lv0 /data/lv0
    
  7. 扩展逻辑卷,要求逻辑卷的卷组有空间,增加物理卷到卷组

    #pvcreate  /dev/sdb2
    
  8. 将物理卷加到卷组中

    #vgextend   vg0  /dev/sdc
    
  9. 扩展逻辑卷

    #lvextend -L 5G  /dev/vg0/lv0
     5G是扩展到5G,也可以写成+500M,意思是增加多少
    
  10. 同步文件系统
    • ext4扩展文件系统,resize2fs /dev/vg0/lv0 (设备名)
    • xfs扩展文件系统, xfs_growfs /mnt/lv1 (挂载点) 同步文件系统
    • lextend -r -L 5G或者+500M /dev/vgo/1vo 加上-r选项不用同步文件系统
  11. 缩减ext系列可以,可能造成数据损坏,先备份,不支持在线缩减

     #umount   /dev/vg0/lv0 
     #e2fsck -f  /dev/vg0/lv0               先检查文件系统,必须步骤
     #resize2fs  /dev/vg0/lv0  2g           缩减到2G   先缩减文件系统
     #lvreduce   -L   2G   /dev/vg0/1v0     缩减逻辑卷
    

2.6 迁移逻辑卷示例

需要注意CentOS7向CentOS6迁移时候,文件系统XFS到CentOS6可能不识别

  1. 更改卷组名称,防止在迁移目标上有同名设备
    vgrename vg0 newvg0
  2. 更改逻辑卷名称
    lvrename /dev/newvg0/lv0 newlv0
  3. 取消挂载
    umount /mnt/lv0
  4. 卷组设置为非活动状态
    vgchang2 -an newvg0
  5. 设置卷组为导出状态
    vgexport newvg0
  6. 将磁盘迁移过去
  7. 导入
    vgimport newvg0
  8. 激活
    vgchang -ay newvg0
  9. 挂载

2.7 跨主机迁移卷组

  • 源计算机上
    1. 在旧系统中,umount所有卷组上的逻辑卷
    2. vgchange -a n vg0
      lvdisplay
    3. vgexprot vg0
      pvscan
      vgdisplay
      拆下旧硬盘
  • 在目标计算机上
    1. 在新系统中安装旧硬盘,并vgimport vg0
    2. vgchange -ay vg0
    3. mount所有卷组上的逻辑卷

3. 逻辑卷管理器快照

3.1概述

  • 快照是特殊的逻辑卷,它是在生成快照存在的逻辑卷的准确拷贝
  • 对于需要备份或者复制的现有数据临时拷贝以及其他操作来说,快照是最合适的选择
  • 在生成快照时会分配给他一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
  • 建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照
  • 快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
  • 由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中,系统恢复的时候的文件数量不能高于快照区的实际容量
  • 创建逻辑卷快照,必须与原来的逻辑卷快照放在同一个卷组里,所以要考虑空间问题。
  • 逻辑卷快照修改文件时,会将旧版本推送到快照区,会带来性能降低问题,一般用于实验情况、

3.2 实验,exf系列快照

  1. 为/dev/vg0/lv0做快照

    $lvcreate -n  lv0-snapshot   -s    -L   1G   /dev/vg0/lv0      
     -n:命名为lv0-snapshot 
     -s:表示是快照的逻辑卷
     -p r :将快照设置为只读
    $lvdisplay                               <==查看逻辑卷信息
      --- Logical volume ---   
      LV Path                /dev/vg0/lv0
      LV Name                lv0
      VG Name                vg0
      LV UUID                Y6Dnxa-wgto-GDfg-EJyH-3tCw-Hdee-dUHwde
      LV Write Access        read/write
      LV Creation host, time V9centos7.5, 2018-08-28 14:35:36 +0800
      LV snapshot status     source of                  <==多出逻辑卷快照信息
                                         lv0-snapshot [active]
    
  2. 将快照挂载到文件夹上观察

        $mkdir lv0-snapshot                             <==建立文件夹
        $mount /dev/vg0/lv0-snapshot  /data/lv0-snapshot/    <==可以看到假的文件,其实没有内容      
        $ll /data/lv0-snapshot/
         f1.txt  f2.txt  f3.txt  f4.txt  f5.txt
    
  3. 删除/data/vg0/lv0上的f2文件 <==逻辑卷lv0的挂载点

           $rm -f  /data/vg0/lv0/f2.txt                   <==删除逻辑卷中的f2文件
           $ll /data/lv0-snapshot/
           f1.txt   f3.txt   f4.txt   f5.txt
           $ll /data/lv0-snapshot/                        <==查看快照文件目录,f2仍然在
           f1.txt  f2.txt  f3.txt  f4.txt  f5.txt
    
  4. 恢复 逻辑卷lv0上的数据

        $umount /data/lv0-snapshot/                  <==快照取消挂载
        $umount /data/file                           <==lv0取消挂载
        $lvconvert --merge /dev/vg0/lv0-snapshot     <==将快照合并到lv0中
        $mount /dev/vg0/lv0 /data/file               <==挂载
        $ls /data/file
        f1.txt  f2.txt  f3.txt  f4.txt  f5.txt       <==数据恢复,同时快照也已经删除
    

3.3 实验,xfs快照

  1. lvcreate –n lv1-snapshot -s -L 1G dev/vg0/lv1
  2. mount -o nouuid /dev/vg0/lv1-snapshot /data/lv1-snapshot
    因为快照在xfs中会认为与原来的UUID相同,不能挂载,这里要忽略UUID

3.4 删除快照

  1. 取消挂载状态

    umount  /data/lv1-snapshot
    
  2. 删除快照

    lvremove  /dev/vg0/lv1-snapshot
    

3.4 实验,更换磁盘时迁移逻辑卷

  1. 确保同一个卷组,有足够的可迁移空间,示例迁移sde
  2. 将分区内的PE移动到别的物理卷上

     pvmove   /dev/sde          <==迁移sde,目标为卷组的剩余空间,不需要指定
    
  3. 将/dev/sde物理卷从newvg0卷组上移除

    vgreduce  vg0  /dev/sde   
    
  4. 删除物理卷,可以拆除

    pvremove   /dev/sde
    

3.5 删除全部逻辑卷

  1. 取消挂载关系,删除配置文件
  2. 取消所有逻辑卷

      lvremove  /dev/vg0/lv{0,1}
    
  3. 取消卷组

    vgremove    vg0
    
  4. 删除物理卷

    pvremove  /dev/sdc   /dev/sdd1
    

猜你喜欢

转载自blog.csdn.net/free050463/article/details/82119086