首页 百科知识 系统的日志文件路径

系统的日志文件路径

时间:2022-10-10 百科知识 版权反馈
【摘要】:若发生意外,则文件系统就会处于不一致状态。ext3文件系统是直接从ext3文件系发展而来,目前ext3文件系统已非常稳定可靠。它完全兼容ext2文件系统。这实际上也是ext3日志文件系统初始设计的初衷,ext3文件系统最大文件名长度为255个字符。JBD不是ext3文件系统所特有的,它的设计目标是为了向一个块设备添加日志功能。系统使用了ext3文件系统后。即使在非正常关机后,系统也不需要检查文件系

3.2.4 Linux文件系统类型

Linux系统支持的文件系统类型有下面几种。

·ext2:早期Linux中常用的文件系统。

·ext3:ext2的升级版,带日志功能。

·ext4:ext4是一种针对ext3系统的扩展日志式文件系统,是专门为Linux开发的原始的扩展文件系统(ext或extfs)的第四版。

·RAMFS:内存文件系统,速度很快。

·NFS:网络文件系统,由SUN发明,主要用于远程文件共享。

·MS-DOS:MS-DOS文件系统。

·VFAT:Windows 95/98操作系统采用的文件系统。

·FAT:Windows XP操作系统采用的文件系统。

·NTFS:Windows NT/XP操作系统采用的文件系统。

·HPFS:OS/2操作系统采用的文件系统。

·PROC:虚拟的进程文件系统。

·ISO9660:大部分光盘所采用的文件系统。

·ufsSun:OS所采用的文件系统。

·NCPFS:Novell服务器所采用的文件系统。

·SMBFS:Samba的共享文件系统。

·XFS:由SGI开发的先进的日志文件系统,支持超大容量文件。

·JFS:IBM的AIX使用的日志文件系统。

·ReiserFS:基于平衡树结构的文件系统。

·udf:可擦写的数据光盘文件系统。

下面详细介绍这几种文件系统。

1.ext2文件系统

ext2文件系统的总体存储布局如图3-2所示。

img57

图3-2 ext2文件系统的总体存储布局

文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确定的,例如mke2fs命令的-b选项可以设定块大小为1 024、2 048或4 096字节。而上图中启动块(Boot Block)的大小是确定的,就是1KB,启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group),每个块都由以下几个部分组成。

(1)超级块(Super Block)

描述整个分区的文件系统信息,例如块大小、文件系统版本号、上次挂载的时间等。超级块在每个块的开头都有一份拷贝。

(2)GDT(Group Descriptor Table)

由很多GD(Group Descriptor)组成,整个分区分成多少个块,就对应有多少GD。每个GD存储一个块的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块,还有多少个等等。和超级块类似,GDT在每个块的开头也都有一份拷贝,这些信息是非常重要的,一旦超级块意外损坏就会丢失整个分区的数据,一旦GD意外损坏就会丢失整个块的数据,因此它们都有多份拷贝。通常内核只用到第0个块组中的拷贝,当执行e2fsck命令检查文件系统一致性时,第0个块组中的超级块和GDT就会复制到其他块组,这样当第0个块的开头意外损坏时就可以用其他拷贝来恢复,从而减少损失。

(3)块位图(Block Bitmap)

一个块组中的块是这样利用的:数据块存储所有文件的数据,比如某个分区的块大小是1 024字节,某个文件是2 049字节,那么就需要三个数据块来存,即使第三个块只存了一个字节也需要占用一个整块;超级块、GDT、块位图、inode位图、inode表,这几部分存储该块的描述信息。那么如何知道哪些块已经用来存储文件数据或其他描述信息,哪些块仍然空闲可用呢?块位图就是用来描述整个块组中哪些块已用哪些块空闲的,它本身占一个块,其中的每个bit代表本块中的一个块,这个bit为1表示该块已用,这个bit为0表示该块空闲可用。

为什么用df命令统计整个磁盘的已用空间非常快呢?因为只需要查看每个块的块位图即可,而不需要搜遍整个分区。相反,用du命令查看一个较大目录的已用空间就非常慢,因为不可避免地要搜遍整个目录的所有文件。与此相联系的另一个问题是:在格式化一个分区时究竟会划出多少个组块呢?主要的限制在于块位图本身必须只占一个块。用mke2fs格式化时默认块大小是1 024字节,可以用-b参数指定块大小,现在设置块的大小指定为b字节,那么一个块可以有8b个bit,这样大小的一个块位图就可以表示8b个块的占用情况,因此一个组块最多可以有8b个块,如果整个分区有s个块,那么就可以有s/(8b)个块组。格式化时可以用-g参数指定一个组块有多少个块,但是通常不需要手动指定,mke2fs工具会计算出最优的数值。

(4)Inode位图(Inode Bitmap)

和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。从inode表(Inode Table)知道,一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规、目录、符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls-l命令看到的那些信息,这些信息存在inode中而不是数据块中。每个文件都有一个inode,一个块组中的所有inode组成了inode表。inode表占多少个块,在格式化时就要决定并写入GD中,mke2fs格式化工具的默认策略是一个组块有多少个8KB就分配多少个inode。由于数据块占有整个块的绝大部分,也可以近似认为数据块有多少个8KB就分配多少个inode,换句话说,如果平均每个文件的大小是8KB,当分区存满的时候inode表会得到比较充分的利用,数据块也不浪费。如果这个分区存的都是很大的文件(比如电影),那么数据块用完的时候inode会有一些浪费,如果这个分区存的都是很小的文件(比如源代码),则有可能数据块还没用完inode就已经用完了,数据块可能有很大的浪费。如果用户在格式化时能够对这个分区以后要存储的文件大小做一个预测,也可以用mke2fs的-i参数手动指定每多少个字节分配一个inode。

(5)数据块(Data Block)

根据不同的文件类型有以下几种情况。

·对于常规文件,文件的数据存储在数据块中。

·对于目录,该目录下的所有文件名和目录名存储在数据块中,注意文件名保存在它所在目录的数据块中,除文件名之外,ls-l命令看到的其他信息都保存在该文件的inode中。注意这个概念:目录也是一种文件,是一种特殊类型的文件。对于符号链接,如果目标路径名较短则直接保存在inode中以便更快地查找,如果目标路径名较长则分配一个数据块来保存。

·设备文件、FIFO和socket等特殊文件没有数据块,设备文件中的次设备号和主设备号都保存在inode中。

(6)ext2文件系统最大文件名长度:255个字符

(7)ext2文件系统的缺点

ext2在写入文件内容的同时并没有同时写入文件meta-data,其工作顺序是先写入文件的内容,然后等空闲时候才写入文件的meta-data。若发生意外,则文件系统就会处于不一致状态。在重新启动系统的时候,Linux会启动fsk(file system check)的程序,扫描整个文件系统并试图修复,但不提供保证。

2.ext3文件系统

(1)ext3与ext2关系

ext3文件系统是直接从ext3文件系发展而来,目前ext3文件系统已非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上也是ext3日志文件系统初始设计的初衷,ext3文件系统最大文件名长度为255个字符。

(2)日志块设备

日志块设备(Journaling Block Device Layer,JBD)完成ext3文件系统日志功能。JBD不是ext3文件系统所特有的,它的设计目标是为了向一个块设备添加日志功能。

当一个文件修改执行时,ext3文件系统代码将通知JBD,称为一个事务(Transaction)。发生意外时,日志功能具有的重放功能,能重新执行中断的事务。

(3)ext3日志文件系统的特点

·高可用性

系统使用了ext3文件系统后。即使在非正常关机后,系统也不需要检查文件系统。关机发生后,恢复EXT3文件系统的时间只要数十秒钟。

·数据的完整性

ext3文件系统能够极大地提高文件系统的完整性,避免了意外关机对文件系统的破坏。在保证数据完整性方面,ext3文件系统有两种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。

·文件系统的速度

尽管使用ext3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3比ext2的性能还要好一些。这是因为ext3的日志功能对磁盘的驱动器读写进行了优化。所以,文件系统的读写性能较之ext3文件系统来说,性能并没有降低。

·数据转换

由ext2文件系统转换成ext3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个ext3文件系统提供的小工具tune2fs,它可以将ext2文件系统轻松转换为ext3日志文件系统。另外,ext3文件系统可以不经任何更改,而直接加载成为ext2文件系统。

·多种日志模式

ext3有多种日志模式。

◆data=writeback:不处理任何形式的日志数据,给用户整体上的最高性能。

◆data=odered:只记录元数据日志,但将元数据和数据组成一个单元称为事务(Transaction)。此模式保持可靠性与文件系统的一致性,性能远低于data=writeback模式,但比data=journal模式快。

◆data=journal:提供完整的数据及元数据日志,所有新数据首先被写入日志,然后才被定位。意外发生过后,日志可以被重放,将数据与元数据带回一致状态。这种模式整体性能最慢,但数据需要从磁盘读取和写入磁盘时却是三种模式中最快的。

(4)ext3文件系统的使用

创建新的ext3文件系统,例如要把磁盘上的hda8分区格式化为ext3文件系统,并将日志记录在/dev/hdal分区,那么操作过程如下。

实例3-1 创建新的ext3文件系统

img58

在创建新的文件系统时,可以看到,ext3文件系统执行自动检测的时间为180天或每第30次被mount时,实际上这个参数可以根据需要随意调节。

以下将新的文件系统mount到主分区/data目录下:

实例3-2 将新的文件系统mount到主分区/data目录下

img59

(5)ext2文件系统转换为ext3文件系统

ext3基于ext2的代码,它的磁盘格式和ext2的相同。这意味着,一个干净卸装的ext3文件系统可以作为ext2文件系统重新挂装。ext3文件系统仍然能被加载成ext2文件系统来使用,可以把一个文件系统在ext3和ext2之间自由切换。这时在ext2文件系统上的ext3日志文件仍然存在,只是ext2不能认出日志而已。

将Linux系统的文件系统由ext2转换为ext3,有以下几处优点:

·系统的可用性增强了;

·数据集成度提高;

·启动速度提高了;

·ext2与ext3文件系统之间相互转换容易。

以转换文件系统为例,将ext2文件系统转换为ext3文件系统,命令如实例3-3所示。

实例3-3 将ext2文件系统转换为ext3文件系统

img60

这样,原来的ext2文件系统就转换成了ext3文件系统。

小知识

将ext2文件系统转换为ext3文件系统时,不必要将分区卸载下来转换。转换完成后,不要忘记将letclfstab文件中所对应分区的文件系统由原来的ext2更改为ext3。

(6)ext3日志的存放位置

可以将日志放置在另外一个存储设备上,例如存放到分区/dev/hda8。例如要在/dev/hda8上创建一个ext3文件系统,并将日志存放在外部设备/dev/hda2上,则运行以下命令:

img61

(7)ext3文件系统修复

新的e2fsprogs中的e2fsck支持ext3文件系统。当一个ext3文件系统被破坏时,先卸载该设备,再用e2fsck修复:

实例3-4 ext3文件系统修复

img62

总而言之,ext 3日志文件系统是目前Linux系统由ext2文件系统过渡到日志文件系统最为简单的一种选择。实现方式也最为简洁。由于是直接从ext 2文件系统发展而来,系统由ext 2文件系统过渡到ext3日志文件系统升级过程平滑,可以最大限度地保证系统数据的安全性。目前Linux系统要使用日志文件系统,最保险的方式就是选择ext3。

3.ext4文件系统

Linux kernel自2.6.28开始正式支持新的文件系统ext4,ext4是一种针对ext3系统的扩展日志式文件系统,是专门为Linux开发的原始的扩展文件系统(ext或extfs)的第四版。不仅仅像ext3对ext2那样,只是增加了一个日志功能而已。ext4可以提供更佳的性能和可靠性,还有更为丰富的功能。

ext3与ext4区别如下。

(1)与ext3兼容。执行若干条命令,就能从ext3在线迁移到ext4,而无须重新格式化磁盘或重新安装系统。原有ext3数据结构照样保留,ext4作用于新数据,当然,整个文件系统因此也就获得了ext4所支持的更大容量。

(2)更大的文件系统和更大的文件。ext3目前所支持的最大16TB文件系统和最大2TB文件,ext4分别支持1EB(1 048 576TB,1EB=1 024PB,1PB=1 024TB)的文件系统,以及16TB的文件。

(3)无限数量的子目录。ext3目前只支持32 000个子目录,而ext4支持无限数量的子目录。

(4)ext3采用间接块映射,当操作大文件时,效率极其低下。比如一个100MB大小的文件,在ext3中要建立25 600个数据块(每个数据块大小为4KB)的映射表。而ext4引入了现代文件系统中流行的extents概念,每个extent为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的25 600个数据块中”,提高了不少效率。

(5)多块分配。当写入数据到ext3文件系统中时,ext3的数据块分配器每次只能分配一个4KB的块,写一个100MB文件就要调用25 600次数据块分配器,而ext4的多块分配器“multiblock allocator”(Mballoc)支持一次调用分配多个数据块。

(6)延迟分配。ext3的数据块分配策略是尽快分配,而ext4和其他现代文件操作系统的策略是尽可能地延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

(7)快速fsck。以前执行fsck第一步就会很慢,因为它要检查所有的inode,现在ext4给每个组的inode表中都添加了一份未使用inode的列表,今后fsck Ext4文件系统就可以跳过它们而只去检查那些在用的inode了。

(8)日志校验。日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。ext4的日志校验功能可以很方便地判断日志数据是否损坏,而且它将ext3的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

(9)“无日志”(No Journaling)模式。日志总归有一些开销,ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

(10)在线碎片整理。尽管延迟分配、多块分配和extents能有效减少文件系统碎片,但碎片还是不可避免会产生。ext4支持在线碎片整理,并将提供e4defrag工具进行个别文件或整个文件系统的碎片整理。

(11)Inode相关特性。ext4支持更大的inode,较之ext3默认的inode大小128字节,ext4为了在inode中容纳更多的扩展属性(如纳秒时间戳或inode版本),默认inode大小为256字节。ext4还支持快速扩展属性(Fast Extended Attributes)和inode保留(Inodes Reservation)。

4.ReiserFS文件系统

(1)ReiserFS概述

1997年7月23日,Hans Reiser把他的基于平衡树结构的ReiserFS文件系统在网上公布。这是ReiserFS的第一次公开亮相。此后,Hans Reiser和其研究开发小组一直领导着ReiserFS的开发和发展,SuSE Linux也对它的发展起了重大的帮助作用。

由于ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。据说在Linux内核2.4.以上的版本可能将采用ReiserFS作为它的文件系统。当前的ReiSerFS只能在lntei结构体系上使用,但支持其他体系结构的ReiserFS版本也正在积极开发中。

(2)什么是ReiserFS

ReiserFS是一种新型的文件系统,在蓝点Linux中你可以选择它来装载你的Linux操作系统和其他应用程序和数据文件。它通过一种与众不同的方式完全平衡树结构来容纳数据,包括文件数据,文件名以及日志支持。ReiserFS还以支持海量磁盘和磁盘阵列,并能在上面继续很快的搜索速度和很高的效率。ReiserFS文件系统一直以来被用在高端Unix系统上,如SGI等。

(3)ReiserFS的特点

·先进的日志机制

ReiserFS有先进的日志(Journaling/Logging)功能机制。日志机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。文件与数据的安全性有了很大提高。

·高效的磁盘空间利用

Reiserfs对一些小文件不分配inode。而是将这些文件打包,存放在同一个磁盘分块中。而其他文件系统则为每个小文件分别放置到一个磁盘分块中。

·独特的搜寻方式

ReiserFS基于快速平衡树(Balanced Tree)搜索,平衡树在性能上非常卓越,这是一种非常高效的算法。ReiserFS搜索大量文件时,搜索速度要比ext2快得多。ReiserFS文件系统使用B*Tree存储文件,而其他文件系统使用B+Tree树。B*Tree查询速度比B+Tree要快很多。ReiserFS在文件定位上速度非常快。在实际运用中,ReiserFS在处理小于4k的文件时,比ext2快5倍;带尾文件压缩功能(默认)的ReiserFS比ext2文件系统多存储6%的数据。

·支持海量磁盘

ReiserFS是一个非常优秀的文件系统,一直被用在高端UNIX系统上,可轻松管理上百G的文件系统,ReiserFS文件系统最大支持的文件系统尺寸为16TB。这非常适合企业级应用中。

·优异的性能

由于它的高效存储和快速小文件I/O特点,使用ReiserFs文件系统的PC,在启动X窗口系统时,所花的时间要比在同一台机器上使用ext2文件系统少1/3。另外,ReiserFS文件系统支持单个文件尺寸为4G的文件,这为大型数据库系统在Linux上的应用提供了更好的选择。

5.其他常见文件系统

(1)Minix

Minix是Linux支持的第一个文件系统,对用户有很多限制,性能低下,有些没有时间标记,文件名最长14个字符。Minix文件系统最大缺点是只能使用64MB的硬盘分区,所以目前已经没有人使用它了。

(2)IS0966

IS0966标准CDROM文件系统,通用的ROCK Ridge增强系统,允许长文件名。

(3)NFS

NFS Sun公司推出的网络文件系统,允许多台计算机之间共享同一文件系统。易于从所有这些计算机上存取文件。

(4)SysV

SysV是System VICoherent在Linux平台上的文件系统。

(5)NTFS

NTFS是Windows NT/2000操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。

(6)VFAT

VFAT是Windows 9x和Windows NT/2000下使用的一种DOS文件系统,其在DOS文件系统的基础上增加了对长文件名的支持。

(7)MSDOS

MSDOS是在DOS,Windows和某些OS/2操作系统上使用的一种文件系统,其名称采用“8+3”的形式。即8个字符的文件名加上3个字符的扩展名。

(8)VFAT

VFAT是Winflows 9x和Windows NT/2000下使用的一种DOS文件系统,其在DOS文件系统的基础上增加了对长文件名的支持。

(9)SMB

SMB是一种支持Windows for Workgroups,Windows NT和Lan Manager的基于SMB协议的网络操作系统。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈