Red Flag Asianux Server 3支持多种最新的日志文件系统,包括 XFS、REISERFS、EXT3等。本章将向您介绍这些日志文件系统的特性及简单的使用方法,以便您尽可能轻松、愉快地使用最新的文件系统技术。
在此之前,先介绍一些必要的基本知识,以帮助更好地理解。
3.1日志系统(Journaling)
日志是一项非常重要的技术,在 ReiserFS、XFS、ext3等文件系统中都会用到它,用以达到快速检查文件系统一致性的目的。
3.1.1 元数据(Meta-data)
文件系统的存在">允许用户储存、检索和操作数据,为此文件系统需要保持一个内在的数据结构使得数据有组织并且便于访问。这一内部的数据结构(确切地说就是“关于数据的数据”)被称为元数据,它为文件系统提供了其特定的身份和性能特征。
通常,我们并不直接和文件系统的元数据打交道。而是一个特别的 Linux文件系统驱动程序为我们完成相应的工作。Linux文件系统驱动程序是专门用来操作复杂的元数据的。然而,为了使得文件系统驱动程序正常工作,有一个很重要的必要条件,它需要在某种合理的、一致的和没有干扰的状态下找到元数据。否则,文件系统驱动程序将不能理解和操作元数据,即不能存取文件。
3.1.2 fsck
当 linux系统关闭时,内核驱动会把所有的缓冲区数据转送到磁盘,并确保文件系统被彻底卸载,这样文件系统的元数据将会处于可用的状态,并可以在下次启动时被正常装载及使用。但当一些意外发生时,文件系统没有被彻底卸载,元数据可能是错误的,这时就需要用 fsck对文件系统进行全面地检查,修正找到的任何错误,使元数据恢复一致。
fsck的工作就是确保要装载的文件系统的元数据处于可使用的状态。典型方式是, fsck扫描那些将被装载的文件系统,确定它们已被彻底卸载,并做出合理的假设——所有的元数据都没有问题;当 fsck检测到没有被彻底卸载的文件系统时,就会彻底的扫描并且全面地检查该文件系统的元数据,修正这一过程中找到的任何错误;一旦 fsck完成工作,文件系统就可以使用了。
尽管意想不到的电源故障或系统挂起可能造成最近修改的数据丢失,但是由于元数据现在是一致的,文件系统可以被装载和使用。
使用 fsck可以确保文件系统的一致性,但却不是最佳的解决方案。使用 fsck所面临的问题是:fsck必须扫描文件系统的全部元数据,才能确保文件系统的一致性。
对文件系统所有的元数据做彻底的一致性检查是一项极为费时的工作,文件系统越大,完成扫描所花费的时间就越长。当 fsck运行时,系统实际上是被中断了而不能工作,如果有一个庞大的文件系统,可能就会花上半个小时或更长时间来执行 fsck,这通常是难以接受的。
3.1.3日志(Journal)
日志文件系统通过增加一个叫做日志的新数据结构来解决 fsck问题。该日志位于磁盘上的结构。在对元数据做任何改变之前,文件系统驱动程序会向日志中写入一个条目,该条目描述了它将要做些什么,然后继续并修改元数据。通过这种方法,日志文件系统就拥有了近期元数据被修改的历史记录,当检查到没有彻底卸载的文件系统的一致性问题时,这个记录就大有用处了。
可以这样来看待日志文件系统——除了存储数据和元数据以外,它们还有一个日志——可以称之为元元数据。
fsck如何处理日志文件系统呢?实际上,通常它什么都不做,只是忽略文件系统并允许它被装载。在快速地恢复文件系统到达一致性状态的背后,真正起作用的在于 Linux文件系统驱动程序中。
当文件系统被装载时,Linux文件系统驱动程序查看文件系统是否完好。如果由于某些原因出了问题,那么就需要对元数据进行修复,但不是执行对元数据的彻底扫描(就像 fsck那样),而是查看日志。由于日志中包含了按时间顺序排列的近期的元数据修改记录,它就简单地查看最近被修改的那部分元数据。因而,它能够在几秒钟时间内将文件系统恢复到一致性状态。并且与 fsck所采用的传统方法不同,这个日志重放过程在大型的文件系统上并不需要花更多的时间。有了日志,数百 G的文件系统元数据几乎能在瞬间恢复到一致性的状态。
3.1.4不同的日志文件系统
哪种 Linux日志记录文件系统是“最好的”?没有一个对每个应用程序都“合适的”文件系统。每个文件系统都有自身的长处。所以,理解每种文件系统的长处和弱点,以便对使用哪种文件系统做出一个有根据的选择,远远优于选出一个绝对的“最好的”文件系统,并将它用于所有可能的应用程序。