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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九节HarmonyOS 常用基础组件11-TextPicker

1、描述 滑动选择文本内容的组件。 2、接口 TextPicker(options?: {range: string[]|Resource, selected?: number, value?: string}) 3、参数 参数名称 参数类型 必填 描述 range string[]|Resource 是 选择器的数据。 selected number 否 设置默认选中项在…

【普中开发板】基于51单片机的温度报警器LCD1602_可调上下限( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的温度报警器LCD1602_可调上下限 1.主要功能:资料下载链接: 普中开发板实物演示图:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 【普中】基于51单片机的温度报警器LCD1602_可调上下限 ( proteus仿真程序设计报告讲解视频&a…

服务器内存不足怎么办?会有什么影响?

服务器内存,也被称为RAM(Random Access Memory),是一种临时存储设备,用于临时存放正在运行的程序和数据。它是服务器上的超高速存储介质,可以快速读取和写入数据,提供给CPU进行实时计算和操作。…

跟着小德学C++之安全模块

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界…

遇见未来的你——感谢你带给我的感悟

目录 一、背景介绍二、思路&方案三、过程1.都说有的人出生就在罗马而有的人却用一辈子都在去向罗马的路上1.1.物质:1.2.精神: 2.做事情要看大再看细3.心存善念,常怀感恩,从小事做起4.所谓的面子在母爱面前像是一粒微尘5.讲道理…

【强化学习的数学原理-赵世钰】课程笔记(六)随机近似与随机梯度下降

目录 一.内容概述 二.激励性实例(Motivating examples) 三.Robbins-Monro 算法(RM 算法): 1.算法描述 2.说明性实例(llustrative examples) 3.收敛性分析(Convergence analysi…

Spark基础内容

Spark基本介绍 Spark是什么 定义 Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎. Spark与MapReduce对比 mapreduce架构图如下: MapReduce的主要缺点: 1- MapReduce是基于进程进行数据处理,进程相对线程来说&#x…

十一、工具盒类(MyQQ)(Qt5 GUI系列)

目录 ​编辑 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 抽屉效果是软件界面设计中的一种常用形式,可以以一种动态直观的方式在有限大小的界面上扩展出更多的功能。本例要求实现类似 QQ 抽屉效果。 二、实现代码 #include "dialog.…

数据结构实验1:栈和队列的应用

目录 一、实验目的 二、实验原理 1.1栈的基本操作 1.1.1 栈的定义 1.1.2 初始化栈 1.1.3 压栈(Push) 1.1.4 出栈(Pop) 1.1.5 判空(isEmpty) 1.1.6 查看栈顶元素(Top) 1.1…

el-date-picker日期时间选择器限制可选的日期范围

业务场景&#xff1a;需要限制日期时间选择器可选择的日期&#xff0c;有两种模式&#xff0c; 一种是已知范围&#xff0c;只能选已知范围内的日期&#xff0c; 另一种是知道最近天数&#xff0c;只能选今天往前的天数内的日期&#xff0c;超出不能选。 <el-date-picker v-…

软性演员-评论家算法 SAC

软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化算法步骤代码实现 软性演员-评论家算法 SAC 优势原理 DDPG 的问题在于&#xff0c;训练不稳定、收敛差、依赖超参数、不适应复杂环境。 软性演员-评论家算法 SAC&#xff…

算法通关村番外篇-优先队列

大家好我是苏麟 , 今天聊聊优先队列 . 优先队列 我们了解优先队列之前先说说队列 . 队列的特点是什么&#xff1f; 队列的特点是先进先出&#xff08;FIFO&#xff09;。 入队列&#xff0c;将新元素置于队尾&#xff1a; 出队列&#xff0c;队头元素最先被移出&#xff1a…

从新手到大师:四大编程范式解锁你的编码力!

编程&#xff0c;就是用代码跟计算机交流&#xff0c;告诉它我们想要它做什么。不同的编程范式就是不同的交流方式&#xff0c;每种方式都有自己独特的语法和规则。 今天&#xff0c;我们就来聊聊这四种主要的编程范式&#xff0c;它们分别是命令式、函数式、面向对象和声明式…

Java 堆的设计,如何用堆进行排序

Java 学习面试指南&#xff1a;https://javaxiaobear.cn 1、堆的定义 堆是计算机科学中一类特殊的数据结构的统称&#xff0c;堆通常可以被看做是一棵完全二叉树的数组对象。 1、堆的特性 它是完全二叉树&#xff0c;除了树的最后一层结点不需要是满的&#xff0c;其它的每一层…

听GPT 讲Rust源代码--compiler(33)

File: rust/compiler/rustc_middle/src/macros.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_middle/src/macros.rs文件的作用是定义了一些用于宏展开的辅助宏和宏规则。 首先&#xff0c;这个文件导入了许多其他相关的模块&#xff0c;这些模块定义了编译器内部所需要的…

详解Java中的原子操作

第1章&#xff1a;什么是原子操作 大家好&#xff0c;我是小黑&#xff0c;面试中一个经常被提起的话题就是“原子操作”。那么&#xff0c;到底什么是原子操作呢&#xff1f;在编程里&#xff0c;当咱们谈论“原子操作”时&#xff0c;其实是指那些在执行过程中不会被线程调度…

1329:【例8.2】细胞 广度优先搜索

1329&#xff1a;【例8.2】细胞 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 一矩形阵列由数字0 到9组成,数字1到9 代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如: 4 10 0234500067 1034560500 2045600671 00000000…

最新-mybatis-plus 3.5分页插件配置

mybatis-plus 3.5分页插件配置 前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5&#xff0c;升级后发现原本的分页竟然不起作用了&#xff0c;每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包&#xff0c;因为版本太低…

数据结构入门到入土——链表(2)

目录 一&#xff0c;与链表相关的题目&#xff08;2&#xff09; 1.输入两个链表&#xff0c;找出它们的第一个公共节点 2.给定一个链表&#xff0c;判断链表中是否有环 3.给定一个链表&#xff0c;返回链表开始入环的第一个节点&#xff0c;若无则返回null 一&#xff0c;…

java字节码

1. 字节码 1.1 什么是字节码&#xff1f; Java之所以可以“一次编译&#xff0c;到处运行”&#xff0c;一是因为JVM针对各种操作系统、平台都进行了定制&#xff0c;二是因为无论在什么平台&#xff0c;都可以编译生成固定格式的字节码&#xff08;.class文件&#xff09;供…