61 FreeBSD连载:其他内核设置选项( 五 )


RAID为冗余磁盘阵列的简称,它意味着物理上使用多个磁盘,而逻辑上却只有一个磁盘设备 。RAID之所以流行,是因为它使用了分段(strip)和冗余的概念,就是说通过RAID映射的逻辑磁盘上的数据是以分段的方式保存的,例如一个文件的第一段数据保存在第一个物理磁盘上,第二段数据保存在第二个物理磁盘上,依次类推 。这样在存取这一个文件上的连续数据时,多个磁盘可以同时进行存取操作,因此增加了磁盘访问速度 。而冗余则是物理磁盘的空间大于逻辑磁盘的大小,通过物理磁盘上多余的磁盘空间,保存冗余信息,这样一旦多个磁盘中的某一些出现问题,数据能通过冗余数据得到恢复,而不会丢失 。
按照不同的冗余组织方式,RAID被分为不同的级别 。最简单的RAID称为RAID 0,这个级别中没有冗余,多个磁盘只是以分段的方式组织起来,由于使用分段的方式存取,可以同时访问这两个磁盘,因此存取单个文件的速度会有所改善 。更高一级的RAID级别为RAID 1,它同时使用两个磁盘,每个磁盘都是另一个磁盘的镜像,这样一旦一个磁盘出现问题,还可以在另一个磁盘找到数据,保证了数据完整性,但这样设置,有一半的磁盘空间都用做了冗余,浪费了磁盘空间 。此外还有RAID 3级别,至少要使用3个物理磁盘,前两个磁盘中分段存储数据,第三个磁盘的冗余空间中并不是直接保存原有的数据,而是保存根据前两个磁盘中对应分段中的数据进行计算得到一个校验和 。在前面某一个磁盘被破坏后能通过冗余磁盘中保存的校验和来恢复原有数据 。由于RAID 3中校验和是单独保存在一个物理磁盘上的,不能充分发挥分段存取的优势,因此RAID 5中将校验和与其他数据一起分段、分布保存在各个磁盘上,提供了更好冗余效果 。因此当前常用的RAID级别为RAID 0, RAID 1和RAID 5,可根据不同的需要进行选择使用 。
当在ccdconfig中使用两个0作为参数来设置ccd伪设备时,ccd是以最普通的直接连接方式来连接多个磁盘的,当数据写满第一个磁盘后,才接着写入第二个磁盘,这里没有使用任何分段存储策略,因此这是一种不完善的RAID 0方式 。然而也可以设置ccd以使用分段存储策略,以大来存取速度的优势,这就需要设置分段存储中的段的大小,即设置交错因子的大小,因此就需要改变第一个数字参数,例如:
# umount /mnt# ccdconfig -u ccd1# ccdconfig -c ccd1 32 0 /dev/da0s2e /dev/da1s2g上面第一条命令是卸载已安装的ccd文件系统,第二条命令是将原有的ccd1设备释放出来,使用这两条命令是因为前面操作中已经将ccd1设置过并安装到文件系统中了 。第三条命令为重新设置ccd1的命令,其参数中紧随ccd1设备的参数设置为32,这个参数代表交错因子为32个磁盘块,即数据每隔32个磁盘块大小,进行分段保存到不同的磁盘上,显然前面的参数设置为0表示不进行分段存储 。
由于ccd使用的磁盘设备为预分配的磁盘分区空间,那么这些分区的大小很可能不一致 。当一个磁盘设备用光,而另一个较大的设备还有空余的时候,分段策略就不再有效了 。此时ccd可以有两种选择,一个是尽量利用磁盘空间,必要时不再进行分段存储,顺序存储数据;另一种选择是不使用这些不能进行分段存储的空间,以保证分段存储带来的优势 。当ccd命令的第二个数字参数设置为0时,将尽量利用磁盘空间,因此就ccd伪设备就混合使用分段存储和顺序存储 。但也可以将其设置为2,这样ccd只使用分段存储策略,忽略分区不一致的空间 。推荐在建立磁盘文件系统时为ccd划分大致相等的空间,这样就可以充分利用分段带来的好处,并且不浪费磁盘空间 。

推荐阅读