硬盘类型扫盲

   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设备。

1
2
3
4
5
6
7
8
9
10
11
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设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
会自动填补上去,同步数据。