这篇文章详情几种常用的磁盘阵列技术(Raid0、Raid1、Raid4、Raid5、Raid10、Raid01),演示如何在CentOS7环境下使用mdadm命令去创立和维护磁盘阵列;RAID又称“廉价磁盘冗余阵列”,可以使用硬件和软件两种方式来实现,硬件RAID可以参考购买硬件时附带的参考手册,设置方法与软件RAID有差异;现如今软件RAID大多用作研究和熟习RAID的工作方式。
a.Raid0
b.Raid1
c.Raid4
d.Raid5
e.Raid10
f.Raid01
a.试验环境详情
b.创立磁盘阵列Raid10
c.配置开机自启动磁盘阵列
d.将磁盘阵列挂载到目录使用
Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的;也可以用作数据的冗余,当某块硬盘损毁后,其余硬盘可以通过冗余数据计算出损坏磁盘的数据,这样就提高了数据储存的安全性。
Raid0数据储存方法如下(假设有两块硬盘D1、D2):
特点:数据被并行写入每个磁盘,每个磁盘都保存了完整数据的一部分,读取也采用并行方式,磁盘数量越多,读取和写入速度越快。由于没有冗余,一个硬盘坏掉一律数据丢失。至少两块硬盘才能组成Raid0阵列。
容量:所有硬盘之和。
Raid1数据储存方法如下(假设有两块硬盘D1、D2):
特点:有数据冗余,可靠性强,D1、D2被写入相同的数据,其中D2可以作为D1的完整备份。读取时,从两块硬盘上并行读取,写入慢,读取快。任何一块硬盘坏掉不会丢失数据,至少两块硬盘并且两块硬盘大小相等才能组成Raid1阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来做备份)。
Raid4数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:有数据冗余校验,可靠性强。其中任何一块硬盘坏掉都不会引起数据丢失,D1丢失时,D3根据校验和以及D2的数据进行逆运算,计算出D1的数据。但当写入大量数据时校验盘D3会是一个数据瓶颈,导致写入慢。只有当两块磁盘同时丢失时,数据才无法恢复。至少三块硬盘并且磁盘大小应该相等才能组成Raid4阵列(不常用)。
容量:所有硬盘容量之和减去其中一块硬盘的容量。
Raid5数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:采用奇偶校验,可靠性强,磁盘校验和被散列到不同的磁盘里面,添加了读写速率。只有当两块磁盘同时丢失时,数据才无法恢复,至少三块硬盘并且硬盘大小应该相等才能组成Raid5阵列。
容量:所有硬盘容量之和减去其中一块硬盘的容量,被减去的容量被分配到三块硬盘的不同区域用来存放数据校验信息。
Raid10(Raid1+Raid0)是现在比较常用的一种磁盘阵列级别,它的容错好,读写数据效率较高,但经费相对也较高。
Raid10数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:备份和并发式存取数据,可靠性强。D1、D2组成一个阵列Raid1,其中D1是数据盘,D2是备份盘;D3、D4也组成一个Raid1,其中D3是数据盘,D4是备份盘;在这个基础上将D1、D2作为一个整体,将D3、D4也作为一个整体,这两个整体之间再组成一个Raid0阵列。这样不仅仅读取数据会非常快,并发写入的速度也会随着磁盘的增多而变快。至少四块硬盘并且每块硬盘大小应该相等才能组成Raid10阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来备份数据)。
Raid01数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:D1、D2组成一个阵列Raid0,D3、D4也组成一个阵列Raid0,D1、D2和D3、D4再组成一个Raid1。D1和D2作为数据盘阵列,D3和D4作为数据备份阵列,这种方式并不常用,至少四块硬盘并且每块硬盘大小应该相等才能组成Raid01阵列。
容量:所有硬盘容量之和的一半。
这一部分通过Linux上的mdadm命令来实现Raid10磁盘阵列。
试验环境为一台安装了5块硬盘的计算机,操作系统是CentOS7,除系统所在硬盘(/dev/sda)外,其他四块20G的硬盘盘符分别为(/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde);
主要用到的命令:mdadm;
CentOS7中mdadm默认已安装,假如没有安装,可以使用yum在线安装,如下:
#首先确保已经连接到互联网,搜索一下yum服务器上能否存在mdadmqing@qingsword.com:~$ sudo yum search mdadm#根据搜索结果和系统环境选择对应的版本安装qing@qingsword.com:~$ sudo yum install mdadm.x86_64#安装需要root权限,请确保普通客户可用sudo或者切换到root权限操作
到这里,试验的准备工作完成。
#参数详解:# 磁盘阵列创立需要root权限;# -C 创立一个新的RAID起名为md0;# -a yes 自动创立对应设施;# -l 指定RAID级别,本例是10;# -n 活动的磁盘数量(备份盘除外);# 由于RAID10最少需要4块硬盘,后面的sd[b-e]都被增加到md0中;# 假如要创立其余级别的RAID,只要要更改-l参数后的级别,并根据所需要的硬盘的数量更改-n参数后面的数量就可;qing@qingsword.com:~$ sudo mdadm -C /dev/md0 -a yes -l 10 -n 4 /dev/sd[b-e]Continue creating array? (y/n) y #输入y继续#假如每块硬盘容量都很大,RAID的创立不是瞬间完成的,通过查看下面这个文件,可以看到一个创立进度,确保一律完成后再进行下一步qing@qingsword.com:~$ cat /proc/mdstatPersonalities : [raid10][====>................] resync = 24.0%#只有这个到达100%才算完成#查看刚才创立的磁盘阵列md0详细信息qing@qingsword.com:~$ sudo mdadm -D /dev/md0
新创立的磁盘阵列默认是不能开机自启动的,需要手动创立一个配置文件,让系统在启动的时候自动启动Raid(经过测试,CentOS7并不需要创立这个配置文件,假如重启后磁盘阵列没有随机启动,请使用下面的方法配置一次):
#这个配置文件的创立需要root权限才可进行,切换到rootqing@qingsword.com:~$ su root #将mdadm信息写入配置文件root@qingsword.com:~# mdadm -D --scan > /etc/mdadm.conf
#挂载前先需要对磁盘阵列格式化qing@qingsword.com:~$ sudo mkfs.ext4 /dev/md0#挂载,本例挂载到/mnt目录qing@qingsword.com:~$ sudo mount /dev/md0 /mnt#查看已经挂载的设施,可以看到/dev/md0可使用的大小是40G,上面已经详情过,Raid10可用大小是活动硬盘总和的一半qing@qingsword.com:~$ sudo df -hFilesystem Size Used Avail Use% Mounted on.../dev/md0 40G 176M 38G 1% /mnt
可以在创立RAID的时候指定有几块冗余磁盘,当工作磁盘出现故障的时候,冗余磁盘自动启动,顶替出现故障的磁盘继续工作,请看下面的实例:
#假设有6块硬盘,前面4块用作RAID10,后面两块将被用作冗余(参数-x 2表示有2块硬盘用作冗余)qing@qingsword.com:~$ sudo mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 2 /dev/sd[b-g]#查看磁盘阵列详细详细qing@qingsword.com:~$ sudo mdadm -D /dev/md0...Raid Level : raid10...Raid Devices : 4 #参加磁盘阵列硬盘数4Total Devices : 6 #总硬盘数6...Active Devices : 4 #正在工作的硬盘4Working Devices : 6 #能够工作的硬盘6个Failed Devices : 0 #故障硬盘数0Spare Devices : 2 #空闲硬盘数2Number Major Minor RaidDevice State 0 8 16 0 active sync set-A /dev/sdb 1 8 32 1 active sync set-B /dev/sdc 2 8 48 2 active sync set-A /dev/sdd 3 8 64 3 active sync set-B /dev/sde 4 8 80 - spare /dev/sdf #两个冗余磁盘 5 8 96 - spare /dev/sdg
下面手动将一块磁盘标记为故障,看看冗余盘能否起作用:
#将md0中sdc标记为故障qing@qingsword.com:~$ sudo mdadm /dev/md0 -f /dev/sdcmdadm: set /dev/sdc faulty in /dev/md0qing@qingsword.com:~$ sudo mdadm -D...Active Devices : 4Working Devices : 5#还有5个能工作的磁盘(包括剩下冗余的1个)Failed Devices : 1 #坏掉1个Spare Devices : 1 #空闲1个Number Major Minor RaidDevice State 0 8 16 0 active sync set-A /dev/sdb 5 8 96 1 active sync set-B /dev/sdg 2 8 48 2 active sync set-A /dev/sdd 3 8 64 3 active sync set-B /dev/sde 1 8 32 - faulty /dev/sdc 4 8 80 - spare /dev/sdf
如果/dev/sdc经过测试后发现没有问题,想要重新加入md0使用,可以在系统重启后,使用"mdadm /dev/md0 -a /dev/sdc"命令将它重新(增加)启用。
假如以后,想要加入一块新硬盘到这个raid10里作为备份盘,这块新硬盘需要和其余硬盘(或者分区)保持相同的大小,而后使用下面的命令增加:
#增加后,就会在备份列表中看到/dev/sdh这块硬盘了qing@qingsword.com:~$ sudo mdadm /dev/md0 --add /dev/sdh #或者简写命令如下,效果同上qing@qingsword.com:~$ sudo mdadm /dev/md0 -a /dev/sdh
要想彻底清理RAID以及数据,请使用下面的方法:
#1.假如已经挂载,先卸载qing@qingsword.com:~$ sudo umount /dev/md0#2.关闭RAIDqing@qingsword.com:~$ sudo mdadm -S /dev/md0#3.将磁盘sdb至sdf中的所有数据一律用0填充(创立时有多少块硬盘,这里就写多少块,例如上面创立了冗余是从b-g,那么这里就写/dev/sd[b-g])qing@qingsword.com:~$ sudo mdadm --zero-superblock /dev/sd[b-f]#4.删除启动配置文件(假如有)qing@qingsword.com:~$ sudo rm -rf /etc/mdadm.conf