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

RAID 0:(String 条带模式)

要求:至少需要两块磁盘

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

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

RAID 1:(Mirroring 镜像卷)

要求:至少需要两块磁盘

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

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

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

上表中的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 擦除设备中的超级块

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

RAID 0、1、5、1+0总结的更多相关文章

  1. js正则表达式校验非负浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. [转]IIS6.0迁移至IIS7.0

    原文地址:http://www.splaybow.com/post/iis-6.0-7.0.html 公司的项目需要迁移到IIS7的目标机器中 在此做记录 原来server 2003系统 迁到2008 ...

  3. 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

    编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的“设 ...

  4. iis7.0上发布mvc4.0网站

    步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...

  5. IIS6.0添加上.net4.0后,以前的.net系统出现“服务器应用程序不可用”的错误提示解决办法

    把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET ...

  6. Swift 3.0 【Swift 3.0 相较于 Swift 2.2 的变化】

    一.编译器和语法变化 函数或方法参数 调用函数或方法时从第一个参数开始就必须指定参数名 在Swift的历史版本中出现过在调用函数时不需要指定任何函数参数(或者从第二个参数开始指定参数名),在调用方法时 ...

  7. 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

    分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...

  8. Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录

    最近工作需要,开始研究ES,当前ES的最新版本为5.0.1,从之前的2.x的版本号一下升级到5.x,主要是之前Elastic的产品版本号因为收购等原因很乱,ES 2.X版本的和Kibana 4.x版本 ...

  9. Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8)

    Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8) 本次演示为升级oracle rac数据库,用GI的psu升级,从11.2.0.4.0升级到11.2.0.4.8 ...

  10. elasticsearch5.0集群+kibana5.0+head插件插件的安装

    elasticsearch5.0集群+kibana5.0+head插件插件的安装 es集群的规划: 两台16核64G内存的服务器: yunva_etl_es1  ip:1.1.1.1 u04es01. ...

随机推荐

  1. intellij IDEA 更新java后不用重启tomcat

    最近项目大了,每次修改后重启都要等和很久,那个煎熬…… 为了解决这个问题,万能的Google  装了这个  JREBEL 5.63最新的 安装步骤: 一.IDEA在线搜索 jrebel  安装 二.破 ...

  2. mongodb的安装、配置、常见问题

    一.MongoDB下载 mongodb可以在官网找到下载链接,找到合适的版本进行下载.下载地址->https://www.mongodb.com/download-center?jmp=nav# ...

  3. 动态预览Xib的实现

    写一个TestView继承于UIView,然后写个对应的xib,把xib的名字设置成TestView,这是标准的用xib加载这个view必须得条件 然后xib里把这个View的backgroundCo ...

  4. [RK3288]PMU配置(RK808)【转】

    本文转载自:http://www.javashuo.com/content/p-6398007.html 硬件原理 pmic 电路原理 平台概述 RK808 PWM 介绍 驱动分析 dts 驱动流程 ...

  5. UUIDUtils

    package com.cc.hkjc.util; import java.util.UUID; /** * 字符串工具类 *  * @author:匿名 *  */public class UUID ...

  6. 并不对劲的bzoj4804:欧拉心算

    题目大意 \(t\)(\(t\leq5000\))组询问,每次询问给出\(n\)(\(n\leq10^7\)),求: \[\sum_{i=1}^{n}\sum_{j=1}^{n}\phi(gcd(i, ...

  7. Linux和windows下执行sql脚本文件

    利用 sqlplus 登录数据库之后 键入: @/全路径/文件名      即可执行*.sql 文件            例 假设有一个 test.sql 文件 所在路径是/home/oracle/ ...

  8. codeforces 126B

    Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temple. ...

  9. 洛谷 - P1044 - 栈 - 简单dp

    https://www.luogu.org/problemnew/show/P1044 由于是用标签搜索进来的,所以这道题一定是有dp的解法. 很显然规定每次加入元素之前可以从栈中清理出任意数量的元素 ...

  10. hdoj2859【DP基础】

    /* 看题解A的. 总结:小矩阵--> 大矩阵 dp[i][j]=min(t,dp[i-1][j+1]+1); */ #include <iostream> #include < ...