主要内容介绍
RAID的介绍
madam工具介绍
创建RAID
RAID管理
RAID的介绍
总体介绍
独立磁盘冗余数组(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余数组(RAID, Redundant Array ofInexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为了玩家的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。
优点:
(1) RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)
(2) 通过数据校验,RAID可以提供容错功能
分类:
(1) 纯软件磁盘阵列(Pure Software RAID):只需要主板支持即可,不需要任何磁盘阵列卡。
(2) 硬件辅助磁盘阵列(Hardware-Assisted RAID):需要一张磁盘阵列卡,以及磁盘阵列卡厂商所提供的驱动程序。
RAID等级(介绍常用的三种)
RAID0:将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失,危险程度与JBOD相当。
RAID1:两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高。RAID 1就是镜像。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID上磁盘利用率最低的一个级别。
RAID5:采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分区后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。
RAID等级 | 需要硬盘数 | 最小容错硬盘数 | 可用容量 | 性能 | 安全性 | 目的 | 应用产业 |
0 | ≧2 | 0 | n | 最高 | 低 | 追求最大容量、速度 | 3D产业实时渲染、视频剪接高速缓存用途 |
1 | ≧2 | 总数一半 | 总量一半 | 少有提升 | 最高 | 追求最大安全性 | 个人、企业备份 |
5 | ≧3 | 1 | n-1 | 高 | 高 | 追求最大容量、最小预算 | 个人、企业备份 |
热备份(Hot Spare):与CPU系统带电连接的硬盘,它能替换下系统中的故障盘。与冷备份的区别是,冷备份盘平时与机器不相连接,硬盘故障时才换下故障盘。
madam工具介绍
mdadm(multiple devices admin)是 linux下标准的的软raid管理工具,是一个模式化工具(在不同的模式下);程序工作在内存用户程序区,为用户提供RAID接口来操作内核的模块,实现各种功能;
基本语法
mdadm [mode] <raiddevice> [options] <component-devices>
模式(RHEL6下):
madam一共有共有9种模式:Assemble, Build,Create, Follow or Monitor, Grow, Incremental Assembly, Manager, Misc, Autodetect.
本文主要讲解Assemble:
-a {yes|no}: 是否为新建的raid设备自动创建设备文件/dev/md#;
-l : 指定Raid级别;
-n : 指定用于Raid的块设备的个数;不包括备盘;
-c :制定chunk大小,chunk为数据分块放到物理硬盘上的大小
-x : 指定用于备盘的块设备个数
创建RAID(以RAID5例)
1.分区准备
准备用/dev/sdb1, /dev/sdc1, /dev/sdd1组成RAID5,然后/dev/sda9用作热备份。
#分区如下 Device Boot Start End Blocks Id System /dev/sda9 3456 4761 10488205 fd Linux raid autodetect /dev/sdb1 1 1306 10490413+ fd Linux raid autodetect /dev/sdc1 1 1306 10490413+ fd Linux raid autodetect /dev/sdd1 1 1306 10490413+ fd Linux raid autodetect
注:分好区,不重启,直接让内核加载分区的方法。
RHEL5时
# partprobe
RHEL6时
# partx -a /dev/sdd BLKPG: Device or resource busy # partx -a /dev/sdd1 /dev/sdd
2. 创建RAID5
/dev/sdb1和/dev/sdc1由于之前做过RAID,所以会出现下面情况
# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sda9 mdadm: /dev/sdb1 appears to be part of a raid array: level=raid5 devices=3 ctime=Tue Oct 1 19:02:32 2013 mdadm: /dev/sdc1 appears to be part of a raid array: level=raid5 devices=3 ctime=Tue Oct 1 19:02:32 2013 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
3. 查看阵列情况
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sda9[3](S) sdc1[1] sdb1[0] 20963328 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
通过cat /proc/mdstat信息查看所有运行的RAID阵列的状态,在第一行中首先是MD的设备名md0,active和inactive选项表示阵列是否能读/写,接着是阵列的RAID级别raid5,后面是属于阵列的块设备,方括号[]里的数字表示设备在阵列中的序号,(S)表示其是热备盘,(F)表示这个磁盘是 faulty状态。下一行中首先是阵列的大小,用块数来表示;后面有chunk-size的大小,然后是layout类型,不同RAID级别的 layout类型不同,[3/3] [UUU]表示阵列有3个磁盘并且3个磁盘都是正常运行的,而[2/3]和[_UU] 表示阵列有3个磁盘中2个是正常运行的,下划线对应的那个位置的磁盘是faulty状态。
要查看更详细的信息
# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Oct 7 22:35:05 2013 Raid Level : raid5 Array Size : 20963328 (19.99 GiB 21.47 GB) Used Dev Size : 10481664 (10.00 GiB 10.73 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Oct 7 22:36:26 2013 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Name : FLyence.Wu:0 (local to host FLyence.Wu) UUID : 9c64a911:b493c140:b88fb98f:5e429ec3 Events : 18 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 3 8 9 - spare /dev/sda9
4. mdadm.conf配置文件
mdadm.conf是该软件的默认配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。其中写入每一个阵列组成的详细情况,用于在下次开启阵列后依据此文件重新装配(assemble)开启阵列,否则就需要在开启时手动定义阵列中的成员;当然是推荐创建该文件,防止出现意外情况,具体的详细配置及示例可以参看man文档# man mdadm.conf。
若不配置该文件,重新开机的时候,配置的md0会消失,变为md126
mdadm -Ds >> /etc/man.conf
5. 格式化md0
# mkfs.ext /dev/md0
将md0格式化为ext4。
6. 挂载md0
# mount /dev/md0 /mnt
7. 开机挂载md0
1 2 # 3 # /etc/fstab 4 # Created by anaconda on Fri Sep 27 14:58:41 2013 5 # 6 # Accessible filesystems, by reference, are maintained under '/dev/disk' 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 UUID=ca3b7678-7fc9 / ext4 defaults 1 1 10 UUID=70a23119-c173 /boot ext4 defaults 1 2 11 UUID=2f2b2e90-298c /home ext4 defaults 1 2 12 UUID=ed19a022-71af /usr ext4 defaults 1 2 13 UUID=0bcd9605-3cb7 swap swap defaults 0 0 14 tmpfs /dev/shm tmpfs defaults 0 0 15 devpts /dev/pts devpts gid=5,mode=620 0 0 16 sysfs /sys sysfs defaults 0 0 17 proc /proc proc defaults 0 0 18 /dev/sda7 swap swap defaults 0 0 19 /dev/md0 /mnt ext4 defaults,acl 0 0
在挂载后加参数acl,启用facl。
RAID的管理
1. 将某个分区设为故障
# mdadm /dev/md0 -f /dev/sdb1 # cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sda9[3] sdc1[1] sdb1[0](F) 20963328 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU] [=>...................] recovery = 7.9% (831104/10481664) finish=1.9min speed=83110K/sec md1 : inactive sda8[0](S) 10482221 blocks super 1.2 unused devices: <none>
将sdb1设为故障,查看md0情况,正在重建恢复中。
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sda9[3] sdc1[1] sdb1[0](F) 20963328 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU] [=>...................] recovery = 9.0% (948100/10481664) finish=2.1min speed=72930K/sec md1 : inactive sda8[0](S) 10482221 blocks super 1.2 unused devices: <none> [root@FLyence ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Oct 7 22:35:05 2013 Raid Level : raid5 Array Size : 20963328 (19.99 GiB 21.47 GB) Used Dev Size : 10481664 (10.00 GiB 10.73 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Oct 7 23:17:32 2013 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 20% complete Name : FLyence.Wu:0 (local to host FLyence.Wu) UUID : 9c64a911:b493c140:b88fb98f:5e429ec3 Events : 23 Number Major Minor RaidDevice State 3 8 9 0 spare rebuilding /dev/sda9 1 8 33 1 active sync /dev/sdc1 4 8 49 2 active sync /dev/sdd1 0 8 17 - faulty spare /dev/sdb1
2. 移除故障分区
# mdadm /dev/md0 -r /dev/sdb1 mdadm: hot removed /dev/sdb1 from /dev/md0
3. 删除阵列
# umount /dev/md0 # mdadm -Ss /dev/md0 # mdadm --zero-superblock /dev/sd{b,c,d}1 # --zero-superblock 加上该选项时,会判断如果该阵列是否包 # 含一个有效的阵列超级快,若有则将该超级块中阵列信息抹除。 # rm /etc/mdadm.conf