很庆幸自己学习了操作系统,现在在读鸟哥的私房菜不会觉得很困难,其实学习linux如果只是学习其中的一些命令而不懂得linux 的一些底层机制,是不能算入门的linux的,因为linux是真正的一个开源操作系统,私房菜和大学教材操作系统的结合将会使得我对操作系统的认识逐渐加深。好了,下面来谈谈文件创建和文件系统的挂载,它们的区别是什么:
操作系统中,为了屏蔽磁盘的使用细节,让客户能轻松使用磁盘工作,采用了逻辑上的文件系统视图,让一切细节由操作系统来执行,用户可以点击或者使用write等系统调用直接使得磁盘工作。
在现在,文件以一种索引的数据结构存放在磁盘中,操作系统要维护这种索引表数据结构(其实学过操作系统理论就会知道,内存管理,进程管理,IO设备管理统统都会使用一种类似索引表或者线性表的数据结构),那么结合鸟哥私房菜具体体现就是inode与block对照表,inode和block是记录数据的盘块,操作系统通过读inode找block这种形式进行树状形式地查找文件数据。
然后再谈谈分区,分区在MBR(主引导)格式的分区表会有逻辑上的主分区和延伸分区,但在GPT格式中,一块特定的盘块群就叫做一个分区(block groups)对应一个文件系统(大部分情况是一个分区对应一个文件系统)
所以现在来谈谈文件创建和文件系统挂载。挂载是一定要和目录树结合才可以使用的,也就是说在目录树中,有一个空目录挂载了一个文件系统,意思就是这个目录是进入该文件系统对应的分区的入口,访问的所有数据是该分区下的数据(block groups)。
至于细心的人可能会发现顶层的inode值为什么都一样,具体规定的机制我不清楚,但可以知道的是,一般一个文件系统的最顶层的那个目录的indoe值都是一样的,只是所在分区不一样,也就是说不是同一个文件,只是inode号相同。比如,/ /home /boot是三个不同的文件系统,但它们值都是128(inode一样但文件属性不一样,同时它们都是三个文件系统的最顶层)。
而文件创建就是在当前的文件系统下(当前分区下),使用那些未被使用的盘块来存储数据,具体体现就是使用未使用的inode和block。