硬盘类型扫盲

   IDE     133Mbps                        并行

   SATA  300Mbps    600Mbps    6Gbps     串行

   USB    40Mbps     480Mbps                   串行

   SCSI    small Computer System Interface功能强大的芯片

             (大量解脱物理CPU任务,90%都有芯片来完成)    并行

              窄带 8 7target  16 15target  其中一个被适配器占用,适配器叫做initiator

   SAS2.5                                                  串行


RAID常见结构

编号                名称                 性能                冗余                空间利用率                最少单位

   0                  条带                读写提升            无                      100%                         2块

   1                  镜像             下降,提升     有                       50%                          2块

   01                  01                 读写提升            有                       50%                          4块

   10                  10                 读写提升            有                       50%                          4块

   5                    5                  读写提升             有                    (n-1)/n%                     3块

  50                   50                 读写提升            有                    (n-x)/nx%                    6块


注释:RAID01    一块盘坏掉,修复所有盘受到影响。

        RAID10  一块盘坏掉,修复只有其镜像受到影响。

        两者性能基本一致,但是当修复的时候RAID10优于RAID01。

        RAID10中同组硬盘全部损坏则数据会丢失。


硬件RAID

   主板上集成RAID控制器,用线连接外部的RAID阵列

   按照操作系统过程中提供适配器的驱动程序


软件RAID     (内核模块md:multidisks)md模拟一个逻辑RAID

                   mdadm


mdadm    模式化的命令, 将任何块设备做成RAID

创建模式

   -C

   专用选项

       -l                 级别

       -n               设备个数

       -a    {yes}    自动为其创建设备文件

   -c               制定CHUNK大小(每次条带数据块)32 64 128 16  默认为64K

                        优化软RAID性能

                        mke2fs -E stride=16 -b 4096 /dev/md0

                        CHUNK/BLOCK=?

                        不用每次计算自己的条带到底有多大

       -x    #        制定制定空闲盘(备用盘)

                        mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6}


管理模式(默认就工作在管理模式)

       --add       添加成员

                      mdadm /dev/md# --add /dev/sdb9

       --del

       --fail        模拟损坏

mdadm /dev/md# --fail /dev/sdb7

       --remove 移除

mdadm /dev/md# --remove /dev/sdb7


监控模式

       -F


停止阵列

       -S           mdadm  -S  /dev/md0        先停止

                      rm /dev/md#                     后删除


增加模式

       -G


装配模式

       -A        手动装配

                   mdadm -A /dev/md1 /dev/sdb7 /dev/sdb8    

自动装备

                  mdadm -D --scan > /etc/mdadm.conf

                  mdadm -S /dev/md1

                  mdadm -A /dev/md1 (不用再这样mdadm -A /dev/md1 /dev/sdb7 /dev/sdb8)


显示RAID设备相关信息

       -D

       --detail

                 mdadm -D /dev/md#


查看当前系统所有RAID设备

       cat /proc/mdstat


watch     周期性地执行制定命令,并以全屏方式显示结果

       -n #    制定周期长度,单位为秒,默认为2

       watch `cat /proc/mdstat'


练习    (为了演示方便,没有使用独立的硬盘,而是分区)

1、创建存储空间为2G的RAID0设备。

fdisk /dev/sdb{1,2}              修改分区类型fd
mke2fs -j /dev/sdb1              格式化ext3
mke2fs -j /dev/sdb2
cat /proc/partitions             查看内核是否是被2个分区
partprobe /dev/sdb               如果没有识别让内核自动识别
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6}    创建RAID0设备/dev/md0
cat /proc/mdstat                 查看当前系统所有RAID设备
mke2fs -j /dev/md0               格式化文件系统ext3 /dev/md0 设备
fdisk -l                         查看当前系统所有设备
mount /dev/md0 /mnt              将RAID0设备挂载到/mnt目录
ls /mnt/                         查看mnt目录中是否有lost+found


2、创建存储空间2G 的RAID10设备

fdisk /dev/sdb{1,2,3,4}    修改分区类型fd
mke2fs -j /dev/sdb1        格式化ext3
mke2fs -j /dev/sdb2
mke2fs -j /dev/sdb3
mke2fs -j /dev/sdb4
cat /proc/partitions      查看内核是否识别
partprobe /dev/sdb        如果没有识别让内核自动识别
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb{1,2}#创建RAID1设备/dev/md0
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,4}#创建RAID1设备/dev/md1
mke2fs -j /dev/md0        格式化RAID1设备
mke2fs -j /dev/md1
mdadm -C /dev/md10 -a yes -l 0 -n 2 /dev/md{0,1}#创建RAID0设备基于两个RAID1设备
mke2fs -j /dev/md10      格式化RAID0设备
mdadm -D /dev/md10       查看RAID10设备

3、创建2G RAID5 带一个空闲盘     (4个1G)

fdisk /dev/sdb    创建分区 5 6 7 8 并调整分区类型fd
mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb{5,6,7} -x 1 /dev/sdb8
                  创建RAID5并制定空闲盘为/dev/sdb8
cat /proc/mdstat  查看所有RAID设备
mdadm -D /dev/md0 查看设备/dev/md0信息
mke2fs -j -E stride=16 -b 4096 /dev/md0
                  条带优化并格式化RAID5文件系统类型为ext3
mount /dev/md0 /backup
cd backup/
ls                查看是否有lost+found文件
cp /etc/inittab ./
mdadm /dev/md0 --fail /dev/sdb5
                 模拟/dev/sdb5分区故障
mdadm /dev/md0  --add /dev/sdb8 
                添加空闲盘/dev/sdb8救急,内核自动同步数据至sdb8
mdadm /dev/md0  --remove /dev/sdb5   移除故障盘/dev/sdb5
mdadm /dev/md0  --add /dev/sdb5      重新添加空闲盘/dev/sdb5
mdadm /dev/md0  --fail /dev/sdb8     模拟/dev/sdb8分区故障
mdadm -D /dev/md0 
                查看发现此时作为空闲盘的/dev/sdb5会自动填补上去,同步数据。