您的位置:首页 > 大数据 > 人工智能

RAID类型及软RAID的组建

2014-05-04 17:17 225 查看
RAID(独立冗余磁盘阵列)由加利福尼亚大学伯克利分校(University of California-Berkeley)在1987年提出这个概念,首先提出的是廉价冗余磁盘阵列(Redundant Arrays of Inexpensive Disks),后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,后来改为独立冗余磁盘阵列(Redundant Arrays of Independent Disks)。
    RAID的类型
     RAID 0   :  只需要2块硬盘以上即可组建,条带化读写,可以提高整个磁盘的性能和吞吐量,但没有冗余或错误修复能力,任何一块磁盘块都会导至阵列无法使用,数据丢失,磁盘利用量为NS,即n*磁盘容量
    RAID  1  : 磁盘镜像,写入一块磁盘时,另一块磁盘上生成镜像文件,写性能降低,读性能提升,有冗余能力,磁盘的利用率50%,需要2的倍数来组建阵列
   RAID   3,4 : 带有奇偶校验码的存储数据方式, 访问数据时一次处理一个带区,可以提升读写数据性能,有冗余能力,但校验码是存在一块磁盘上,校验盘的写性能会成为瓶颈,3与4的区别在于存储数据时,3是横向条带化读写的,4是竖向存储的,磁盘利用率为(n-1)/n。如图



    RAID  5  :  与RAID4相似,都是有奇偶检验的独立磁盘结构,但是校验码不是存在一个磁盘上,而是轮流写入每个磁盘,读写性能提升,有冗余,空间利用率为(n-1)/n。



    RAID 01 与RAID 10 :  RAID 01 是RAID0与RAID1的结合体,先做RAID0条带化提升性能,然后再做镜像,保证冗余,RAID10是先做镜像保证冗余然后再做条带化提升性能,但当磁盘出现故障时修复能力RAID10比RAID01好,至少需要4块磁盘才能做阵列,磁盘的利用率为50%。如图



阵列的实现方式有硬阵列和软阵列,LINUX中软阵列的实现方法:
   linux中是通过内核中的md模块来模拟一个RAID的,在创建RAID时需要把磁盘的模式设置为fd模式,mdadm命令能把任何的块设备模拟成RAID,过程如下
1. 将用fdisk命令将磁盘/dev/xvdb /dev/xvdc 模式设置为fd模式,
   fdisk /dev/xvdb ,创建磁盘 n ,按P 创建主分区,按1 创建第一个主分区,回车,按m,显示所有帮助信息
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
按t ,
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L 显示所有linux系统支持的文件系统ID,输入fd
  fd为linux raid auto
然后按p
显示磁盘列表为
  Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1        2610    20964793+  fd  Linux raid autodetect
创建磁盘模式为RAID结束
同样把xvdbc创建为RAID模式,cat /proc/partitions 可以显示所有的分区
2 .mdadm命令
    mdadm
        创建模式     -C /dev/md#
                                     专用选项:
                                       -l :RAID级别  0 、1、3、5、10、  等
                                      -n #: 设备个数,多少个硬盘设备来做RAID
                                       -a {yes|no}  : 是否自动为其创建设备文件
                                        -c : chunk 大小  ,2^n
                                        -x  #  :指定空闲盘个数,当RAID正常是,这些盘是没有起作用的,但当RAID当中有一个磁盘有故障时,这个空闲盘会自动顶替有故障的磁盘,并同步数据。
输入命令  mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1
[root@jiankong ~]#  mdadm -C /dev/md0 -l 0 -n 2 -a yes /dev/xvdb1 /dev/xvdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
然后格式化 /dev/md0  mkfs.ext4 /dev/md0
就可以挂载了,
mount /dev/md0 /data
然后用df命令查看磁盘
df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   19G  1.6G   16G   9% /
tmpfs                         497M     0  497M   0% /dev/shm
/dev/xvda1                    485M   33M  427M   8% /boot
/dev/md0                       40G  176M   38G   1% /data
软阵列RAID0就已经创建并使用了。
             管理模式
                          -a  :   --add   添加一块磁盘到阵列中去
                          -r  :  --remove  移除一块磁盘到阵列中去
                          -f  :   --fail     设置一块磁盘状态为fail 不可用
               装配模式
                            -D :—detail 显示阵列的详细信息  mdadm –D /dev/md0
                                 -s :  --scan 把阵列详细信息保存到配置文件  mdadm –D –s /dev/md0 > /etc/mdadm.conf
                           -S  :  --stop 停止阵列  mdadm –S /dev/md0  
                           -A :   加载启动阵列,如果没有保存阵列的配置文件,则需要把阵列以及阵列包含的磁盘信息都要加上,否则无法加载
                                  mdadm -A  /dev/md1  /dev/xvdb1  /dev/xvdc1
cat /proc/mdstat  可以查看 md阵列的状态,如果有同步的话可以看到同步过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息