软件磁盘阵列(RAID)
RAID软件磁盘阵列
RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护。RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能.
软件磁盘整列通过mdadm命令创建.
RAID等级
- RAID-0: 等量模式,stripe,性能较佳,磁盘利用率100%
- RAID-1: 镜像模式,mirror,安全性较佳,磁盘利用率50%
- RAID-0+1: 先组成RAID-0,再有RAID-0组成RAID-1 性能安全兼顾,磁盘利用率50%
- RAID-1+0:先组成RAID-1,再有RAID-1组成RAID-0 性能安全兼顾,磁盘利用率50%
- RAID-5: 等量模式与分布式奇偶校验,性能与安全份均衡,磁盘可用量等于n-1
- RAID-6: 等量模式与双分布式奇偶校验,性能与安全均衡,磁盘可用量等于n-2
RAID-0测试
RAID-0是等量模式,最好由两块相同型号,相同容量的磁盘来组成.这种模式的RAID会将磁盘想切除等量的区块(chunk),当有存储文件需求时,就会先把文件切割成一定数目的区块,然后依次存入各个磁盘上.如图示

下面是使用mdadm工具创建RAID-0过程
- 创建两个1G的分区/dev/vdb10,/dev/vdb11
- 使用mdadm工具创建raid0磁盘阵列,命名为/dev/md0
###新建分区/dev/vdb10,/dev/vdb11略过 [root@zwj ~]# mdadm --create /dev/md0 --level= --raid-devices= /dev/vdb10 /dev/vdb11 #同mdadm -C /dev/md0 -l raid0 -n 2 /dev/vdb10 /dev/vdb11 ,-C 接阵列名,-l接等级,-n 接使用磁盘数
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started. [root@zwj ~]# mdadm -E /dev/vdb10 /dev/vdb11 #查看阵列中的磁盘信息
/dev/vdb10:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Name : zwj: (local to host zwj)
Creation Time : Sun May ::
Raid Level : raid0
Raid Devices : Avail Dev Size : (1023.70 MiB 1073.43 MB)
Data Offset : sectors
Super Offset : sectors
Unused Space : before= sectors, after= sectors
State : clean
Device UUID : c645eb97:9dc15ee8:9148e372:0c26b998 Update Time : Sun May ::
Bad Block Log : entries available at offset sectors
Checksum : 402c224f - correct
Events : Chunk Size : 512K Device Role : Active device
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/vdb11:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Name : zwj: (local to host zwj)
Creation Time : Sun May ::
Raid Level : raid0
Raid Devices : Avail Dev Size : (1023.70 MiB 1073.43 MB)
Data Offset : sectors
Super Offset : sectors
Unused Space : before= sectors, after= sectors
State : clean
Device UUID : 54fd15e5:8ed74a79:0b1efd81:7995a016 Update Time : Sun May ::
Bad Block Log : entries available at offset sectors
Checksum : ab4434b5 - correct
Events : Chunk Size : 512K Device Role : Active device
Array State : AA ('A' == active, '.' == missing, 'R' == replacing) [root@zwj ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid0
Array Size : (2047.00 MiB 2146.44 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : Chunk Size : 512K Name : zwj: (local to host zwj)
UUID : d26ff510:82cc5acf:b823eaae:c98c2e8f
Events : Number Major Minor RaidDevice State
active sync /dev/vdb10
active sync /dev/vdb11 [root@zwj ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 vdb11[1] vdb10[0]
blocks super 1.2 512k chunks unused devices: <none>
[root@zwj ~]# mkdir -p /mnt/raid0 #创建挂着目录
[root@zwj ~]# mkfs.ext3 /dev/md >/dev/null
[root@zwj ~]# mount /dev/md0 /mnt/raid0
[root@zwj ~]# df
。。。
/dev/md0 2.0G 236M 1.7G 13% /mnt/raid
RAID-1测试
RAID-1是镜像模式,最好由两块相同型号,相同容量的磁盘来组成.这种模式的RAID有点主要是数据的备份,但磁盘使用率低.如图示

[root@zwj raid1]# fdisk -l |grep "/dev/vdb1[2-9]" #新建分区为200M
/dev/vdb12 56186 56592 205096+ 83 Linux
/dev/vdb13 56593 56999 205096+ 83 Linux [root@zwj raid0]# mdadm -C /dev/md1 -l 1 -n 2 /dev/vdb{12,13}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@zwj raid0]# mdadm -E /dev/vdb12 /dev/vdb13
/dev/vdb12:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
Name : zwj:1 (local to host zwj)
Creation Time : Sun May 7 19:49:56 2017
Raid Level : raid1
Raid Devices : 2 Avail Dev Size : 409905 (200.15 MiB 209.87 MB)
Array Size : 204928 (200.13 MiB 209.85 MB)
Used Dev Size : 409856 (200.13 MiB 209.85 MB)
Data Offset : 288 sectors
Super Offset : 8 sectors
Unused Space : before=200 sectors, after=49 sectors
State : clean
Device UUID : e4909dcf:f2fb8812:0c5a70cb:021dd248 Update Time : Sun May 7 19:49:58 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 4478c6ef - correct
Events : 17 Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/vdb13:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
Name : zwj:1 (local to host zwj)
Creation Time : Sun May 7 19:49:56 2017
Raid Level : raid1
Raid Devices : 2 Avail Dev Size : 409905 (200.15 MiB 209.87 MB)
Array Size : 204928 (200.13 MiB 209.85 MB)
Used Dev Size : 409856 (200.13 MiB 209.85 MB)
Data Offset : 288 sectors
Super Offset : 8 sectors
Unused Space : before=200 sectors, after=49 sectors
State : clean
Device UUID : 170d0094:52cdc3d9:993a58b1:b2f3c341 Update Time : Sun May 7 19:49:58 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : aeefcbc0 - correct
Events : 17 Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
[root@zwj ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sun May 7 19:49:56 2017
Raid Level : raid1
Array Size : 204928 (200.13 MiB 209.85 MB)
Used Dev Size : 204928 (200.13 MiB 209.85 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent Update Time : Sun May 7 19:49:58 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0 Name : zwj:1 (local to host zwj)
UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
Events : 17 Number Major Minor RaidDevice State
0 252 28 0 active sync /dev/vdb12
1 252 29 1 active sync /dev/vdb13 [root@zwj ~]# mkfs.ext3 /dev/md1 >/dev/null
[root@zwj ~]# mkdir -p /mnt/raid1
[root@zwj ~]# mount /dev/md1 /mnt/raid1
[root@zwj ~]# cd /mnt/raid1/
[root@zwj raid1]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G 5.9G 69% /
/dev/vdb1 20G 936M 18G 5% /mydata
/dev/md127 2.0G 236M 1.7G 13% /mnt/raid0
/dev/md1 194M 5.6M 179M 4% /mnt/raid1 #只有200M #删除/dev/vdb13
[root@zwj ~]# mdadm --detail /dev/md126
/dev/md126:
Version : 1.2
Creation Time : Sun May 7 19:49:56 2017
Raid Level : raid1
Array Size : 204928 (200.13 MiB 209.85 MB)
Used Dev Size : 204928 (200.13 MiB 209.85 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent Update Time : Sun May 7 20:14:10 2017
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0 Name : zwj:1 (local to host zwj)
UUID : 0855d3d3:502aa3e1:9a09f0e8:abdb1e1a
Events : 23 Number Major Minor RaidDevice State
0 252 28 0 active sync /dev/vdb12
2 0 0 2 removed [root@zwj ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G 5.9G 69% /
/dev/vdb1 20G 936M 18G 5% /mydata
/dev/md126 194M 5.6M 179M 4% /mnt/raid1
RAID-10测试
RAID 10 是组合 RAID 1 和 RAID 0 形成的。要设置 RAID 10,我们至少需要4个磁盘,提供更好的性能,在 RAID 10 中我们将失去一半的磁盘容量,读与写的性能都很好,因为它会同时进行写入和读取,它能解决数据库的高 I/O 磁盘写操作,也保证了数据的安全.

我们使用四个分区测试/dev/vdb{12..15} 大小各为200M
[root@zwj ~]# mdadm -C /dev/md10 -l -n /dev/vdb{..}
mdadm: /dev/vdb13 appears to be part of a raid array:
level=raid1 devices= ctime=Sun May ::
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
[root@zwj ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid10
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : near=
Chunk Size : 512K
Name : zwj: (local to host zwj)
UUID : 3d1b1b2e:daa4597f:bf838bd1:c6b82c78
Events :
Number Major Minor RaidDevice State
active sync set-A /dev/vdb12
active sync set-B /dev/vdb13
active sync set-A /dev/vdb14
active sync set-B /dev/vdb15
[root@zwj ~]# mkfs.ext3 /dev/md10 >/dev/null
[root@zwj ~]# mkdir /mnt/raid10;mount /dev/md10 /mnt/raid10
[root@zwj ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G 5.9G 69% /
/dev/vdb1 20G 936M 18G 5% /mydata
/dev/md10 386M 11M 356M 3% /mnt/raid10
除了上面的方法,还有一种创建RAID-10的方法,先使用4个分区创建两个RAID-1,/dev/md1和/dev/md2
再使用/dev/md1和/dev/md2创建一个RAID-0,/dev/md10
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/vdb12 /dev/vdb13mdadm --create /dev/md2 --level=1 --raid-devices=2/dev/vdb14 /dev/vdb15mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md1 /dev/md2
RAID-5测试
奇偶校验信息存储在每个磁盘中,比如说,我们有4个磁盘(预备磁盘不计入内),其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一个磁盘出现故障,我们可以通过更换故障磁盘后,从奇偶校验信息重建得到原来的数据。
特点:
- 提供更好的性能。
- 支持冗余和容错。
- 支持热备份。
- 将用掉一个磁盘的容量存储奇偶校验信息。
- 单个磁盘发生故障后不会丢失数据。我们可以更换故障硬盘后从奇偶校验信息中重建数据。
- 适合于面向事务处理的环境,读操作会更快。

[root@zwj ~]# mdadm --create /dev/md5 -l -n --spare-devices= /dev/vdb{,,,}
mdadm: /dev/vdb12 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb13 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb14 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
mdadm: /dev/vdb15 appears to be part of a raid array:
level=raid10 devices= ctime=Sun May ::
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@zwj ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : left-symmetric
Chunk Size : 512K
Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events :
Number Major Minor RaidDevice State
active sync /dev/vdb12
active sync /dev/vdb13
active sync /dev/vdb14
- spare /dev/vdb15
[root@zwj ~]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 vdb14[] vdb15[](S) vdb13[] vdb12[]
blocks super 1.2 level , 512k chunk, algorithm [/] [UUU]
unused devices: <none>
[root@zwj ~]# mkfs.ext3 /dev/md5 >/dev/null
[root@zwj ~]# mkdir -p /mnt/raid5
[root@zwj ~]# mount /dev/md5 /mnt/raid5
[root@zwj ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G .9G % /
/dev/vdb1 20G 936M 18G % /mydata
/dev/md5 386M 11M 356M % /mnt/raid5
[root@zwj ~]# cd /mnt/raid5
[root@zwj raid5]# dd if=/dev/zero of=50_M_file bs=1M count=
+ records in
+ records out
bytes ( MB) copied, 0.1711 s, MB/s
[root@zwj raid5]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G .9G % /
/dev/vdb1 20G 936M 18G % /mydata
/dev/md5 386M 61M 306M % /mnt/raid5
[root@zwj raid5]# echo "assume /dev/vdb13 fail---";mdadm --manage /dev/md5 --fail /dev/vdb13;mdadm -D /dev/md5 #模拟/dev/vdb13损坏
assume /dev/vdb13 fail---
mdadm: set /dev/vdb13 faulty in /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Sun May ::
State : clean, degraded, recovering
Active Devices : 2 #活跃的2个磁盘,因为坏了1个
Working Devices : 3 #处于工作状态的有3个,1个spare
Failed Devices : 1 #坏了1个
Spare Devices : 1 #1个spare
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 0% complete
Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events :
Number Major Minor RaidDevice State
active sync /dev/vdb12
3 252 31 1 spare rebuilding /dev/vdb15 #正在自动重建RAID5
active sync /dev/vdb14
1 252 29 - faulty /dev/vdb13 #显示循坏的/dev/vdb13
[root@zwj raid5]# mdadm -D /dev/md5 #检查是否重建完毕
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : 0 #没有备用的了
Layout : left-symmetric
Chunk Size : 512K
Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events :
Number Major Minor RaidDevice State
active sync /dev/vdb12
3 252 31 1 active sync /dev/vdb15
active sync /dev/vdb14
1 252 29 - faulty /dev/vdb13
[root@zwj raid5]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 vdb14[4] vdb15[3] vdb13[1](F) vdb12[0]
blocks super 1.2 level , 512k chunk, algorithm [/] [UUU]
unused devices: <none>
[root@zwj raid5]# mdadm --manage /dev/md5 --remove /dev/vdb13 --add /dev/vdb13;mdadm -D /dev/md5 #移除损坏的/dev/vdb13,并加入新的分区(这里还是/dev/vdb13)
mdadm: hot removed /dev/vdb13 from /dev/md5
mdadm: added /dev/vdb13
/dev/md5:
Version : 1.2
Creation Time : Sun May ::
Raid Level : raid5
Array Size : (398.00 MiB 417.33 MB)
Used Dev Size : (199.00 MiB 208.67 MB)
Raid Devices :
Total Devices :
Persistence : Superblock is persistent
Update Time : Sun May ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices :
Layout : left-symmetric
Chunk Size : 512K
Name : zwj: (local to host zwj)
UUID : 27119caa:5e2deb6e:427c4d7f:536669ca
Events :
Number Major Minor RaidDevice State
active sync /dev/vdb12
active sync /dev/vdb15
active sync /dev/vdb14
252 29 - spare /dev/vdb13
[root@zwj raid5]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 13G 5.9G 69% /
/dev/vdb1 20G 936M 18G 5% /mydata
/dev/md5 386M 61M 306M 17% /mnt/raid5
软件磁盘阵列(RAID)的更多相关文章
- 软件磁盘阵列 (Software RAID)
什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较 ...
- Linux学习-软件磁盘阵列 (Software RAID)
什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容错式廉价磁盘阵列.RAID 可以透过一个技术(软件或硬 ...
- linux基础-磁盘阵列(RAID)实例详解
磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 R ...
- 磁盘阵列RAID
磁盘阵列RAID 年提出的.RAID名为独立 ...
- 存储之磁盘阵列RAID
存储之磁盘阵列RAID RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的.RAID名为独立冗余磁盘阵列(RedundantArray of Indepe ...
- 如何判断linux使用的是HDD还是SSD、HHD;磁盘阵列RAID
硬盘种类:SSD固态硬盘.HDD机械硬盘.HHD混合硬盘(里面既有机械硬盘也有固态硬盘,固态硬盘用来高速缓存,机械硬盘用来存储). HHD是机械硬盘和固态硬盘的结合体.我们可以理解为其就是两块硬盘,固 ...
- (转)磁盘阵列RAID原理、种类及性能优缺点对比
磁盘阵列RAID原理.种类及性能优缺点对比 原文:http://www.cnblogs.com/chuncn/p/6008173.html 磁盘阵列(Redundant Arrays of Indep ...
- 一张图看懂单机/集群/热备/磁盘阵列(RAID)
- 磁盘阵列 RAID 技术原理详解
RAID一页通整理所有RAID技术.原理并配合相应RAID图解,给所有存储新人提供一个迅速学习.理解RAID技术的网上资源库,本文将持续更新,欢迎大家补充及投稿.中国存储网一如既往为广大存储界朋友提供 ...
随机推荐
- Atitit.跨语言 文件夹与文件的io操作集合 草案
Atitit.跨语言 文件夹与文件的io操作集合 草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...
- 基于dsp_builder的算法在FPGA上的实现
基于dsp_builder的算法在FPGA上的实现 一.摘要 结合dsp_builder.matlab.modelsim和quartus ii等软件完成算法的FPGA实现. 二.实验平台 硬件平台 ...
- 详解TCP建立连接全过程
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A是TCP客户端,B是服务端.最初两端的TCP进程都处于CLOSED状态 ...
- undefined reference to `shm_unlink'
1.问题描述: 在编译一个程序的时候提示这样的错误: BLog.cpp:(.text+0x5fc): undefined reference to `shm_unlink'DBLog.cpp:(.te ...
- OC-1-面向对象
课程要点: C语言是一种面向过程的语言,OC是一种面向对象的语言 类与对象的关联 如何在xcode中创建一个类 如何在类中标记该类事物的属性和动作 C语言是一种面向过程的语言,OC是一种面向对象的语言 ...
- Python的open函数
打开一个文件并向其写入内容 Python的open方法用来打开一个文件.第一个參数是文件的位置和文件名称.第二个參数是读写模式.这里我们採用w模式,也就是写模式.在这样的模式下,文件原有的内容将会被删 ...
- svn删除账户信息
当我们需要清理eclipse中记录的SVN账号信息时,按如下操作: eclipse中打开window------>preferences------->SVN页面,如下所示: 一般情况下, ...
- 一种安全云存储方案设计(下)——基于Lucene的云端搜索与密文基础上的模糊查询
一种安全的云存储方案设计(未完整理中) 一篇老文了,现在看看错漏颇多,提到的一些技术已经跟不上了.仅对部分内容重新做了一些修正,增加了一些机器学习的内容,然并卵. 这几年来,云产品层出不穷,但其安全性 ...
- python 装饰器 (多个参数的函数,带参数的装饰器)
最简单的模板是这样的 #-*-coding:utf-8-*- def outer(func): def inner(): print 'before' func() print 'after' # r ...
- windows无法设置防火墙
无法打开防火墙,出现错误代码0x80070422,解决方法:windows开始键->运行->调出运行窗口,输入services.msc,(或者控制面板->管理工具->服务)找到 ...