首页 > *nix技术, 文件系统 > Xfs文件系统磁盘布局之三:AG超级块

Xfs文件系统磁盘布局之三:AG超级块

2012年1月1日 发表评论 阅读评论 7,693 次浏览

AG超级块内保存着很多非常重要的信息,想要了解一个被格式化为Xfs的磁盘分区就要从AG超级块着手,其对应的结构体为xfs_sb_t,下面就来分析并验证这其中的一些重要相关字段。
查看AG超级块内的数据,我们仍然可以利用hexdump命令来查看,不过为了方便,这里使用xfsprogs提供的xfs_db工具:
[root@localhost xfsprogs]# ./db/xfs_db /dev/sdb1
xfs_db> sb 0
xfs_db> p
magicnum = 0x58465342
魔术数,即是‘XFSB’。
blocksize = 4096
逻辑块大小4096,单位字节。
dblocks = 1048233
磁盘总逻辑块数,1048233*4096/1024/1024/1024 = 3.998691558837890625,即约为4G,正好是我挂载的磁盘大小。
rblocks = 0
rextents = 0
uuid = d008f5d2-7b96-4ae0-b6b5-3b3ecd76536b
logstart = 524292
rootino = 128
根节点inode号,我这里把磁盘挂载在/home/lenky/xfs/sdb1文件夹下,所以这个rootino就是这个sdb1的inode节点号:

[root@localhost sdb1]# ls -ila
total 8
   128 drwxr-xr-x. 3 root root   27 Dec 30 10:09 .
523274 drwxr-xr-x. 4 root root 4096 Dec 30 02:13 ..
   131 drwxr-xr-x. 6 root root 4096 Dec 30 10:14 linux-2.6.36.1

rbmino = 129
rsumino = 130
rextsize = 1
agblocks = 262059
每一个AG的块数目,agblocks = dblocks/agcount,即262059 = 1048233/4;向上取整。
agcount = 4
磁盘的总AG数目。
rbmblocks = 0
logblocks = 2560
versionnum = 0xb4b4
所以超级块有多种类型,用该字段来区分。
sectsize = 512
一个sector的大小,默认512。
inodesize = 256
一个inode的大小,之前提到inode都是以64个为单位进行分配和管理,所以一次需要4个block,即是256*64/4096 = 4。
inopblock = 16
每一个block可以存储的inode数目,16 = 4096/256。
fname = “\000\000\000\000\000\000\000\000\000\000\000\000″
文件系统的名称,可以在格式化时指定,但不要超过12个字节:

[root@localhost xfsprogs]# mkdir /home/lenky/loop
[root@localhost xfsprogs]# cd !$
cd /home/lenky/loop
[root@localhost loop]# dd if=/dev/zero of=xfs.img bs=512 count=1048576
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 144.81 s, 3.7 MB/s
[root@localhost loop]# losetup /dev/loop0 xfs.img 
[root@localhost loop]# mkfs.xfs -L lenky.xfs  /dev/loop0
meta-data=/dev/loop0             isize=256    agcount=4, agsize=32768 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=131072, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=1200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost loop]# cd /home/lenky/xfs/xfsprogs/db
[root@localhost db]# ./xfs_db /dev/loop0
xfs_db> sb
xfs_db> p fname
fname = "lenky.xfs\000\000\000"
xfs_db> 

blocklog = 12
块block大小的log2数值,即是log2(4096) = 12。
sectlog = 9
sector大小的log2数值,即是log2(512) = 9。
inodelog = 8
inode大小的log2数值,即是log2(256) = 8。
inopblog = 4
每一个block可以存储的inode数目的log2数值,即是log2(16) = 4。
agblklog = 18
每一个AG的块数目的log2数值,即是log2(262059) = 18,向上取整。
rextslog = 0
inprogress = 0
imax_pct = 25
icount = 7296
ifree = 82
fdblocks = 889105
frextents = 0
uquotino = 0
gquotino = 0
qflags = 0
flags = 0
shared_vn = 0
inoalignmt = 2
unit = 0
width = 0
dirblklog = 0
logsectlog = 0
logsectsize = 0
logsunit = 1
features2 = 0xa
bad_features2 = 0xa
xfs_db>
其它未说明的字段是我目前为关心到的字段,后续看到对应的部分后再补上。

转载请保留地址:http://www.lenky.info/archives/2012/01/658http://lenky.info/?p=658


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.