一、A Forest
文件系统由树木森林构造(a forest of trees),超级块定位在一个固定的磁盘位置。它指向一个树的根树节点,该节点索引构成文件系统的b树。The trees are:
Sub-volumns:存储用户可见文件和目录。每个子卷有一个单独的tree实现。子卷可以被快照和克隆,创建额外的b-trees。The roots of all sub-volumes are indexed by the tree of tree roots.
Extent allocation tree: 跟踪在extent items中已分配的extents,且为磁盘上的free-space映射服务。 所有的extent的back-reference被记录在extent item中。需要的话,这个允许移动一个extent,或者从一个损坏的磁盘块中恢复。back-reference将磁盘引用指针的数目乘以2。对每个向前的指针,就确信的有一个向后的指针。
Checksum tree: 对每个已分配的extent维护一个checksum。在extent的每个page中item包含一系列的checksums。
Chunk and device tree:处理物理设备的间接层。允许镜像/条带化和RAID。
Reloc tree: 涉及移动extents的特殊的操作。
举个例子:下图展示了一个特殊文件系统的高级的结构。为了简单reloc和chunk trees被忽略。
下图展示了用户写文件系统之后发生的改变。