Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1869106
  • 博文数量: 211
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3794
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(211)

文章存档

2020年(2)

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 服务器与存储

2014-11-10 15:53:33

  

XFS文件系统中的文件用到的块由变长管理,每一个Extent描述了一个或多个连续的块。与那些把文件所有块都单独列出来的文件系统来说,extent大幅缩短了列表。有些文件系统用一个或多个面向块的位图管理空间分配——在XFS中这种结构被由一对组成的、面向Extent的结构替代了;每个文件系统分配组(AG)包含这样的一个结构。其中,一个用于索引未被使用的Extent的长度,另一个索引这些Extent的起始块。这种双索引策略使得文件系统在定位剩余空间中的Extent时十分高效。一个extent对应磁盘上一个连续的存储空间,XFS组织extent总共有两种方法:

1. 使用extent list,由于inode大小最大256B,所以extent的个数为19个,表示的范围有限。在磁盘上的每个extent的结构如下图所示,一个extent长度为128Bit.
30
下图就是使用extent list的方式组织文件的详细信息图。offset指文件内的偏移量,block 表示在磁盘上的存储位置,blocks代表这个extent代表的范围有多大。由于XFS中存在“hole”(也就是有一段地方并没有分配空间),所以每两个extent之间可能不是连续的。
32
2. 另一种方法就是采用B+ tree的方法来管理XFS的空闲空间。
下图是两层的B+ extent tree来管理空闲空间的。第一层存放了根节点的信息,根据bb_ptrs 可以找到下一层树节点在磁盘的存储位置,根据bb_keys可以定位到给定的数据页所在的位置即文件内部的 offset。


阅读(5106) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~