关于Linux系统中日志文件系统的概述
来源: www.ixdba.net 
作者: IXDBA.NET官方
时间:2007-09-07 阅读:62
本文章共2609字,分2页,当前第1页,快速翻页:1 2
众所周知,文件系统是操作系统最为重要的一部分。每种操作系统都有自己的文件系统。文件系统直接影响着操作系统的稳定性和可靠性。 Linux 下的文件系统通常有两种,即日志文件系统和非日志文件系统,以下简单介绍两类文件系统。
一、 非日志文件系统
非日志文件系统在工作时,不对文件系统的更改进行日志记录。
文件系统通过为文件分配文件块的方式把数据存储在磁盘上。每个文件在磁盘上都会占用一个以上的磁盘扇区,文件系统的工作就是维护文件在磁盘上的存放,记录文件占用了哪几个扇区。另外扇区的使用情况也要记录在磁盘上。文件系统在读写文件时,首先找到文件使用的扇区号,然后从中读出文件内容。如果要写文件,文件系统首先找到可用扇区,进行数据追加。同时更新文件扇区使用信息。不同的文件系统用不同的方法分配和读取文件块。例如, dos/windows 就使用 fat 文件系统,而 windows NT 则采用 NTFS 文件系统。
非日志文件系统能够工作得很稳定,但是,它存在不少问题。对于一个普通的非日志文件系统,如 Ext2 文件系统,如果系统刚将文件的磁盘分区占用信息( meta-data )写入到磁盘分区中,还没有来得及将文件内容写入磁盘,这时意外发生了:系统断电了,结果会造成:文件的内容仍然是老内容,而 meta-data 信息是新内容,二者不一致了。 IXDBA.NET社区论坛
让我们再看一下 Linux 系统中 fsck 是如何工作的:通常情况下,当 Linux 系统启动时,首先运行 fsck ,由它扫描 /etc/fstab 文件中列出的所有本地文件系统。 fsck 的工作就是确保要装载的文件系统的元数据是处于可使用的状态。当系统关闭时, fsck 又把所有的缓冲区数据转送到磁盘,并确保文件系统被彻底卸载,以保证系统下次启动时能够正常使用。
然而意想不到掉电或者其它故障会导致系统死机、重启。出现这种情况时,操作系统来不及卸载文件系统。重启后, fsck 对磁盘进行彻底扫描,全面地检查元数据,竭尽全能修正检查过程中能找到的所有错误。对所有的元数据做彻底的一致性检查极其耗时。文件系统越大,完成彻底的扫描时间就越长。 Fsck 也会碰到它无法修复的磁盘错误。碰到这种情况,就是简单地将文件删除或另存为一个文件。在高密度访问的数据中心, fsck 可能会造成极大的数据文件破坏。只有当 fsck 完成扫描、检查与修复工作后, Linux 系统才能开始使用。当然,如果有严重的文件或数据丢失的话,系统很可能无法重新启动了!
非日志文件系统的种类:
Linux可以支持种类繁多的文件系统,几乎所有的 Linux 发行版都用 ext2 作为默认的文件系统。 Ext2 文件系统就是一个非日志文件系统。此外, Linux 支持的其它非日志文件系统还有: FAT 、 VFAT 、 HPFS ( OS/2 )、 NTFS ( Windows NT )、 Sun 的 UFS 等。
二、 日志式文件系统
日志文件系统则是在非日志文件系统的基础上,加入了文件系统更改的日志记录。
日志文件的设计思想是:跟踪记录文件系统的变化,并将变化内容记录入日志。日志式文件系统的思想来自于大型数据库系统。数据库操作由多个相关的、相互依赖的子操作组成,任何一个子操作的失败都意味着整个操作的无效性,所以,对数据的任何修改都要求回复到操作以前的状态。日志式文件系统采用了类似的技术。
日志文件系统在磁盘分区中保存有日志记录,写操作首先是对记录文件进行操作,若整个写操作由于某种原因(如系统掉电)而中断,系统重启时,会根据日志记录来恢复中断前的写操作。这个过程只需要几秒钟到几分钟。
阅读更多内容 :1 · 2 · 下一页>>