在这篇文章中,我们对Linux文件系统进行了概述,这将使新的Linux用户对Linux如何存储、检索和管理数据/文件有一个概念。
目录
- 简介
- 文件系统结构
- Linux文件系统
- 总结
- 参考文献
简介
硬盘的唯一功能是存储数据,访问这些存储数据的唯一方法是指定其在磁盘上的物理位置(圆柱体、磁头、扇区)或逻辑位置(块编号),然而记住扇区和块编号是很困难的。
文件系统是存储设备上的数据和元数据的组织。
Linux文件系统是以分层架构的方式实现的,因此将用户界面层与文件系统的实现分开。
它通过管理诸如文件名、文件大小、修改和创建日期等信息来控制数据的存储和检索方式。
文件系统架构
文件系统负责提供一个命名空间,以定义文件如何被命名和磁盘上数据的逻辑结构。一旦这些被定义,元数据结构就为命名空间提供了逻辑基础。
元数据可能包括确定已用和可用空间块的结构,维护文件和目录的名称及其相应的信息,如大小、修改日期、访问时间,其他结构可以存储关于逻辑卷和分区的高级信息,高级元数据结构将包含关于驱动器或分区上存储的文件系统的信息,然而,这与文件系统元数据是分开的。
APIs提供了对操纵文件和目录的系统调用的访问。它们帮助完成诸如创建、移动和删除文件的任务。
一个安全模型定义了对文件和目录的访问权限。
最后是将所有这些功能联系起来的软件。该软件由两部分组成,以提高系统和程序员的效率。
虚拟文件系统为内核和程序员访问所有类型的文件系统提供了一套命令。
驱动程序将文件系统的命令解释为为文件系统指定的命令。
Linux文件系统
UNIX文件系统有一个类似的一般结构。即使确切的细节有所不同,中心概念仍然是相同的。这些是超级块,它将包含关于文件系统的信息,例如大小,inode,它将包含关于文件的信息,不包括它的名字,因为它和inode号码一起存储在目录中,inode将有数据块号码,如果需要更多,指针的空间是动态分配。动态分配的块被称为间接块,因此要找到一个数据块,我们首先要找到间接块。
存在近100种Linux文件系统,每一种都定义了数据的存储和访问方式。
一些Linux的文件系统有:Minix, vfat, ext, ext2, ext3, ext4, msdos, fat, ntfs, reiserfs, xfs, cramfs, btrfs, gfs, hfsplus, jfs, swap, zfs。
Ext, Ext2, Ext3, Ext4
这些代表了扩展文件系统。Ext是不再使用的旧版本。
Ext2允许管理2TB的数据。
Ext3是对其前身的改进,并表现出向后的兼容性,然而,它不支持文件恢复和磁盘快照,因此不用于分离器。
Ext4在其所有前身中速度更快,并兼容SSD,这是Linux发行版的默认文件系统。
Btrfs
B-Tree文件系统是一个写时复制的文件系统,旨在实现先进的fs(文件系统)功能,同时专注于易于管理、容错和修复。
它可以用于需要高性能和大存储能力的地方。
CoW的一个缺点是大文件在被修改时是碎片化的,因此需要进行碎片整理,但是Btrfs支持在线碎片整理,因此不需要卸载fs。
交换空间
物理内存由配置在物理磁盘上的交换空间补充,一起被称为虚拟内存。
这个空间可以配置在交换分区或交换文件系统上。
这种交换文件系统对于内存分页很有用,因为物理内存是有限的,因此不能处理所有的系统进程。
这种由交换文件系统提供的空间减少了在有大量物理内存的系统中配置大量基于磁盘的交换空间的需要,因为它提供了虚拟的交换空间地址而不是真实的物理交换空间来响应保留空间的请求。
XFS
它是一个64位的日志文件系统,在提交到主文件系统之前,它记录了变化。
它是一致的,在发生故障或崩溃的情况下可以加速恢复。
它的并行I/O性能使它在I/O线程、文件系统带宽和文件系统大小方面具有高度的可扩展性,甚至在跨越许多存储设备时也是如此。
其应用的一个例子是在多个存储服务器上实施一个几TB的文件系统,每个服务器由多个FC连接的磁盘阵列组成。
ReiserFs
这是由Hans Reiser和Namesys公司开发的第一个日记文件系统,当时我们还没有想到Ext文件系统。
它能快速处理小文件,并支持日志,因此在出现问题时能快速恢复。有了它,你可以把小文件和文件尾巴放在一个区块中,从而减少占用的空间。
它是基于树的,支持快速重建。
最大的文件大小是1 exabyte,在一个分区上,它可以容纳大约40亿个文件。
这个文件系统是独特的,因为它有能力优化小文件占用的磁盘空间,缺点是它在文件系统维护工具层面与ext2不兼容。
JFS
日志文件系统是一个64位的日志文件系统。它支持最大255字节的文件名,最大4PB的文件和最大32PB的文件系统。
有两个版本,jfs1和jsf2,后者与前者类似,只是它支持更大的卷和文件大小,这对于存储经常包含在一个文件中的大型数据库非常有用。
ZFS
zettabyte文件系统是最先进、功能最齐全的文件系统。
我们可以把它看成是一个卷管理器加RAID阵列的组合,这个功能允许额外的磁盘被添加到ZFS卷中,因此可以一次性向文件系统添加额外的空间。
这个文件系统依赖于内存,因此至少需要8GB的内存。
它可以管理多个磁盘,并与一些最伟大的RAID设置竞争。
它是可扩展的,因为它可以管理zettabytes的数据。
它的完整性在于,ZFS内部的所有操作都使用校验和来确保文件的完整性。
它能够实现不同的RAID级别,同时还能提供与硬件RAID控制器相当的性能。
总结
在UNIX/Linux系统中,所有东西都是一个文件,否则就是一个进程。程序、服务、图像等都是文件,甚至I/O设备也被视为文件,所有这些都由文件系统处理和管理。