Linux文件系统格式有哪些类型?选错你就要辞职了
请关注本百科号,每天坚持更新原创干货技术文章。
如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习
1. 前言
本文主要讲解如何正确选择linux根分区文件系统类型,文件系统类型并不是分区时确认的,而是在格式化阶段确认和实施的,格式分区时,选择合适的文件系统很重要。
大家知道,Windows操作系统里最常用的文件系统是NTFS,而Linux系统则大为不同。
linux文件系统格式类型介绍
2. 了解各种文件系统类型特性
Linux 支持多种不同的文件系统。每种文件系统都有其优点和缺点,以及它们自己的一组性能特征。文件系统的一个重要属性是日志,它有助于在发生系统崩溃后更快地恢复。一般而言,在选择时,日志文件系统优先于非日志文件系统。您可能还希望考虑您选择的文件系统是否支持安全增强 Linux(或 SELinux)。两种较新的文件系统 ZFS 和 btrfs 都使用了一种称为 Copy on Write(写时复制)的技术来改进数据完整性和解决大型存储需求。以下是应对 LPI 考试您需要知道的文件系统类型的简介。请参见 参考资料,获取额外的背景信息。
了解各种文件系统类型特性
2.1 ext2 文件系统介绍
ext2 文件系统(也称为第二个扩展文件系统)被开发用来补充早期 Linux 版本中使用的 Minix 文件系统中的不足之处。多年以来,它被广泛用于 Linux 之上。ext2 中没有日志,它在很大程度上已被 ext3 和最新的 ext4 所取代。
ext2 文件系统介绍
2.2 ext3 文件系统介绍
ext3 文件系统向标准的 ext2 文件系统添加了日志功能,因此是一个非常稳定的文件系统的一次革命性改进。它在大部分条件下都提供了合理的性能,而且仍在不断改进。因为它在成熟的 ext2 文件系统上添加了日志,所以可以将现有的 ext2 文件系统转换为 ext3,甚至可以在需要时再次转换回来。
EXT3文件系统的唯一目标是克服fsck程序需要大量时间来完全恢复因文件更新操作期间发生的不正确关闭而损坏的磁盘结构的问题。EXT文件系统的唯一增加是journal,它预先记录了将对文件系统执行的改动。磁盘结构的其余部分和EXT2中是相同的。
EXT3中的journal并不是直接将数据写入磁盘的数据区域,而是将文件数据及其元数据写入到磁盘上的指定区域。一旦数据安全地存储在硬盘上,它就可以合并到目标文件或附加到目标文件中,而这几乎不会丢失数据。由于该数据被提交到磁盘的数据区域,因此需更新journal以便在发生系统故障时文件系统保持一致状态,然后该journal中的所有数据都被提交。在下次启动时,将检查文件系统是否存在不一致性,然后将journal中剩余的数据提交到磁盘的数据区域以完成对目标文件的更新。
Linux实现的ext3文件系统,包括3个级别的日志:
日记:(慢,但风险小)元数据和文件内容都在提交到主文件系统前写入。这样将提高稳定性但性能上有所损失,因为所有的数据都要写入2次。如果没有在/etc/fstab中加上这个选项,修改中的文件遇上kernel panic或突然断电的时候就可能发生损毁的情况,当然,这还是得看软体是怎么写入文件的。
顺序:(中速,中等风险)顺序和写回类似,但在对应的元数据标记为提交前,强制写入文件内容。这是很多Linux发行版默认的方式。
回写:(快,但风险最大;在某种感觉上和ext2相当)这边会写入日志的只有metadata而已,文件的内容并不会跟着写入日志里面。这样的作法让整个效率变快了不少,不过也同样造成了文件写入时不按顺序的结果。举例来说,文件在附加变大的同时发生了crash的情况,就可能造成下次挂载时文件后面就附加一堆垃圾数据的情况。
尽管ext3缺少一些当代文件系统的特点,像是动态的inode、树状的资料储放结构等等,都是被视作ext3的缺点之一,不过在这些特点之外,ext3在文件系统回复上面就有了很好的表现。跟树状结构的文件系统相比,在ext3上面metadata是放在固定的位置,而且在写入的同时会重复写入的一些资料让ext2/3在面临资料损毁的情况下还有挽回的机会。
2.3 ext4 文件系统介绍
ext4 文件系统最初是 ext3 的扩展,它通过增加存储限制和提高性能来满足更大的文件系统的需求。为了保留 ext3 的稳定性,2006 年 6 月决定将这些扩展分支到一个新文件系统中,也就是 ext4。ext4 文件系统于 2008 年 12 月发布,包含在 2.6.28 内核中。对 ext3 的一些更改包括:
文件系统最大为 1 EB,可包含最大 16 TB 的文件使用盘区来取代块映射,以此作为提高性能的一种途径使用日志校验和提高可靠性因为在检查期间会跳过未分配的块,所以文件系统检查更快。延迟的分配和多块分配器提高了性能并减少了文件碎片。时间戳更改提供了更细的粒度,增加了一个新的创建日期(需要最终更新许多库和实用程序才能完-全发挥作用)。一项进一步的时间戳更改解决了将时间戳存储为有符号 32 位整数所导致的 2038 年问题。大型文件系统ext4文件系统可支持最高1 Exbibyte的分区[6]与最大16 Tebibyte的文件。Extentsext4引进了Extent文件存储方式,以取代ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型文件的效率并减少分裂文件。ext4支持的单一Extent,在单一block为4KB的系统中最高可达128MB[1]。单一inode中可存储4笔Extent;超过四笔的Extent会以Htree方式被索引。向下兼容ext4向下兼容于ext3与ext2,因此可以将ext3和ext2的文件系统挂载为ext4分区。由于某些ext4的新功能可以直接运用在ext3和ext2上,直接挂载即可提升少许性能。ext3文件系统可以部分向上兼容于ext4(也就是说ext4文件系统可以被挂载为ext3分区)。然而若是使用到Extent技术的ext4将无法被挂载为ext3。预留空间ext4允许对一文件预先保留磁盘空间。当前大多数文件系统做到这点的方式是直接产生一个填满0的文件;ext4和XFS可以使用Linux核心中的一个新的系统调用“fallocate”获取足够的预留空间。延迟获取空间ext4使用一种称为allocate-on-flush的方式,可以在数据将被写入磁盘(sync)前才开始获取空间;大多数文件系统会在之前便获取需要的空间。这种方式可以增加性能并减少文件分散程度。突破32000子目录限制ext3的一个目录下最多只能有32000个子目录。ext4的子目录最高可达64000,且使用“dir_nlink”功能后可以达到更高(虽然父目录的link count会停止增加)。为了避免性能受到大量目录的影响,ext4默认打开Htree(一种特殊的B树)索引功能。该功能已经实现于Linux核心2.6.23版。日志校验和Ext4使用校验和特性来提高文件系统可靠性,因为日志是磁盘上被读取最频繁的部分之一。这个特性还有一个好处就是可以安全地避免日志处理时磁盘I/O的等待,而稍微提高一些性能。日志校验和的技术源于威斯康辛大学的一篇名为IRON File Systems的研究论文(见第六节transaction checksums校验和处理在线磁盘整理对于在线磁盘整理工具有许多草案,但是这些草案都没有被包含在主流的内核当中。即使Ext4包含有许多避免磁盘碎片的技术,但是磁盘碎片还是难免会在一个长时间使用过的文件系统中存在。Ext4将会有一个具有磁盘整理功能的工具。快速文件系统检查Ext4将未使用的区块标记在inode当中,这样可以使诸如e2fsck之类的工具在磁盘检查时将这些区块完全跳过,而节约大量的文件系统检查的时间。这个特性已经在2.6.24版本的Linux内核中实现。2.4 XFS 文件系统介绍
XFS,一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX 5.3版的默认文件系统。2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux内核上。XFS特别擅长处理大文件,同时提供平滑的数据传输。当前CentOS 7也将XFS+LVM作为默认的文件系统。
XFS 是一种包含日志功能的文件系统。它拥有可靠的功能并针对可伸缩性进行了优化。XFS 大胆地将传输中的数据缓存在 RAM 中,所以在使用 XFS 时,推荐使用不会中断的电源。
交换文件系统
交换空间必须格式化才能用作交换空间,但它一般不会被视为文件系统。
XFS的开发始于1993年,在1994年被首次部署在IRIX 5.3上。2000年5月,XFS在GNU通用公共许可证下发布,并被移植到Linux上。2001年XFS首次被Linux发行版所支持,现在所有的Linux发行版上都可以使用XFS。
XFS最初被合并到Linux 2.4主线中,这使得XFS几乎可以被用在任何一个Linux系统上。Arch, Debian, Fedora, openSUSE, Gentoo, Kate OS, Mandriva, Slackware, Ubuntu, VectorLinux和Zenwalk的安装程序中都可选择XFS作为文件系统,但由于默认的启动管理器GRUB中存在bug[1],以上发行版中只有少数几个允许用户在 /boot 挂载点(引导目录)上使用XFS文件系统。
FreeBSD在2005年12月获得了对XFS的只读支持,并在次年6月引入了试验性的写支持。不过这些只是为了方便用户从Linux上迁移到FreeBSD上,并不是为了把XFS作为主打文件系统使用。Red Hat Enterprise Linux 5.4 64位版的内核完整支持XFS,但未包含创建和使用XFS的命令行工具(CentOS正在进行这方面的尝试),原因是这些软件包还不够稳定[2]。Red Hat Enterprise Linux 7/CentOS默认使用XFS文件系统。
2.5 vfat 文件系统
此文件系统(也称为 FAT32)没有日志功能,缺少完整的 Linux 文件系统实现所需的许多功能。它对在 Windows 与 Linux 系统之间交换数据很有用,因为它可以同时被 Windows 和 Linux 读取。不要将此文件系统用于 Linux,除非用该文件系统在 Windows 和 Linux 之间共享数据。如果将 Linux 存档文件解压到 vfat 磁盘上,您将失去一些权限,比如执行权限,而且您将失去可能存储在该存档文件中的所有符号链接。
2.6 ReiserFS 文件系统
ReiserFS 是一种基于 B 树的文件系统,它具有非常好的整体性能,尤其对于大量小文件。ReiserFS 还具有良好的扩展性能并具有日志功能。它没有再得到积极开发,不支持 SELinux,在很大程度上已被 Reiser4 取代,而后者的未来并不明朗。
先进的日志机制ReiserFS有先进的日志(Journaling/logging)机制,在系统意外崩溃的时候,未完成的文件操作不会影响到整个文件系统结构的完整性。 ext2虽然健壮性很强,但一旦文件系统被不正常地断开,在下一次启动时它将不得不进行漫长的检查系统数据结构的完整性的过程,这是为了防止数据丢失而必需的操作。对于较大型的服务器文件系统,这种"文件系统检查"可能要持续好几个小时,在很多场合下这样长的时间是无法接受的。 解决这个问题的一种技术"日志文件系统"。在日志的帮助下,每个对数据结构的改变都被记录下来,日志在机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。正因为如此,在系统突然崩溃时,在下次启动几秒钟后就能恢复成一个完整的系统,系统也就能很快的使用了。支持海量磁盘和优秀的综合性能ReiserFS是一个相当现代化的文件系统,相比之下,ext2虽然性能已经很好了,但其设计还只是20世纪80年代的水准。ReiserFS的出现,使Linux拥有了像Irix/AIX那样的高档商用Unix才有的高级文件系统。ReiserFS可轻松管理上百G的文件系统,在企业级应用中有其用武之地,由于它的高效存储和快速小文件I/O特点,它在桌面系统上也表现出色:启动X窗口系统的时间ReiserFS比ext2少1/3。而ext2则无法管理2G以上的单个文件,这也使得ReiserFS在某些大型企业级应用中比ext2要出色。ReiserFS的缺点ReiserFS一个最受人批评的缺点是每升级一个版本,都将要将磁盘重新格式化一次,这个缺点也正在改进中。2.7 btrfs 文件系统
btrfs(B 树文件系统)最初由 Oracle 开发,可根据 GPL 许可来获得(参见 参考资料)。它是一种用于 Linux 的新的写时复制文件系统,旨在实现高级功能,同时专注于容错、修复和轻松的管理。Btrfs 文件系统代码自 2009 年的 2.6.29 版开始已加入主线内核中。具体地讲,该文件系统旨在高效地处理大型文件,处理贯穿多个设备的文件系统。
一些设计目标包括:
很大的文件大小(高达 2^64 字节)数据和元数据的校验和集成了对多个设备的支持SSD 感知高效的增量备份数据完整性写时复制不会重写数据,所以硬件故障不会让数据处于不一致状态像大部分新文件系统一样,该系统花了很长时间才获得了足够的稳定性,以供用户向其提交重要的数据,所以它还不是大多数 Linux 发行版的主要文件系统。3. 适合Linux根分区的文件系统
适合Linux根分区的文件系统
CentOS 7.0开始默认文件系统是xfs,CentOS 6是ext4,CentOS 5是ext3
xfs是一种非常优秀的日志文件系统,它是SGI公司设计的。xfs被称为业界最先进的、最具可升级性的文件系统技术xfs是一个64位文件系统,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位Linux系统,文件和文件系统的大小会被限制在16TB。
Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:
ext3和ext4的最大区别在于,ext3在fsck时需要耗费大量时间(文件越多,时间越长),而ext4在fsck时用的时间会少非常多ext4是第四代扩展文件系统(英语:Fourth EXtended filesystem,缩写为ext4)是linux系统下的日志文件系统,是ext3文件系统的后继版本。
本文已同步至博客站,尊重原创,时请在正文中附带以下链接:
点击了解更多,快速查看更多的技术文章列表。