快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门黄金城官网网:服务器诊所 使虚拟文件系统工作



“不亲身考试测验就不会明白它是多么有用”。当有人对我这么说时,我一直的反映便是觉得说这话的人对所说的功能不敷懂得,以是没法说清楚。然则,对付虚拟文件系统,切身经历奉告我说这话的人是对的。 Jeffrey Hobbs 是 ActiveState Corp. 的高开拓职员,我们俩都见识了应用虚拟文件系统(VFS)可以实现多么弗成思议的强大年夜功能。

简单的构想,重大年夜的成果

VFS 背后的构想很简单:它将不是文件系统的事物表示为文件系统。这里的 文件系统指的是“传统的类 Linux 文件系统”:由可直接造访的目录和(通俗)文件构成的树或层次布局。当然,这个观点会激起所有 Linux 用户的兴趣,由于 Linux 本身的许多特性都源自 UNIX 文件系统内对设备、表和其它工具的表示。UNIX 建立在如下原则之上:每样器械(或者至少是许多器械)都是文件;VFS 将这一原则加以推广,将尽可能多的器械当作是文件系统。

注:Linux 内核工程师也谈到了 VFS,但意义不合。本月的专栏文章 不是关于 Linux 虚拟文件系统互换器的,该互换器将文件系统驱动法度榜样分派给 ext2、ext3、reiserfs 等等。

对 VFS 的一种见地是:它是某种技巧或观点的另一个示例,用自力开拓职员 Jean-Claude Wippler 的话说,这种技巧“使 OS 和高档说话情况之间的边界变得隐隐”。别的,“系统办事”在利用法度榜样开拓说话中的呈现使可移植性变得更为轻易,由于操作系统从视野中消掉。

那么,哪类器械本身不是文件系统,但用这种要领表示却异常有用呢?这有许多:可以经由过程 FTP、澳门黄金城官网网HTTP、WebDAV 或其它收集协议造访的文件; .zip 文件、CVS(并发版本节制系统,concurrent versions system)或其它归档文件的内容;数据库表;受安然性或其它约束限定的真正文件系统的投影(projection);及其它。

轻易看出这样的资本可以以自然的要领映射到文件系统。假定 example.zip 压缩了下面这些文件:

first

subdir1/second

subdir1/third

subdir2/fourth

该归档文件很可能创建为现有文件系统树的直接(局部)映像,以是自然可以用有根树表示:

./first

./subdir1/second

./subdir1/third

./subdir2/fourth

许多在业界有影响的产品都依附于 VFS。象日志记录文件系统这样的 DB2 功能部件的体系布局就寄托于 VFS 模型。众所周知的 Zope 利用法度榜样办事器供给了一个颇有寻衅性的 VFS 示例。Zope 的“得到(acquisition)”观点将法度榜样化的工具映射成 URL。在 Zope 中,类似于下面这样的措施调用:

context.myproject.object1.method1(year = "1999")

相称于对下面这个 URL 的 HTTP 哀求:

http://myzope.com/myproject/object1/method1?year=1999

看出此中的优点了吗?VFS 和 UNIX 的“统统均是文件”的观点也很相似,由于这个设法主见很轻易理解和仿照,然则要意识到它能将利用法度榜样设计简化到哪种程度,还必要花几年工夫。

我们来钻研一个示例。假定您已经编写了一个文本编辑器;它供给了造访、读取、改动零丁文件以及将它们写回到存储器的措施。假如应用文件系统“虚拟器”,立即就可以应用所有相同的代码来浏览 FTP 或 ZIP 归档文件,选择、改动并保存零丁的项。您拥有在操作本地文件时能很好地事情的浏览器、备份实用法度榜样、安然性扫描法度榜样或版本节制系统吗?对其文件系统造访进行虚拟化,它立即就可以对 .tar 文件、老式磁带盘和只能经由过程虚拟专用网(VPN)造访的公司资本进行操作。供应商爱好把这样的附件卖到数千美元。VFS 却免费供给了这样的功能。

清单 1. 在 Tcl 中应用 VFS

package require vfs::urltype

vfs::urltype::Mount ftp

# With VFS activated, normal Tcl file commands

#  can copy files even to and from FTP servers.

file copy ftp://foo.bar.com/pub/Readme .

file copy myfile ftp://user:password@foo.bar.com/private.txt

pack澳门黄金城官网网age require vfs::zip

vfs::zip::Mount foo.zip foo.zip

# foo.zip is now part of the normal filesystem hierarchy.

cd foo.zip

# Within subdir1 on foo.zip, list all items.

set listing [glob -dir subdir1 *]

大年夜多半说话都有造访 FTP 或 ZIP 的对象。从这个意义上说,VFS 类似于面向工具的高档说话或运行时库:它不供给任何新内容,您可以自己编程来做 VFS 可以做的任何事。然则,有了 VFS,资本治理就变得异常轻易且加倍合理。它不是个很难的观点;只是个很好的观点澳门黄金城官网网。

VFS 简化了许多有趣的问题。Tcl 法度榜样员今朝正在处置惩罚类似于下面这样的问题:

版本化的可动态装入库的集中压缩归档文件

智能收集代理法度榜样

高档的“混杂介质”备份治理器

我已经试验过“活动系统文件”的可编程性。可以把它们看作某些说话所支持的“特点”。特点是其造访会包括写操作副感化的属性:

result = thing.property

可能不光是从内存检索“property”的值澳门黄金城官网网,而有可能涉及这样的谋略:在收集上传送数据、反省系统状态,等等。类似地,当我写:

file copy report.pdf backup

这不仅仅是将文件复制到目录中,而是要根据情况天生文件并履行其它操作。

面向特点的编程因其副感化较多,而被觉得是“危险”的,基础上,用显式存取措施不能完成的操作,它也肯定完成不了。然而,它这种样式仍得当某些情形,而且我发明活动文件系统至少无意偶尔候要比它们所替代的 makefile 和脚本更轻易编码。

停止语

Tcl 在其 VFS 成熟性方面方法先于其它说话;它已包揽理了字符编码澳门黄金城官网网、I/O 体系布局和机能约束方面的难题,这些难题在其它说话社区中现在才刚开始显现。然则,您不必然非要应用 Tcl 才能利用 VFS 的 思惟。您自己的编程能从更为同等的造访类文件资本的要领中获益吗?大年夜多半今世说话都供给了某种扩展内置构造的措施,是以可以用更同等和功能更强大年夜的要领来编码 I/O。

异常多的法度榜样员致力于开拓 Tcl 的 VFS 功能,对其它说话做类似事情的人就更多了。除了起初提到的开拓职员,别的分外值得一提的是 ActiveState 的 Andreas Kupries(他钻研了 I/O 通道)以及 GE 的 Kevin Kenny(他已经钻研了 VFS 引起的“自举”问题)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: