浅谈Linux文件系统架构
浅谈Linux文件系统架构
Linux和Windows不仅在内核与操作方面不同,其实在文件的系统架构上更是不同,要想更好的理解Linux文件系统架构,就要
放弃先入为主的观念,因为我们大多数人最先接触的操作系统就是Windows,并且我们习惯了所谓的C盘、D盘等,习惯了对C盘
敬而远之,但是Linux大可不必这样,任何外部设备在Linux下都被理解为了文件,其实连Linux软件的配置文件也都是文本形式
的。
文件系统是一种对物理空间的组织方式,通常在格式化硬盘时创建。我们熟知Windows下有C盘、D盘、E盘、F盘,如果你想
在多分一些盘的话还可以在分一些盘。但是在Linux下不存在所谓的C盘、D盘等,已建立文件系统的硬盘分区挂载到某一个目录
下,用户通过操作目录来实现磁盘的读写。在安装完Linux之后,就有一堆目录出现在根目录下,并且看起来每一个目录中都存
放着系统文件。
在Linux操作系统的安装之时,首先建立一个根“/”文件系统(这个不需要你的任何操作,在安装操作系统时,你只需要进行
一下主分区的划分和逻辑分区的划分就可以了),并在这个文件系统建立一系列的空目录,然后将其他硬盘分区中的文件系统挂
载到这些目录中。
理论上说,可以为根目录下的每一个目录都单独划分一个硬盘分区,这样根分区的容量就可以设置的很小(因为几乎所有的东
西都存放在其他分区中,根分区中的目录只是起到映射的作用),不过这对于用户而言没有太大的必要。如果某些目录没有特定
的硬盘分区与其挂钩的话,该目录中的所有内容将存放在根分区中。
在Windows下,有NTFS和FAT两种文件系统,同样Linux也有自己的文件系统ext2fs、ext3fs、ReiserFS等,其中ext3fs是对ext2fs
的扩展(这里要强调的一点是swap不是文件系统,他是交换分区,是一块特殊的硬盘空间),在安装Linux时,Linux已经自动为用
户配置好了整个文件系统,但有些仍然需要你自己手动的挂载一些设备,Linux下所有的设备都当做文件来操作,Linux启动时就要
挂载所需要文件的分区。
那么分区类型与文件系统架构到底有什么联系?
有些操作系统必须要自己能认识的分区类型才能读取比如windows,而有些操作系统不管分区类型是不是自己支持的类型,它只看
实际的文件系统类型比如linux,比如说:一个分区分区类型标示为ext3,而实际的文件系统是ntfs,那么windows会不认这个分区而
linux中,一个分区如果类型是ntfs,但实际文件系统是ext3,linux照样可以mount上来用,linux根据超级块的内容确定文件系统的
信息,然后根据文件系统调用相应的驱动程序来使用文件系统。不同的分区类型需要不同的文件系统,存在一一对应的关系,比如你
指定某分区为ext3/2, 那么mkfs的时候就需要指明文件系统类型,如:mkfs.ext2 /dev/hdN1 #/dev/hdN1指定为ext2;
mkfs.ext3 /dev/hdN2 #/dev/hdN2指定为ext3。