(57)【要約】読出し専用ファイルシステムの共有を可能にするとともに、読出し専用ファイルシステムの各クライアントに自身のデータ記憶領域に対する書き込みを行わせることができるシステムを提供する。ファイルは読出し専用パーシステント・リポジトリ・ファイルシステム上、又は書き込み可能なパーシステント・オーバーレイ・ファイルシステム上に記憶することができる。「楽観的共有」法とは、初期設定によりファイルシステム上の全てのものを読出し専用とすることを言う。ファイルを変更しようとする試みがある場合、即ち、プライベート・コピーが必要とされる場合には、殆どの書き込みファイルが小さいため、パフォーマンスの瞬断が通常は最小限となる。より大きなファイルの場合であっても、パフォーマンスの瞬断は1度だけの犠牲で済む。書き込むべきではないファイルへの書き込みを途中で阻止することにより、ウイルスを検出し警報を発することが可能となる。
2007503658.tif 000002
【特許請求の範囲】
【請求項１】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータ実行可能な方法であって、
仮想ファイルシステム（ＶＦＳ）層からの要求であって、ファイル識別子及び識別されたファイルに対して行う操作を含む要求を受け取る工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあるか否か判断する工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあると判断されると、前記識別されたファイルの種類が書き込むべきではない種類のファイルであると判断する工程と、
前記ファイルの異常を示す警報を発する工程と、
を具備することを特徴とする方法。
【請求項２】
請求項１に記載したコンピュータ実行可能な方法であって、前記ファイルの種類は、実行可能なファイルの種類であることを特徴とする方法。
【請求項３】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータ実行可能な方法であって、
ファイルへの書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルが書き込むべき種類のファイルであるか否か判断する工程と、
前記ファイルが書き込むべき種類のファイルではないと判断されると、ウイルスを警告する警報を発する工程と、
前記ファイルが書き込むべき種類のファイルであると判断されると、自動的に前記ファイルを書き込み可能なファイルシステムにコピーする工程と、
前記ファイルのコピーに書き込む工程と、
を具備することを特徴とする方法。
【請求項４】
請求項３に記載したコンピュータ実行可能な方法であって、前記書き込むべきではないファイルの種類は、実行可能なファイルの種類であることを特徴とする方法。
【請求項５】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータが実行可能な方法であって、
複数の書き込み要求であって、書き込むべきファイルをそれぞれ識別する書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルを書き込み可能な記憶装置にコピーする工程と、
各ファイルから該ファイルのコピーへのマッピングを作成する工程と、
前記コピーされたファイルのうち１のファイルが書き込むべきではない種類のファイルか否か判断する工程と、
前記コピーされたファイルのうち1のファイルが、書き込むべきではない種類のファイルであると判断されると、ウイルスを警告する警報を発する工程と、
を具備することを特徴とする方法。
【請求項６】
請求項５に記載したコンピュータが実行可能な方法であって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とする方法。
【請求項７】
共有読み出し専用ファイルシステムにおけるウイルスを検出するための装置であって、
ファイルシステムからの要求であって、ファイル識別子及び識別されたファイルに対して行う作業を含む要求を受け取るファイル処理モジュールと、
前記ファイル処理モジュールと通信可能に接続され、前記ファイル識別子と、該識別子によって識別されるファイルの位置との間のマッピングを決定するマッピング・モジュールと、
前記マッピング・モジュールと通信可能に接続され、前記ファイルが書き込むべきではない種類のファイルであるか否か判断し、前記ファイルの種類が書き込むべきではない種類のファイルであると判断されると、ウイルスを警告する警報を発し、前記ファイルの種類が書き込むべきではない種類のファイルではないと判断されると、前記識別されたファイルに対する前記作業を行うファイルシステム通信モジュールと、
を具備することを特徴とする装置。
【請求項８】
請求項７に記載した装置であって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とする方法。
【請求項９】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータプログラム製品であって、コンピュータ読み取り可能な媒体上に記憶され、
ファイルへの書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルが、書き込むべき種類のファイルであるか否か判断する工程と、
前記ファイルが書き込むべき種類のファイルではないと判断されると、ウイルスを警告する警報を発する工程と、
前記ファイルが書き込むべき種類のファイルであると判断されると、自動的に前記ファイルを書き込み可能なファイルシステムにコピーする工程と、
前記ファイルのコピーに書き込む工程と、
を処理装置に実行させるように構成されたコードを含むコンピュータプログラム製品。
【請求項１０】
請求項９に記載した方法であって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータシステムによる記憶装置の共有に係り、特に、コピー・オン・ライト作業をサポートしつつ、複数のコンピュータが読み出し専用ファイルシステムを共有できるようにする仮想ファイルシステムに係る。
【背景技術】
【０００２】
複数のコンピュータ間でリソースを共有するコンピュータ環境が多数存在する。例えば、ネットワークを介して多数のクライアントコンピュータにファイルを供給するサーバーコンピュータについて考えてみる。サーバーによってリモートＰＣにファイルが供給される際、ファイルにアクセスする各コンピュータが必要に応じてファイルに書き込みを行うためにファイルのコピーを必要とする場合、ファイルのコピーがサーバー上に保持されていなくてはならないことが多い。例えば、サーバーにアクセスするＰＣのユーザ環境が該サーバー上の初期設定ファイルにしたがって構成されている場合、ログイン後に環境を変更したい２台のＰＣはサーバー上に記憶された上記環境ファイルのコピーをそれぞれ持つ必要がある。
【０００３】
また、例えば記憶領域ネットワーク（ＳＡＮ）を使用して、複数のマシンに物理記憶装置を取り付けることもできる。しかしながら、この方法もまた問題がある。１台のハードドライブが複数のコンピュータによって共有され、各コンピュータがハードドライブにブロック毎にアクセスする状況を考えてみる。各ユーザのコンピュータは、ファイルシステム（例えばハードドライブ上のブロック）がどのような状態であるかについて把握している。例えば、ファイルシステムがディレクトリａ、ｂ及びｃを有すると仮定する。第１のユーザはディレクトリｄを作成することとし、第２のユーザがディレクトリｅを作成することとする。よって、この例では、各ユーザがルートディレクトリを含むブロックを変更している。まず第１のユーザがディスクに書き込み、その後第２のユーザがディスクに書き込む場合、第１のユーザがディスクに書きこんだばかりであることを知らない第２のユーザは、第1のユーザが加えた変更に単に上書きするため、ファイルシステムはディレクトリｅを持つがディレクトリｄは持たないことになる。更に、コンピュータは、データレベルだけでなくセマンティックスレベルでもキャッシュする。例えば、存在しないファイルをコンピュータが開こうとする場合、該コンピュータはファイルが存在しないという事実をキャッシュすることがある。その間、該ファイルが別のコンピュータによって作成される。しかし、次回に第１のコンピュータがファイルにアクセスしようとすると、コンピュータはファイルシステムのセマンティックスのキャッシュを使用するため、ファイルを探そうとはせずに、キャッシュからの誤ったデータ、即ち本例ではファイルが存在しないという事実を報告する。
【０００４】
Ｕｎｉｘ環境でディレクトリを共有する方法として、ネットワーク・ファイル・システム（ＮＦＳ）を用いるものがある。ＮＦＳは、ディレクトリを共有するために、リモートコンピュータからのパーティションをローカルコンピュータにマウントする。同様なプログラムとして、Ｓａｍｂａがウィンドウズ・ベースのシステムのユーザ用に存在する。ＮＦＳ及びＳａｍｂａにより、複数のコンピュータがディレクトリへの書き込みアクセスを共有できる。更に、ＮＦＳ及びＳａｍｂａでは、ＮＦＳ又はＳａｍｂａサーバーをリモートコンピュータの代わりに物理記憶装置にアクセスさせることによって、リモートコンピュータを該記憶装置上のファイルにアクセスさせることができ、その際直接的なアクセスは要求しない。
【０００５】
上記問題を解決する別の方法として、ＣＸＦＳ、ＶｘＦＳ及びＬｕｓｔｅｒ等のクラスタ化されたファイルシステムを用いるものがある。クラスタ化されたファイルシステムは、それらのブロック装置が共有されていることを認識し、同期機構及びセマンティック・ロックを有する。例えば、ファイルが作成されると、アクセスを共有する他のコンピュータにその情報が知らされる。データ層及びセマンティック層の両方で同期化が行われる。しかし、ＮＦＳ及びクラスタ化されたファイルシステムでは、ディレクトリ又はファイルシステム全体での共有しか可能にならず、ファイルレベルでの共有は不可能である。更に、ＮＦＳ及びクラスタ化されたファイルシステムでは、あるコンピュータが必要とする可能性があるデータに別のコンピュータが上書きすることや、ウイルス又は悪意のあるコード／ユーザによりコンピュータがデータを破壊することを防ぐことができない。
【０００６】
したがって、書き込みが必要なデータを書き込みできるようにしつつ、複数のコンピュータがハードドライブ等の物理記憶装置へのアクセスを共有できるようにすることはかなり困難である。一般に、共有はディレクトリレベルのみで可能であり、ファイルレベルでは不可能である。これは、ディレクトリ全体を共有しなければならないか、書き込む場合にはディレクトリ全体をプライベートにしなくてはならないことを意味する。ドライブを共有するコンピュータのうち1台が、装置上で共有されているディレクトリ内のファイルを変更したい場合は、そのファイルを含むフォルダ全体のプライベート・コピーを該コンピュータのために作成しなければならない。大きいディレクトリにとっては、多大な記憶領域が無駄になってしまう。この問題は、以前の読み出し専用ディレクトリからの新しいファイルを書き込む必要がある度にますます深刻となる。
【０００７】
上記問題を回避できたとしても、解決すべき別の問題が残っている。例えば、あるコンピュータがウイルスに感染すると、ウイルスが書き込み可能な共有デバイスに広がり、デバイスを共有する他の全システムが感染する恐れがある。更に、各コンピュータが設定ファイル等のような特定の名前が付いたファイルにアクセス必要がある場合、自身で使用するためにファイルを変更しようとする別のコンピュータによってファイルを破壊される可能性があるため、書き込み共有ディスクにファイルを記憶することができない。
【０００８】
記憶領域を節約し、効率的に新サーバーを構築するため、 既存の技術を用いて複数のディレクトリを共有しようと試みたＩＴ技術者もいた。新しく構築されるサーバー毎に全データのコピーが必要とされると、サーバーのために全データをコピーするのに長時間かかることがネックになる。更に、コストをかけて記憶領域を増やす必要があり、データをより多く共有した場合に比較してキャッシュの利用が少なくなるため、記憶領域に効率的にアクセスできなくなる。代わりに、データをコピーせずに共有しようという試みもなされてきた。この方法によれば、どのディレクトリが読み出し専用で共有できるかを決定するために、各アプリケーションがどこにデータを書き込むか判断する必要がある。すなわち、どのファイルが、どこに、どのような状況で書き込まれているか判断する必要がある。実際には、多くの一般的なアプリケーションは、どこにファイルを書き込んでいるか記録することはない。システムエンジニアがプログラム実行時に検査することにより、どこにファイルが書き込まれているか見つけようとする場合もあるが、これは確実な方法ではない。例えば、極めてまれに書き込まれ、検査で見つけることができない可能性があるファイルもある。更に悪いことには、当該ソフトウェア用にアップデートがリリースされると、検査分析をやり直さなければならない。このように脆弱な共有方法は、全ファイルを新しいサーバー用にコピーする慣習を生み出すこととなり、時間とコストの節約という当初の試みは無視される結果となった。
【０００９】
複数のコンピュータ間でファイルを共有することに関しては、アップグレードを行う際にも問題点がある。アップグレードをしたいユーザと、アップグレードをしたくないユーザがいる場合、各ユーザはソフトウエアの共有バージョンを使用しているため、アップグレードは全員に対して行われるか、誰に対しても行われないかのどちらかになるため、問題が起きる。解決策の一つとして、当該ソフトウェアの様々なバージョンを様々なパーティション上に保持する方法がある。しかしながら、この方法ではスペースを追加する必要があり、管理間接費も上昇する。そして、各コンピュータを、新しいパーティションか、古いパーティションのどちらかを使用するように構成する必要がある。したがって、一度に全てをアップデートする以外は困難である。
【００１０】
したがって、複数のコンピュータ間で記憶領域を共有するための効率的な方法が求められている。
【発明の開示】
【００１１】
本発明は、データの「半共有」を可能にする。一般に、この半共有は、大量の情報が複数のコンピュータシステム間で共有され、各コンピュータシステムがデータの一部を変更する必要がある環境に適用される。
【００１２】
一実施例において、本発明は読み出し専用ファイルシステムの共有を可能にしつつ、ワークステーション等の該読み出し専用ファイルシステムの各クライアントが自身のデータ領域に書き込みを行うことを可能にする。本発明の「楽観的共有」法とは、初期設定によりファイルシステム上の全てのものを読み出し専用とすることを言う。ファイルを変更しようとする試みがある場合、即ち、プライベート・コピーが必要とされる場合には、殆どの書き込みファイルが小さいため、パフォーマンスの瞬断が通常は最小限となる。より大きなファイルの場合であっても、パフォーマンスの瞬断は1度だけの犠牲で済む。
【００１３】
本発明が意図するシステム構造においては、１以上のパーシステント・リポジトリ・ファイルシステムが多数のコンピュータ間で共有される。あるコンピュータ上で実行されるアプリケーションが読み出し専用ファイルシステム上にあるファイルにデータの書き込みを行おうとすると、代わりに該ファイルがオーバーレイ・ファイルシステムに書き込まれる。それに続くファイル作業は、読み出し専用ファイルシステムではなくオーバーレイ・ファイルシステムに対して行われる。ファイル名とそのパス位置との間のマッピングが保持されることにより、呼び出しアプリケーションに対して処理がトランスペアレントになる。したがって、二重に記憶する必要が無くなるため、ディスクキャッシュのより効率的な使用を可能にすることにより、費用を節約し、ＳＡＮ装置及びＮＡＳ装置の性能を向上することができる。更に、ロード条件の変更やソフトウェアのアップデート等に対して迅速に新しいサーバーを配置することができる。
【００１４】
【００１５】
【００１６】
【００１７】
【００１８】
【００１９】
添付図面は、本発明の好適な実施例を単に例示したものである。当業者であれば、ここで説明される本発明の原則から逸脱せずに、ここで例示される構造や方法について他の実施例も実現できることを以下の説明から容易に理解できるであろう。
【発明を実施するための最良の形態】
【００２０】
システム構造
図１は、本発明の利点を生かすように設計されたネットワーク構造を概念的に示すものである。図１には多数のコンピュータ１０２が図示されているが、各コンピュータ１０２は以下に説明するマップ・ファイル・システムのインスタンスを含み、読み出し専用パーシステント・リポジトリ (persistent repository) ・ファイル・システム２２６のインスタンスと通信することが好ましい。また、各コンピュータ１０２は、パーシステント・オーバーレイ・ファイル・システム２２０に読み出し・書き込みアクセスが可能である。したがって、以下に説明するように、コンピュータ１０２は必要に応じてオーバーレイ２２０にデータを書き込むと同時に、共通の読み出し専用ファイルストア２２６を共有することができる。なお、図１は、上記システムを利用したネットワークの種々の構成のうち一例を示したものである。例えば、リポジトリ・ファイル・システム２２６は１以上の物理ドライブでもよい。同様に、オーバーレイ・ファイル・システム２２０は複数のパーティションを有し２以上のコンピュータがアクセスする１のドライブであってもよく、各コンピュータ１０２用の１のドライブであってもよい。当業者であればわかるであろうが、共有読み出し専用アクセス権がリポジトリ・ファイル・システムに与えられ、非共有書き込みアクセス権がオーバーレイ・ファイル・システムに与えられるものであれば、物理的構成は如何なるものでもよい。
【００２１】
図２は、マップ・ファイル・システム（ＭａｐＦＳ）・インプリメンテーション２１２を有するシステム２００の好適な実施例の概要を示すものである。シスコール・ハンドラ２０２は、Ｌｉｎｕｘ等のオペレーティングシステムの従来部分であって、アプリケーションからのシステム・コールを受け取り、処理する。下位のファイルシステムとの対話を要求するシステム・コールに対して、シスコール・ハンドラ２０２は該要求を仮想ファイルシステム層（ＶＦＳ層）２０４に渡す。ＶＦＳ層２０４は、Ｌｉｎｕｘオペレーティングシステムによって構築されるような従来の仮想ファイルシステム層である。ＶＦＳ層２０４は、システム・カーネルの上位層が様々なファイルシステムとやり取りできるように設計された抽象層である。例えば、ＬｉｎｕｘＶＦＳは、ｅｘｔ３、ＦＡＴ、及びＮＦＳファイルシステムや、その他様々なファイルシステムをサポートする。ＶＦＳ層により、ファイルを管理するためのインターフェースの標準セットをプログラムが持つことができ、オペレーティングシステムとファイルシステム・インプリメンテーションが通常の方法で相互に通信でき、ファイルシステム・インプリメンテーションが使用し得る共通のファイルシステム関連機能のライブラリを実現することによりコードの重複を回避することができる。
【００２２】
また、ＶＦＳ層２０４は、ＭａｐＦＳインプリメンテーション２１２と通信する。ＭａｐＦＳは、以下にその機能を説明するとおり、ＶＦＳ層２０４から要求されるインターフェースを実現するホストファイルシステムである。ＭａｐＦＳインプリメンテーション２１２は、使用するオペレーティングシステム、例えばＬｉｎｕｘのＶＦＳ条件に合致するＶＦＳ層２０４とのインターフェースを提供する。ＭａｐＦＳインプリメンテーション２１２の作用については、図５を参照しながら以下に説明する。ＭａｐＦＳファイルシステムのインスタンスとして、ＭａｐＦＳインスタンス２１６がある。ＭａｐＦＳインスタンス２１６は、ＭａｐＦＳファイルシステム用の一時的な情報等、下位のビュー、リポジトリ及びオーバーレイ・ファイルシステムについての情報から成る情報を記憶する。（ＶＦＳ層を介して）アプリケーションからの要求を受信し、必要に応じて該要求をリポジトリ及びオーバーレイ・ファイル・システムに渡し、アプリケーションに要求を満たさせるために返信する際、ＭａｐＦＳは要求元のアプリケーションに、コヒーレントな書き込み可能ファイルシステムがあると錯覚させる。
【００２３】
リポジトリＦＳインプリメンテーション２２２は、データが共有されるパーシステント読み出し専用ファイルシステム２２６上のデータを保持するためのファイルシステムのインプリメンテーションである。リポジトリＦＳインプリメンテーション２２２はＭａｐＦＳインプリメンテーション２１２からのファイル・システム要求を受信し、該要求に対して応答する。メモリ２２４中のリポジトリＦＳインスタンスは、パーシステント記憶領域中にある特定のリポジトリ・ファイル・システムの一時的なメモリ内ステータスを表す。ステータスには、例えば、どのようなファイルが存在し（または存在せず）、探索に成功したか否か、ファイル・サイズ、許可データ、実際のキャッシュ・データ・ブロック等が含まれる。
【００２４】
オーバーレイＦＳインプリメンテーション２１４は、パーシステント・オーバーレイ・ファイルシステム・インスタンス２２０に書き込み可能な記憶領域を提供するためのファイルシステムのインプリメンテーションである。オーバーレイＦＳインプリメンテーション２１４はＭａｐＦＳインプリメンテーション２１２からの書き込み要求を含むファイルシステム要求を受信し、該要求に対して応答する。メモリ２１８内のオーバーレイＦＳインスタンスはリポジトリＦＳインスタンス２２４と同様に動作する。好ましい一実施例において、オーバーレイＦＳは、ＭａｐＦＳがインスタンス化する際に指定される位置にルートを置くディレクトリ階層である。
【００２５】
ＶｉｅｗＦＳインプリメンテーション２０６は、ＭａｐＦＳインプリメンテーション２１２に参照されオーバーレイ及び／又はリポジトリ・ファイル・システムに記憶されるファイルネーム間のマッピングを保持する。パーシステントＶｉｅｗＦＳインスタンス２１０は上記マッピングの物理（つまり、ディスク）レコードを保持する一方、ＶｉｅｗＦＳインスタンス２０８はリポジトリＦＳインスタンス２２４及びオーバーレイ・インスタンス２１８と同様な情報をメモリに保持する。好ましい一実施例において、ＶｉｅｗＦＳは、ＭａｐＦＳがインスタンス化する際に指定される位置にルートを置くディレクトリ階層である。
【００２６】
一般に、ＶＦＳ層２０４を介してＭａｐＦＳインプリメンテーション２１２が受け取るファイル要求は、ファイルのリポジトリ・バージョンにアクセスことにより、又はファイルのオーバーレイ・バージョンにアクセスことにより満たされる。ビューは、ファイル上の要求を満たすためにはどのホスト・ファイルを使用するべきかについて指定する。ファイルがリポジトリ上にあり、該ファイルを変更する試みがあった場合には、該ファイルはオーバーレイに移動される。以下に例を示す。
【００２７】
図５は、一実施例におけるＭａｐＦＳインプリメンテーション２１２の機能を実施する論理サブユニットを示す。ＭａｐＦＳインプリメンテーション２１２は、マッピング・モジュール５０２、ファイル処理モジュール５０４、及びファイルシステム通信モジュール５０６を有する。ファイルシステム通信モジュール５０６は、ＶｉｅｗＦＳインプリメンテーション２０６やリポジトリＦＳインプリメンテーション２２２等の他のファイルシステム・インプリメンテーションと通信するためのインターフェースを提供する。マッピング・モジュール５０２はＭａｐＦＳインプリメンテーション２１２にマッピング機能を提供し、マッピング機能にはシステム２００内のファイル又はデータ構造の位置を取得するために用いるロジックが含まれる。ファイル処理モジュール５０４はＶＦＳ層２０４からの要求を受け取り、該要求に対して応答するものであり、ファイルシステム処理を行うためのロジックを含む。
【００２８】
データ・フロー
Ｌｉｎｕｘ環境においては、ＭａｐＦＳの名前と、どのようにインスタンス化するか示すモジュールをロードすることが好ましい。モジュールがロードされると、新しいファイルシステムを登録する機能を呼び出し、ファイルシステムの名前と、その名前によってＬｉｎｕｘの「マウント」動作が呼び出される際に新しいスーパーブロックをインスタンス化するための手順を渡す。当業者であれば、このモジュールを用いてファイルシステムをロードする技術が従来から知られていることがわかるであろう。
【００２９】
ＭａｐＦＳインプリメンテーション２１２をインスタンス化するため、モジュールがロードされた際に指定されたインスタンス化手順がビュー及びオーバーレイの位置を含む引数で呼び出される。ＭａｐＦＳのマウント箇所は、ＭａｐＦＳをインスタンス化するエンティティによって指定される。ビューによって参照されるファイルを探索するための相対パス上にマウントされたファイルシステムのツリー内の一箇所にあるルックアップ・ルートが別の引数によって指定される。ＭａｐＦＳがインスタンス化されると、以下に説明するように処理される従来のシステム・コールにより作用を受ける。
【００３０】
図３は、パーシステント・リポジトリ２２６上のファイルの探索を示すデータ・フロー図ある。まず、シスコール・ハンドラ２０２がアプリケーションからの探索シスコールを３０３で受け取る。次に、シスコール・ハンドラ２０２はＶＦＳ層２０４を３０２で呼び出す。ＶＦＳ層２０４はＭａｐＦＳ２１６のうち一般にアクセス可能な部分を３０４で調べ、現在探索中のファイル名に関する情報をＭａｐＦＳインスタンス２１６が有しているか否か確認する。一実施例においては、ＭａｐＦＳインスタンス２１６のデータを調べる際、ＶＦＳ層２０４は既に探索された名前及びその探索結果の一覧表を検索する。上記ファイルが存在する場合は、その探索結果がＭａｐＦＳ・ｉｎｏｄｅの参照となる。上記ファイルは存在しないが探索されている場合、探索結果は、ファイルが存在していないという負の入力となる。本例では、ここで初めてパス名が解釈されているため、ＭａｐＦＳインスタンス２１６は上記ファイル名に関する情報を有していないことになる。したがって、次にＶＦＳ層２０４はＭａｐＦＳインプリメンテーション２１２を３０６で呼び出し、パス名を探索する。ＶＦＳ層２０４は、ＭａｐＦＳ親ディレクトリへのハンドル及び該ディレクトリ中において探索するファイル名をファイル処理モジュール５０４に渡す。好ましくは、ＭａｐＦＳインプリメンテーション２１２がファイル名を探索し、該ファイル名のエントリを最近探索したファイル名の一覧表に挿入し、探索リクエストの終了後に、該エントリにハンドルを返す。
【００３１】
マッピング・モジュール５０２は、（ファイルシステム通信モジュール５０６を介して）３０８でＶｉｅｗＦＳインスタンス２０８を調べ、ファイルがキャッシュされているか否か確認する。好ましくは、ＭａｐＦＳと同様な方法で、即ち、ファイル名及び探索結果の一覧表に、ビューがファイル名をキャッシュする。また、ここでは初めてファイルが探索されているため、ＭａｐＦＳ処理以外の何らかの処理により探索されていない限り、ビューのキャッシュにも存在しないこととなる。したがって、マッピング・モジュール５０２は、３１０でＶｉｅｗＦＳインプリメンテーション２０６に、好ましくは上述したようにＶＦＳ層がＭａｐＦＳインスタンスデータを調べる場合の方法と同様な方法でビュー内のファイル名を探索するよう依頼する。ＶｉｅｗＦＳインプリメンテーション２０６は、３１２でディスク２１０上のパーシステントＶｉｅｗＦＳインスタンス内のファイルを探索し、３１４でメファイルのメモリ内記述を読み込みファイル名とｉｎｏｄｅの一覧表にエントリを挿入することによってメモリ２０８内のＶｉｅｗＦＳインスタンスを更新する。ＶｉｅｗＦＳインプリメンテーション２０６は、３１６でＶｉｅｗＦＳインスタンス２０８の参照をマッピング・モジュール５０２に返す。
【００３２】
なお、データ・フローにおけるこの時点では、ステップ３１０〜３１６と同様な一連のステップが繰り返され、ビュー内のファイル内容を読み出し、ホストファイル・パスを見つける。ただし、このように繰り返されるステップは図３では省略されている。通常のファイルの場合は、ビュー・インプリメンテーションにより記憶されるファイル内のデータが、該ファイルへの絶対的なパスである。ディレクトリ又は基本ファイル（ブロックや文字の特殊ファイル、シムリンク、名前付きパイプ等の非データ、非ディレクトリファイル）では、ホスト・コンポーネントが無い。すなわち、ビュー・コンポーネントは、ディレクトリ又は非データファイルであり、該ファイルの特性は転送以外で使用される。
【００３３】
次に、マッピング・モジュール５０２は３１８でリポジトリＦＳインスタンス２２４を調べ、ビュー・コンポーネントによって参照されるファイルが、リポジトリＦＳに既に知られているか否か判断する。ここでは、該ファイルが初めて探索されているので、ＭａｐＦＳ処理以外の何らかの処理によって知らされていない限り、リポジトリＦＳ２２４には知られていない。次に、マッピング・モジュール５０２は、リポジトリＦＳインプリメンテーション２２２に、ビューから既に抽出したパス名を探索するよう依頼する。リポジトリＦＳインプリメンテーション２２２は、３２２でパーシステント・リポジトリＦＳインスタンス２２６からのデータを探索し、３２４でメモリ２２４内のリポジトリＦＳインスタンスを更新する。次に、リポジトリＦＳインプリメンテーション２２２は、３２６で、ビュー及びリポジトリから探索した情報を参照するＭａｐＦＳファイルとともに探索結果をＭａｐＦＳインプリメンテーション２１２に返す。最後に、ファイル処理モジュール５０４は、３３０で一覧表のエントリへのハンドルをＶＦＳ層２０４に返し、ＶＦＳ層は３３２で該ハンドルをシスコール・ハンドラ２０２に返し、シスコール・ハンドラ２０２は３３４で該ハンドルをプログラムに返す。なお、上記一覧表のエントリへのハンドルは、上記ファイルが通常のファイルである場合はビュー及びホスト・ファイルを内部で参照し、上記オブジェクトがディレクトリ又は基本ファイルである場合はビューのみを参照するＭａｐＦＳオブジェクトへのハンドルである。
【００３４】
ＶＦＳ層２０４を介してＭａｐＦＳインプリメンテーション２１２によって受け取られたシスコールは、指定された名前のファイルを作成する要求である作成命令である場合もある。例えば、ＶＦＳ層２０４が「／ｆｏｏ／ｂａｒ／ｂａｚ」というファイルを作成する要求を受け取る場合がある。ＶＦＳ層２０４は、上述したようにＭａｐＦＳインプリメンテーション２１２によって探索作業を行い、「ｆｏｏ／ｂａｒ」上に「ｂａｚ」という名前のファイルを作成しようと試みるが失敗する。次に、ＶＦＳ層２０４は、ファイル処理モジュール５０４に、「ｆｏｏ／ｂａｒ」上に「ｂａｚ」を作成するよう依頼する。ファイル処理モジュール５０４は、ＭａｐＦＳ親ディレクトリ及び作成すべきファイル名「ｂａｚ」へのハンドルをＶＦＳ層２０４から受け取る。次に、マッピング・モジュール５０２は、ＶｉｅｗＦＳインプリメンテーション２０６に「ｂａｚ」という名前のファイルをビュー・ディレクトリ「ｆｏｏ／ｂａｒ」内に作成するよう要求する。ＶｉｅｗＦＳインプリメンテーション２０６は、パーシステントＶｉｅｗＦＳインスタンス２１０及びメモリ２０８内のＶｉｅｗＦＳインスタンスを更新し、新しいファイルへのハンドルをＭａｐＦＳインプリメンテーション２１２に返す。次に、マッピング・モジュール５０２は返されたファイルを調べ、ＶｉｅｗＦＳインプリメンテーション２０６に書き込み要求を送り、オーバーレイ上に作成しようとするファイルへのパスを有するビュー・ファイルを読み込む。パスは、ビューが渡したファイルのｉｎｏｄｅ番号を参照することにより形成される。ファイル処理モジュール５０４は、（ここでもファイルシステム通信モジュール５０６を介して）作成要求をビュー・ファイルのｉｎｏｄｅ番号とともにオーバーレイＦＳインプリメンテーション２１４に送る。そして、オーバーレイＦＳインプリメンテーション２１４はパーシステント・オーバーレイＦＳインスタンス２２０内にファイルを作成し、メモリ２１８内のオーバーレイＦＳインスタンスを更新し、ファイルへのハンドルをファイルシステム通信モジュール５０６に返す。ＭａｐＦＳインプリメンテーション２１２は、ビュー及びオーバーレイ・コンポーネントを参照するＭａｐＦＳファイルオブジェクトを構築し、該オブジェクトをＭａｐＦＳインスタンス２１６に挿入し、新しいファイルへのハンドルをＶＦＳ層２０４に返し、ＶＦＳ層２０４は該ハンドルを要求元のプログラムに渡す。当業者であれば、上述したオーバーレイ・ファイルへの命名方法が、採用し得る数多くの方法の一例であることが分かるだろう。
【００３５】
図４は、ホスト・コンポーネントが現在パーシステントＦＳリポジトリ・インスタンス２２６上にあるファイルをプログラムが書き込む際のデータ・フローを示す図である。
【００３６】
まず、シスコール・ハンドラ２０２は、４００でプログラムから書き込みコールを受け取り、４０２で該書き込みコールをＶＦＳ層２０４に渡す。ＶＦＳ層２０４は、４０４で該コールをファイル処理モジュール５０４に渡す。ＭａｐＦＳインプリメンテーション２１２は、４０６でＭａｐＦＳインスタンス２１６内のファイルのプライベートデータを調べ、ホスト・コンポーネント・ファイルの現在位置を確認する。ＭａｐＦＳインスタンス２１６は、ホスト・ファイルのｉｎｏｄｅへのハンドルを含むことが好ましい。本例では、ファイルがリポジトリ・ファイル・システム上にあるため、ＭａｐＦＳインスタンスはリポジトリ・インスタンス上にあるｉｎｏｄｅへのハンドルを有することになる。次に、ファイル処理モジュール５０４は、４０８でリポジトリＦＳインスタンス２２４のホスト・ファイルの公開部分を調べ、そのファイルシステム(リポジトリ)が読み出し専用にマウントされていることと、ＭａｐＦＳインプリメンテーション２１２がオーバーレイ・ファイル・システムへのコピー・オン・ライト作業を行う必要があることを確認する。次に、ファイル処理モジュール５０４は、４１０でオーバーレイ・インプリメンテーション２１４を呼び出し、新しいファイルを作成する。
【００３７】
オーバーレイ・インプリメンテーション２１４は、４１２でパーシステント・オーバーレイ・インスタンス２２０内に新しいファイルを作成し、４１４でディスク上に作成されたファイルについての情報を含む新たに割り当てられたメモリ内ｉｎｏｄｅについての情報でメモリ内のオーバーレイ・インスタンス２１８を更新する。更に、オーバーレイ・インプリメンテーション２１４は、新たに作成されたファイルに対して、名前とｉｎｏｄｅのマッピング・テーブルにエントリを記入する。次に、オーバーレイ・インプリメンテーション２１４は、４１６で新しいファイルへのハンドルをＭａｐＦＳインプリメンテーション２１２に返す。そして、ＭａｐＦＳインプリメンテーション２１２は、４１８で現在のホスト・ファイルの内容を読み出す要求をリポジトリＦＳインプリメンテーション２２２に送る。
【００３８】
リポジトリＦＳインプリメンテーション２２２は、４２０でディスク２２６上のパーシステント・リポジトリＦＳインスタンスからファイルの内容を読み出し、４２２でメモリ内のコピーを更新し、４２４でファイルの内容をＭａｐＦＳインプリメンテーション２１２に返す。ファイル処理モジュール５０４は、４２６でオーバーレイＦＳインプリメンテーション２１４に書き込み要求を送ることによりオーバーレイ上の新しいファイルにデータを書き込む。オーバーレイＦＳインプリメンテーション２１４は、４２８でパーシステント・オーバーレイＦＳインスタンス２２６にデータを書き込み、４３０でメモリ２１８のオーバーレイＦＳインスタンス内のデータキャッシュを更新し、４３２で成功コードをＭａｐＦＳインプリメンテーション２１２に返す。
【００３９】
次に、マッピング・モジュール５０２は、４３４でＶｉｅｗＦＳインプリメンテーション２０８に書き込み命令を送り、ＭａｐＦＳファイルのホスト・コンポーネントの位置をリポジトリ・ファイル・システムからオーバーレイに更新する。ＶｉｅｗＦＳインプリメンテーションは、４３６でメモリ２０８内のＶｉｅｗＦＳインスタンスを更新し、４３８でパーシステントＶｉｅｗインスタンス２１０を更新し、４４０でＭａｐＦＳインプリメンテーション２１２にエラーが発生しなかった旨を通知する。
【００４０】
なお、何らかの処理によってファイルがメモリ内に直接マッピングされた場合には、データ・フローにおける現時点で仮想メモリ・サブシステムと同期化することが好ましい。
【００４１】
ファイル処理モジュール５０４は、４４２で当初の書き込み要求をオーバーレイＦＳインプリメンテーション２１４に満たさせるために送る。オーバーレイＦＳインプリメンテーション２１４は、４４４でメモリ２１８内のオーバーレイＦＳインスタンスを更新し、ディスク２２０上のパーシステント・オーバーレイ・インスタンスを更新する。そして、オーバーレイＦＳインプリメンテーションは、４４８でＭａｐＦＳインプリメンテーション２１２に書き込み結果を返す。
【００４２】
最後に、ファイル処理モジュール５０４は、４５０で書き込み結果をＶＦＳ層２０４に返し、ＶＦＳ層２０４は書き込み結果をシスコール・ハンドラ２０２に返し、４５４で書き込み結果は要求元であるプログラムに返される。
【００４３】
一実施例においては、ディスク２２０上のパーシステント・オーバーレイ・インスタンスが限界容量に近づくと、ファイルシステムに新しいオーバーレイを動的に割り当て、追加することができる。そして、ＭａｐＦＳが書き込み要求を新しいオーバーレイに送る。ＭａｐＦＳはＭａｐＦＳファイルオブジェクトからホストファイルオブジェクトへの翻訳要求をトランスペアレントに処理するため、ホスト・ファイルになされた変更は要求元のアプリケーションに対して完全にトランスペアレントである。このようにして、ＭａｐＦＳインプリメンテーション２１２はメモリアクセスの連続性を保証する。
【００４４】
ウイルスの検出及び報告
複数のコンピュータが読み出し専用記憶装置を共有し、オーバーレイに対して非公開にアクセスできる環境における一般的な使用パターンについて観察を行うことができる。実際には、実行可能なファイルは普通はコンパイルされたコードを含むため、通常は変更すべきではない。逆に、データファイルの変更は、本来は不審な行為ではない。
【００４５】
上述したように、プログラムがパーシステント・リポジトリＦＳインスタンス２２６上の読み出し専用ファイルを変更しようとしているとＭａｐＦＳインプリメンテーション２１２が判断すると、ファイル処理モジュール５０４がオーバーレイＦＳインプリメンテーション２１４を介してファイルのコピー作成を開始し、マッピング・モジュール５０２及びＶｉｅｗＦＳインプリメンテーション２０６により、ファイル名からオーバーレイ上の書き込み可能なコピーの位置への間接マッピングを作成する。
【００４６】
オーバーレイ上の各ファイルに初めて書き込みされると、ビュー内に該ファイルのコピー及びマッピングが作成されるため、該コピー及びマッピングが、コンピュータ上で動作するプログラムによってなされた全ての書き込み要求のレコードとしての役割を果たす。好ましい一実施例においては、ファイル処理モジュール５０４が、書き込み要求のレコードを解析し、実行可能なファイルに対する書き込みやその他の異常動作等、マネージド・インスタンス中のウイルスの存在を示している可能性があるものを検出する。
【００４７】
例えば、正常な動作においては、コンピュータ１０２上で動作するプログラムは実行可能なファイルに書き込みを行わない。コンピュータ１０２が実行可能なファイルに書き込みを行っている場合は、実行可能なファイルを侵す等の目的で実行可能なファイルを変更したコンピュータ・ウイルスをコンピュータ１０２が実行していることを示す。実行可能なファイルの他にも、通常は書き込むべきではない種類のファイルが有り得る。好ましい一実施例においては、ＭａｐＦＳインプリメンテーション２１２が、書き込むべきではないファイル種類のレコードを保持する。別の一実施例では、ＭａｐＦＳインプリメンテーション２１２が、書き込むべきではない特定のファイル一覧を保持する。
【００４８】
一実施例において、ファイル処理モジュール５０４は、ＶＦＳ層２０４から受け取った書き込み要求を監視する。書き込み要求が実行可能なファイル又は変更すべきではない他のファイルである場合は、ファイル処理モジュール５０４が警報を発するか、又は異常動作を示す他の機能を作動させる。別の実施例では、ウイルスやその他の異常動作を特定するために、ファイル処理モジュール５０４がオーバーレイＦＳインプリメンテーション２１４上のファイル及びＶｉｅｗＦＳインプリメンテーション２０６内のマッピングを定期的にチェックし、変更すべきではない実行可能なファイル等があるか確認する。
【００４９】
以上、限られた数の実施例について本発明を詳細に説明した。当業者であれば、本発明を他の実施例でも実施できることが分かるであろう。例えば、ＶｉｅｗＦＳインプリメンテーション２０６の間接マッピング機能は、他の実施例ではデータベースや、より一般的には間接マッピングをサポートできるものであれば如何なるデータ構造によっても代替可能である。
【００５０】
また、本発明は、ＬＡＮ環境におけるデータ共有以外にも多くの場合に適用可能である。一般的に、本発明は、供給されるデータの全てではないが殆どのデータを共有データ、即ち受信者に共通のデータとする場合に適している。例えば、一実施例において、本発明は、ユーザが閲覧するコンテンツの殆どを不変とするが、該コンテンツのごく一部のみユーザ毎に変更できるポータル技術を提供するために適用される。このような場合にビューによって行われる間接マッピングは、あるファイルから別のファイルへのマッピングではなく、あるウェブページから別のウェブページへのマッピングである。このような実施例においては、ＭａｐＦＳインプリメンテーション２１２のロジックをデータ・マッピング・モジュールとしてより一般的に記述することができる。
【００５１】
ここに記載した説明では、構成要素の名前、用語の大文字表記、属性、データ構造、又は他のプログラミング若しくは構造的側面は、強制的なものでも重要なものでもなく、本発明やその特徴を実施する機構は異なる名前、形式、又はプロトコルを有するものでもよい。更に、本システムは上述のようにハードウェア及びソフトウェアの組み合わせから成るものでもよいし、ハードウェア要素に全体が含まれるものでもよい。また、ここで説明した種々のシステム構成要素間における機能の分担は一例であって、強制的なものではなく、単一システム構成要素によって実行される機能を複数の構成要素によって実行してもよいし、複数の構成要素によって実行される機能を単一の構成要素が実行することもできる。例えば、ＭａｐＦＳインプリメンテーション２１２等の機能を、多数又は１のモジュールで提供してもよい。
【００５２】
上記説明の一部は、情報に対する処理のアルゴリズム及びシンボリック表現によって本発明の特徴を表すものである。このようなアルゴリズムによる記述や表現は、ある当業者が他の当業者に対して自らの研究内容を最も効果的に伝えるために用いられる手段である。なお、上記処理は、機能的又は論理的に説明されているが、コンピュータプログラムによって実行される。更に、このような処理の構成をモジュール又はコード装置と呼ぶが時として便利であることがわかっている。
【００５３】
しかしながら、これらの用語又は類似の用語全ては、適当な物理量に対応するものであり、該物理量に適用される便利な標識でしかないことを念頭におくべきである。本説明で特に指定しない限り、本説明において、「処理」、「演算」、「判断」等の用語を用いた記述は、コンピュータシステムのメモリ、レジスタ、又はその他の情報記憶、伝達又は表示装置内の物理（電子）量として表されたデータを操作し変換するコンピュータシステム又は同様な電子演算装置の動作及び処理を指すものである。
【００５４】
本発明の一つの観点によると、ここにアルゴリズム形式で説明された処理工程や命令が含まれる。なお、本発明の処理工程及び命令は、ソフトウェア、ファームウェア、又はハードウェアに具現化することができ、ソフトウェアに具現化した場合には、リアルタイムネットワークのオペレーティングシステムによって使用される様々なプラットフォーム上に常駐し、操作される。
【００５５】
また、本発明は、ここで説明した処理を実行する装置に係るものでもある。そのような本発明の装置は、必要とされる目的のために特別に構成されたものでもよいし、コンピュータに記憶されたコンピュータプログラムによって選択的に起動又は再構成される汎用コンピュータによって構成してもよい。このようなコンピュータプログラムは、コンピュータ読み出し可能な記憶媒体、例えば、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光学式カード、特定用途向け集積回路（ＡＳＩＣ）、又は電子命令を記憶するのに適した他の媒体等であって、コンピュータシステムバスに接続された記憶媒体に記憶することができるが、これらに限定されるものではない。更に、本明細書中で言及したコンピュータは単一の処理装置を含むものでもよいし、より高い演算能力を実現するために複数の処理装置を含むように設計された構造のものでもよい。
【００５６】
ここで説明したアルゴリズムや表示は、本来、特定のコンピュータやその他の装置に関連するものではない。ここで教示した内容に応じたプログラムとともに様々な汎用システムを使用することができるし、必要とされる処理工程を実行するためにより特化した装置を構築する方がより都合が良いこともある。このような様々なシステムに必要とされる構造は、上記説明から明らかであろう。更に、本発明は特定のプログラミング言語に関して説明したものではない。ここで説明した本発明の教示内容を実施するために様々なプログラミング言語を用いることができ、特定の言語についての言及は本発明の実施可能性及び最良の形態を開示するために行われている。
【００５７】
最後に、本明細書中で用いた表現は、その殆どが読みやすさ及び説明目的のために選択されたものであり、本発明の主題を線引きしたり制限したりするために選択されたものではない。したがって、本発明の開示内容は一例に過ぎず、本発明の範囲を制限するものではない。
【図面の簡単な説明】
【００５８】
【図１】本発明の一実施例におけるネットワーク構造を示すブロック図である。
【図２】本発明の一実施例におけるシステム構造の概要を示すブロック図である。
【図３】本発明の一実施例における探索作業におけるデータ・フローを示すフローチャートである。
【図４】本発明の一実施例におけるコピー・オン・ライト作業におけるデータ・フローを示すフローチャートである。
【図５】本発明の一実施例におけるマップ・ファイル・システムを示すブロック図である。
【図１】
2007503658.tif 000003
【図２】
2007503658.tif 000004
【図３】
2007503658.tif 000005
【図４】
2007503658.tif 000006
【図５】
2007503658.tif 000007
【手続補正書】
【提出日】平成18年4月11日(2006.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータ実行可能な方法であって、
仮想ファイルシステム（ＶＦＳ）層からの要求であって、ファイル識別子及び識別されたファイルに対して行う操作を含む要求を受け取る工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあるか否か判断する工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあると判断されると、前記識別されたファイルの種類が書き込むべきではない種類のファイルであると判断する工程と、
前記ファイルの異常を示す警報を発する工程と、
を具備することを特徴とする方法。
【請求項２】
請求項１に記載したコンピュータ実行可能な方法であって、前記ファイルの種類は、実行可能なファイルの種類であることを特徴とする方法。
【請求項３】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータ実行可能な方法であって、
ファイルへの書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルが書き込むべき種類のファイルであるか否か判断する工程と、
前記ファイルが書き込むべき種類のファイルではないと判断されると、ウイルスを警告する警報を発する工程と、
前記ファイルが書き込むべき種類のファイルであると判断されると、自動的に前記ファイルを書き込み可能なファイルシステムにコピーする工程と、
前記ファイルのコピーに書き込む工程と、
を具備することを特徴とする方法。
【請求項４】
請求項３に記載したコンピュータ実行可能な方法であって、前記書き込むべきではないファイルの種類は、実行可能なファイルの種類であることを特徴とする方法。
【請求項５】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータが実行可能な方法であって、
複数の書き込み要求であって、書き込むべきファイルをそれぞれ識別する書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルを書き込み可能な記憶装置にコピーする工程と、
各ファイルから該ファイルのコピーへのマッピングを作成する工程と、
前記コピーされたファイルのうち１のファイルが書き込むべきではない種類のファイルか否か判断する工程と、
前記コピーされたファイルのうち1のファイルが、書き込むべきではない種類のファイルであると判断されると、ウイルスを警告する警報を発する工程と、
を具備することを特徴とする方法。
【請求項６】
請求項５に記載したコンピュータが実行可能な方法であって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とする方法。
【請求項７】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのシステムであって、
ファイルシステムからの要求であって、ファイル識別子及び識別されたファイルに対して行う作業を含む要求を受け取るファイル処理モジュールと、
前記ファイル処理モジュールと通信可能に接続され、前記ファイル識別子と、該識別子によって識別されるファイルの位置との間のマッピングを決定するマッピング・モジュールと、
前記マッピング・モジュールと通信可能に接続され、前記ファイルが書き込むべきではない種類のファイルであるか否か判断し、前記ファイルの種類が書き込むべきではない種類のファイルであると判断されると、ウイルスを警告する警報を発し、前記ファイルの種類が書き込むべきではない種類のファイルではないと判断されると、前記識別されたファイルに対する前記作業を行うファイルシステム通信モジュールと、
を具備することを特徴とするシステム。
【請求項８】
請求項７に記載したシステムであって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とするシステム。
【請求項９】
共有読み出し専用ファイルシステムにおけるウイルスを検出するためのコンピュータプログラム製品であって、コンピュータ読み取り可能な媒体上に記憶され、
ファイルへの書き込み要求を受け取る工程と、
前記ファイルが読み出し専用データ記憶装置上にあると判断する工程と、
前記ファイルが、書き込むべき種類のファイルであるか否か判断する工程と、
前記ファイルが書き込むべき種類のファイルではないと判断されると、ウイルスを警告する警報を発する工程と、
前記ファイルが書き込むべき種類のファイルであると判断されると、自動的に前記ファイルを書き込み可能なファイルシステムにコピーする工程と、
前記ファイルのコピーに書き込む工程と、
を処理装置に実行させるように構成されたコードを含むコンピュータプログラム製品。
【請求項１０】
請求項９に記載したコンピュータプログラム製品であって、前記書き込むべきではないファイルの種類には、実行可能なファイルが含まれることを特徴とするコンピュータプログラム製品。
【請求項１１】
データを共有するためのコンピュータ実行可能な方法であって、
要求元からの第１の要求であって、データ識別子及び識別されたデータに対して行う第１の作業を含む要求を受け取る工程と、
前記識別されたデータが書き込み可能な場所にあるか否か判断する工程と、
前記識別されたデータが書き込み可能な場所にあると判断されると、自動的に前記識別されたデータを書き込み可能な場所にコピーする工程と、
前記識別されたデータのコピーに対して、前記要求された第１の作業を行う工程と、
を具備することを特徴とする方法。
【請求項１２】
請求項１１に記載した方法であって、前記要求された第１の作業は書き込み作業であることを特徴とする方法。
【請求項１３】
請求項１１に記載したコンピュータ実行可能な方法であって、自動的に前記識別されたデータを書き込み可能な場所にコピーする工程は、更に、
前記書き込み可能な場所に新しいデータ記憶領域を作成する工程と、
前記識別されたデータを読み出す工程と、
前記書き込み可能な場所の前記新しいデータに前記識別されたデータを書き込む工程と、
前記データ識別子と、前記書き込み可能な場所との間のマッピングを作成する工程と、
を具備することを特徴とする方法。
【請求項１４】
請求項１３に記載したコンピュータ実行可能な方法であって、前記識別されたデータのコピーに対して、前記要求された第１の作業を行う工程は、更に、
前記データ識別子から前記書き込み可能な場所までのマッピングを決定する工程と、
前記書き込み可能な場所にある前記データに対して、前記要求された第１の作業を行う工程と、
を具備することを特徴とする方法。
【請求項１５】
請求項１１に記載したコンピュータ実行可能な方法であって、前記識別されたデータが書き込み可能な場所にあるか否か判断する工程は、更に、
前記データ識別子からデータ位置へのマッピングを決定する工程と、
前記データ位置が書き込み可能な位置であるか否かを判断する工程と、
を具備することを特徴とする方法。
【請求項１６】
請求項１１に記載したコンピュータ実行可能な方法であって、更に、
要求元からの第２の要求であって、データ識別子及び識別されたデータに対して行う第２の作業を含む要求を受け取る工程と、
前記データのコピーに対して、前記要求された第２の作業を行う工程と、
を具備することを特徴とする方法。
【請求項１７】
請求項１６に記載したコンピュータ実行可能な方法であって、前記データのコピーに対して、前記要求された第２の作業を行う工程は、更に、
前記データ識別子から前記データのコピーまでのマッピングを決定する工程と、
前記データのコピーに対して、前記要求された第２の作業を行う工程と、
を具備することを特徴とする方法。
【請求項１８】
読み出し専用ファイルシステムを共有するためのコンピュータ実行可能な方法であって、
仮想ファイルシステム（ＶＦＳ）層からの第１の要求であって、ファイル識別子及び識別されたファイルに対して行う第１の作業を含む要求を受け取る工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあるか否か判断する工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあると判断されると、前記識別されたファイルを書き込み可能なファイルシステムに自動的にコピーする工程と、
前記識別されたファイルのコピーに対して前記第１の作業を行う工程と、
を具備することを特徴とする方法。
【請求項１９】
請求項１８に記載した方法であって、前記第１の作業は書き込み作業であることを特徴とする方法。
【請求項２０】
請求項１８に記載したコンピュータ実行可能な方法であって、前記識別されたファイルを自動的に書き込み可能なファイルシステムにコピーする工程は、更に、
前記書き込み可能なファイルシステム上に新しいファイルを作成する工程と、
前記読み出し可能なファイルシステムから前記識別されたデータの内容を読み出す工程と、
前記書き込み可能なファイルシステム上の前記新しいファイルへ前記識別されたファイルの内容を書き込む工程と、
前記ファイル識別子から前記新しいファイルまでのマッピングを作成する工程と、
を具備することを特徴とする方法。
【請求項２１】
請求項２０に記載したコンピュータ実行可能な方法であって、前記識別されたファイルのコピーに対して前記第１の作業を行う工程は、更に、
前記データ識別子から前記新しいファイルまでのマッピングを決定する工程と、
前記新しいファイルに対して前記第１の作業を行う工程と、
を具備することを特徴とする方法。
【請求項２２】
請求項１８に記載したコンピュータ実行可能な方法であって、前記識別されたファイルが読み出し可能なファイルシステム上にあるか否か判断する工程は、更に、
前記ファイル識別子からファイル位置へのマッピングを決定する工程と、
前記ファイル位置が読み出し専用ファイルシステムに対応している否かを判断する工程と、
を具備することを特徴とする方法。
【請求項２３】
請求項１８に記載したコンピュータ実行可能な方法であって、更に、
前記ＶＦＳ層からの第２の要求であって、ファイル識別子及び識別されたファイルに対して行う第２の作業を含む要求を受け取る工程と、
前記識別されたデータのコピーに対して、前記第２の作業を行う工程と、
を具備することを特徴とする方法。
【請求項２４】
請求項２３に記載したコンピュータ実行可能な方法であって、前記ファイルのコピーに対して前記第２の作業を行う工程は、更に、
前記ファイル識別子から前記識別されたファイルのコピーまでのマッピングを決定する工程と、
前記識別されたファイルのコピーに対して前記第２の作業を行う工程と、
を具備することを特徴とする方法。
【請求項２５】
請求項１８に記載したコンピュータ実行可能な方法であって、前記読み出し専用記憶装置は複数のコンピュータからファイル作業の要求を受け取ることを特徴とする方法。
【請求項２６】
読み出し専用ファイルシステムを共有するためのコンピュータプログラム製品であって、コンピュータ読み出し可能な媒体上に記憶され、
仮想ファイルシステム（ＶＦＳ）層からの第１の要求であって、ファイル識別子及び識別されたファイルに対して行う第１の作業を含む要求を受け取る工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあるか否か判断する工程と、
前記識別されたファイルが読み出し専用ファイルシステム上にあると判断されると、前記識別されたファイルを読み出し専用ファイルシステムに自動的にコピーする工程と、
前記識別されたファイルのコピーに対して前記第１の作業を行う工程と、
を処理装置に実行させるように構成されたコードを含むことを特徴とするコンピュータプログラム製品。
【請求項２７】
請求項２６に記載したコンピュータプログラム製品であって、前記第１の作業は書き込み作業であることを特徴とする方法。
【請求項２８】
請求項２６に記載したコンピュータプログラム製品であって、前記識別されたファイルを自動的に書き込み可能なファイルシステムにコピーする工程は、更に、
前記書き込み可能なファイルシステム上に新しいファイルを作成する工程と、
前記読み出し専用ファイルシステムから前記識別されたファイルの内容を読み出す工程と、
前記書き込み可能なファイルシステム上の前記新しいファイルへ前記識別されたファイルの内容を書き込む工程と、
前記ファイル識別子から前記新しいファイルまでのマッピングを作成する工程と、
を具備することを特徴とするコンピュータプログラム製品。
【請求項２９】
請求項２８に記載したコンピュータプログラム製品であって、前記識別されたファイルのコピーに対して前記第１の作業を行う工程は、更に、
前記ファイル識別子から前記新しいファイルまでのマッピングを決定する工程と、
前記新しいファイルに対して前記第１の作業を行う工程と、
を具備することを特徴とするコンピュータプログラム製品。
【請求項３０】
請求項２６に記載したコンピュータプログラム製品であって、前記識別されたファイルが読み出し専用ファイルシステム上にあるか否か判断する工程は、更に、
前記ファイル識別子からファイル位置へのマッピングを決定する工程と、
前記ファイル位置が読み出し専用ファイルシステムに対応している否かを判断する工程と、
を具備することを特徴とするコンピュータプログラム製品。
【請求項３１】
請求項２６に記載したコンピュータプログラム製品であって、更に、
前記ＶＦＳ層からの第２の要求であって、ファイル識別子及び前記識別されたファイルに対して行う第２の作業を含む要求を受け取る工程と、
前記識別されたデータのコピーに対して前記第２の作業を行う工程と、
を実行するための命令から成ることを特徴とするコンピュータプログラム製品。
【請求項３２】
請求項３１に記載したコンピュータプログラム製品であって、前記ファイルのコピーに対して前記第２の作業を行う工程は、更に、
前記ファイル識別子から前記識別されたファイルのコピーまでのマッピングを決定する工程と、
前記識別されたファイルのコピーに対して前記第２の作業を行う工程と、
を具備することを特徴とするコンピュータプログラム製品。
【請求項３３】
請求項２６に記載したコンピュータプログラム製品であって、前記読み出し専用記憶装置は複数のコンピュータからファイル作業の要求を受け取ることを特徴とするコンピュータプログラム製品。
【請求項３４】
読み出し専用ファイルシステムを共有するためのシステムであって、
読み出し専用ファイルシステムからファイル識別子及び識別されたファイルに対して行う作業を受け取るファイル処理モジュールと、
前記ファイル処理モジュールに通信可能に接続されたマッピング・モジュールであって、前記ファイル識別子と、該識別子によって識別されたファイルの位置との間のマッピングを決定するマッピング・モジュールと、
前記マッピング・モジュールに通信可能に接続されたファイルシステム通信モジュールであって、前記識別されたファイルのコピーに対して前記作業を行うファイルシステム通信モジュールと、
を具備することを特徴とするシステム。
【請求項３５】
請求項３４に記載したシステムであって、前記識別されたファイルに対して行う前記作業は書き込み作業であり、前記識別子によって識別されたファイルの位置は読み出し専用記憶装置上にあることを特徴とするシステム。
【請求項３６】
請求項３４に記載したシステムであって、前記ファイルシステム通信モジュールは更に新しいファイルに対して前記作業を行うように構成されており、前記マッピング・モジュールは更に前記ファイル識別子から前記新しいファイルまでのマッピングを新たに作成するように構成されていることを特徴とするシステム。
【請求項３７】
データを共有するためのシステムであって、
データ識別子と、識別されたデータに対して行う作業を受け取るデータ処理モジュールと、
前記データ処理モジュールに通信可能に接続されたマッピング・モジュールであって、前記データ識別子と、該識別子によって識別されたデータの位置との間のマッピングを決定するマッピング・モジュールと、
前記マッピング・モジュールに通信可能に接続されたデータ記憶装置通信モジュールであって、前記識別されたデータに対して前記作業を行うデータ記憶装置通信モジュールと、
を具備することを特徴とするシステム。
【請求項３８】
請求項３７に記載したシステムであって、前記識別されたデータに対して行う作業は書き込み作業であり、前記識別子によって識別されたデータの位置は読み出し専用位置であることを特徴とするシステム。
【請求項３９】
請求項３７に記載したシステムであって、前記データ記憶装置通信モジュールは更に新しいデータに対して前記作業を行うように構成され、前記マッピング・モジュールは更に前記データ識別子から前記新しいデータの位置までのマッピングを新たに作成するように構成されていることを特徴とするシステム。
【国際調査報告】
2007503658.tif 000008