新闻中心
联系我们
Contact us
Contact us
- 总部电话010-51727811
- 客服热线400 779 6696
- 更多联系信息
本地IO路径技术详细解读(一)
时间:2012-09-25 08:11 来源:飞客数据恢复 作者:飞客数据恢复工程师
我们将以一个字处理应用作为例子,通过跟踪它的I/O操作过程来分析本地I/O路径。数据首先由一个用户产生,或者是直接从键盘键入,或者由其他应用拷贝而来,或者通过诸如语音识别等其他方法产生。然后,用户的字处理软件将给原始数据加上适当的文档标识和描述码,由此格式化原始数据。最后产生的结果将作为电子文件形式存储起来。
随着用户工作的进展,新产生的文件被存放到磁盘,这既可以由手工完成,也可以由后台进程自动完成。字处理程序用一个默认的目录存放文档,端用户不必牵涉进每个存储操作的细节。尽管端用户和应用开发者正在存储他们的数据,但他们却不必知道任何存储设备的细节,这一点很重要。例如,对用户而言,没有必要知道他们使用的设备地址或物理结构。
文件系统提供了一个方便的办法,使用它能容易地选择设备及该设备上的逻辑位置,即它的目录和名字.上述操作的完成都依赖于提供给字处理应用上述操作的完成都依赖于提供给字处理应用并由它使用的所谓文件服务接口。字处理程序正是使用这个接口发出I/O请求。
随着用户工作的进展,新产生的文件被存放到磁盘,这既可以由手工完成,也可以由后台进程自动完成。字处理程序用一个默认的目录存放文档,端用户不必牵涉进每个存储操作的细节。尽管端用户和应用开发者正在存储他们的数据,但他们却不必知道任何存储设备的细节,这一点很重要。例如,对用户而言,没有必要知道他们使用的设备地址或物理结构。
文件系统提供了一个方便的办法,使用它能容易地选择设备及该设备上的逻辑位置,即它的目录和名字.上述操作的完成都依赖于提供给字处理应用上述操作的完成都依赖于提供给字处理应用并由它使用的所谓文件服务接口。字处理程序正是使用这个接口发出I/O请求。
1.I/O路径的操作系统成分
操作系统通常也简称为OS,负责把I/O请求由应用操作系统送到设备驱动程序,设备驱动程序最终控制设备的操作,完成这个过程需要利用几个功能层。虽然本书不讨论影响I/O操作的所有可能的OS进程,但是,整个这一章以及本书的其余部分将使用一个确定的模型,并一直延用这个模型。操作系统的三个主要成分是:
系统环境。
文件系统。
卷管理器。
除此之外,文件服务接口和设备服务接口也是OS的一部分,它们分别是应用软件和设备驱动程序交换I/O请求的编程接口。
当I/O请求到达操作系统时,它被放在系统环境的队列中。系统环境由操作系统内核和一些进程组成,这些进程为所有的系统功能提供资源调度,系统功能包括应用处理、通信及I/O调度等。争用资源的进程数量和资源本身的性能决定着系统的总体性能,包括I/O请求的服务。
当资源满足处理I/O请求的需要时,文件系统将接管这个请求,并首先确定是创建一个文件,还是写入新的数据?这看上去似乎很简单,事实上,需要做的事情很多。例如,是否已经存在一个同名的文件?有足够的存储空间来存储这个文件吗?这个介质是只读(意味着不可写)的吗?对这个目录、介质或设备有安全和访问限制吗?文件名有效吗?等等。在操作系统成功地把一个文件写入设备之前,所有这些都必须加以检验。
一旦这些检验完毕,文件系统就决定将这个文件放在目标设备的哪个地方。这个目标设备既可以是实际设备,也可以是虚拟设备;但在文件系统看来,它们是一回事。虽然文件系统不直接与设备打交道,但它维护磁盘上所有数据的一个完整的映射,包括虚拟设备。文件系统利用这个映射发现自由空间以存储文件。然后,将应用对文件的原请求转化为磁盘块级的I/O操作。当应用向文件存放新的数据时,文件系统将新数据转化为该文件中特定的一些块。
在I/O请求离开文件系统之前,文件系统建立相应的元数据,用以描述该文件,它包括确定文件的访问权限、提供用于系统和存储管理的信息等。对文件系统发出的文件请求,文件系统不仅将应用中的文件请求转变为块I/O操作,也将位置信息和元数据加入这个请求中。
操作系统通常也简称为OS,负责把I/O请求由应用操作系统送到设备驱动程序,设备驱动程序最终控制设备的操作,完成这个过程需要利用几个功能层。虽然本书不讨论影响I/O操作的所有可能的OS进程,但是,整个这一章以及本书的其余部分将使用一个确定的模型,并一直延用这个模型。操作系统的三个主要成分是:
系统环境。
文件系统。
卷管理器。
除此之外,文件服务接口和设备服务接口也是OS的一部分,它们分别是应用软件和设备驱动程序交换I/O请求的编程接口。
当I/O请求到达操作系统时,它被放在系统环境的队列中。系统环境由操作系统内核和一些进程组成,这些进程为所有的系统功能提供资源调度,系统功能包括应用处理、通信及I/O调度等。争用资源的进程数量和资源本身的性能决定着系统的总体性能,包括I/O请求的服务。
当资源满足处理I/O请求的需要时,文件系统将接管这个请求,并首先确定是创建一个文件,还是写入新的数据?这看上去似乎很简单,事实上,需要做的事情很多。例如,是否已经存在一个同名的文件?有足够的存储空间来存储这个文件吗?这个介质是只读(意味着不可写)的吗?对这个目录、介质或设备有安全和访问限制吗?文件名有效吗?等等。在操作系统成功地把一个文件写入设备之前,所有这些都必须加以检验。
一旦这些检验完毕,文件系统就决定将这个文件放在目标设备的哪个地方。这个目标设备既可以是实际设备,也可以是虚拟设备;但在文件系统看来,它们是一回事。虽然文件系统不直接与设备打交道,但它维护磁盘上所有数据的一个完整的映射,包括虚拟设备。文件系统利用这个映射发现自由空间以存储文件。然后,将应用对文件的原请求转化为磁盘块级的I/O操作。当应用向文件存放新的数据时,文件系统将新数据转化为该文件中特定的一些块。
在I/O请求离开文件系统之前,文件系统建立相应的元数据,用以描述该文件,它包括确定文件的访问权限、提供用于系统和存储管理的信息等。对文件系统发出的文件请求,文件系统不仅将应用中的文件请求转变为块I/O操作,也将位置信息和元数据加入这个请求中。
注意元数据是一个很有趣的论题,对存储工业有着重要的意义。随着数据量的持续增长,其管理将变得越来越困难。元数据是精确地描述文件内容的文件,存储和数据管理系统正是利用它来管理数据的。备份即利用元数据的一个应用例子,它为管理员管理他们的系统提供了极大的方便。
在文件系统已经确定文件存放位置以后,操作系统给卷管理器发送I/O请求。按照所管理的设备配置,卷管理器处理文件系统的I/O请求。这过程就像把这个请求发送给一个设备那样简单,或许它还涉及到为多个设备子系统产生多个请求。卷管理器由单一的文件系统I/O请求产生两个请求的例子。
在文件系统已经确定文件存放位置以后,操作系统给卷管理器发送I/O请求。按照所管理的设备配置,卷管理器处理文件系统的I/O请求。这过程就像把这个请求发送给一个设备那样简单,或许它还涉及到为多个设备子系统产生多个请求。卷管理器由单一的文件系统I/O请求产生两个请求的例子。