发新话题
打印

释义Linux内核(6)-文件系统概述(1)

释义Linux内核(6)-文件系统概述(1)

Unix操作系统的设计集中反映在其文件系统上,文件系统有几个有趣的特点。因为在后面的章节中会反复提到这些特点,所以我们先回顾最重要的几个特点。

文件
Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容。很多编程的库函数实现了更高级的抽象,例如,由域构成的记录以及基于关键字编址的记录。然而,这些库中的程序必须依靠内核提供的系统调用。从用户观点来看,如图1-2所示,文件在一个树结构的命名空间中组织。
引用:
文件只是为了方便信息的组织而抽象出的方式,想想看,如果没有文件这样一个东西,我们怎么在计算机上面对信息


图1-2   目录树举例

除了叶子节点,树的所有节点都表示目录名。目录节点包含它下面文件及目录的所有信息。文件或目录名是由除“/”和空字符“\0”之外的任意ASCII字符序列组成(
8),。大多数文件系统对文件名的长度有一个限制,通常不能超过255个字符。与树的根相对应的目录被称为根目录(root directory)。按照惯例,它的名字是“/”。在同一目录中的文件名必须不同,而在不同目录中的文件名可以相同。
引用:
时空见惯的根目录,是所有文件和目录的父母


Unix的每个进程都有一个当前的工作目录(参见本章后面的“进程/内核模式”一节),它属于进程执行上下文(execution context),标识出进程所用的当前目录。为了标识一个特定的文件,进程使用路径名,路径名由斜杠及一列指向文件的目录名交替组成。如果路径名的第一个字符是斜杠,那么这个路径就是所谓的绝对路径,因为它的起点是根目录。否则,如果第一项是目录名或文件名,那么,这个路径就是所谓的相对路径,因为它的起点是进程的当前目录。
引用:
相对和绝对的区分,仅仅因为最前面是否有“/"

当标识文件名时,也用符号"." 和 ".."。它们分别标识当前工作目录和父目录。如果当前工作目录是根目录,"." 和 ".."是一致的。

硬链接和软链接
包含在目录中的文件名就是一个文件的硬链接(hard link),或简称链接。在同一目录或不同的目录中,同一文件可以有几个链接,因此对应几个文件名。
Unix命令:
$ ln f1 f2
用来创建一个新的硬链接,即为路径f1标识的文件创建一个路径名为f2的硬链接。
引用:
创建一个链接,相当于起一个别名,方便而已


硬链接有两方面的限制:

·      不允许用户给目录创建硬链接。因为这可能把目录树变为环形图,从而就不可能通过名字定位一个文件。

·      只有在同一文件系统中的文件之间才能创建链接。这带来比较大的限制,因为现代Unix系统可能包含了多种文件系统,这些文件系统位于不同的磁盘/分区,用户也许无法注意到它们之间的物理划分。

为了克服这些限制,引入了软链接[即符号链接(symbolic link)]。符号链接是短文件,这些文件包含有另一个文件的任意一个路径名。路径名可以指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件。

Unix命令:
$ ln -s f1 f2
创建一个路径名为f2的新软链接,f2指向路径名f1。当这个命令执行时,文件系统抽出f2的目录部分,并在那个目录下创建一个名为f2的符号链类型新项。这样,任何对f2的引用都可以被自动转换成指向f1的一个引用。
引用:
硬链接和软链接,你更愿意使用哪一个?


8:一些操作系统允许以多种字符表来表示文件名,例如Unicode,基于16位图形字符的扩展编码。

[ 本帖最后由 陈莉君 于 2007-7-13 15:06 编辑 ]
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
支持
文件存储相关数据的集合,是OS管理资源的基本单位,按文件名提取它。
OS中文件管理子系统与具体的文件系统是不一样的,视角不一样
提升OS文件管理的效率
改进可识别文件系统的性能、可移植性
降低os文件管理与文件系统的耦合度
提 升文件系统间的兼容性
文件系统标准化跟进问题
。。。。。。
努力发展与研究吧。

[ 本帖最后由 黄富强 于 2007-7-13 17:47 编辑 ]
向陈老师请教一个问题,hdfs这种文件系统是建立在操作系统的文件系统之上的吧

回复 #3 pensz 的帖子

对hdfs文件系统,以前没有关注过,不过,其具体实现你可以参看http://hadoop.apache.org/core/docs/current/hdfs_design.html
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
发新话题