zoukankan      html  css  js  c++  java
  • Linux-RAID

      RAID全称为Redundant Arrays of Inexpensive(Independent) Disks,意为廉价冗余磁盘阵列,后来不廉价的磁盘也采用这一技术来提高性能,所以Inexpensive就用Independent替代了。RAID是将多块磁盘按照某种格式组织起来当做一块磁盘来使用的技术,可以用来提高I/O性能,提高耐用性。

      RAID实现的方式有三种:

        1.外接式磁盘阵列:通过扩展卡提供适配能力

        2.内接式RAID:主板集成RAID控制器

        3.Software RAID:通过软件方式实现

      常见的RAID级别有RAID-0、RAID-1、RAID-5、RAID-6、RAID-10、RAID-01等

                

        1、RAID-0:也叫条带卷,它是将多块磁盘平行组织起来当做一块磁盘来实现I/O的组织结构。

              它的读、写性能有提升,可用空间为N*min(S1,S2,...),没有容错能力,至少需要两块磁盘。

        2、RAID-1:  也叫镜像卷,它是将两块磁盘存储相同的数据,其中一块磁盘用来做镜像。

              它的读性能有提升,写性能略有下降,可用空间为1*min(S1,S2,...),有冗余能力,至少需要两块磁盘。

        3、RAID-4:  它是将前两块磁盘用来存储数据,第三块磁盘用来存储前两块盘异或得出的值,用来做校验盘。

              它的读写性能有提升,可用空间为(N-1)*min(S1,S2,...),容错能力为一块磁盘,最少需要三块磁盘。

             它用一个专门的磁盘作为校验盘,访问任何一个磁盘时都要访问校验盘,所以校验盘的访问压力比其他磁盘都大,很容易成为性能瓶颈。

          4、RAID-5:  组织结构和RAID-4类似,它是将磁盘轮流记录校验数据。

              它的读写性能有提升,可用空间为(N-1)*min(S1,S2,...),容错能力为一块磁盘,最少需要三块磁盘。

        5、RAID-6:它是用两块磁盘作为校验盘

              它的读写性能有提升,可用空间(N-2)*(S1,S2,...),容错能力为两块磁盘,最少需要四块磁盘。

          6、RAID-10:它是先两两一组做成RAID-1,再做成RAID-0。

              它的读写性能有提升,可用空间为N*(S1,S2,...)/2,容错能力为每组镜像最多只能坏一块,至少磁盘数需要四块。

        7、JBOD:全称为Just a Bunch Of Disks,它是将多块磁盘的空间合并成一个大的连续空间使用。它的可用空间为sum(S1,S2,...)。

      CentOS 6上的Software RAID的实现:结合内核中的md(multi devices)模块

        常用命令:        
            mdadm [mode] <raiddevice> [options] <component-devices>             [mode]:               创建:-C               装配:-A               监控:-F               管理:-f、-r、-a             <raiddevice>: /dev/md#             <componenent-devices>: 任意块设备
                -C: 创建模式 
                    -l #: 指明要创建的RAID的级别
                    -a {yes|no}: 自动创建目标RAID设备的设备文件
                    -c CHUNK_SIZE: 指明块大小
                      -n #: 使用#个磁盘来创建此RAID
                     -x #: 指明空闲磁盘的个数 
                -D: 显示RAID的详细信息,比如:mdadm -D /dev/md#          
                管理模式:
                   -f: 标记指定磁盘为损坏,例如: 指明sda5损坏语句为 mdadm /dev/md# -f /dev/sda5
                   -a: 添加磁盘
                   -r: 移除磁盘,例如:移除sda5语句为 mdadm /dev/md# -r /dev/sda5  
                查看md的状态: cat /proc/mdstat
                停止md设备: mdadm -S /dev/md# 
            其他命令:
                watch命令
                  -n #: 刷新间隔,单位是秒

      练习1:创建一个可用空间为10G的RAID1设备,要求CHUNK大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂在至/backup目录   

          a.创建两个各为10G的分区,调整分区id为fd,比如磁盘分区为/dev/sda1、/dev/sda2
          b.mdadm -C /dev/md0 -c 128k -l 1 -n 3 -x 1 -a yes /dev/sda{1,2}
          c.mke2fs -t ext4 -L MYRAID0 /dev/md0
          d.修改/etc/fstab,增加一行: LABEL='MYRAID0' /backup ext4 defaults 0 0  

      练习2:创建一个可用空间为10G的RAID10设备,要求chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录     

          a.创建四个各位5G的分区,比如/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8
          b.mdadm -C /dev/md10 -l 10 -a yes -n 4 -c 256k /dev/sda{5,6,7,8}
          c.mke2fs -t ext4 -L 'MYRAID10' /dev/md10
          d.修改配置文件/etc/fstab:LABEL='MYRAID10' /mydata ext4 defaults 0 0 
  • 相关阅读:
    Intel CPU编号详解
    matplotlib(二)——matplotlib控制坐标轴第一个刻度到原点距离
    matplotlib(一)——matplotlib横轴坐标密集字符覆盖
    博客园定制页面(五)——使用自定义JS脚本(公告栏显示时间)
    PyCharm(二)——PyCharm打开本地项目不显示项目文件
    nohup命令
    URL是如何解析的
    Python 得到主机字节序
    Python 得到ISP地址
    亚马逊s3上传大文件Python
  • 原文地址:https://www.cnblogs.com/ckh2014/p/9536134.html
Copyright © 2011-2022 走看看