SFS

来自osdev
Zhang3讨论 | 贡献2022年3月31日 (四) 09:58的版本 (创建页面,内容为“{{Filesystems}} 有多个现有的文件系统缩写为'''SFS''',但这里讨论的是Brendan Trotter的'''Simple File System''',其设计非常易于实现。 它有一组最小的功能。 按官方说法,它仍处于起草阶段,但已经有一段时间没有改变了。 SFS旨在用作简单的文件系统,用于软盘和其它可移动介质上,以在计算机之间传输数据。 ==格式详细信息== === 布局 === SimpleFS分区中有五…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
文件系统
虚拟文件系统

VFS

磁盘文件系统
CD/DVD 文件系统
Network 文件系统
Flash 文件系统

有多个现有的文件系统缩写为SFS,但这里讨论的是Brendan Trotter的Simple File System,其设计非常易于实现。 它有一组最小的功能。 按官方说法,它仍处于起草阶段,但已经有一段时间没有改变了。

SFS旨在用作简单的文件系统,用于软盘和其它可移动介质上,以在计算机之间传输数据。

格式详细信息

布局

SimpleFS分区中有五个关键区域: 超级块(Super-block)、保留区(Reserved Area)、数据区(Data Area)、自由区(Free Area)和索引区(Index Area)。

Super-block

超级块位于磁盘或分区的第一个扇区。 对于软盘,这意味着它包含在引导扇区中。 超级块包含有关分区的结构信息。 超级块的SFS数据位于偏移量0x0194处,有58字节长,为引导代码和分区表留出了空间。

偏移量 大小 内容
0x0194 8
超块值的上次修改时间(数据大小或索引大小)
0x019C 8 数据区的大小 (以块为单元)
0x01A4 8 索引区域的大小(以字节为单位)
0x01AC 3 Magic number (0x534653 'SFS')
0x01AF 1 Version number in BCD (0x10 = 1.0)
0x01B0 8 卷(volume)中总分块数
0x01B8 4 以块为中心的保留区和超级块的大小
0x01BC 1 Block size given by BytesPerBlock = 2(BlockSize + 7)
0x01BD 1

0x1AC到0x1BC之间的字节校验和,低8位为零

Reserved Area

保留区是符合当前规范的驱动程序未触及的磁盘段。 这允许在同一卷上存储辅助信息或数据,如内核映像或小型EXT2/FAT分区。

Data Area

数据区包含文件数据,并从保留区域的末尾开始。 数据区中的文件只能占据顺序区域,因为无法链接单个文件的块链。

Free Area

空闲区域是卷中当前未使用的空间,可供向下增长的数据区域或向上增长的索引区域使用。

Index Area

注意:因为索引区位于磁盘的末尾,所以偏移量的引用方式与典型情况相反。 所以,第一个条目实际上是最接近磁盘末端的

索引区包含数据区的跟踪信息,由数量可变的64字节条目组成,这些条目从卷的末尾一直延伸到卷的开头。 Index区域中的条目遵循几个简单的规则。 “第一个” (在磁盘末尾) 条目必须是卷标识符条目,用于在自动检测不可用时检测是否已交换磁盘。 “last”(最接近磁盘的起始位置)必须是起始标记项,如果超级块损坏,则用于文件系统恢复。 连续条目用于允许比可以放置在单个目录或文件条目中的文件名更长的文件名,并且紧跟在它们各自的文件/目录条目之前。

Embedding

目前GPT分区使用的GUID为4ebf0e06-11bf-450c-1a06-534653534653

信息格式

Timestamps

所有SFS时间戳均为64位带符号值 计算UNIX纪元(1970年1月的1st)之前或之后每秒的1/65536th个数,以UTC为单位。

Names

SFS中的名称字符串采用UTF-8格式,并且必须以Null结尾。 字符可以包括范围0x20-0x7E和0xA1-0xFF中的任何字符,不包括双引号 (“) 、星号 (*) 、冒号 (:) 、小于或大于符号 (<或>) 、问号 (?) 或向后斜杠 (\)。 正斜杠(/)只能用作路径分隔符。 请注意,UTF-8意味着0x80以上的字符占用多个字节,而不是一个字节,这可能会混淆基于ASCII的系统。

= 另见 =

论坛帖子

外部链接

de:SFS