为了解决这些问题,Vinum 提出了一个四层的目标结构:
最显著的目标是虚拟磁盘, 叫做 卷(volume). 卷本质上与一个UNIX 磁盘 驱动器有同样的属性,虽然它们是有些不太一样。它们没有大小的限制。
卷下面是 plexes, 每一个表示卷的所有地址空间。在层次结构中的这个水平能够提供 冗余功能。可以把plex 想象成用一个镜象排列的方式组织起来的 独立磁盘,每个都包含同样的数据。
由于Vinum 存在于UNIX 磁盘存储框架中,所以它也可能 使用UNIX 分区作为多个磁盘plex 的组成部分, 但事实上这并不可靠:UNIX 磁盘只能有有限数量的分区。 取而代之,Vinum 把一个简单的UNIX 分区 (the drive) 分解成叫做subdisks的相邻区域, 它可以使用这个 来为plex 建立块。
Subdisks 位于 Vinum 驱动器上, 当前的UNIX 分区。Vinum 驱动器可以包含很多的subdisks。 除了驱动器开始的一小块区域用来存储配置和描述信息以外,整个 驱动器都可以用于存储数据。
下面的章节描述了这些目标提供了Vinum 所要求的功能的方法。
在Vinum的配置中,Plex可以把多个subdisk 分布在所有的驱动上。 结果, 每个独立的驱动器的大小都不会限制plex 的大小,从而不会限制卷的大小
Vinum 通过给一个卷连上多个plex 来完成镜象的功能。 每个plex 是一个在一个卷中的数据的描述。一个卷可以包含一个 到八个plex。
虽然一个plex 描述了一个卷的所有数据,, 但可能描述的部分被物理地丢失了。可能是设计的问题 (没有为plex 部分定义一个subdisk)也可能是意外的故障 (由于驱动器的故障导致)。只要至少有一个plex 能够为 卷的完全地址范围提供数据,卷就能够正常工作。
Vinum 在plex 水平既执行串联也执行分段:
一个串连的plex轮流使用 每个subdisk 的地址空间。
一个 分段的plex 在每个subdisk 上 划分数据. Subdisk 必须是大小一样的,为了从一个连接的plex 中 区分开它,必须至少有两个subdisk。
FreeBSD 8.2提供的Vinum 版本能实现两种plex:
串联的plex 更加灵活:它们可以包含任何数量的subdisk, subdisk 也可能有不同的长度。Plex 可以通过添加额外的subdisk 来得到扩展。 与分段 plex 不同, 它们需要的 CPU 时钟更少, 尽管 CPU 上的负载差异是不可测量的。 另一方面,它们的负载可能不平衡,一个磁盘可能负载很重, 而其他的可能很空闲。
分段(RAID-0) plexes 的最大优点是 它们减少了负载不平衡的情况: 通过选择一个最合适大小的分段 (大约是256 kB), 您甚至可以在各个组成的驱动器上降低负载 . 这种方法的缺点是在subdisk 上受到非常复杂的编码限制 : 它们必须是同样大小, 通过添加新的subdisk 来扩展一个plex 是非常复杂的,以至Vinum 当前没有实现它. Vinum 利用一个额外 的,代价不高的限制:一个分段的plex 必须有至少两个subdisk, 否则, 它就无法区分连接的 plex 了。
表 21-1 总结一下每个plex 组织 的优点和缺点.
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.