“File Systems”的版本间差异

来自osdev
跳到导航 跳到搜索
第3行: 第3行:
{{Filesystems}}
{{Filesystems}}


文件系统是操作系统在磁盘等持久性存储设备上订购数据的方法。 它们提供了一个抽象的接口来访问这些设备上的数据,从而可以有效地读取或修改数据。 哪种文件系统方便取决于操作系统的目标应用程序。 例如,Windows使用FAT32或NTFS文件系统。 如果磁盘容量较大,则FAT32不方便,因为FAT系统的设计考虑了当时可用的较小磁盘。 同时,NTFS文件系统在微小磁盘上并不方便,因为它被设计为处理大量数据-使用1.44 MB软盘等设备时会有过多的开销。
文件系统是操作系统在磁盘等持久性存储设备上排序数据的方法。 它们提供了一个抽象的接口来访问这些设备上的数据,从而可以有效地读取或修改数据。 哪种文件系统方便取决于操作系统的目标应用程序。 例如,Windows使用FAT32或NTFS文件系统。 如果磁盘容量较大,FAT32就不太方便,因为FAT系统的设计只考虑了当时可用的较小磁盘。 同样,NTFS文件系统在微小磁盘上并不方便,因为它被设计为处理大量数据-使用1.44 MB软盘等设备时会有过多的开销。


有关特定文件系统的详细信息,请浏览文件系统的 [[:Category:Filesystems|this list]]。
有关特定文件系统的详细信息,请浏览文件系统的 [[:Category:Filesystems|这个列表]]。


== 文件系统理论 ==
== 文件系统理论 ==
第11行: 第11行:
{{In Progress}}
{{In Progress}}


文件系统提供了持久存储的通用结构,从而可以抽象出设备的低级结构 (例如,磁盘,磁带,闪存存储)一般而言,文件系统的目标是允许将逻辑数据组组织成 “文件”,可以将其作为一个单元进行操作。 为此,文件系统必须提供实际辅助存储中文件位置的某种索引。 任何文件系统的基本操作是:
文件系统提供了持久存储的通用结构,从而可以将设备的低级结构 (例如,磁盘,磁带,闪存存储)进行抽象。 一般而言,文件系统的目标是允许将逻辑数据组组织成 “文件”,可以将其作为一个单元进行操作。 为此,文件系统必须提供实际辅助存储中文件位置的某种索引。 任何文件系统的基本操作是:


* 跟踪可用存储空间
* 跟踪可用存储空间
* 跟踪哪些或哪些数据块属于哪些文件
* 跟踪哪些数据块属于哪些文件
* 创建新文件
* 创建新文件
* 将现有文件中的数据读取到内存中
* 将现有文件中的数据读取到内存中
第20行: 第20行:
* 删除现有文件
* 删除现有文件


(有洞察力的读者会注意到,最后四个操作- 创建,读取,更新和删除或CRUD-也适用于许多其他数据结构,并且是数据库和文件系统的基础。)
(有洞察力的读者会注意到,最后四个操作- 创建,读取,更新和删除或CRUD(Create,Read,Update和Delete)-也适用于许多其他数据结构,并且是数据库和文件系统的基础。)


此外,还有其他功能与实用的文件系统一起使用:
此外,还有其他功能与实用的文件系统一起使用:
第35行: 第35行:


=== 索引方法 ===
=== 索引方法 ===
有几种索引文件内容的方法,最常用的是 “i-nodes” 和 “文件分配表”。
有几种索引文件内容的方法,最常用的是 “i-nodes” 和 “文件分配表(File Allocation Tables)”。


==== inodes ====
==== inodes ====
Inode (信息节点) 是大多数Unix文件系统中至关重要的设计元素: 每个文件由数据块 (包含您的原始数据位的扇区),索引块 (包含指向数据块的指针,以便您知道哪个扇区是序列中的第n个) 和一个inode块组成。
Inode (information nodes - 信息节点) 是大多数Unix文件系统中至关重要的设计元素: 每个文件由数据块 (包含您的原始数据位的扇区),索引块 (包含指向数据块的指针,以便您知道哪个扇区是序列中的第n个) 和一个inode块组成。


inode是索引块的根,如果文件足够小,也可以是唯一的索引块。 此外,由于Unix文件系统支持硬链接 (同一文件可能会在目录树中出现多次),inode是存储元数据的自然场所,例如文件大小,所有者,创建/访问/修改时间,锁等。
inode是索引块的根,如果文件足够小,也可以是唯一的索引块。 此外,由于Unix文件系统支持硬链接 (hard links,同一文件可能会在目录树中出现多次),inode是存储元数据的自然场所,例如文件大小,所有者,创建/访问/修改时间,锁等。


==== FAT ====
==== FAT ====
第47行: 第47行:
== 文件系统的工作方式 ==
== 文件系统的工作方式 ==


存储磁盘信息有几种常见的方法。 但是,与 [[Memory Management| 内存管理]] 相比,管理磁盘介质有一些关键区别:
存储磁盘信息有几种常见的方法。 但是,与[[Memory Management|内存管理]]相比,管理磁盘介质有一些关键区别:
* 数据只能以固定大小的块写入。
* 数据只能以固定大小的块写入。
* 磁盘上不同位置的访问时间不同。寻道通常是一项昂贵的操作。
* 磁盘上不同位置的访问时间不同。寻道通常是一项昂贵的操作。
* 数据吞吐量与RAM相比非常小
* 数据吞吐量与RAM相比非常小
* 通常必须维护数据
* 通常必须人为维护数据
因此,一些文件系统具有专门的结构、算法或其组合以提高速度评级。
因此,一些文件系统具有专门的结构、算法或其组合以提高速度评级。


第57行: 第57行:


分配表与位图方法相当。 然而,它可能包含其他信息,而不是仅仅拥有一个空闲或占用的字段。 优点是这种结构的使用简单,缺点是这种方法相对较慢,并且需要一组单独的数据来定义使用哪些部分以及按哪个顺序使用。
分配表与位图方法相当。 然而,它可能包含其他信息,而不是仅仅拥有一个空闲或占用的字段。 优点是这种结构的使用简单,缺点是这种方法相对较慢,并且需要一组单独的数据来定义使用哪些部分以及按哪个顺序使用。
[[FAT]] 例如,将链表和分配表组合在相同的结构中。
例如[[FAT]],将链表和分配表组合在相同的结构中。


=== 单独的文件和系统区域 ===
=== 分离文件和系统区域 ===


一些文件系统将元数据和实际内容保存在磁盘上的单独区域中。 这使得特定类型的数据很容易找到,并允许一个特殊的 “自由” 区域。 缺点是您必须跟踪这些区域之间的边界或边界,因为用法可能会有所不同,并且磁盘必须适应 (大文件: 更多数据,更少元数据; 小文件: 更少数据,更多元数据)。
一些文件系统将元数据和实际内容保存在磁盘上的单独区域中。 这使得特定类型的数据很容易找到,并允许一个特殊的 “自由” 区域。 缺点是您必须跟踪这些区域之间的边界或边界,因为不同情况用途可能会有所不同,并且磁盘必须适应 (大文件: 更多数据,更少元数据; 小文件: 更少数据,更多元数据)。
这种方法在 [[SFS]] 中得到显著应用。
这种方法在[[SFS]]中得到显著应用。


=== 其他方法 ===
=== 其他方法 ===
{{In Progress}}
{{In Progress}}


== 网络文件系统 Network File Systems NFS ==
== 网络文件系统(Network File Systems-NFS)==


所有这些文件系统都是从 “后端” 系统的集合中创建大型分布式存储系统的一种方法。 这意味着您无法 (例如) 在 “NFS” 中格式化磁盘,而是安装了 “虚拟” NFS分区,该分区将反映另一台计算机上的内容。 请注意,基于最新的P2P,密码学和纠错技术 (例如Ocean Store项目或Archival Intermemory),正在对新一代文件系统进行大量研究。)
所有这类文件系统都是从 “后端” 系统的集合中创建大型分布式存储系统的一种方法。 这意味着您无法 (例如) 在 “NFS” 中格式化磁盘,而只能挂载 “虚拟” NFS分区,该分区将反映另一台计算机上的内容。 请注意,基于最新的P2P,密码学和纠错技术 (例如Ocean Store项目或Archival Intermemory),正在对新一代文件系统进行大量研究。)


有关各种网络文件系统的详细信息 [[:Category:Network Filesystems|查看此处]]
有关各种网络文件系统的详细信息请[[:Category:Network Filesystems|查看此处]]


== OSDevers的文件系统 ==
== OSDevers的文件系统 ==
虽然您可以选择 <在此插入收藏夹文件系统> 作为操作系统主文件系统,但您可能需要考虑所有选项。 通常,您需要拥有一个可以快速运行的文件系统,以便在实现 “真实文件系统” 之前可以专注于其余部分
虽然您可以选择 <个人喜欢的XXX文件系统> 作为操作系统主文件系统,但您可能需要考虑实现所有选项。 所以通常您需要先拥有一个可以快速运行的文件系统,以便在实现 “真实文件系统” 之前可以专注于其余部分


=== “初学者” 的文件系统 ===
=== “初学者” 的文件系统 ===
只有五个文件系统既相对容易实现,又值得考虑。 没有一般性建议,因为选择在很大程度上取决于样式和操作系统设计。 相反,您可以阅读比较并做出自己有根据的决定。
这里只提供五个文件系统,它们相对既容易实现,又值得一试。 没有一般性建议,因为选择在很大程度上取决于样式和操作系统设计。 相反,您可以阅读比较并做出自己有根据的决定。


'''[[USTAR]]'''
'''[[USTAR]]'''
* <code>+</code> 在这些初学者文件系统中,这是迄今为止最简单的实现
* <code>+</code> 在这些初学者文件系统中,这是迄今为止最简单的实现
* <code> </code> 使用512字节扇区,就像软盘和磁盘一样
* <code>+</code> 使用512字节的扇区,就像软盘和磁盘一样
* <code> </code> 非常简单,一个具有元数据的扇区,然后是数据扇区
* <code>+</code> 非常简单,一个包含元数据的扇区,后跟数据扇区
* <code> </code> 广泛使用,用于创建tar映像的实用程序适用于每个主流操作系统
* <code>+</code> 广泛使用,用于创建tar映像的实用程序可用于每个主流操作系统
* <code> </code> 支持特殊文件 (例如设备和符号链接)
* <code>+</code> 支持特殊文件(如设备和符号链接)
* <code> </code> 支持Unix权限
* <code>+</code> 支持Unix权限
* <code>-</code> 不支持碎片
* <code>-</code> 不支持碎片处理
* <code>-</code> 没有标准分区类型,您必须自己选择一个
* <code>-</code> 没有标准的分区类型,你必须自己选择一个


'''[[FAT]]'''
'''[[FAT]]'''
第93行: 第93行:
* <code>+</code> 软盘的 “标准”
* <code>+</code> 软盘的 “标准”
* <code>+</code> 相对容易实现
* <code>+</code> 相对容易实现
* <code>-</code> 它涉及长文件名和兼容性的一部分是 [http://en.swpat.org/wiki/Microsoft_FAT_patents patented by Microsoft]
* <code>-</code> 它涉及长文件名和兼容性的一部分是[http://en.swpat.org/wiki/Microsoft_FAT_patents Microsoft的专利]
* <code>-</code> 大开销
* <code>-</code> 较大开销
* <code>-</code> 不支持大型 (>4 GB) 文件
* <code>-</code> 不支持大型 (>4 GB) 文件
* <code>-</code> 不支持Unix权限
* <code>-</code> 不支持Unix权限
第103行: 第103行:
* <code>+</code> 可以放在软盘上
* <code>+</code> 可以放在软盘上
* <code>+</code> 可以从Linux读写
* <code>+</code> 可以从Linux读写
* <code>-</code> 不能从Windows本地读取和写入 (但 [http://www.fs-driver.org/ drivers] 可用)
* <code>-</code> 不能从Windows本地读取和写入 (但[http://www.fs-driver.org/ drivers] 可用)
* <code>-</code> 非常大的开销
* <code>-</code> 非常大的开销
* <code>-</code> 在这些初学者文件系统中,这是最复杂的
* <code>-</code> 在这些初学者文件系统中,这是最复杂的
第110行: 第110行:
* <code>+</code> 支持大文件
* <code>+</code> 支持大文件
* <code>+</code> 作为静态库提供的实现
* <code>+</code> 作为静态库提供的实现
* <code>+</code> 附带实用程序,用于在Linux和Windows上创建磁盘映像
* <code>+</code> 附带实用工具,用于在Linux和Windows上创建磁盘映像
* <code>+</code> 带有FUSE绑定,允许将其安装在Linux系统上
* <code>+</code> 带有FUSE绑定,允许将其安装在Linux系统上
* <code>+</code> 包含源代码文档
* <code>+</code> 包含源代码文档
* <code>-</code> 不支持碎片
* <code>-</code> 不支持碎片处理
* <code>-</code> 对源代码的控制较少
* <code>-</code> 对源代码的控制较少


'''[[ISO 9660]]'''
'''[[ISO 9660]]'''
CDs的定义标准。 如果您从CD启动,那么这就是要走的路。 如果没有,请不要将其设置为您的第一个文件系统。
CDs的定义标准。 如果您从CD启动,那么这就是要走的路。 如果暂时不需要,请不要将其设置为您的第一个文件系统。


=== 开始一个你自己的 ===
=== 开始弄一个自己的 ===
周围有许多不同类型的文件系统,从众所周知的文件系统到更晦涩的文件系统。 关于文件系统最不幸的事情是,每个业余爱好者OS程序员都认为他们设计的文件系统是终极技术,而实际上它通常只是一个FAT的副本,仅这里和那里有一些变化,也许是因为它是最容易实现的。 这个世界不需要另一个像FAT一样的文件系统。 在你决定推出自己的之前,先调查所有的可能性。
周围有许多不同类型的文件系统,从众所周知的文件系统到更晦涩的文件系统。 关于文件系统最不幸的事情是,每个业余爱好者OS程序员都认为他们设计的文件系统是终极技术,而实际上它通常只是一个FAT的副本,仅这里和那里有一些变化,也许是因为它是最容易实现的。 这个世界不需要另一个像FAT一样的文件系统。 在你决定推出自己的之前,先调查所有的可能性。


如果尽管有此警告,您还是决定创建自己的文件系统,那么您应该通过为其实现 [[FUSE]] 驱动程序来开始。 这样做的优点是,您可以将文件系统映像安装为任何其他存储设备,并且可以使用标准工具列出其内容,创建新文件和目录等。 FUSE也可用于Linux,MacOSX和Windows。
如果尽管有此警告,您还是决定创建自己的文件系统,那么您应该通过为其实现 [[FUSE]] 驱动程序来开始。 这样做的优点是,您可以将文件系统映像安装为任何其他存储设备,并且可以使用标准工具列出其内容,创建新文件和目录等。 FUSE也可用于Linux,MacOSX和Windows。


==== 指导方针,如果你真的决定自己滚动 ====
==== 如果你真的决定自制的指导方针 ====
* 仔细考虑它将用于什么。
* 仔细考虑它将用于什么。
* 使用程序找出布局 (例如电子表格)。需要的基本领域是:
* 使用一个程序 (例如电子表格软件)画出布局。需要的基本区域划分是:
** Bootsector。除非您使用UEFI启动,否则这是必须的。即使这样,也建议将其包含在规范中,以与较旧的文件系统兼容。此部分应至少包含磁盘大小,文件表的位置,多个分区磁盘的隐藏扇区以及版本号。我会为您没有想到的功能留出足够的预留空间。不要忘记为jmp指令和引导代码留出空间!
** Bootsector.  除非您使用UEFI引导,否则这是必须的。  即使使用UEFI引导,也建议将其包含在规范中,以与较旧的文件系统兼容。  本节至少应包含磁盘大小、文件表位置、多分区磁盘的隐藏扇区以及版本号。  建议为你想不到的功能留出足够的空间。  不要忘记为jmp指令和引导代码留出空间!
** 文件表。不要认为这只是一个包含文件及其位置列表的简单表。一种想法是,系统将存储文件部分,而不是存储文件,而文件表将列出每个文件中的部分。如果磁盘上的许多文件相同或相似 (例如许可协议),这将有助于节省空间。
** File table.  不要认为这只是一个包含文件及其位置列表的简单表。  有一种想法是,系统将存储各个独立文件部分,而不是存储整个文件,并且文件表将列出每个文件中的部分。  如果磁盘上的许多文件相同或相似 (例如许可协议),这将有助于节省空间。
** 数据区域。文件将存储在这里。
** Data area.  文件将存储在这里。
* 创建一个程序来读写文件系统中的磁盘映像。部分内容将可移植到fs驱动程序中。
* 考虑创建一个程序能用来读写文件系统中的磁盘映像。部分内容将可移植到fs驱动程序中。
* 强烈建议为您的文件系统创建 [[FUSE]] 驱动程序。
* 强烈建议为您的文件系统创建 [[FUSE]] 驱动程序。
* 将fs实现到您的操作系统中。
* 将fs实现到您的操作系统中。


=== 专家文件系统 ===
=== 专家级文件系统 ===
一旦你有一个初学者的文件系统,你可能需要支持更高级的文件系统。 这里有一些: *[[NTFS]] - (Windows) 新技术文件系统。 很难找到文档。 Try [http://www.opensource.apple.com/source/ntfs/ Apple NTFS (open source)].
一旦你有一个初学者的文件系统,你可能需要支持更高级的文件系统。 这里有一些: *[[NTFS]] (New Technologies File System -Windows) 新技术文件系统。 很难找到文档。 试试[http://www.opensource.apple.com/source/ntfs/ Apple NTFS(开源项目)]


== 另见 ==
== 另见 ==

2022年4月2日 (六) 06:09的版本

本文的语气或风格 可能无法反映整个wiki使用的百科全书式语气。 有关建议,请参阅 Wikipedia's article on tone

文件系统
虚拟文件系统

VFS

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

文件系统是操作系统在磁盘等持久性存储设备上排序数据的方法。 它们提供了一个抽象的接口来访问这些设备上的数据,从而可以有效地读取或修改数据。 哪种文件系统方便取决于操作系统的目标应用程序。 例如,Windows使用FAT32或NTFS文件系统。 如果磁盘容量较大,FAT32就不太方便,因为FAT系统的设计只考虑了当时可用的较小磁盘。 同样,NTFS文件系统在微小磁盘上并不方便,因为它被设计为处理大量数据-使用1.44 MB软盘等设备时会有过多的开销。

有关特定文件系统的详细信息,请浏览文件系统的 这个列表

文件系统理论

这个页面正在建设中! 此页面或部分内容仍在改进中,因此可能还不完整。 其内容可能会在不久的将来更改。

文件系统提供了持久存储的通用结构,从而可以将设备的低级结构 (例如,磁盘,磁带,闪存存储)进行抽象。 一般而言,文件系统的目标是允许将逻辑数据组组织成 “文件”,可以将其作为一个单元进行操作。 为此,文件系统必须提供实际辅助存储中文件位置的某种索引。 任何文件系统的基本操作是:

  • 跟踪可用存储空间
  • 跟踪哪些数据块属于哪些文件
  • 创建新文件
  • 将现有文件中的数据读取到内存中
  • 更新文件中的数据
  • 删除现有文件

(有洞察力的读者会注意到,最后四个操作- 创建,读取,更新和删除或CRUD(Create,Read,Update和Delete)-也适用于许多其他数据结构,并且是数据库和文件系统的基础。)

此外,还有其他功能与实用的文件系统一起使用:

  • 为文件分配人类可读的名称,并在创建后重命名文件
  • 允许将文件划分为存储中的非连续块,并跟踪文件的各个部分,即使它们在整个介质中被 “碎片化”
  • 提供某种形式的层次结构,允许将文件分为 “目录” 或 “文件夹”
  • 缓冲读写以减少物理介质上的实际操作次数
  • 缓存频繁访问的文件或部分文件,以加快访问速度
  • 允许将文件标记为 “只读”,以防止意外损坏关键数据
  • 提供一种防止未经授权访问用户文件的机制

在某些文件系统上还可以找到其他功能,例如自动加密或读/写活动的日志记录。

索引方法

有几种索引文件内容的方法,最常用的是 “i-nodes” 和 “文件分配表(File Allocation Tables)”。

inodes

Inode (information nodes - 信息节点) 是大多数Unix文件系统中至关重要的设计元素: 每个文件由数据块 (包含您的原始数据位的扇区),索引块 (包含指向数据块的指针,以便您知道哪个扇区是序列中的第n个) 和一个inode块组成。

inode是索引块的根,如果文件足够小,也可以是唯一的索引块。 此外,由于Unix文件系统支持硬链接 (hard links,同一文件可能会在目录树中出现多次),inode是存储元数据的自然场所,例如文件大小,所有者,创建/访问/修改时间,锁等。

FAT

文件分配表 (FAT) 是ms-dos及其后代的主要索引机制。 FAT上有几种变体,但一般设计是有一个表 (实际上是一对表,一个表作为第一个表的备份,以防损坏),其中包含给定大小的块列表,映射到磁盘的整个容量。

文件系统的工作方式

存储磁盘信息有几种常见的方法。 但是,与内存管理相比,管理磁盘介质有一些关键区别:

  • 数据只能以固定大小的块写入。
  • 磁盘上不同位置的访问时间不同。寻道通常是一项昂贵的操作。
  • 数据吞吐量与RAM相比非常小
  • 通常必须人为维护数据

因此,一些文件系统具有专门的结构、算法或其组合以提高速度评级。

分配表

分配表与位图方法相当。 然而,它可能包含其他信息,而不是仅仅拥有一个空闲或占用的字段。 优点是这种结构的使用简单,缺点是这种方法相对较慢,并且需要一组单独的数据来定义使用哪些部分以及按哪个顺序使用。 例如FAT,将链表和分配表组合在相同的结构中。

分离文件和系统区域

一些文件系统将元数据和实际内容保存在磁盘上的单独区域中。 这使得特定类型的数据很容易找到,并允许一个特殊的 “自由” 区域。 缺点是您必须跟踪这些区域之间的边界或边界,因为不同情况用途可能会有所不同,并且磁盘必须适应 (大文件: 更多数据,更少元数据; 小文件: 更少数据,更多元数据)。 这种方法在SFS中得到显著应用。

其他方法

这个页面正在建设中! 此页面或部分内容仍在改进中,因此可能还不完整。 其内容可能会在不久的将来更改。

网络文件系统(Network File Systems-NFS)

所有这类文件系统都是从 “后端” 系统的集合中创建大型分布式存储系统的一种方法。 这意味着您无法 (例如) 在 “NFS” 中格式化磁盘,而只能挂载 “虚拟” NFS分区,该分区将反映另一台计算机上的内容。 请注意,基于最新的P2P,密码学和纠错技术 (例如Ocean Store项目或Archival Intermemory),正在对新一代文件系统进行大量研究。)

有关各种网络文件系统的详细信息请查看此处

OSDevers的文件系统

虽然您可以选择 <个人喜欢的XXX文件系统> 作为操作系统主文件系统,但您可能需要考虑实现所有选项。 所以通常您需要先拥有一个可以快速运行的文件系统,以便在实现 “真实文件系统” 之前可以专注于其余部分

“初学者” 的文件系统

这里只提供五个文件系统,它们相对既容易实现,又值得一试。 没有一般性建议,因为选择在很大程度上取决于样式和操作系统设计。 相反,您可以阅读比较并做出自己有根据的决定。

USTAR

  • + 在这些初学者文件系统中,这是迄今为止最简单的实现
  • + 使用512字节的扇区,就像软盘和磁盘一样
  • + 非常简单,一个包含元数据的扇区,后跟数据扇区
  • + 广泛使用,用于创建tar映像的实用程序可用于每个主流操作系统
  • + 支持特殊文件(如设备和符号链接)
  • + 支持Unix权限
  • - 不支持碎片处理
  • - 没有标准的分区类型,你必须自己选择一个

FAT

  • + 几乎所有的os都可以读写
  • + 软盘的 “标准”
  • + 相对容易实现
  • - 它涉及长文件名和兼容性的一部分是Microsoft的专利
  • - 较大开销
  • - 不支持大型 (>4 GB) 文件
  • - 不支持Unix权限

Ext2

  • + 支持大文件 (通过一个扩展)
  • + 支持Unix权限
  • + 可以放在软盘上
  • + 可以从Linux读写
  • - 不能从Windows本地读取和写入 (但drivers 可用)
  • - 非常大的开销
  • - 在这些初学者文件系统中,这是最复杂的

BMFS

  • + 支持大文件
  • + 作为静态库提供的实现
  • + 附带实用工具,用于在Linux和Windows上创建磁盘映像
  • + 带有FUSE绑定,允许将其安装在Linux系统上
  • + 包含源代码文档
  • - 不支持碎片处理
  • - 对源代码的控制较少

ISO 9660 CDs的定义标准。 如果您从CD启动,那么这就是要走的路。 如果暂时不需要,请不要将其设置为您的第一个文件系统。

开始弄一个自己的

周围有许多不同类型的文件系统,从众所周知的文件系统到更晦涩的文件系统。 关于文件系统最不幸的事情是,每个业余爱好者OS程序员都认为他们设计的文件系统是终极技术,而实际上它通常只是一个FAT的副本,仅这里和那里有一些变化,也许是因为它是最容易实现的。 这个世界不需要另一个像FAT一样的文件系统。 在你决定推出自己的之前,先调查所有的可能性。

如果尽管有此警告,您还是决定创建自己的文件系统,那么您应该通过为其实现 FUSE 驱动程序来开始。 这样做的优点是,您可以将文件系统映像安装为任何其他存储设备,并且可以使用标准工具列出其内容,创建新文件和目录等。 FUSE也可用于Linux,MacOSX和Windows。

如果你真的决定自制的指导方针

  • 仔细考虑它将用于什么。
  • 使用一个程序 (例如电子表格软件)画出布局。需要的基本区域划分是:
    • Bootsector. 除非您使用UEFI引导,否则这是必须的。 即使使用UEFI引导,也建议将其包含在规范中,以与较旧的文件系统兼容。 本节至少应包含磁盘大小、文件表位置、多分区磁盘的隐藏扇区以及版本号。 建议为你想不到的功能留出足够的空间。 不要忘记为jmp指令和引导代码留出空间!
    • File table. 不要认为这只是一个包含文件及其位置列表的简单表。 有一种想法是,系统将存储各个独立文件部分,而不是存储整个文件,并且文件表将列出每个文件中的部分。 如果磁盘上的许多文件相同或相似 (例如许可协议),这将有助于节省空间。
    • Data area. 文件将存储在这里。
  • 考虑创建一个程序能用来读写文件系统中的磁盘映像。部分内容将可移植到fs驱动程序中。
  • 强烈建议为您的文件系统创建 FUSE 驱动程序。
  • 将fs实现到您的操作系统中。

专家级文件系统

一旦你有一个初学者的文件系统,你可能需要支持更高级的文件系统。 这里有一些: *NTFS (New Technologies File System -Windows) 新技术文件系统。 很难找到文档。 试试Apple NTFS(开源项目)

另见

Wiki页面

I use a Custom Filesystem - What Bootloader Solution is right for me?