我们知道, FAT 表的表项号是连续的,即由 0 开始编号, 0 号表项与 1 号表项由系统保留做特殊用途。用户数据由 2 号表项开始使用,也就是 2 号簇对应的 FAT 表项。表项内记录的簇号可能是不连续的,但表项号本身则是连续的。利用表项号的这个连续性,我们就可以计算 RAID 块的大小。
1. 计算方法
利用 FAT 表计算块大小的原理就是,相邻磁盘的同条带同位置的 FAT 项间占用的空间是一个块大小。如图 11.1 所示。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

11.1 中,磁盘 0 和磁盘 1 是阵列中两块相邻的磁盘, FAT N 位于磁盘 0 的某个块,当该块写满后,就会转至磁盘 1 的同条带进行写入。 FAT M 是磁盘 1 上与 FAT N 同条带同位置的 FAT 表项,这样,由 FAT N 开始至 FAT M 前的空间即为一个块(灰色加亮部分)。因此,我们可以得出以下公式:
块大小扇区数 M – N * FAT 表项字节数 / 每扇区字节数

最大的问题是,每个表项内记录的值是为当前数据分配的下一个簇的簇号,而并不记录表项号本身,我们必须想办法得到当前 FAT 项的表项号才可以进行计算。那么,如何得到这个表项号呢?
我们知道,系统为文件分配空间时,会优先为其分配连续的空间,这时,它们的簇号就是连续的。簇号连续,则记录这些簇号的相应表项也是连续的,如图 11.2 所示。簇号 14 15 16 连续,则它们所在的表项的号码也是连续的。
 
 
           因此,我们可以找到至少有三个连续的簇号记录位置,取中间的簇号值(原则上另一磁盘的相同位置也需要符合同样要求,但并不意味着不是三个连续的记录位置就一定不能使用,因为可能会有结束标记存在。后面我们的实例中2.img中所取的位置就没有明显的三个簇号连续)。对于图11.2中的记录值为15的簇来讲,它的值实际上是当前位置的表项号141而来。同样,对于图11.1中来讲,在磁盘0FAT表项为N的位置实际记录的是下一簇的簇号N+1;同样,磁盘1FAT项为M的位置记录的是下一簇的簇号M+1M-N与(M+1)-(N-1)结果是相同的。因此,我们可以使用符合要求的位置记录的簇号直接进行计算。为了便于理解,下面我们将演示一个实例的计算。