在这一部分,我会把“文件系统”这个词表达两种不同的意思。一种意思表示你硬盘分区和其他设备的“文件系统”,另外一种意思是Linux系统展现在你面前的“文件系统”。在Linux里,你“mount”(安装)一个磁盘文件系统到一个广义的文件系统。
在前面的章节可,我提到init脚本检测并安装文件系统,完成这些工作的命令分别是fsck和mount。
一个硬盘就是一个允许你写入1和0的大空间。文件系统在上面建立一些结构,让他看起来像目录包含目录,目录包含文件。每个文件都用一个inode(结点)来表示。结点包含了文件所有者,创建时间,内容存放的位置等信息,目录用结点来表示。如果系统想读取/home/greg/bigboobs.jpeg,他会先在“超级块”中找到/目录,然后再寻找home目录的结点,然后是greg目录的结点,最后是bigboobs.jpeg的节点,从中找到内容存放在硬盘什么地方。
如果在文件末尾加上一些数据,可能发生的是——数据在inode更新前写入,或者相反。如果这时断电,文件系统就会被破坏,fsck会尝试检测并修复这类错误。
mount命令把磁盘上的文件系统读入,并把它添加进你在系统中见到的目录树。通常,内核把根文件系统以只读方式安装。mount会在fsck检查完系统后把它们以可读可写方式重新安装。
Linux也支持其他文件系统:msdos,vfat,minix等等。各个文件系统的复杂细节被虚拟文件系统(VFS)抽象化了。我不会对此进行更详细的描述。这里有关于它的讨论(看The Linux Kernel 部分)
/proc是个完全不同的文件系统,他实际代表内核中的东西,每个运行的进程都会有一个目录,目录名就是进程号,那里也有文件代表中断,内存信息,通过它们来告诉你系统运行状况。通过探索/proc你会学到很多东西。
有许多参数可以来控制mke3fs命令,它是用来建立ext3文件系统的。这些参数可以控制每个块的大小,结点的个数等等,在mke2fs的帮助页里面可以找到相关细节。
哪些安装和安装到什么位置是由/etc/fstab文件控制的,它也有个帮助页。
建立一个很小的文件系统,并用16进制编辑器打开,找到结点、超级块和文件内容。
我认为有以图形方式观察文件系统的软件,找一个试试,如果你找到了请告诉我个地址。
看看ext2文件系统在内核中的代码。
linux源代码中的Documentation/proc.txt
解释了/proc文件系统。