RAID磁盘冗余阵列
RAID:Redundant Arrays of Inexpensive(Independent) Disks 廉价(独立)磁盘冗余阵列
1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for RedundantArrays of Inexpensive Disks”,多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供
RAID功能实现
提高IO能力,磁盘并行读写
提高耐用性,磁盘冗余算法来实现
RAID实现的方式
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现,比如:群晖的NAS
RAID级别
级别:多块磁盘组织在一起的工作方式有所不同
RAID-0:条带卷,strip
RAID-1:镜像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10
RAID-01
RAID级别
RAID 0
建议大小一样
读、写性能提升
可用空间:N*min(S1,S2,...),磁盘利用率100%
每个硬盘同时写入,无容错能力
最少磁盘数:2, 2+
RAID 1
读性能提升、写性能略有下降
删除数据,如果是两块磁盘,就两块磁盘一起删除,raid是防物理的,删除了就没有了
可用空间:1*min(S1,S2,...),磁盘利用率50%
有备份数据,有冗余能力,(可以坏一块硬盘)但是删除如上
最少磁盘数:2, 2N
RAID 4
多块数据盘异或运算值存于专用校验盘
磁盘利用率 (N-1)/N
有冗余能力
至少3块硬盘才可以实现
RAID 5
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
RAID 6
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+
RAID 1 0
读、写性能提升
可用空间:N*min(S1,S2,...)/2,磁盘利用率50%
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
坏的几率是1/3
RAID 0 1
多块磁盘先实现RAID0,再组合成RAID1,磁盘利用率50%
坏的几率2/3
RAID 5 0
多块磁盘先实现RAID5,再组合成RAID0
其他级别
JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用
可用空间:sum(S1,S2,...)
常用级别:
RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
RAID等级 | 最少硬盘 | 最大容错 | 可用容量 | 读取性能 | 写入性能 | 安全性 | 目的 | 安全性目的应用场景 |
---|---|---|---|---|---|---|---|---|
单一硬盘 | (参考) | 0 | 1 | 1 | 1 | 无 | ||
JBOD | 1 | 0 | n | 1 | 1 | 无(同RAID0) | 增加容量 | 个人(暂时)存储备份 |
0 | 1 | 0 | n | n | n | 一个硬盘异常,全部硬盘都会异常 | 追求最大容量、速度 | 影片剪接缓存用途 |
1 | 2 | n-1 | 1 | n | 1 | 高,一个正常即可 | 追求最大安全性 | 个人、企业备份 |
5 | 3 | 1 | n-1 | n-1 | n-1 | 高 | 追求最大容量、最小预算 | 个人、企业备份 |
6 | 4 | 2 | n-2 | n-2 | n-2 | 安全性较RAID5高 | 同RAID 5,但较安全 | 个人、企业备份 |
10 | 4 | 高 | 综合RAID 0/1优点,理论速度较快 | 大型数据库、服务器 | ||||
50 | 6 | 高 | 提升数据安全 | |||||
60 | 8 | 高 | 提升数据安全 |
实现软RAID
mdadm工具:为软RAID提供管理界面,为空余磁盘添加冗余,结合内核中的md(multi devices)
RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等
mdadm:模式化的工具,支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
命令的语法格式:
mdadm [mode] <raiddevice> [options] <component-devices>
常用选项说明
模式:
创建: -C
装配: -A
监控: -F
管理: -f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C 创建模式
-n # 使用#个块设备来创建此RAID
-l # 指明要创建的RAID的级别
-a {yes|no} 自动创建目标RAID设备的设备文件
-c CHUNK_SIZE 指明块大小,单位k
-x # 指明空闲盘的个数
-D 显示raid的详细信息
mdadm -D /dev/md#
管理模式:
-f 标记指定磁盘为损坏
-a 添加磁盘
-r 移除磁盘
观察md的状态: cat /proc/mdstat
范例
#使用mdadm创建并定义RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
#用文件系统对每个RAID设备进行格式化
mkfs.xfs /dev/md0
#使用mdadm检查RAID设备的状况
mdadm --detail|D /dev/md0
#增加新的成员
mdadm –G /dev/md0 –n4 -a /dev/sdf1
#模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
#移除磁盘
mdadm /dev/md0 –r /dev/sda1
#在备用驱动器上重建分区
mdadm /dev/md0 -a /dev/sda1
#系统日志信息
cat /proc/mdstat
生成配置文件
mdadm –D –s >> /etc/mdadm.conf
停止设备
mdadm –S /dev/md0
激活设备
mdadm –A –s /dev/md0
强制启动
mdadm –R /dev/md0
删除 RAID 信息
mdadm --zero-superblock /dev/sdb1