软件磁盘阵列(RAID)
单块硬盘太小时,我们可以通过软件磁盘阵列这种机制,通过一些技术(软件或者硬件)将多个较小的磁盘合成为一个较大的磁盘设备;这个较大的磁盘不止是进行存储,还具有数据保护的功能。
磁盘阵列的重点在于数据的安全与可靠性。
RAID由于选择的等级不同,而使整合的磁盘有不同的功能,常见有以下几种:
RAID-0(等量模式) :性能最佳
将 N 块磁盘(这N块磁盘最好一样)组合成一块,每个磁盘会交错存放数据,因此当你的数据要写入RAID时,数据会被放置在各个磁盘上。
越多块磁盘组成的RAID-0性能越好,因为每块负责的数据量更低。但若有一块磁盘随坏时,在RAID上面的所有数据都会丢失而无法读取。
RAID-1(映像模式) :完整备份
最好是一样的磁盘,如果磁盘容量不一样,组成的RAID-1总容量将以最小的那块磁盘为主。这种模式主要是让同一份数据完整保存在两块磁盘上面。
一份数据会被复制写入到其他不同磁盘,因此在大量写入数据时,写入的性能可能变得非常差,但读取的性能较好。
RAID-1最大的优点在于备份,当任何一块硬盘损坏时,数据也能完整保存下来,但磁盘的利用率只会是50%。
RAID 0+1,RAID 1+0
RAID 0 :性能佳但是数据不安全。
RAID 1 :数据安全但是性能不佳。
RAID 0+1 :先让两块磁盘组成RAID 0,并且这样的设置会有两组,然后将这两组RAID 0再组成一组 RAID 1.这就是RAID 0+1;相反的就是RAID 1+0。
RAID-5:性能与数据备份的均衡考虑
RAID-5至少要三块磁盘磁能组成这种类型的磁盘阵列。数据写入有点类似 RAID-0,不过每个循环的写入过程中,在每块磁盘还加入一个同位检查数据,用以记录其他磁盘的备份数据,当有磁盘损坏时可以进行救援。
这样会使整体磁盘存储数量减少一块,当有一块损坏时可以救援,但是损坏两块或者以上时就没办法了。因为还要计算同位检验码,因此写入的性能一致。
RAID-6:用两块磁盘的容量作为parity的存储,因此磁盘的整体数量会减一,但同时允许两块磁盘损坏,增加了安全性。
硬件磁盘阵列:通过磁盘阵列卡来完成数组的目的。磁盘阵列卡上面有一块专门的芯片在处理RAID的任务,因此速度比较好。但是价格很贵,因此才有了软件磁盘阵列。但软件磁盘阵列耗费的系统资源多。
硬件磁盘阵列的设备名: /dev/sd[a-p]
软件磁盘阵列的设备名: /dev/md0,/dev/md1
软件磁盘阵列的设置
#mdadm --detail /dev/md0
#mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N \
>--level=[015] --spare-devices=N /dev/sdx /dev/sdx ..
参数:
--create: 为新建RAID的参数。
--auto=yes: 决定新建后面接的软件磁盘阵列设备,即 /dev/md0,/dev/md1等。
--raid-devices=N: 使用几个磁盘作为磁盘阵列的设备。
--spare-devices=N: 使用几个磁盘作为备用设备。
--level=[015] : 设置这组磁盘阵列的等级。支持很多,不过建议只使用0,1,5.
--detail: 后面接那个磁盘组阵列设备的详细信息。
上面语法的最后面会接很多的设备文件名,这些设备文件名可以是整块磁盘,如 /dev/sdb,也可以是分区,如/dev/sdb1之类。不过,这些设备的总数必须要等于 --raid-devices与--spare-devices的个数总和。
创建磁盘组阵列之前当然得先将磁盘分好区,比如我们创建了5个分区(/dev/hda{6,7,8,9,10}),有一个是备用的,则语法如下:
#mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/hda{6,7,8,9,10}
#mdadm --detail /dev/md0 查询之用
也可以查询下列文件来看看系统软件磁盘阵列的情况:
#cat /proc/mdstat
创建好之后当然得格式化:
#mkfs -t ext3 /dev/md0
#mkdir /mnt/raid
#mount /dev/md0 /mnt/raid
RAID错误的救援模式
磁盘阵列当然有出错的时候,这个时候我们一般会将出错的磁盘查找出来,设置为错误,然后加入好的硬盘来替换。
#mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]
--add: 会将后面的设备加入到这个md中。
--remove: 会将会面的设备从这个md中删除。
--fail: 将会面的设备设置成出错的状态。
例如:
#mdadm --manage /dev/md0 --fail /dev/hda8
#mdadm --detail /dev/md0
#mdadm --manage /dev/md0 --add /dev/hda11 --remove /dev/hda8
设置开机自动启动RAID并自动挂载
software RAID的配置文件在 /etc/mdadm.conf中。查出 /dev/md0 的UUID就能够设置这个文件了。
然后设置开机自动挂载,在文件 /etc/fstab。
#mdadm --detail /dev/md0 |grep -i uuid
UUID=……
#vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=……
RAID设备 标识符内容
……
设置开机自动挂载并测试:
#vi /etc/fstab
/dev/md0 /mnt/raid ext3 default 1 2
#umount /dev/md0;mount -a
#df /mnt/raid
mdadm 具体的命令可以去 man 。
关闭软件RAID(重要)
如果只将 /dev/md0 卸载,忘记将 RAID 关闭,结果就是将来你在重新分区 /dev/hdax时可能会出现一些莫名其妙的问题。
#umount /dev/md0
#vi /etc/fstab
将加上的一行删去
#mdadm --stop /dev/md0
#vi /etc/mdadm.conf
删除加上的那一行
#cat /proc/mdstat
阅读(504) | 评论(0) | 转发(0) |