在Linux世界驰骋——Linux系统管理 在Linux世界驰骋系列之二——Shell编程 在Linux世界驰骋系列之三——结构和算法 Linux系统的一个重要特征就是支持多种不同的文件系统,如ext、FAT、ext2、ext3、MINIX、MSDOS、SYSV等。目前,Linux主要使用的文件系统是ext2和ext3。 ext3是ext2的升级版本,加入了记录数据的日志功能。ext2和ext3都是十分优秀的文件系统,即使系统发生崩溃也能很快修复。 Linux系统的第一个文件系统是Minix,1992年引进了第一个专门为Linux设计的文件系统—ext(extended file system),1993年又推出了一个新文件系统—ext2。 当Linux引进ext文件系统时有了一个重大的改进:真正的文件系统从操作系统和系统服务中分离出来,在它们之间使用了一个接口层—虚拟文件系统VFS(Virtual File System)。VFS为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这个界面主要由一组标准的、抽象的、有关文件操作的系统调用构成。 ext2文件系统 ext2文件系统支持标准Unix文件类型,例如普通文件、目录文件、特别文件和符号链接等。ext2文件系统可以管理特别大的分区。以前内核代码限制文件系统的大小为2GB,现在VFS把这个限制提高到4TB。因此,现在使用大磁盘而不必划分多个分区。 ext2文件系统支持长文件名,最大长度为255个字符,如果需要还可以增加到1012个字符,而且,它使用变长的目录表项。 ext2文件系统为超级用户保留了一些数据块,约为5%。这样,在用户进程占满整个文件系统的情况下,系统管理员仍可以简单地恢复整个系统。 除了标准的Unix功能外,ext2文件系统还支持在一般Unix文件系统中没有的高级功能,如设置文件属性、支持数据更新时同步写入磁盘的功能、允许系统管理员在创建文件系统时选择逻辑数据块的大小、实现快速符号链接,以及提供两种定期强迫进行文件系统检查的工具等。 1.ext2文件系统的物理结构 与其它文件系统一样,ext2文件系统中的文件信息都保存在数据块中。对同一个ext2文件系统而言,所有数据块的大小都是一样的,例如1024字节。但是,不同的ext2文件系统中数据块的大小可以不同。ext2文件系统的物理构造形式如图1所示。 图1 ext2文件系统的物理布局 ext2文件系统分布在块结构的设备中,文件系统不必了解数据块的物理存储位置,它保存的是逻辑块的编号。块设备驱动程序能够将逻辑块号转换到块设备的物理存储位置。 ext2文件系统将逻辑块划分成块组,每个块组重复保存着一些有关整个文件系统的关键信息及实际文件和目录的数据块。 系统引导块总是介质上的第一个数据块,只有根文件系统才有引导程序放在这里,其余一般文件系统都不使用引导块。 使用块组对于提高文件系统的可靠性有很大好处,由于文件系统的控制管理信息在每个块组中都有一份拷贝,因此当文件系统意外出现崩溃时可以很容易地恢复。另外,由于在有关块组内部,索引节点表和数据块的位置很近,在对文件进行I/O操作时,可减少硬盘磁头的移动距离。