在接下来的文章中,我们将向您介绍文件系统的基本知识,了解文件系统的类型、如何创建文件系统以及其他有关该文件系统的许多有用信息。
1。什么是文件系统?
文件系统是操作系统用来跟踪驱动器或分区上的文件的方法和数据结构。可以将文件系统临时转换为文件系统。这就是文件在驱动器上的组织方式。该术语还用于指代用于存储文件或文件系统类型的分区或驱动器。因此,如果有人说“我有两个文件系统”,则表示用户有两个分区,其中一个分区存储文件,或者一个分区使用“扩展文件系统”,即文件系统类型。
- 了解 Linux 中文件系统的基础知识
- 了解 Linux 操作系统上的文件系统和文件夹
驱动器或分区与保存在其上的文件系统的区别非常重要。一些程序(包括文件系统创建程序)直接在驱动器或分区的原始扇区上工作。如果有一个文件系统存在,它将被破坏或严重损坏。大多数程序在文件系统上运行,因此它们不能在不包含文件系统(或包含错误类型)的分区上运行。
为了将分区或驱动器用作文件系统,需要对其进行初始化并将该文件系统类型的数据结构写入驱动器.这个过程称为创建文件系统。
大多数类型的 UNIX 文件系统具有相同的一般结构,尽管细节有很大不同。关键概念是 superblock , inode , 数据块 , 目录块和间接块。 超级锁包含文件系统作为一个整体的信息,例如它的大小(这里的确切信息取决于文件系统)。 inode 包含有关文件的所有信息,但文件名除外。名称与大量 inode 一起存储在文件夹中。目录条目包括文件名和代表该文件的 inode 数。 Inode 包含大量数据块,用于在文件中存储数据。 inode 中有一些数据块的空间,但是,如果需要,将有更多空间用于指向自动分配的数据块的指针。这些分配块是间接块,名称表示要找到数据块,用户必须先在间接块中找到它的编号。
UNIX 文件系统经常允许创建文件漏洞(这是通过调用系统Iseek(),检查手册页来完成的),这意味着文件系统仅欺骗它位于文件中具有 0 字节的特定位置,但没有为文件中的该位置保留实际的磁盘扇区(即,文件将使用更少的磁盘空间)。这通常发生在小型二进制文件、Linux 共享库、一些数据库和一些其他特殊情况下。 (该漏洞是通过在间接块或inode中存储数据块的地址等特殊值来完成的。这个特殊地址意味着没有为文件的一部分分配数据块,因此存在漏洞文件)。
2。文件系统丰富
Linux 支持多种文件系统。在本文中,最重要的系统是:
Minix
Minix 是最古老和最受信任的系统,但它的功能相当有限(一些缺少时间戳),最多 30 个文件名字符)并且容量有限(最大每个文件系统 64 MB)
下
下是minix文件系统的修改版——提高了文件名和文件系统大小的限制,但没有引入任何新特性。 Xia 也不是很受欢迎,但报告显示该系统运行良好。
Ext3
ext3文件系统具有ext2的所有特性。但是,不同之处在于日记的存在。这提高了系统崩溃时的性能和房间恢复时间。这使得 ext3 比 ext2 更受欢迎。
Ext2
Ext2是早期Linux系统文件中功能最丰富的系统。它被设计成易于兼容新版本,因此文件系统的新代码版本不需要重写现有文件系统。
分机
作为ext2的老版本,这个版本不兼容新版本。它几乎从不在新安装中使用,大多数用户转换为 ext2。
Reiserfs
是一个更强大的文件系统。使用日记功能会减少数据丢失。
Jfs
JFS 是一种文件系统,具有 IBM 为在高性能环境中工作而设计的日志功能。
Xfs
XFS 最初由 Silicon Graphics 设计,用作具有 64 位日志功能的文件系统。 XFS 还旨在为大型文件和文件系统保持高性能。
另外,支持多种外部文件系统操作,方便与其他操作系统交换文件。外部文件系统与原始程序一样工作,只是它们通常缺少一些常见的 UNIX 功能或其他奇怪的限制。
Msdos
Msdos 兼容 MS-DOS FAT 文件系统(包括 OS/2 和 Windows NT)
Umsdos
Umsdos 扩展了 Linux 中的 msdos 文件系统驱动程序,以接收长文件名、所有者、权限、链接和设备文件。这样就可以像使用 Linux 一样使用通用 msdos 文件系统,因此 umsdos 无需单独的 Linux 分区。
Vfat
这是FAT文件系统的扩展名为FAT32。它支持比 FAT 更大的驱动器大小。大多数 Windows 磁盘都是 vfat。
Iso9660
I9696 是一个标准的 CD-ROM 文件系统,用于 CD-ROM 标准的流行 Rock Ridge 扩展允许自动支持更长的文件名。
Nfs
Nfs 是一个网络文件系统,它允许在多台计算机之间共享一个文件系统,以便轻松访问它们中的文件。
Smbfs
是一个允许与 MS Windows 计算机共享文件系统的网络文件系统。它与 Windows 文件共享协议兼容。
Hpfs
是OS/2文件系统
Sysv
SystemV/386、Coherent 和 Xenix 文件系统。
NTFS
微软最先进的文件系统比以前的微软文件系统提供更快的文件访问和稳定性。
要使用的文件系统的选择取决于具体情况。如果兼容性或其他原因需要使用非原始文件系统之一,则需要使用该选项。如果您可以自由选择,那么也许最聪明的方法是使用 ext3,因为它包含 ext2 的所有功能,并且是一个日志文件系统。有关该文件的更多信息,请阅读下面的第 5.10.6 节。
还有proc,可以通过/proc目录访问,可以认为是一个文件系统,虽然不是真的。 proc 系统可以很容易地访问某些内核数据结构,例如进程列表。它使数据结构看起来像一个文件系统,并且可以使用所有常见的文件工具来操作该系统。例如,要获取所有进程的列表,可以使用以下命令:
$ ls-l/proc total 0 dr-xr-x 4 root root 0 Jan 31 20:37 1 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94 dr-xr-xr-x 4 liw 用户 0 Jan 31 20:37 95 dr-xr-xr-x 4 root 用户 0 Jan 31 20:37 98 dr-xr-x 4 ry 用户 0 Jan 31 20 :37 99-r-r-r--1 root root 0 Jan 31 20:37 devices-r-r-r--1 root root 0 Jan 31 20:37 dma-r-r-r--1 root root 0 Jan 31 20:37 文件系统-r-r-r--1 root root 0 Jan 31 20:37 中断-r--------1 root root 8654848 Jan 31 20:37 kcore-r-r-r--1 根 0 Jan 31 11:50 kmsg-r-r-r--1 根根 0 Jan 31 20:37 ksyms-r-r-r--1 根根 0 Jan 31 11:51 loadavg-r-r-r--1 root root 0 Jan 31 20:37 meminfo-r-r-r--1 root root 0 Jan 31 20:37 dr-xr-x 模块 2 root root 0 Jan 31 20:37 net dr-xr-xr-x 4 root root 0 Jan 31 20:37 self-r-r--r--1 root root 0 Jan 31 20:37 stat-r-r-r--1 root root 0 Jan 31 20:37 uptime-r-r-r--1 root root 0 Jan 31 20:37 版本 $
请注意,虽然它被称为文件系统,但没有部分proc文件系统直接在驱动器上工作。它只存在于系统内核的虚拟系统中。如果您搜索 proc 文件系统的某些部分,请将系统相乘以使该部分显示在某个地方,尽管它不是。所以,虽然有一个/proc/kcore很多MB的文件,但还是不占一点磁盘空间。
3。应该使用哪些文件系统?
使用多个文件系统通常没什么意义。目前,ext3 是最流行的文件系统,因为它是一个带日志的文件系统(日志是在操作数据时记录系统操作的能力,有助于在不扫描整个文件的情况下快速检测损坏的文件,并使数据恢复过程更加可靠)。这是最明智的选择。 Reiserfs 也是一个受欢迎的选择,因为它也有日志功能。根据计费结构的成本、速度、可靠性(感知)、兼容性等原因,建议用户使用其他文件系统。这是根据具体情况决定的。
使用日志的文件系统也称为日志文件系统。文件系统日志维护记录,记录,关于文件系统上发生的事情。如果系统崩溃,或者您的孩子触摸电源按钮,日志文件系统将使用文件系统记录重新创建丢失和未保存的数据。这降低了数据丢失的可能性,并且可以成为 Linux 文件系统中的标准功能。但是,与其他系统一样,仍然可能发生错误。所以请记住在紧急情况下备份您的数据。
阅读第 5.10.6 节了解不同文件系统类型的特性的详细信息。
4。创建文件系统
文件系统被创建,即用mkfs命令初始化。实际上,每种类型的文件系统都有一个单独的程序。 Mkfs 只是一个用户界面,它根据所需的文件系统类型运行适当的程序。使用自定义 -t fstype 选择此类型。
由mkfs 调用的程序的命令行界面略有不同。最流行和最重要的选项总结如下:
-t fstype
选择文件系统类型。
-c
搜索坏块并相应地创建坏块列表。
-l 文件名
从文件名中读取原始坏块列表。
还有很多程序用来在创建特定文件系统时添加特定选项。例如,mkfs.ext3 添加了一个-b 选项以允许管理员指定要使用的块大小。确保确定是否有特定程序可用于您要使用的系统文件类型。有关确定使用块大小的更多信息,另请参阅下面的第 5.10.5 节。
要在软盘上创建ext2文件系统,需要发出以下命令:
$ fdformat-n/dev/fd0H1440 双面,80 轨,18 秒/轨。 总容量 1440 KB。 格式化。完成 $ 坏块/dev/fd0H1440 1440 $> $坏块 $ mkfs.ext2-l bad-blocks/dev/fd0H1440 mke2fs 0.5a,94 年 4 月 5 日,用于 EXT2 FS 0.5,94/03/10 360 个 inode,1440 个块 72 个块 (5.00%) 保留给超级用户 第一个数据块=1 块大小=1024 (log=0) 片段大小=1024 (log=0) 1 个块组 每组 8192 个块,每组 8192 个片段 每组 360 个 inode 写入 inode 表:完成 写入超级块和文件系统记帐信息:完成 $
首先,floppy 磁盘必须被格式化(选项 -n 禁止验证,即检查坏块)。然后使用 badblocks 搜索坏块,并将输出重定向到文件-badblocks。最后,文件系统会创建一个坏块列表,并使用找到的任何坏块进行初始化。
-c 选项可能已与 mkfs 一起使用,而不是 badblocks 和单独的文件。请参阅下面的示例。
$ mkfs.ext2-c/dev/fd0H1440 mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 360 个 inode, 1440 个块 72 个块 (5.00%) 为超级用户保留第一个数据块=1 块大小=1024 (log=0) 分片大小=1024 (log=0) 1 个块组 每组 8192 个块,每组 8192 个分片 每组 360 个 inode 检查坏块(只读测试):done 写入 inode 表:việc Writing Writing超级块和文件系统记帐信息:done $
-c 选项比使用单独的 badblocks 更方便,但需要 badblocks文件系统创建后再次测试。
在硬盘或与软盘相同的分区上准备文件系统的过程,但不需要格式化。
5。文件系统块大小
块大小决定了文件系统用来读写数据的大小。在使用大文件(例如数据库)时,更大的块大小将有助于提高 I/O 性能。发生这种情况是因为驱动器在搜索下一个块之前可以读取或写入数据的时间更长。
另一方面,如果文件系统中有很多较小的文件,例如/等,很可能会浪费更多的磁盘空间。
例如,如果将块大小设置为 4096 或 4K,并创建一个 256 字节大小的文件,它仍然会占用 4K 的硬盘空间。对于看似正常的文件,但当您的文件系统包含数百或数千个文件时,这可能会增加。
块大小也会影响某些文件系统上支持的最大文件大小,因为许多现代文件系统不受块大小或文件大小的限制,而是受数量限制。块。因此,您需要使用“块大小 * 最大块数=最大块大小”公式。
6。比较文件系统类型
表一:文件系统类型对比
评论