Linux文件系统的文件系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件系统的文件系统相关的知识,希望对你有一定的参考价值。
参考技术A在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。(类比于微机磁盘分区)。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode区以及数据区等。
引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操作系统;超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;inode区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;数据区:用于存放文件数据或者管理数据。
Linux最早引入的文件系统类型是MINIX。MINIX文件系统由MINIX操作系统定义,有一定的局限性,如文件名最长14个字符,文件最长64M字节。第一个专门为Linux设计的文件系统是EXT(Extended File System),但目前流行最广的是EXT4。
第二代扩展文件系统由Rey Card 设计,其目标是为Linux 提供一个强大的可扩展文件系统。它同时也是Linux界中设计最成功的文件系统。通过VFS的超级块(struct ext2_sb_info ext2_sb)可以访问EXT2的超级块,通过VFS的inode(struct ext2_inode_info ext2_i)可以访问EXT2的inode。
文件系统EXT2的源代码在/usr/src/linux/fs/ext2目录下,它的数据结构在文件/usr/src/linux/include/linux/ext2_fs.h以及同一目录下的文件ext2_fs_i.h和ext2_fs_sb.h中定义。
EXT2文件系统将它所占用的逻辑分区划分成块组(block group),如下图所示:
Linux内核虚拟文件系统
Linux内核支持多种文件系统,它和其它unix变种一样,通过虚拟文件系统完成对不同文件系统的支持。第一个虚拟文件系统出现在1986年sun公司的微系统SunOS中,自此以后,大多数unix文件系统都包含VFS。Linux的VFS支持的文件系统最为广泛。
虚拟文件系统(VFS)是内核处理所有标准Unix文件系统相关的系统调用的软件层,linux内核通过虚拟文件系统层屏蔽了不同底层文件系统的差异,向上提供了统一的接口。VFS支持的文件系统类型主要分为以下三大类:
- 基于磁盘的文件系统:
数据存储于本地磁盘或其他能枚举出磁盘的设备(如USB falsh)的文件系统,比如Linux的文件系统exe2,ext3,其他Unix变种的文件系统如syssv,UFS,VxFS,微软文件系统如VFAT,NTFS,CD-ROM文件系统如UDF,其他私有文件系统如IBM的HPFS,苹果的HFS等等。
- 网络文件系统:
用来简单的访问网络上其他主机上的文件系统,比如NFS,Coda, AFS,CIFS和NCP等。
- 特殊文件系统:
该类文件系统不会管理本地或远程磁盘空间,/proc是一个典型的特殊文件系统。
文件系统挂载:
不同于大部分类unix内核,linux内核允许一个文件系统被多次挂载,当一个文件系统被挂载n次的时候,其根目录的挂载点也有n个。虽然同一个文件系统可以通过不同的路径访问,但是他们之间确是不同的。一个文件系统对应一个超级块,不管它被挂载了多少次。文件系统的挂载点可能是另一个挂载在其他文件系统上的文件系统的某个目录。
Linux同样允许多个文件系统挂载到同一个挂载点,每一个新挂载的文件系统隐藏了前一个文件系统的目录,即便前一个文件系统目录中的某些文件被当前运行的某些进程使用(这些进程仍能正常使用被隐藏的文件)。当某个挂载点上的最后挂载的文件系统被卸载时,在它之前(如果有)挂载的文件系统目录此时变为可见的。
以上是关于Linux文件系统的文件系统的主要内容,如果未能解决你的问题,请参考以下文章