reiserfs文件系统的磁盘布局

2024-01-07 21:04

本文主要是介绍reiserfs文件系统的磁盘布局,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

reiserfs文件系统的磁盘布局比较简单,它把整块分区分成相同大小的block块,一个block块的大小默认是4K,而最大块数未2^32次方,即一个分区最大大小为16TB。

reiserfs文件系统分区的前64KB总是为分区标签(partition labels)或启动引导(boot loaders)而保留,接着是超级块(Super block),同其他所有文件系统一样,需要超级块来保存分区相关重要信息,比如block块大小,block块数等等。接着超级块后是一个位图块(Bitmap block),这个位图块记录对应block块的使用状况,每一bit位指示一个block块。假定一个block块的大小为4K(后续类此假定),那么一个位图块可以映射表示4*1024*8=32768个block块的使用状态。

在位图块内,第0个Byte标识第一个八block块状态,第1个Byte标识第二个八block块状态,第2个Byte标识第三个八block块状态,依次类似;而在一个Byte内,从低到高位分别标识对应的从小到大块号的block块状态,比如第0个Byte的第0Bit标识第0块block状态,第0个Byte的第1Bit标识第1块block状态,第0个Byte的第2Bit标识第2块block状态,……,第1个Byte的第0Bit标识第8块block状态,第1个Byte的第1Bit标识第9块block状态,第1个Byte的第2Bit标识第10块block状态,……,依次类似。另外,对应的bit位为1标识对应的block块为使用状态,为0标识对应的block块为空闲状态。

第一块位图块可以标识分区的前32768个block块的使用状态,那么紧接着的第32768块block又为位图块,继续标识32768个block块的使用状态,然后第65536块block又为位图块,……,如下表,其它block块大小也可以类似计算出位图块所在的位置:

block块大小4,0965121,0248,192
一个位图块可以映射的block块数32,7684,0968,19265,536
超级块块号16128648
第一个位图块块号17129659
第二个位图块块号32,7684,0968,19265,536
第三个位图块块号65,5368,19216,384131,072
第四个位图块块号98,30412,28824,576196,608

一个刚新建立的reiserfs文件系统的位图块如下,第一块和第二块位图块,可以看到第一块位图块里标识出已经有很多block块已经处于使用状态,这些都是要被用来记录日志(journal)而提前标注为已使用的。第二块位图块里只有第0个Byte的第0Bit为1,也就是“第二块位图块”本身所占的block块,当然是已经处于使用状态。

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@localhost sdb1]# hexdump -C -s 69632 -n 4096 /dev/sdb1

00011000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|

*

00011400  ff ff 0f 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

00011410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

00012000

[root@localhost sdb1]# hexdump -C -s 134217728 -n 4096 /dev/sdb1

08000000  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

08000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

08001000

[root@localhost sdb1]#

reiserfs文件系统的磁盘布局大体好像就是这样了,再看一下超级块(Super block)的内部组织,见下表,从上往下一一对应磁盘数据:

NameSizeDescription
Block count4The number of blocks in the partition
Free blocks4The number of free blocks in the partition
Root block4The block number of the block containing the root node
Journal block4The block number of the block containing the first journal node
Journal device4Journal device number (not sure what for)
Orig. journal size4Original journal size. Needed when using partition on systems with different default journal sizes.
Journal trans. max4The maximum number of blocks in a transaction
Journal magic4A random magic number
Journal max batch4The maximum number of blocks in a transaction
Journal max commit age4Time in seconds of how old an asynchronous commit can be
Journal max trans. age4Time in seconds of how old a transaction can be
Blocksize2The size in bytes of a block
OID max size2The maximum size of the object id array
OID current size2The current size of the object id array
State2State of the partition: valid (1) or error (2)
Magic string12The reiserfs magic string, should be “ReIsEr2Fs”
Hash function code4The hash function that is being used to sort names in a directory
Tree Height2The current height of the disk tree
Bitmap number2The amount of bitmap blocks needed to address each block of the file system
Version2The reiserfs version number
Reserved2
Inode Generation4Number of the current inode generation.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[root@localhost sdb1]# hexdump -C -s 65536 -n 4096 /dev/sdb1

00010000  50 fd ff 01 3d d9 ff 01  13 20 00 00 12 00 00 00  |P...=.... ......|

00010010  00 00 00 00 00 20 00 00  00 04 00 00 52 fe c7 51  |..... ......R..Q|

00010020  84 03 00 00 1e 00 00 00  00 00 00 00 00 10 cc 03  |................|

00010030  02 00 02 00 52 65 49 73  45 72 32 46 73 00 00 00  |....ReIsEr2Fs...|

00010040  03 00 00 00 02 00 00 04  02 00 00 00 00 00 00 00  |................|

00010050  01 00 00 00 36 75 98 e5  c4 a5 47 9d aa 04 8f ac  |....6u....G.....|

00010060  15 fb a0 92 00 00 00 00  00 00 00 00 00 00 00 00  |................|

00010070  00 00 00 00 02 00 1e 00  a4 5c 29 4f 00 4e ed 00  |.........\)O.N..|

00010080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

000100c0  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|

000100d0  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

000100e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

00011000

[root@localhost sdb1]#

Block count:0x1fffd50
Free blocks:0x1ffd93d
Root block:0x2013
……
完全参考链接:http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php

这篇关于reiserfs文件系统的磁盘布局的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581220

相关文章

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器