zoukankan      html  css  js  c++  java
  • RAID 0、1、5、1+0总结

    RAID(Redundant Array Of Independent Disk,独立磁盘冗余阵列),可以提供比普通磁盘更快的速度、更高的安全性,生产环境中服务器在安装时一般都会做RAID,RAID的创建有两种方式,一种是软RAID(由操作系统来实现,生产环境下一般不采用,因为是基于系统,所以一旦系统挂掉了,数据就挂了),另一种是硬RAID(使用的是RAID卡,也叫阵列卡等的一种独立于系统之外的卡,当系统挂掉之后可以保证磁盘数据的安全性)。

    RAID 0:(String 条带模式)

    要求:至少需要两块磁盘

    优点:数据分散存储于不同磁盘上,在读写时可以实现并发,是所有RAID级别中存储性能最高的;磁盘利用率100%;

    缺点:没有容错功能,一旦其中一块磁盘挂掉全部数据将都会顺坏

    image

    RAID 1:(Mirroring 镜像卷)

    image

    要求:至少需要两块磁盘

    优点:用过硬盘镜像数据实现数据冗余,保证数据的安全性,在两块盘上互为备份,当原始数据繁忙时,可以直接从镜像备份中读取数据;

    缺点:是RAID级别中单位成本最高的,当其中一块磁盘挂掉时,系统可以直接切换到镜像盘上读写,并且不需要重组失效的数据,磁盘利用率50%;

    RAID 5原理:数据以块为单位分散存储在各个硬盘上,RAID 5不对数据进行备份,而是把数据和与其对应的奇偶校验信息存储到组成的RAID5的各个磁盘上,并且将奇偶校验信息和对应的数据分别存储于不同的磁盘上,其中一块(只允许一块)挂掉时,利用剩下的数据和校验信息可以恢复数据。

    imageimage

    上表中的A、B值即代表不同的位,利用异或运算可以简单算出挂掉磁盘上的数据。

    要求:需要3块及以上硬盘

    优势:兼顾读写速度和数据安全,其中一块磁盘挂掉时,可以保证数据不被损坏;(需要注意的是,只允许坏一块盘,并且坏盘要及时更换)

    磁盘利用率=[(n-1)/n] * 2/3

    RAID 1+0:

    先创建RAID 1,在RAID的基础上创建RAID 0

    优点:数据安全性好,只要不是一个RAID 1上的2个硬盘同时损坏,都不影响数据的正常读写,数据恢复快

    缺点:写性能较RAID 0+1 差一些

    RAID 0+1

    先创建RAID 0,在RAID 0 的基础上再创建RAID 1

    优点:性能上考虑的话,RAID 0+1要更有优势一些,RAID 0+1写入速度更快一些,读取速度和RAID 1+0 一样,

    缺点:一旦其中一块硬盘挂掉之后,一半的硬盘无法正常工作,如果2个条带上各坏一块,整个阵列将挂掉

    实例 1

    创建RAID 0(基于系统的软RAID)

    1.新加8块硬盘(虚拟机中)

    brw-rw---- 1 root disk 8,  16 Sep 22 12:04 /dev/sdb
    brw-rw---- 1 root disk 8,  17 Sep 22 12:04 /dev/sdb1
    brw-rw---- 1 root disk 8,  32 Sep 22 12:05 /dev/sdc
    brw-rw---- 1 root disk 8,  33 Sep 22 12:05 /dev/sdc1
    brw-rw---- 1 root disk 8,  48 Sep 22 12:06 /dev/sdd
    brw-rw---- 1 root disk 8,  49 Sep 22 12:06 /dev/sdd1
    brw-rw---- 1 root disk 8,  64 Sep 22 09:57 /dev/sde
    brw-rw---- 1 root disk 8,  80 Sep 22 09:57 /dev/sdf
    brw-rw---- 1 root disk 8,  96 Sep 22 09:57 /dev/sdg
    brw-rw---- 1 root disk 8, 112 Sep 22 09:57 /dev/sdh
    brw-rw---- 1 root disk 8, 128 Sep 22 09:57 /dev/sdi

    2.使用mdadm命令创建

    -C或--creat

    建立一个新阵列

    -r

    移除设备

    -A

    激活磁盘阵列

    -l 或--level=

    设定磁盘阵列的级别

    -D或--detail

    打印阵列设备的详细信息

    -n或--raid-devices=

    指定阵列成员(分区/磁盘)的数量

    -s或--scan

    扫描配置文件或/proc/mdstat得到阵列缺失信息

    -x--spare-devicds=

    指定阵列中备用盘的数量

    -f

    将设备状态定为故障

    -c或--chunk=

    设定阵列的块chunk大小 ,单位为KB

    -a或--add

    添加设备到阵列

    -G或--grow

    改变阵列大小或形态

    -v

    --verbose 显示详细信息

       

    [root@sishen ~]# mdadm -C -v /dev/md0 -l 0 -n 2  /dev/sd{b,c}
    mdadm: chunk size defaults to 512K
    mdadm: /dev/sdb appears to be part of a raid array:
        level=raid0 devices=0 ctime=Thu Jan  1 08:00:00 1970
    mdadm: partition table exists on /dev/sdb but will be lost or
           meaningless after creating array
    mdadm: /dev/sdc appears to be part of a raid array:
        level=raid0 devices=0 ctime=Thu Jan  1 08:00:00 1970
    mdadm: partition table exists on /dev/sdc but will be lost or
           meaningless after creating array
    Continue creating array?y     
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    [root@sishen ~]# cat /proc/mdstat       #查看阵列信息
    Personalities : [raid0]
    md0 : active raid0 sdc[1] sdb[0]

        41942016 blocks super 1.2 512k chunks     
    unused devices: <none>

    [root@sishen ~]# mdadm -D /dev/md0

    3.生成配置文件

    [root@sishen ~]# mdadm -Ds > /etc/mdadm.conf
    [root@sishen ~]# cat !$

    cat /etc/mdadm.conf
    ARRAY /dev/md0 metadata=1.2 name=sishen.163.cn:0 UUID=b4192d7e:3d23d5fd:8cb8d61e:4368d38d

    4.创建分区

    [root@sishen ~]# parted /dev/md0
    GNU Parted 2.1
    Using /dev/md0
    Welcome to GNU Parted! Type 'help' to view a list of commands.

    (parted) p
    Model: Unknown (unknown)
    Disk /dev/md0: 42.9GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt

    Number  Start   End     Size    File system  Name     Flags
    1      1049kB  19.9GB  19.9GB               primary

    (parted) mkpart primary 19.9G 39.9G
    (parted) p

    (parted) mklabel gpt
    (parted) mkpart primary 0G 19.9G
    (parted) p
    Model: Unknown (unknown)
    Disk /dev/md0: 42.9GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt

    Number  Start   End     Size    File system  Name     Flags
    1      1049kB  19.9GB  19.9GB               primary

    (parted) mkpart primary 19.9G 39.9G
    (parted) p
    Model: Unknown (unknown)
    Disk /dev/md0: 42.9GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt

    Number  Start   End     Size    File system  Name     Flags
    1      1049kB  19.9GB  19.9GB               primary
    2      19.9GB  39.9GB  20.0GB               primary

    (parted)

    5.格式化

    [root@sishen ~]# mkfs.ext4 /dev/md0p1

    [root@sishen ~]# mkfs.ext4 /dev/md0p2

    6.挂载使用

    [root@sishen ~]# mkdir /md01           #创建挂载点

    [root@sishen ~]# mkdir /md02         

    [root@sishen ~]# mount /dev/md0p1 /md01/      #挂载

    [root@sishen ~]# mount /dev/md0p2 /md02/

    [root@sishen ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on

    …….

    /dev/md0p1       19G  172M   18G   1% /md01
    /dev/md0p2       19G  172M   18G   1% /md02

    可以使用如下方式实现永久挂载

    1)编辑/etc/fstab文件添加如下两行

    [root@sishen ~]# vim /etc/fstab

    /dev/md0p1     ext4   defaults 0 0 /md01

    /dev/md0p2     ext4  defaults 0 0 /md02

    2)通过UUID方式挂载

    [root@sishen ~]# blkid /dev/md0p1    #获取UUID

    /dev/md0p1: UUID="2c9c107a-9150-43bf-ad7a-fdc6c32b828c" TYPE="ext4"

    [root@sishen ~]# blkid /dev/md0p2
    /dev/md0p2: UUID="1a3f8a8a-b9e6-4669-9949-7c2bec36fee2" TYPE="ext4"

    同样编辑1)中的文件添加如下两行

    UUID=2c9c107a-9150-43bf-ad7a-fdc6c32b828c /md0p1  ext4  defaults        0 0
    UUID=1a3f8a8a-b9e6-4669-9949-7c2bec36fee2 /md0p2  ext4  defaults        0 0

    实例2   创建RAID1

    1.同样准备硬盘

    2.开始创建

    [root@sishen ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd{d,e,f}

    [root@sishen ~]# cat /proc//mdstat

    //查看阵列信息
    sonalities : [raid0] [raid1]
    md1 : active raid1 sdf[2](S) sde[1] sdd[0]
          20955008 blocks super 1.2 [2/2] [UU]
          [=====>...............]  resync = 28.6% (6000000/20955008) finish=1.1min speed=206896K/sec
         
    md0 : active raid0 sdc[1] sdb[0]
          41942016 blocks super 1.2 512k chunks
         
    unused devices: <none>

    [root@sishen ~]# mdadm -D /dev/md1

    //查看详细信息

    3.创建配置文件

    [root@sishen ~]# mdadm -Ds >> /etc/mdadm.conf

    4.创建挂载点、分区、格式化、挂载使用

    [root@sishen ~]# mkdir /md1

    [root@sishen ~]# parted /dev/md1

    [root@sishen ~]# mkfs.ext4 /dev/md1p1

    [root@sishen ~]# mount /dev/md1p1 /md1/
    [root@sishen ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    ……….
    /dev/md1p1       19G  172M   18G   1% /md1

    5.查看状态信息

    [root@sishen ~]# cat /proc/mdstat
    Personalities : [raid0] [raid1]
    md1 : active raid1 sdf[2](S) sde[1] sdd[0]
          20955008 blocks super 1.2 [2/2] [UU]
     

    md0 : active raid0 sdc[1] sdb[0]
          41942016 blocks super 1.2 512k chunks


        
    unused devices: <none>

    #md1:表示此阵列的设备名

    #active:正常读写

    #raid 1:raid级别

    #sdf[2][S]:为此阵列的第三个设备且是热备盘,sde[1]此阵列第二个设备,sdc[0]此阵列的第一个设备

    #20955008 blocks:此阵列的块大小,

    #[2/2]此阵列中有2个磁盘,并且都在运行

    动态查看使用

    [root@sishen ~]# watch -n 1 cat /proc/mdstat

    配置文件介绍

    [root@sishen ~]# cat /etc/mdadm.conf
    ARRAY /dev/md0 metadata=1.2 name=sishen.163.cn:0 UUID=b4192d7e:3d23d5fd:8cb8d61e:4368d38d
    ARRAY /dev/md0 metadata=1.2 name=sishen.163.cn:0 UUID=b4192d7e:3d23d5fd:8cb8d61e:4368d38d
    ARRAY /dev/md1 metadata=1.2 spares=1 name=sishen.163.cn:1 UUID=8a5d9559:dd72a74d:6b72f9aa:45bd2b86

    #spares=1:有一块热备盘

    手动设置故障盘

    [root@sishen ~]# mdadm -f /dev/md1 /dev/sdd
    mdadm: set /dev/sdd faulty in /dev/md1

    移除故障盘
    [root@sishen ~]# mdadm -r /dev/md1 /dev/sdd
    mdadm: hot removed /dev/sdd from /dev/md1

    查看状态
    [root@sishen ~]# cat /proc/mdstat
    Personalities : [raid0] [raid1]
    md1 : active raid1 sdf[2] sde[1]
          20955008 blocks super 1.2 [2/1] [_U]
          [======>..............]  recovery = 33.9% (7117952/20955008) finish=1.1min speed=200000K/sec
          //正在同步数据
    md0 : active raid0 sdc[1] sdb[0]
          41942016 blocks super 1.2 512k chunks
         
    unused devices: <none>

    重新生成配置文件

    [root@sishen ~]# mdadm -Ds > /etc/mdadm.conf

    实例3 创建RAID5

    1.准备分区

    [root@sishen ~]# ls /dev/sdg*
    /dev/sdg   /dev/sdg2  /dev/sdg4  /dev/sdg6  /dev/sdg8
    /dev/sdg1  /dev/sdg3  /dev/sdg5  /dev/sdg7  /dev/sdg9

    2.开始创建

    [root@sishen ~]# mdadm -C -v /dev/md5 -l 5 -n 6 -c 32 -x 2 /dev/sdg{1,2,3,5,6,7,8,9}
    mdadm: layout defaults to left-symmetric
    mdadm: layout defaults to left-symmetric
    mdadm: size set to 1059200K
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md5 started.

    3.生成配置文件

    [root@sishen ~]# mdadm -Ds > /etc/mdadm.conf

    后续步骤同上;

    实例4       停止/激活阵列

    [root@sishen ~]# mdadm -S /dev/md5
    mdadm: stopped /dev/md5

    [root@sishen ~]# mdadm –As

    //激活所有阵列
    mdadm: /dev/md1 is already in use.
    mdadm: /dev/md5 has been started with 6 drives and 2 spares.
    mdadm: /dev/md1 is already in use.

    为阵列添加一块新硬盘

    [root@sishen ~]# mdadm -a /dev/md5 /dev/sdg10
    mdadm: added /dev/sdg10

    #如果阵列在停止状态下,则可能无法添加新硬盘

    改变阵列大小

    [root@sishen ~]# mdadm --grow /dev/md5 --array-size 264800

    重新生成配置文件

    [root@sishen ~]# mdadm -Ds > /etc/mdadm.conf

    创建RAID 1+0

    方法是在raid1的基础上创建raid0

    首先创建2个raid 1

    [root@sishen ~]# mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sd{b,c}

    [root@sishen ~]# mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sd{d,e}

    然后在raid1上面创建raid 0

    [root@sishen ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/md1{1,2}

    生成配置文件

    [root@sishen ~]# mdadm -Ds > /etc/mdadm.conf

    使用和上述操作一样

    关闭所有RAID

    [root@sishen ~]# mdadm -Ss
    mdadm: stopped /dev/md1
    mdadm: stopped /dev/md0

    删除RAID

    先停止阵列,再卸载,然后删除配置文件

    最后清除物理磁盘中的RAID标识

    [root@sishen ~]# mdadm --misc --zero-superblock /dev/sd{b,c,d,e,f}

    [root@sishen ~]# mdadm --misc --zero-superblock /dev/sdg{2,3,5,6,7,8,9,10}

    #--misc 修改MD相关的信息

    #--zero-superblock 擦除设备中的超级块

    若有问题后续会更新!!!点滴记录!重在积累!

  • 相关阅读:
    解决linux下主机名变bogon的问题
    如何压缩虚拟机文件
    Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件
    .NET ramework 4.0安装失败
    Oracle数据库密码过期
    MySQL max_allowed_packet设置及问题
    WPF 异步执行
    win8 无法显示桌面,运行explorer.exe 提示 0xc0000018 异常 解决办法
    最全的Spark基础知识解答
    数据处理包plyr和dplyr包的整理
  • 原文地址:https://www.cnblogs.com/zd520pyx1314/p/5896658.html
Copyright © 2011-2022 走看看