Chinaunix首页 | 论坛 | 博客
  • 博客访问: 783088
  • 博文数量: 143
  • 博客积分: 2077
  • 博客等级: 大尉
  • 技术积分: 2393
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-28 12:57
文章存档

2016年(2)

2015年(3)

2014年(3)

2013年(41)

2012年(94)

分类: LINUX

2012-10-03 22:39:05

软件磁盘阵列(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) |
给主人留下些什么吧!~~