CN1813253A - 对共享的只读文件***中的病毒的检测和报警 - Google Patents
对共享的只读文件***中的病毒的检测和报警 Download PDFInfo
- Publication number
- CN1813253A CN1813253A CN 200480012395 CN200480012395A CN1813253A CN 1813253 A CN1813253 A CN 1813253A CN 200480012395 CN200480012395 CN 200480012395 CN 200480012395 A CN200480012395 A CN 200480012395A CN 1813253 A CN1813253 A CN 1813253A
- Authority
- CN
- China
- Prior art keywords
- file
- document
- written
- type
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种***,提供了对只读文件***的共享,同时对该只读文件***的每个客户都提供向其自己的数据存储器写入的能力。文件可以在只读的永久存储文件***上,也可以在可写的永久覆盖文件***上。“优化共享”模式意味着通过默认,该文件***上的所有程序都被假定是只读的。若试图修改一个文件——即需要一个私有拷贝一一则性能冲击通常是最小的,因为大多数对文件的写入都很小。即使是较大文件的情况下,性能冲击也只是一次性成本。通过对不应当被写入的文件写入企图的拦截,可以检测病毒并发出警告。
Description
发明背景
技术领域
本发明主要涉及在多计算机***中对存储设备的共享。具体来说,本发明面向一种能够使多个计算机在支持写入-拷贝(copy-on-write)操作的同时共享只读文件***的虚拟文件***。
背景技术
目前存在有许多能在多个计算机之间共享资源的计算机环境。例如,一台服务器计算机,能够通过网络对大量的客户计算机提供服务。当通过一服务器对远程PC提供文件时,如果该计算机希望拥有一个独立拷贝,则为了每个访问该文件的计算机的使用,往往必须将该文件的独立拷贝保存在该服务器上,从而该访问的计算机可根据需要对该文件进行写入。例如,若访问服务器的PC的用户环境是根据该服务器的默认配置文件来配置的,那么在登录后希望改变用户环境的两个PC就必须在该服务器上分别存储有它们自己的环境文件的拷贝。
也可以对多个机器附加物理存储设备,例如通过使用存储局域网(SAN)。然而这也有一定问题。当一个单独的硬盘驱动器被多个计算机共享时,每个计算机都对该硬盘驱动器进行逐块访问。每个用户的计算机都具有看似该文件***(即硬盘驱动器上的多个块)的意图。例如,假定该文件***具有目录a,b,c。第一用户决定创建目录d,第二用户决定创建目录e。因此在这个例子中,每个用户都修改了包含根目录的块。若第一用户首先向该磁盘写入,然后第二用户向该磁盘写入,则第二用户在完全不知道第一用户刚刚向磁盘写入过的情况下,他的写操作将覆盖第一用户所作过的改变,则该文件***将会只具有目录e,而没有目录d。此外,该计算机不只在数据层上,并也在语义层上进行超高速缓存。例如,若计算机试图打开一个不存在的文件,则该计算机可能高速缓存该文件不存在的事实。而同时,该文件被另一个计算机创建。然而,当下一次第一个计算机试图访问该文件时,由于它使用了该文件***的语义高速缓存器,该计算机将不会试图寻找该文件,而是报告来自该高速缓存器的错误数据,在这个例子中就是报告该文件不存在。
一种在Unix环境中共享目录的方法是通过使用网络文件***(NFS)来实现的。NFS允许计算机从远程计算机中在本地计算机上设置一个分区以便共享各目录。对基于Windows***的用户有一种类似的程序Samba。NSF和Samba允许多台计算机对各目录进行写入访问。此外,它们可通过允许NFS或Samba服务器代表它们来访问该存储器,从而实现允许远程计算机访问物理存储设备上的文件而不必要求直接访问。
另一种试图解决此问题的方法是使用簇文件***,例如CXFS,VxFS,以及Lustre。簇文件***知道它们的块设备是共享的,并包括同步机制和语义锁定。当创建一个文件时,例如,将该信息通知其他共享访问的计算机。在数据层和语义层同时执行同步。然而,NFS和簇文件***只允许在目录层面上或整个文件***层面上分别实现共享,而不能在文件层面上共享。进一步,它们不能避免一个计算机的写操作覆盖了其它计算机可能需要的数据,或者一个计算机由于病毒或恶意代码/用户的原因而破坏数据。
因此,使多个计算机对例如硬盘驱动器这样的物理存储设备实现共享访问,同时仍然允许需要被写入的文件能够被写入是很困难的。通常,只能在下至目录层面上实现共享,而不能在文件层面上实现共享。这意味着不是整个目录必须被共享,就是整个目录必须是专用的(如果需要被写入的话)。若共享该驱动器的多个计算机的其中之一为了自己的使用想要修改该设备上的共享目录中的一个文件,则必须对该计算机制作包含该文件的整个文件夹的私有拷贝。对于很大的目录,这会导致巨大的存储浪费。每当一个来自原先只读目录中的新文件需要被写入的时候,这个问题就会愈发严重。
即使能够成功避免上述问题,也仍有许多其它问题需要解决。例如,若一个计算机被病毒感染了,则该病毒能传播到可写的共享设备,然后感染共享该设备的所有其他***。另外,每个计算机都需要一个特定名称来访问文件,例如在配置文件的情况下,该文件就不能被存储在共享可写的磁盘上,因为该文件很可能被为了自己的使用而试图修改它的其他计算机所破坏。
一些IT专家已试图使用现存技术来共享其中一些目录(而另一些则不共享),来节约存储空间和有效地创建新的服务器。若创建每个新的服务器都需要所有数据的单独拷贝,则很快形成一个瓶颈,因为对服务器拷贝所有的数据通常需要很长的时间。并且还额外需要大量的存储空间,而该存储空间很难被有效访问,因为在共享了更多数据的情况下高速缓存器的利用将比原先大大降低。有一种替代的方法是试图共享数据而不是拷贝数据。这需要确定每个应用程序将它的数据写在了那里,以便决定哪些目录可以以只读形式共享;这就是在什么环境下在哪里写入了哪些文件的问题。实际上,许多典型的应用程序甚至不会记录它们将文件写到了哪里。***工程师可以通过在运行时检测程序来找出哪些文件被动用过从而试图找到它,但这并不是一种可靠的方法一例如,文件可能极少被写操作,并且也没有被检测到。更糟的是,若对于讨论中的软件发布更新,则不得不重新进行检测分析。这种非常脆弱的共享方法会导致将所有文件拷贝到新服务器的操作,从而背离了节约时间和成本的初衷。
在多个计算机中共享文件的另一个问题是执行升级。若一些用户希望升级而另一些不希望,这就出现了问题,因为每个用户都在使用该软件的共享版本,要么对所有用户执行升级要么就不执行升级。一种解决方案是在不同分区中保留该讨论中的软件的不同版本。然而,这需要额外的空间和管理开销。每个计算机都必须被配置成使用新的分区或旧的分区。因此很难对比整个***小的***的任何一部分进行一次性升级。
因此需要一种有效的方法在多个服务器中共享存储。
发明内容
本发明可实现数据的“半共享”。通常,这种半共享应用于以下这样的环境,即在许多计算机***之间共享有大量的信息,但每个计算机***都需要修改该数据的某些部分。
在一个实施例中,本发明可实现只读文件***的共享,同时对该只读文件***(即一个工作站)的每个客户都提供向其自己的数据存储器写入的能力。文件可以在只读的永久存储文件***上,也可以在可写的永久覆盖文件***上。本发明的“优化共享”模式意味着通过默认,该文件***上的所有程序都被假定是只读的。若试图修改一个文件一即需要一个私有拷贝一则性能冲击(performance hit)通常是最小的,因为大多数对文件的写入都很小。即使是在较大文件的情况下,性能冲击也只是一次性成本。
在本发明所提出的***结构中,可以在许多计算机之间共享一个或多个只读的永久存储文件***。每个计算机都能访问一个可写的覆盖文件***。当在计算机上执行的应用程序试图对位于只读文件***上的文件写入数据时,则该文件被写入该覆盖文件***。对该文件随后的各文件操作都是直接面向该覆盖文件***的,而不是面向该只读文件***。在文件名和它们的路径位置之间保持一种映射,使得该处理对于调用的应用程序是透明的。这样可以避免重复的存储,从而通过允许对磁盘高速缓存器的更有效使用,实现节约成本并改善SAN和NAS设备的性能。此外,可以相应于变化的负载条件、软件升级等等来快速配置新的服务器。
附图说明
附图1示出了根据本发明一个实施例的网络结构的框图。
附图2示出了根据本发明一个实施例的***结构总体的框图。
附图3示出了根据本发明一个实施例在查找操作期间的数据流向的流程图。
附图4示出了根据本发明一个实施例在写入-拷贝(copy-on-write)操作期间的数据流向的流程图。
附图5示出了根据本发明一个实施例的映射文件***的框图。
上述附图仅仅是为了示意性地描述本发明的优选实施例。本领域的技术人员从以下的讨论中将会很容易的想到这里所说明的结构和方法的替代例子也可以被使用,而这并不脱离这里所述的本发明的原理。
具体实施方式
***结构
图1示意性示出了设计用于本发明的改进的网络结构。图1包括多个计算机102,每个计算机最好包括下面所述的一种印象文件***,并与一种只读永久存储文件***226进行通信。每个计算机102还可以对永久覆盖文件***220进行读和写操作。因此,按照下面将要描述的方式,计算机102可以在共享公共只读文件存储器226的同时,根据需要向覆盖文件***220写入数据。注意图1仅示出利用所述***配置网络的多种不同方式中的一种。例如,存储文件***226可以是一个或多个物理驱动器。相似的,覆盖文件***220也可以是具有多个分区并且可以被一个以上计算机102访问的一个驱动器,或者是对应每个单独计算机102的一个驱动器。本领域技术人员应当知道,该物理结构可以是这样的,其中可以对存储文件***提供共享的只读访问,而对覆盖文件***提供非共享的写入访问。
图2整体示出了包括映象文件***(MapFS)实现工具212的***200的最佳实施例。***请求处理器202是例如Linux等操作***的通常组成部分,它接收并处理各应用程序发出的***请求。对于需要与下层文件***交互的***请求,***请求处理器202将该请求提供给虚拟文件***层(VFS层)204。VFS层204为常用的虚拟文件***层,例如由Linux操作***实现的虚拟文件***层。VFS层204是用于使***内核的上层与不同文件***交互的抽象层。例如,LinuxVFS支持ext3、FAT和NFS文件***以及其他多种文件***。该VFS层允许各程序具有用于管理多个文件的标准接口组;允许操作***和文件***实现工具具有用于彼此通信的标准途径;并实现一个与通用文件***相关的多个功能的资料库,从而该文件***实现工具可以利用它避免编码复制。
VFS层204还与MapFS实现工具212通信。MapFS是用于实现VFS层204所希望的接口的主文件***,并具有下述功能。MapFS实现工具212向VFS层204提供一个接口,该接口符合使用例如Linux等的特定操作***的VFS要求。下面将根据图5来进一步描述该MapFS实现工具212的操作。MapFS文件***的一个特定例子就是MapFS实例216。该MapFS实例216存储用于该MapFS文件***的瞬时信息,这些信息包括关于下层视图、存储和覆盖文件***的信息。当从各应用程序(通过VFS层)接收请求时,将这些请求发送给适当的存储和覆盖文件***,并通过向该应用程序返回结果来满足这些请求,MapFS使该请求的应用程序有这样的错觉,即仅有一个相干的可写入文件***。
存储FS实现工具222是用于将数据保持在永久只读文件***226上的文件***的实现工具,其中该永久只读文件***226上的数据将被共享。存储FS实现工具222从MapFS实现工具212接收文件***请求并对其做出响应。在存储器224中的存储FS实例表示在永久存储器中特定存储文件***的瞬时存储状态。该状态包括,例如,关于哪些文件存在(或不存在)并且已经被成功或不成功地查找、文件大小、权限数据、实际被缓存的数据块等的信息。
覆盖FS实现工具214是用于在永久覆盖文件***实例220上提供可写存储的文件***的实现工具。覆盖FS实现工具214从MapFS实现工具212接收包括各写入请求的各文件***请求,并对其做出响应。在存储器218中的覆盖FS实例的工作与存储FS实例224相似。在最佳实施例中,覆盖FS为一个目录树,该目录树是从当MapFS被实例化(instantiated)时确定的位置作为根的。
视图FS(ViewFs)实现工具206保持了由MapFS实现工具212所引用的文件名和覆盖和/或存储文件***所存储的文件名之间的映射关系。永久ViewFS实例210保存了该映射关系的物理(即磁盘)记录,而ViewFS实例208与存储FS实例224和覆盖实例218一样,都是将信息保存在存储器中。在最佳实施例中,该ViewFS是从当MapFS被实例化时所确定的位置为根的目录树。
通常,由MapFS实现工具212通过VFS层204接收到的各文件请求可以通过访问该文件的存储文本或访问该文件的覆盖文本来得到满足。该视图指定应当使用哪个主文件来满足对这个文件的请求。如果该文件在存储器中且希望对其进行修改,则需要将该文件移动到覆盖文件***中。下面将说明一些例子。
图5示出了在一个实施例中执行MapFS实现工具212的功能的逻辑子单元。该MapFS实现工具212包括映射模块502、文件处理模块504和文件***通信模块506。文件***通信模块506提供了一个接口,用于与其他文件***实现工具例如ViewFS实现工具206和存储FS实现工具222之间进行通信。映射模块502为MapFS实现工具212提供了映射功能,包括用于在***200内获得文件位置或数据结构的逻辑。文件处理模块504提供了用于从VFS层204接收请求并对其进行响应的接口,而且额外地包括用于执行文件***操作的逻辑。
数据流
在Linux环境下,最好加载用于描述MapFS的名称以及怎样对其实例化的模块。当该模块被加载时,它调用一个函数来注册一个新的文件***、提供该文件***的名称、并且当用该文件***名称请求Linux“安装”操作时,该模块可以调用程序从而初始化一个新的超级块。本领域技术人员应当明白通过一个模块来加载一个文件***是公知的技术。
为了实例化MapFS实现工具212,当加载该模块时所指定的实例化程序被调用,且它的参数包括视图和覆盖的位置。该MapFS的安装点是由实体初始化MapFS时确定的。其他参数指定了查找根目录,该查找根目录是安装在相对路径上的文件***的树形结构中的一个点,从这个点开始对由该视图所参考的文件进行查找。一旦MapFS已经被初始化后,则可以按照传统***调用的方式工作,下面描述了其处理的内容。
现在参照图3,这里的数据流框图示出了对处于永久存储文件***226上的文件的查找。首先,当***请求处理器202从应用程序接收(步骤300)到查找***请求时,查找开始。然后该***请求处理器202请求VFS层204(步骤302)。然后VFS层204检查该MapFS实例216的公共可访问部分(步骤304),以确定该MapFS实例216是否具有关于正在查找的文件名称的信息。在一个实施例中,当VFS层204检查MapFS实例216数据时,它检索已经被查找过的名称的列表以及这些查找的结果。如果该文件存在,则该查找结果就是对该MapFS信息节点的索引。如果该文件不存在,但是以前已经对其进行过查找,则该查找结果就是指示该文件不存在的否定条目。由于在本例子中这是从对该路径名称分析后的第一次查找,因此MapFS实例216没有关于该文件名称的信息。因此,VFS层204请求MapFS实现工具212查找该路径名称(步骤306)。该VFS层204向文件处理模块504提供指向该MapFS父目录的句柄(handle)以及需要查找的那个目录的名称。该MapFS实现工具212最好查找该名称,将对应该名称的条目***近期查找过的名称的列表中,并在查找请求完成时返回指向该条目的句柄。
该映射模块502在ViewFS实例208(通过文件***通信模块506)中查找(步骤308)以判断该文件是否被高速缓存。最佳的情况是,该视图按照与MapFS相似的方式高速缓存各文件名——即,将其缓存在名称和查找结果表中。由于这是该文件第一次被查找,因此除非已经通过一些非MapFS处理查找过该文件,否则它也不会在ViewFS实例的高速缓冲器中出现。因此,映射模块502使ViewFS实现工具206最好按照与上述VFS层检查MapFS实例数据的方法相似的方式在ViewFS实例中查找该名称(步骤310)。该ViewFS实现工具206在磁盘210上的永久ViewFS实例中查找该文件(步骤312),并通过增加该文件的内存描述以及在它的名称一信息节点列表中***记录来实现对存储器208中的ViewFS实例的更新(步骤314)。该ViewFS实现工具206向映射模块502返回对ViewFS实例208中的文件的引用。
注意在该数据流的这个点上,将重复执行与步骤310到316相似的一系列步骤,从而读出ViewFS实例中的文件的内容,以便找到主文件路径。但是,为了简明起见,这些重复的步骤没有在图3中示出。在正常文件的情况下,视图实现工具所存储的文件中的数据是该文件的绝对路径;对于目录或基本文件(没有数据、没有目录的文件,例如块和字符特殊文件、***链接、命名管道等)来说,没有主要部分——该视图部分就是目录或非数据文件,所使用的就是该文件的特性而不是为了重新定向。
然后,映射模块502检查存储FS实例224以判断由该视图部分所涉及的文件是否已经为该存储FS224所知。由于这是该文件第一次被查找,因此除非由于一些非MapFS处理,否则该文件不会为该存储FS 224所知。然后,映射模块502要求存储FS实现工具222查找先前从该ViewFS实例检索的路径名。存储FS实现工具222从永久存储FS实例226中查找该数据(步骤322),并更新存储器224中的存储FS实例(步骤324)。然后,该存储FS实现工具222将该结果和MapFS文件一起返回到MapFS实现工具212,该MapFS文件参考从该视图和存储FS实例中查找到的信息(步骤326)。最后,文件处理模块504向VFS层204返回指向该列表记录的句柄(步骤330),该VFS层204将该句柄返回给***请求处理器202(步骤332),然后***请求处理器202进而将该句柄返回给程序(步骤334)。注意指向该表目的句柄是指向MapFS目标的句柄,如果该文件为常规文件,则该MapFS目标向内参考视图和主文件,如果该目标为目录或基本文件,则该MapFS目标仅向内参考视图文件。
由MapFS实现工具212通过VFS层204所接收到的***请求还可以是创建操作,它是用于创建具有特定名称的文件的请求。例如,VFS层204可以接收创建文件“/foo/bar/baz”的请求。如上所述,VFS层204可以利用MapFS实现工具212执行查找操作,但当它希望在“/foo/bar/”上定位名称为“baz”的文件时将会失败。然后,VFS层204要求文件处理模块504在“/foo/bar/”上创建“baz”。文件处理模块504从VFS层204接收指向该MapFS父目录的句柄以及将被创建的文件名“baz”。然后,映射模块502请求ViewFS实现工具206在视图目录“foo/bar”中创建名称为“baz”的文件。该ViewFS实现工具206更新该永久ViewFS实例210以及存储器208中的ViewFS实例,并向MapFS实现工具212返回指向该新文件的句柄。然后,映射模块502检查所返回的文件,并向ViewFS实现工具206发送写入请求,从而为该视图文件增加将要在覆盖FS实例上创建的文件的路径。它通过观察ViewFS实例提供给它的文件的信息节点编号形成该路径。文件处理模块504向覆盖FS实现工具214发送(再次通过文件***通信模块506)创建请求和该视图文件的信息节点编号的名称。然后,该覆盖FS实现工具214在永久覆盖FS实例220中创建该文件,更新在存储器218中的覆盖FS实例,并向文件***通信模块506返回指向该文件的句柄。MapFS实现工具212构造一个参照该视图和覆盖部分的MapFS文件目标,将该目标***到MapFS实例216中,并向VFS层204返回指向该新文件的句柄,而该VFS层204又顺序将该句柄提供给该请求的程序。本领域技术人员应当知道用于给覆盖文件命名的命名方案可以是任何可能使用的方案中的一种。
现在参照图4,该图示出了当程序希望对一文件进行写入且该文件的主要部分当前正处于永久存储实例226上时的数据流。
首先,***请求处理器202从一程序接收到一个写入请求(步骤400),并将该写入请求提供给VFS层204(步骤402)。然后该VFS层204将该请求提供给文件处理模块504(步骤404)。MapFS实现工具212检查MapFS实例216中的文件的私人数据(步骤406)并判断该主要部分文件的当前位置。该MapFS实例216最好包括指向该主文件的信息节点的句柄。在这个例子中,由于该文件处于存储文件***上,因此MapFS实例具有处于该存储实例上的信息节点的句柄。然后,文件处理模块504观察存储FS实例224中的主文件的公共部分(步骤408),并注意到它的文件***(存储)是只读的,且MapFS实现工具212需要对覆盖文件***执行写入复制(copy-on-write)操作。该文件处理模块504然后请求覆盖实现工具214创建一个新文件(步骤410)。
覆盖实现工具214在该永久覆盖实例20中创建该新文件(步骤412),并利用与存储器中新分配的信息节点相关的信息更新该存储器中的覆盖实例218(步骤414),所述信息包括与磁盘上所创建的文件相关的信息。覆盖实现工具214另外为该新创建的文件在名称-信息节点映射表中填写一个条目。然后,该覆盖实现工具214将该新文件的句柄返回给MapFS实现工具212(步骤416)。MapFS实现工具212然后发送一个请求,从而将当前主文件的内容读取到存储FS实现工具222中(步骤418)。
存储FS实现工具222从磁盘226上的永久存储FS实例中读取该文件的内容(步骤420),并更新存储器中的复制件(步骤422),将该文件的内容返回到MapFS实现工具212中(步骤424)。文件处理模块504通过向覆盖FS实现工具214发送写入请求,将该数据写入到覆盖FS实现工具214上的新文件中(步骤426)。该覆盖FS实现工具214将该数据写入到永久覆盖FS实例226中(步骤428),并更新存储器218中的覆盖FS实例中的数据高速缓冲器(步骤430),将成功代码返回到MapFS实现工具212(步骤432)。
然后,映射模块502向ViewFS实现工具208发送写入命令,从而将MapFS文件的主要部分的位置从存储文件***更新到覆盖文件***(步骤434)。该ViewFS实现工具更新在存储器208中的ViewFS实例(步骤436)以及永久ViewFS实例210(步骤438),并告知MapFS实现工具212没有错误(步骤440)。
注意如果有任何处理将文件直接映射到其存储器中,则最好在数据流的这个点将其与该虚拟存储器子***同步。
然后,文件处理模块504通过覆盖FS实现工具214的满足来发送原始写入请求(步骤442)。该覆盖FS实现工具214更新存储器218中的覆盖FS实例并更新在磁盘220上的永久覆盖实例(步骤444)。然后覆盖FS实现工具将写入操作的结果返回给MapFS实现工具212(步骤448)。
最后,文件处理模块504将写入结果返回给VFS层204(步骤450),该VFS层204又将该写入结果返回给***请求处理器202(步骤452),并最终返回给原始请求它的程序(步骤454)。
在一个实施例中,如果磁盘220上的永久覆盖文件***实例接近了它的容量,则可以向该文件***动态地分配和增加新的覆盖文件***。MapFS然后向该新的覆盖文件***发送写入请求。由于MapFS透明地处理从MapFS文件目标向主文件目标的转移请求,因此主文件中的任何变化对于生成该请求的应用程序来说都是完全透明的。以这种方式,MapFS实现工具212就可以确保存储器访问的连续性。
病毒检测和报告
在多个计算机正在共享只读存储设备并可以单独访问覆盖设备的情况下,可以对通常的使用模式进行各种特定的观察。在实践中,由于可执行文件通常包含编译后的代码,因此通常不应当对其进行修改。但是,对数据文件的修改也并不是固有值得怀疑的行为。
如上所述,当MapFS实现工具212判断程序试图修改在永久存储FS实例226上的只读文件时,文件处理模块504通过覆盖FS实现工具214开始创建该文件的副本,并使用映射模块502和ViewFS实现工具206以创建从该文件名到在覆盖FS实例上可写入副本的该位置之间的间接映射。
由于在该覆盖FS实例上的每次最初写入都会创建该文件的副本和在该视图中的映射,因此这些副本和映射就作为在该计算机上运行的程序的全部写入请求的记录。在最佳实施例中,文件处理模块504分析该写入请求的记录并检测对可执行文件的写入或其他可能表示所管理的实例中出现病毒的非正常行为。
例如,在正常操作中,运行在计算机102上的程序不会对可执行文件执行写入。如果计算机102对可执行文件执行写入,则该行为可能表示该计算机102是在执行一个计算机病毒,该病毒修改该可执行文件从而使其感染或造成其他损害。除了可执行文件以外,其他文件可以是那些在正常环境下不需要被写入的类型。在最佳实施例中,MapFS实现工具212保存了一个不应当被执行写入的文件类型的记录。在另一个变换实施例中,MapFS实现工具212保存了不应当被执行写入的特定文件的列表。
在一个实施例中,文件处理模块504监视从VFS层204接收到的各写入请求。如果写入请求是对可执行文件或其他不应当被修改的文件,则文件处理模块504生成报警或触发其他功能以表示该异常行为。在其他实施例中,文件处理模块504周期性地检查覆盖FS实现工具214上的各文件以及ViewFS实现工具206中对可执行文件或其他不应当被修改的其他文件的映射,从而识别病毒或其他异常行为。
本发明已经参照有限数量的几个实施例进行了详细的描述。本领域技术人员应当知道本发明还可以其他实施例的形式实现。例如,在其他实施例中,通过数据库或通过通常可以支持该间接映射的任何数据结构,也可以提供ViewFS实现工具206的间接映射功能。
本发明除了LAN环境中的数据半共享以外,还有很多应用。总的来说,只要在应用中所提供数据中的大多数而非全部数据为共享的数据,即数据对于接收方来说是公共的,则本发明可以就应用于这种应用情况。例如,在一个实施例中,本发明可用于提供入口技术,其中几乎所有被用户看到的内容都是不可变的,但是该内容的很小部分可以在单独用户的基础上被修改。这种情况下通过ViewFS实现工具执行的间接映射不是从一个文件到另一个文件,而是从一个网页到另一个网页。在这些实施例中,MapFS实现工具212的逻辑通常更可以被描述为数据映射模块。
在该书面说明中,各部件的特定命名、术语的大写、属性、数据结构或其他任何程序设计或结构方面都不是强制或重要的,实现本发明的机制或它的特征可以具有不同的名称、格式或协议。进一步,如上所述,该***还可以通过硬件和软件的组合来实现,或者完全由硬件元件来实现。而且,在此说明书中不同***部件之间特定的功能划分也仅仅是示例性的,并不是必然的;由单独***部件执行的功能也可以由多个部件来执行;而由多个部件执行的功能也可由单个部件来执行。例如,MapFS实现工具212的各特定功能可以在很多或一个模块中提供。
上述说明书中的一些部分通过算法和信息操作的符号表达,来表现本发明的特征。这些算法的说明和表现是本领域技术人员常用的手段,他们可以最为有效地向本领域其他人员表达其工作的实质。这些操作虽然是以功能或逻辑的方式描述的,但是应当理解都是通过计算机程序来执行的。另外,已经多次证明将这些操作结构表达为模块或代码设备是很方便的,而且不会有任何损失。
但是,应当知道所有这些和相似的术语都是与适当的物理量相关的,并且仅仅是应用于这些物理量的方便标志。除非特别指明或者可以从本发明中明显得出,否则在本说明书中,利用例如“处理”或“计算”或“判断”等词汇的论述都是指计算机***或相似电子计算设备的动作和处理,它在计算机***存储器或寄存器或其它类似的信息存储器、传输或显示设备中处理并转换表示物理(电子)量的数据。
本发明的特定方面包括在此以算法形式描述的各处理步骤和指令。应当注意本发明的各处理步骤和指令可以软件、固件或硬件的形式体现,并且当以软件的形式体现时,它们可以由实时网络操作***所使用的不同平台下载以驻留并进行操作。
本发明还涉及用于执行在此所述各操作的装置。该装置的结构可用于需要的目的,或可包含由存储在计算机中的计算机程序选择性启动或重新配置的通用目的的计算机。这种计算机程序可以存储在计算机可读存储介质中,例如但不局限于包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存储器(RAM)、EPROM、EEPROM、磁或光卡、特定用途集成电路(ASIC)等任何类型的盘、或可用于存储电子指令并都可与计算机***总线耦连的任何类型的介质。另外,说明书中所指的计算机可包括单个处理器,也可以设计成使用多个处理器的结构以便增加计算能力。
这里所呈现的算法和显示并不是任何特定的计算机或其他装置所固有的。安装有在此所教导的程序的各种通用目的的***都可以被使用,或者可以证明通过构成更为专用的装置来执行所需的方法步骤是很方便的。这些各种***所需的结构都从上述说明中体现出来。另外,本发明并没有参照任何特定的编程语言来描述。很明显,很多编程语言都可用于实现本发明在此的教导,对特定语言的任何引用都是为了公开本发明的教导和最佳模式而提供的。
最后,应当注意说明书中所使用的语言主要是为了阅读和指导的目的,而并不是用于描述或限制本发明的主题。因此,本发明公开的内容仅是示例性的,而并非为了限制本发明的保护范围。
Claims (10)
1.一种可由计算机执行的在共享的只读文件***中检测病毒的方法,该方法包括:
接收来自虚拟文件***(VFS)层的请求,该请求包括文件标识符和将在所标识的文件上执行的操作;
确定该标识的文件是否位于只读文件***中;
响应于所标识的位于只读文件***上的文件,执行以下步骤:
确定所标识的文件是不应当被写入的类型;
生成警告,该警告包括该文件的标记。
2.如权利要求1所述的可由计算机执行的方法,其中该文件类型是可执行的文件类型。
3.一种可由计算机执行的在共享的只读文件***中检测病毒的方法,该方法包括:
接收向文件写入的请求;
确定该文件位于只读数据存储器中;
确定该文件是否是应当被写入的类型;
响应于该文件不是应当被写入的类型,生成病毒报警警告;和
响应于该文件是应当被写入的类型,自动将该文件复制到可写的文件***;以及对该文件的拷贝执行写入操作。
4.如权利要求3所述的可由计算机执行的方法,其中该不应当被写入的文件的类型是可执行的文件类型。
5.一种可由计算机执行的在共享的只读文件***中检测病毒的方法,该方法包括:
接收多个写入请求,每个写入请求都标识了将被写入的文件;
确定这些文件位于只读存储设备中;
将这些文件拷贝到可写的存储设备中;
创建从每个文件到该文件的拷贝的映射;
确定其中一个拷贝的文件是否是不应当被写入的类型;和
响应于其中一个拷贝的文件是不应当被写入的类型,而生成病毒报警警告。
6.如权利要求5所述的可由计算机执行的方法,其中该不应当被写入的文件类型包括可执行文件。
7.一种用于在共享的只读文件***中检测病毒的***,该***包括:
文件处理模块,用于接收来自文件***的文件标识符和将对该标识的文件执行的操作;
映射模块,可通信地连接到该文件处理模块,用于确定在该文件标识符和该标识符所标识的文件的位置之间的映射关系;
文件***通信模块,可通信地连接到该映射模块,用于执行以下操作:
确定该文件是否是不应当被写入的类型;
响应于该文件是不应当被写入的类型,而生成一个病毒报警警告;和
响应于该文件不是不应当被写入的类型,而对该标识的文件执行操作。
8.如权利要求7所述的***,其中该不应当被写入的文件类型包括可执行文件。
9.一种用于在共享的只读文件***中检测病毒的计算机程序产品,该计算机程序产品被存储在计算机可读介质上并包括构成可使处理器执行以下步骤的代码,以下步骤为:
接收向文件写入的请求;
确定该文件位于只读数据存储器中;
确定该文件是否是应当被写入的类型;
响应于该文件不是应当被写入的类型,生成病毒报警警告;和
响应于该文件是应当被写入的类型,自动将该文件复制到可写的文件***;以及对该文件的拷贝执行写入操作。
10.如权利要求9所述的可由计算机执行的方法,其中该不应当被写入的文件类型包括可执行文件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46892403P | 2003-05-07 | 2003-05-07 | |
US60/468,924 | 2003-05-07 | ||
US60/468,778 | 2003-05-07 | ||
US60/482,364 | 2003-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1813253A true CN1813253A (zh) | 2006-08-02 |
Family
ID=36845372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200480012395 Pending CN1813253A (zh) | 2003-05-07 | 2004-05-07 | 对共享的只读文件***中的病毒的检测和报警 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1813253A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479922A (zh) * | 2017-08-04 | 2017-12-15 | 深圳市中兴物联科技有限公司 | 一种闪存数据管理方法、装置及计算机可读存储介质 |
CN107656837A (zh) * | 2017-09-27 | 2018-02-02 | 深圳秀豹科技有限公司 | 一种对共享智能设备实现用户分区恢复的***和方法 |
CN110647744A (zh) * | 2018-06-27 | 2020-01-03 | 国际商业机器公司 | 使用特定于对象的文件***视图识别和提取关键危害取证指标 |
CN112379968A (zh) * | 2020-11-13 | 2021-02-19 | 网易(杭州)网络有限公司 | 应用多开的方法、装置、设备及存储介质 |
-
2004
- 2004-05-07 CN CN 200480012395 patent/CN1813253A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479922A (zh) * | 2017-08-04 | 2017-12-15 | 深圳市中兴物联科技有限公司 | 一种闪存数据管理方法、装置及计算机可读存储介质 |
CN107656837A (zh) * | 2017-09-27 | 2018-02-02 | 深圳秀豹科技有限公司 | 一种对共享智能设备实现用户分区恢复的***和方法 |
CN110647744A (zh) * | 2018-06-27 | 2020-01-03 | 国际商业机器公司 | 使用特定于对象的文件***视图识别和提取关键危害取证指标 |
CN110647744B (zh) * | 2018-06-27 | 2023-06-06 | 国际商业机器公司 | 文件***中的取证分析的方法、装置、介质和*** |
CN112379968A (zh) * | 2020-11-13 | 2021-02-19 | 网易(杭州)网络有限公司 | 应用多开的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430392B2 (en) | Computer file system with path lookup tables | |
US9348842B2 (en) | Virtualized data storage system optimizations | |
AU2006239882B2 (en) | System and method for caching network file systems | |
JP4510028B2 (ja) | 複数読み出しストリームのための適応先読み技術 | |
US7958169B1 (en) | System and method for supporting change notify watches for virtualized storage systems | |
US7831643B1 (en) | System, method and computer program product for multi-level file-sharing by concurrent users | |
US9208291B1 (en) | Integrating anti-virus in a clustered storage system | |
US7707193B2 (en) | System and method for verifying and restoring the consistency of inode to pathname mappings in a filesystem | |
US9565254B2 (en) | Object location service for network-based content repository | |
US7739318B2 (en) | System and method for maintaining mappings from data containers to their parent directories | |
US8392361B2 (en) | Centralized management of virtual machines | |
US8285817B1 (en) | Migration engine for use in a logical namespace of a storage system environment | |
US20170075909A1 (en) | In-line policy management with multi-level object handle | |
US7293033B1 (en) | System and method for providing effective file-sharing in a computer system to allow concurrent multi-user access | |
JP2007503658A (ja) | 共有読み出し専用ファイルシステムにおけるウイルス検出及び警報 | |
US20060059204A1 (en) | System and method for selectively indexing file system content | |
CN1900928A (zh) | 用于访问文件***快照和文件***的方法 | |
JP2002229826A (ja) | ファイル中にバージョン固有プロパティを作成し保持する方法およびシステム | |
JP2007527074A (ja) | ファイルシステム内での効率的なファイルコンテンツをサーチするためのシステム及び方法 | |
WO2008055010A1 (en) | Reverse name mappings in restricted namespace environments | |
US20190258604A1 (en) | System and method for implementing a quota system in a distributed file system | |
JP2004348742A (ja) | トランスペアレントなストレージ再編成のためのシステムおよび方法 | |
CN1813253A (zh) | 对共享的只读文件***中的病毒的检测和报警 | |
US11544011B1 (en) | Write invalidation of a remote location cache entry in a networked storage system | |
GB2442285A (en) | A distributed file system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |