【linux_笔记】Linux_Raid知识总结

学习资源来自:www.magedu.com

学习记录过程中难免出现错误,如有发现,还望大神们指出。

示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考



基础知识:

驱动程序:将cpu发出的逻辑指令转换成对应设备控制指令的机制

主板上的接口
    集成接口(Controller):控制器(转换器)―将cpu发出的信号转换成对应设备可以识别的信号 (u盘接口)
    非集成接口(Adapter):适配器 (大部分网卡插槽,SCSI接口)

协议:为了理解某种信号制定的、双方都遵循的法则
(助解:假设cpu说的是英语,而磁盘只能听懂法语,为了实现正常交流,双方需要使用使用相同的语言。)

串行口和并行口的理论速度:
    IDE接口:133Mbps                                                                 (并行)
    SATA:300Mbps(1),600Mbps(2),6Gbps(3)                                        (串行)
    USB:480Mbps(3.0)(串行)
    SCSI(Small Computer System Interface):UltraSCSI,320Mbps                         (并行)         
        (高转速的大型硬盘的接口)
        自带微型cpu
        接入硬盘转速:10000,15000
    SAS:用于存储容量较小的小型硬盘,转速快,造价高 ―― 串行的SCSI类型接口            (串行)

RAID:(可实现硬件级别的备份)
    早期存储大量数据时使用的控制器是SLED:Single Large Expensive Disk
    RAID(Redundant Arrays of Inexpensive Disks)控制器:(伯克利――廉价冗余磁盘阵列构想)廉价难以实现
    RAID(Redundant Arrays of Independent Disks)控制器:对先前的RAID研究后得到的结果。
        独立冗余磁盘阵列,将多个磁盘组合成一个阵列当作一个逻辑设备来使用的机制

    组合RAID的时候需要考虑的两大问题:速度,数据的可用性

    条带化技术(RAID使用的技术):对RAID中的多个磁盘以一个合适的大小进行分割(CHUNK),

    RAID级别:仅代表磁盘组织方式不同,没有上下之分
        0: 组织方式:条带
            性能提升: 读,写
            冗余能力(容错能力): 无
            空间利用率:nS(假设:有n块磁盘,每一块磁盘的空间利用率为S)
            需磁盘数:至少2块盘
        1: 组织方式:镜像
            性能表现:写性能下降,读性能提升
            冗余能力:有
            空间利用率:1/2
            需磁盘数:至少2块盘(两块磁盘中存储的数据相同)
        2
        3
        4:  组织方式:校验码(指定一块校验码盘)
        5:  组织方式:校验码(磁盘轮换作为校验码盘)
            性能表现:读,写提升
            冗余能力:有(允许一快盘出错)
            空间利用率:(n-1)/n
            需磁盘数:至少3块盘
        10: 组织方式:镜像+条带(大型企业)(各组存储数据不同(条带),组内磁盘存储数据相同(镜像))
            性能表现:读、写提升
            冗余能力:有(同组全坏时无法修复)
            空间利用率:1/2
            需磁盘数:至少需要4块
        01: 组织方式:条带+镜像(各组存储数据相同(镜像),组内磁盘存储数据不同(条带))
            性能表现:读、写提升
            冗余能力:有(不同组都出现损坏时无法修复)
            空间利用率:1/2
            需磁盘数:至少4块盘
        50: 组织方式:校验码+条带
            性能表现:读、写提升
            冗余能力:有
            空间利用率:(n-2)/n
            需磁盘数:至少6块盘
        jbod:组织方式:将多块小盘组合成一块大盘使用
            性能表现:无提升
            冗余能力:无
            空间利用率:100%
            需磁盘数:至少2块盘


    RAID常见组合:
        早期:
            IDE
            SCSI
        现在:
            SATA
            SAS
            
        SCSI组成结构(主板上只有一个接口――适配器):
            8接口:1数据请求发起者(initiator)―― 适配器;7目标(target)
            16接口:1数据请求发起者(initiator);15目标(target)
            (target还可以分成n个接口用于接入硬盘,每个接口有一个LUN(Logical Unit Number) ,
                传入的数据通过数据报文首部的LUN确定数据存储位置)

    RAID的实现形式:硬件RAID(企业级),软件RAID(通常只是用于实验)
        硬件级别:
            BIOS
            操作系统将RAID接口识别为串口设备,即将RAID识别为/dev/sd.
            例如有四块磁盘,每块磁盘容量为500G,每两块分别构成RAID 0 和 RAID 1,
            操作系统可能会将俩RAID识别为两个设备/dev/sda,/dev/sdb
                RAID 0    识别为:/dev/sda (1T)
                RAID 1  识别为:/dev/sdb (500G)
        软件级别(需要内核支持软件RAID):linux使用多设备(md:multi disks)内存模块模拟RAID。    
        (生产环境下不建议使用)
            软件RAID需要内核的支持,当内核损坏时软件RAID将无法使用,为避免操作系统奔溃造成以RAID方
            式存储的数据无法使用,需将模拟成RAID设备的磁盘设备标记为fd类型,使这类磁盘在存储数据之
            外存储一定的元数据,当系统由于故障重装系统后,装载md模块后操作系统会自动进行扫描并将标
            记为fd格式的磁盘重新组合成RAID。

+++++++++++++++++++++++++++++++++++++++++

软件RAID的实现:

    md: (/dev/md#         md#表示不同的RAID设备)
    mdadm(md管理器――用户空间管理工具): 支持将任何块设备做成RAID(例如:分区)
        (使用同一块磁盘上的分区制作RAID并没有什么意义,只能用来做实验)
        模式化的命令:
            创建模式
                -C
                专用选项:
                    -l: 级别
                    -n #: 设备个数
                    -a {yes|no}: 是否自动为其创建设备文件
                    -c: 数据块(CHUNK)大小, 2^n,默认为64K (对RAID 0, RAID 1有意义)
                    -x #: 指定空闲盘个数 (增强数据安全性)
                (mke2fs -E stride=# : -E 指定条带大小 #= CHUNK/BLOCK(4k))
                (RAID存储数据时需要计算条带大小,指定条带大小有利于提升RAID效率)
            管理模式
                --add(添加), --remove(移除), --fail(模拟磁盘损坏)
                mdadm /dev/md# --fail /dev/sda7
            监控模式
                -F
            增长模式
                -G
            装配模式(重新识别并组合RAID ―― 重装系统)
                -A

        查看RAID阵列的详细信息
            mdadm -D /dev/md#
                --detail
            
        停止阵列:
            mdadm -S /dev/md#
                --stop

        watch: 周期性地执行指定命令,并以全屏方式显示结果 (监控命令执行过程)
            格式: watch -n # 'COMMAND'
            -n #:指定周期长度,单位为秒,默认为2            
            
        保存RAID信息至配置文件,以便以后进行装配:(--scan 扫描)
            mdamd -D --scan > /etc/mdadm.conf
            
        lsmod /列出内核当前装载的模块

    创建2G的RAID0:4 x 512MB | 2 x 1G        
        fdisk /dev/sda
            创建两个1G的分区并将类型设置为fd
        partprobe                             /重读分区
        cat /proc/partitions
        mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
        cat /proc/mdstat                    /显示当前系统上所有处于启用状态的RAID设备的情况
        mke2fs -j /dev/md0                     /格式化
        fdisk -l                             /查看md0大小
        mount /dev/md0 /mnt                 /挂载
        ls /mnt
        
    创建一个2G的RAID1:2 x 2G    
        fdisk /dev/sda
          创建三个2G的分区并设置为fd类型
        partprobe                             /重读分区
        cat /proc/partitions
        mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
        cat /proc/mdstat
            (显示正在同步的进度条)
        fdisk -l
        mke2fs -j /dev/md1
        mount /dev/md1 /media/
        ls /media/
        cp /etc/inittab /media/   
        ls /media/
        
        mdadm -D /dev/md1                     /查看当前工作状态--详细信息
        mdadm /dev/md1 --fail /dev/sda8      /模拟sda8损坏
        mdadm --detail /dev/md1
        cd /media/
        ls
        cat inittab  /正常显示
        
        模拟拔除损坏磁盘:
        mdadm /dev/md1 -r /dev/sda8
        mdadm --detail /dev/md1
        
        提供新盘
        mdadm /dev/md1 -a /dev/sda9
        mdadm --detail /dev/md1
        cat /proc/mdstat
            (显示正在恢复数据的进度条)
        ls
        cat inittab
        
        mdadm /dev/md1 -f /dev/sda7
        mdadm -D /dev/md1
        cat inittab                         /正常访问
        
        停用阵列
        cat /proc/mdstat
        umount /dev/md1
        mdadm -S /dev/md1
        cat /proc/mdstat
            (此时若执行rm /dev/md1 md1就被完全删除,redhat6下默认自动删除)
        
        重新加载
        mdadm -A /dev/md1 /dev/sda7 /dev/sda9
        cat /proc/mdstat
        mdadm -D /dev/md1                      /sda7损坏,并未使用
        
        制作热空闲盘
        mdadm /dev/md1 -a /dev/sda8
        mdadm /dev/md1 -a /dev/sda7
        
        监控执行进度
        mdadm /dev/md1 -f /dev/sda9
        madam -D /dev/md1
        watch 'cat /proc/mdstat'
        
        使用配置文件装配md
        mdadm -D --scan                     /显示当前主机上的RAID设备
        mdadm -D --scan > /etc/mdadm.conf     /保存RAIND信息至配置文件
        mdadm -S /dev/md1 /停止md1
        mdadm -A /dev/md1 /装配md1(无需指定磁盘)
        
        指定条带大小
        cat /proc/mdstat /CHUNK若为64k
        unmount /mnt
        mke2fs -j -E stride=16 -b 4096 /dev/md0   /指定条带大小(64/4=16)
        
    创建一个2G的RAID5: 3 x 1G
        fdisk /dev/sda
            自行创建三个1G的分区并设置类型为fd(例如sda{10,11,12})
        mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sda{10,11,12}
        fdisk -l            /可用空间2G
        mke2fs -j /dev/md2
        mkdir md2
        mount /dev/md2 md2
        mount
        cat /proc/mdstat    /其中一块盘作为校验码盘




你可能感兴趣的:(raid,软件RAID,RAID级别,硬件RAID)