# 操作系统中RAID的实现和配置(软件RAID)
例如,某台机器上安装了2块IDE磁盘和4块SCSI磁盘,IDE硬盘直接连接到主板上集成的IDE接口上,SCSI磁盘则是连接到一块PCI接口的SCSI卡上。在没有RAID程序参与的条件下,系统可以识别6块磁盘,并且经过文件系统格式化后,挂载到某个盘符或目录下,供应用程序读写。
安装了RAID程序之后,用户通过配置界面,先将两块IDE磁盘做成了一个RAID0系统,如果原来每块IDE磁盘容量是80GB,做成RAID0后变成了一个160GB的虚拟磁盘。然后用户又将4块SCSI盘做了一个RAID5系统,如果原来每块SCSI磁盘是73GB,做成RAID5后虚拟磁盘的容量将约为3块盘的容量,即216GB。
如果是Windows系统,打开磁盘管理器只能看到两块硬盘,一块是80GB,一块是216GB。可以对这两块盘进行格式化,比如格式化为NTFS文件系统,格式化程序丝毫不会感觉有多块物理硬盘在写入数据。
为了保证性能,同一磁盘组只能用相同类型的磁盘。
## 卷的创建
初始化磁盘后,在磁盘管理中可以新建卷,卷主要有以下几种类型:
* 简单卷:按照磁盘的顺序依次分配空间,与磁盘分区功能相似,卷空间只能在一块磁盘上分配,并且不能交叉或者乱序。
* 跨区卷:在简单卷的基础上,可以让一个卷空间跨越多块物理磁盘,相当于不做条带化的RAID0系统。
* 带区卷:相当于条带化的RAID0系统。
* 镜像卷:相当于RAID1系统。
* RAID-5卷:实现一个RAID5卷。
> 磁盘管理是一个带有RAID的卷管理软件。
# RAID卡
软件RAID有三个缺点:
* 占用内存空间
* 占用CPU资源
* 无法将安装有操作系统的那个磁盘分区做成RAID模式,因为RAID程序运行在操作系统之上。如果操作系统损坏RAID程序也就无法运行,RAID磁盘上的数据只有实现相应的RAID算法的程序才能识别并且正确读写。
人们在SCSI卡上增加了额外的芯片用于实现RAID功能。实现了RAID功能的板卡(SCSI卡或者IDE扩展卡)就叫做RAID卡。同样,在主板南桥芯片上也可实现RAID功能。这样,操作系统不需作任何改动,除了RAID卡驱动程序之外不用安装任何额外的软件,就可以直接识别到已经过RAID处理而生成的**虚拟磁盘**。
对于软件RAID,操作系统底层还是能感知到实际物理磁盘,但是对于硬件RAID来说,操作系统根本无法感知底层的物理磁盘,只能通过厂家提供的RAID卡的管理软件来查看卡上所连接的物理磁盘。而且,配置RAID卡不能在操作系统完成,而必须进入这个硬件完成(或者在操作系统下通过RAID卡配置工具来设置),一般RAID卡是在开机自检的时候进入它的ROM中的配置程序来配置各种RAID功能。
## SCSI RAID卡
SCSI RAID卡包含CPU、ROM、RAM、XOR芯片、PCI控制器、SCSI控制器等。
SCSI控制器连接SCSI物理磁盘。
PCI控制器连接到主机的PCI总线上,执行仲裁、数据发送接收功能。
一般使用Flash芯片作为ROM,其中存放着初始化RAID卡必须的代码以及实现RAID功能所需的代码。
RAM的作用,首先是作为数据缓存,提高性能,其次作为RAID卡上的CPU执行RAID运算所需要的内存空间。
XOR芯片是专门用来做RAID3、5、6等这类校验型RAID的校验数据计算用的,可以解脱CPU,大大增加数据校验计算的速度。
RAID卡和SCSI卡的区别在于RAID功能,其他没有太大区别。如果RAID卡上有多个SCSI通道,那么就称为多通道RAID卡。目前SCSI RAID卡最高有4通道的,其后端可以接入4条SCSI总线,所以最多可以连接64个SCSI设备(16位总线)。
逻辑LBA和物理LBA之间用函数公式做计算比查询一个对应表速度要快得多。
0通道RAID卡指后端没有SCSI通道,插入主机的PCI插槽之后,可以利用主板上集成的或已经插在PCI上的SCSI卡来操控它们的通道,相当于和SCSI控制器组成一块RAID卡来使用,只不过在物理上被分割到了两个PCI插槽而已。0通道RAID卡和SCSI卡的通信占用PCI总线会造成一定的性能损失。
## RAID On Chip技术
利用SCSI卡上的CPU处理芯片,通过在SCSI卡的ROM中加入RAID代码来实现RAID。
## RAID卡上的内存
RAID卡上CPU要执行指令自然需要RAM,不过RAM上的大部分空间用作了数据缓存。RAID控制器的处理速度远远高于通道控制器收集其通道上所连接的磁盘传出的数据速度,RAM用于适配二者不同的速率。RAM还有一个作用是缓存上层的IO请求,然后一条一条执行,或者优化这些IO,能合并的合并,能并发的并发。
中高端的RAID卡需要电池来保护缓存。
# 卷管理
LVM(Logical Volume Manager):逻辑卷管理,对磁盘分区进行管理(无需停机)。
![title](/api/file/getImage?fileId=5db5a80856fec850d5000075)
VxVM是一个高级卷管理软件,支持RAID0、RAID1、RAID01和RAID5四种软RAID模式,支持动态扩大和缩小卷容量。