RAID

硬盘镜像技术

旧式RAID:使用IDE

新式RAID:使用SATA、SCSI

 RAID种类

RAID0:条带

   性能表现:读、写 提升至N倍

   冗余能力:无

   空间利用率:N

   磁盘数量:至少2块

RAID1:镜像

    性能表现:写性能下降(需同步),读性能提升(可以交替读) 

    冗余能力:有 

    空间利用率:1/2

   磁盘数量:至少2块 

RAID 0+1:先用条带技术,再对各自数据进行镜像

   性能表现:读、写提升

   冗余能力:有(硬盘坏时修复:牵一发而动全。)

   空间利用率:1/2

   磁盘数量:至少4块

RAID 1+0 :先对各自数据进行镜像,再用条带技术。

   性能表现:读、写提升

   冗余能力:有,(硬盘坏时修复:较RAID1+0更容易,更快)

   空间利用率:1/2

   磁盘数量:至少4块

RAID4:采用校验码技术,单独1磁盘存放校验码。

   性能表现:小于n-1倍,因为检验码盘速度慢,会成为速率瓶颈。

   冗余能力:有,不能坏2块

   空间利用率:(n-1)/n

   磁盘数量:至少3块

RAID5:采用校验码技术,所有盘轮流存放校验码。

   性能表现:略小于n-1倍,轮流存放校验码技术,减少瓶颈。

   冗余能力:有,不能坏2块

   空间利用率:(n-1)/n

   磁盘数量:至少3块

RAID 5+0:先RAID5,然后再镜像

   性能表现:读、写提升

   冗余能力:有

   空间利用率:(n-2)/n

   磁盘数量:至少6块

JBOD技术:将多个盘组合成1个盘使用,利用HDFS文件系统,可实现在文件系统级别找回丢失文件。

    性能表现:无提升

    冗余能力:无

    空间利用率:100%

    磁盘数量:至少2块

    使用案例:Hadoop

 RAID实现方式

硬件RAID

1.方式 1:

        RAID磁盘阵列卡

        存储箱:N块硬盘

        连接线:连接存储箱于RAID控制器

2.方式2:

       RAID控制器:可控制硬盘上的插槽

       硬盘插槽:

       连接线:连接硬盘与插槽。

RAID实现步骤:

1)通过BIOS界面配置RAID:配置启用RAID控制器,配置相关盘配置成RAID

 2)安装操作系统,如果系统不识别RAID,需在安装系统前安装RAID磁盘驱动;

在OS看来,RAID设备文件名为/dev/sda、/dev/sdb这样的格式。

软件RAID

OS中,直接操作硬件的只有内核

RAID前提:内核安装md(多磁盘)模块,通过md模板,将多个物理设备组合成RAID

实现原理:

    1.内核模拟一个RAID,设备文件:/dev/md0、/dev/md1。。。

    2.CPU将存储数据给/dev/md,md管理模板根据RAID方式存储具体的磁盘设备/dev/sda、/dev/sdb等

性能:取决于CPU能力,较差。

OS一挂,RAID数据无法找回,解决方法:将raid分区系统表示设备为fd(253),这样在存储数据到RAID时,会多写入元数据,

若OS一挂,充值系统时,只要内核安装了md模块,会自动扫面RAID的组成磁盘,这样数据就能重新使用。

mdadm:md管理器,用户空间工具,将任何块设备做成RAID

mdadm [mode]  <raiddevice> [option] <component-devices>

  创建模式 

         -C

              选项:

                   -l:级别

                       0:RAID0

        1:RAID1

        4:RAID4

        5:RAID5

        6:RAID6

        10:RAID1+0

        -n Num  设备个数

     -x Num  指定空闲个数

     -a {yes|no}  是否自动为其创建设备文件

     -c:指定chunk(条带数据块)大小,2^n

                 -x Num   #指定空闲盘个数,这样坏了1个盘,空闲盘将自动替换已坏的盘。

示例:/dev/sdb创建2G的RAID0,2个1G分区

1.创建分区:/dev/sdb1和/dev/sdb2

#fdisk /dev/sdb

  n --->p---->1---->回车----> +1G

  n---->p---->2----> 回车---->+1G

  t ---->1---->fd

  t---->2----->fd

  w

#partprobo /dev/sdb

#cat /proc/partitions

2.创建RAID

 #mdadm -C  /dev/md0 -a  yes -l 0 -n 2 /dev/sdb{1,2}

。。。

Continue creating array? y   #输入y

。。。

#cat /proc/mdstat    #查看当前系统下,已启用的RAID设备

3.制作文件系统

  #mke2fs -j  /dev/md0

备注:mke2fs -E选项可优化RAID性能

      #mke2fs -j -E stride=16 -b 4096   #块大小4K,chunks=16*4096 (此设置需与raid设置一致才能优化性能) chunks / block = stride(条带)

4.挂载文件系统

#mount /dev/md0   /mnt

5.查看磁盘阵列详细信息

# mdadm -D /dev/md0

  管理模式:

      -f 或 --fail    #模拟损坏

      -r 或 --remove    #将设备移除阵列

      -a 或--add   #增加设备到阵列

示例:/dev/sdb上建立2G镜像卷

1.创建分区/dev/sdb3 /dev/sdb4

#fdisk /dev/sdb

n ---->p----->3----->回车---->+2G

n---->p------>4------>回车---->+2G

t----->3------>fd

t----->3------>fd

w

#partprobe /dev/sdb

#cat /proc/partitions

2.创建RAID

#mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb3 /dev/sdb4

#cat /proc/mdstat

3.制作文件系统

#mke2fs -j /dev/md1

4.挂载文件系统

#mount /dev/md1 /media

5.模拟磁盘损坏

#mdad -f  /dev/md1 /dev/sdb3

6.删掉损坏的磁盘

#mdadm -r /dev/md1 /dev/sdb3

7.重新分区/dev/sdc1(略)

8.将/dev/sdc1加入磁盘阵列

#mdadm -a /dev/md1 /dev/sdc1

   监控模式:

       -F

   增长模式:扩展RAID

       -G

   装配模式:系统坏了,重装RAID到其他系统

        -A

   停止阵列:

         -S --stop

    详细信息:

          -D --detail

           --scan  #将当前RAID信息保存至配置文件,方便日后装配(需与-D结合使用)

             eg:mdadm -D --scan > /etc/mdadm.conf  (主配置文件,再次状态不需指定设备,只需读取此文件即可)

                     mdadm -S /dev/md1

                     mdadm -A /dev/md1  #无需再输入/dev/sdb4 /dev/sdc1

watch 周期性的执行指令

    -n  Num   #指定周期,默认2s

#watch -n Num 'COMMAND'

eg:#watch ’cat /proc/mdstat‘

   

111
原文地址:https://www.cnblogs.com/zmdsg/p/7181414.html