Movatterモバイル変換


[0]ホーム

URL:


JP5723812B2 - File server, data input/output method, I/O hook module program, and I/O proxy daemon program - Google Patents

File server, data input/output method, I/O hook module program, and I/O proxy daemon program
Download PDF

Info

Publication number
JP5723812B2
JP5723812B2JP2012059548AJP2012059548AJP5723812B2JP 5723812 B2JP5723812 B2JP 5723812B2JP 2012059548 AJP2012059548 AJP 2012059548AJP 2012059548 AJP2012059548 AJP 2012059548AJP 5723812 B2JP5723812 B2JP 5723812B2
Authority
JP
Japan
Prior art keywords
file
request
unit
file server
server application
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.)
Active
Application number
JP2012059548A
Other languages
Japanese (ja)
Other versions
JP2013196066A (en
Inventor
博史 峯
博史 峯
賢 野村
賢 野村
ダミエン レモアル
ダミエン レモアル
理 竹内
理 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Industry and Control Solutions Co Ltd
Original Assignee
Hitachi Industry and Control Solutions Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Industry and Control Solutions Co LtdfiledCriticalHitachi Industry and Control Solutions Co Ltd
Priority to JP2012059548ApriorityCriticalpatent/JP5723812B2/en
Publication of JP2013196066ApublicationCriticalpatent/JP2013196066A/en
Application grantedgrantedCritical
Publication of JP5723812B2publicationCriticalpatent/JP5723812B2/en
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Landscapes

Description

Translated fromJapanese

本発明は、ネットワークファイル共有サービスを提供するファイルサーバアプリケーションソフトウェアに関し、制御情報付加I/O代行機能を有するファイルサーバ、データ入出力方法、I/O代行デーモンプログラム及びフックモジュールプログラムに関する。The present invention relates to file server application software that provides a network file sharing service, and to a file server with a control information-added I/O proxy function, a data input/output method, an I/O proxy daemon program, and a hook module program.

ネットワークによって接続された計算機間で文書や画像等のデータファイルを共有する、ネットワークファイル共有技術が実用化されている。ネットワークファイル共有技術において、WS(Work Station)やNAS(Network Attached
Storage)等のサーバ装置は、PC(Personal Computer)や携帯端末等のクライアント端末に対して、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介してサーバ装置上のファイルにアクセスするサービスである、ネットワークファイル共有サービスを提供する。ネットワークファイル共有サービスを提供するサーバ装置は、一般に、ファイルサーバとよばれる。
Network file sharing technology, which allows data files such as documents and images to be shared between computers connected via a network, has been put to practical use. In the network file sharing technology, WS (Work Station) and NAS (Network Attached Storage) are used.
2. Description of the Related Art A server device such as a Personal Computer (PC) or a Wide Area Network (WAN) provides a network file sharing service, which allows client terminals such as PCs (Personal Computers) or mobile terminals to access files on the server device via a network such as a Local Area Network (LAN) or a Wide Area Network (WAN). A server device that provides a network file sharing service is generally called a file server.

ネットワークファイル共有サービスで用いられる通信プロトコルには、主にUNIX(登録商標)系のOS(Operating System)で用いられるNFS(Network
File System)、および、主にWindows(登録商標)系のOSで用いられるCIFS(Common Internet File System)等がある。
The communication protocol used in network file sharing services is Network File System (NFS), which is mainly used in UNIX (registered trademark)-based OS (Operating System).
and CIFS (Common Internet File System), which is mainly used in Windows (registered trademark)-based operating systems.

UNIX(登録商標)系のOS上でCIFSを用いたネットワークファイル共有サービスを提供するファイルサーバアプリケーションソフトウェアとして、Sambaが普及している。Sambaは、サーバ装置のOSが提供するソケットインタフェースを介してクライアント端末と通信し、ファイルシステムインタフェースを介してサーバ装置上のファイルにアクセスする。Samba is a popular file server application software that provides a network file sharing service using CIFS on UNIX (registered trademark) based OS. Samba communicates with client terminals via a socket interface provided by the OS of the server device, and accesses files on the server device via a file system interface.

特許文献1には、ファイルシステムのオブジェクトに対して、IOCTL(Input Output Control)システムコールを発行することにより、Windows(登録商標)系の属性更新権等のアクセス制御機能をSambaで使用する技術が開示されている。Patent document 1 discloses a technique for using Windows (registered trademark) access control functions such as attribute update rights in Samba by issuing an IOCTL (Input Output Control) system call to a file system object.

一方、IOCTLシステムコールを用いて個々のI/O(Input /Output)要求にデッドライン情報等の制御情報を付加することによりI/O制御の精度を高める、リアルタイムI/Oファイルシステムが開発されている。特許文献2には、ファイルシステムのメタデータにアクセス制御情報を格納し、追加の機能モジュールを読み込むことによりファイルシステムの機能を拡張する技術が開示されている。Meanwhile, a real-time I/O file system has been developed that uses an IOCTL system call to add control information such as deadline information to each I/O (Input/Output) request, thereby improving the accuracy of I/O control. Patent Document 2 discloses a technology that stores access control information in the metadata of a file system and expands the functionality of the file system by loading additional functional modules.

また、特許文献3には、非リアルタイムOSに外付けのリアルタイムソフトウェアでリアルタイムI/Oを実現する技術が開示されている。Patent document 3 also discloses a technology that achieves real-time I/O using external real-time software on a non-real-time OS.

しかし、これらの技術の組み合わせでは特許文献1記載のSambaのようなI/O特性を認識しない非リアルタイムソフトウェアを、特許文献2記載のようなI/O特性を認識するリアルタイムファイルシステム上で動作させることはできない。However, by combining these technologies, it is not possible to run non-real-time software that does not recognize I/O characteristics, such as Samba described inPatent Document 1, on a real-time file system that recognizes I/O characteristics, such as that described in Patent Document 2.

なぜならば、特許文献3に記載の方法では、特許文献2記載のようなリアルタイムファイルシステムがI/O特性を認識するために必要な情報をI/Oに付加することができないからである。I/O特性とは、あらかじめ設定した構成情報を参照して得られる制御情報だけでなく、動的に実際に発行されたI/Oのパターンを解析することで得られる制御情報の両方が含まれる。This is because the method described in Patent Document 3 does not allow a real-time file system such as that described in Patent Document 2 to add information to the I/O that is necessary to recognize the I/O characteristics. The I/O characteristics include both control information obtained by referencing preset configuration information, and control information obtained by dynamically analyzing the pattern of I/O that is actually issued.

特開2009−211668号公報JP 2009-211668 A米国特許第7853822号明細書U.S. Pat. No. 7,853,822特表2007−528032号公報Special Publication No. 2007-528032

前記従来の技術では、Samba等の既存のファイルサーバアプリケーションソフトウェアが、リアルタイムI/Oファイルシステム等の新たなファイルシステムの拡張機能に対応しその効果を得るためには、ファイルサーバアプリケーションソフトウェアを改変し、ファイルI/O要求発行時に、I/O要求に制御情報を付加するIOCTLシステムコールを発行する等の機能を実装する必要があった。従って、ファイルサーバアプリケーションソフトウェア毎に、新たなファイルシステムに対応するための改変工数がかかるという課題があった。In the conventional technology described above, in order for existing file server application software such as Samba to support the expanded functions of new file systems such as real-time I/O file systems and obtain the benefits of these functions, it was necessary to modify the file server application software and implement functions such as issuing an IOCTL system call that adds control information to an I/O request when a file I/O request is issued. This resulted in the problem that it took a lot of work to modify each file server application software to support the new file system.

本発明は、前記課題を解決する、個々のファイルサーバアプリケーションソフトウェアの改変工数を従来技術と比較して少なく抑えて新たなファイルシステムの拡張機能に対応する方式および装置を提供することを目的とする。The present invention aims to solve the above problems by providing a method and device that can accommodate new file system expansion functions while reducing the amount of work required to modify individual file server application software compared to conventional techniques.

前記課題を解決するために、本発明では、従来のファイルサーバアプリケーション部のファイルI/O要求発行をフックするI/Oフックモジュール部と、ファイルシステムの拡張機能に対応するI/O代行デーモン部とを備える。To solve the above problem, the present invention includes an I/O hook module section that hooks the issuance of file I/O requests from a conventional file server application section, and an I/O proxy daemon section that supports the extended functions of the file system.

I/Oフックモジュール部は、ファイルサーバアプリケーション部のファイルI/O要求発行をフックし、フックしたファイルI/O要求からアクセス対象となるファイルのパス名、ファイル内のアクセス対象領域を示すオフセット、レングス等の情報を取得してI/O代行デーモン部に渡す。The I/O hook module hooks the file I/O request issued by the file server application, and obtains information from the hooked file I/O request, such as the path name of the file to be accessed, the offset indicating the area to be accessed within the file, and the length, and passes this information to the I/O proxy daemon.

I/O代行デーモン部は、I/Oフックモジュール部から受け取った個々のファイルI/O要求に、構成情報に基づいてファイルサーバアプリケーション部およびアクセス対象ファイルに応じた制御情報を付加する。I/O代行デーモン部は、制御情報を付加したI/O要求をファイルシステムに対して発行し、I/Oの実行結果をI/Oフックモジュール部を介してファイルサーバアプリケーション部に渡す。The I/O proxy daemon unit adds control information to each file I/O request received from the I/O hook module unit according to the configuration information, depending on the file server application unit and the file to be accessed. The I/O proxy daemon unit issues the I/O request with the added control information to the file system, and passes the I/O execution results to the file server application unit via the I/O hook module unit.

本発明のファイルサーバは、I/O特性を認識しないファイルサーバアプリケーション部と、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識しないファイルシステムとを備えたファイルサーバにおいて、I/O代行デーモン部、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識するファイルシステム、及び、前記ファイルサーバアプリケーション部及び前記ファイルシステムが管理するファイルの構成情報を有するメモリを備え、前記I/O代行デーモン部は、
前記ファイルサーバアプリケーション部からI/Oを受信し、前記受信したI/Oに、前記構成情報を参照して、前記受信したI/Oの制御情報を付加し、該制御情報を付加したI/Oを、前記I/O特性を認識するファイルシステムへ送信することを特徴とする。
The file server of the present invention is provided with a file server application unit that does not recognize I/O characteristics, and a file system that does not recognize I/O characteristics and receives I/O from the file server application unit, the file server further comprises an I/O proxy daemon unit, a file system that recognizes I/O characteristics and receives I/O from the file server application unit, and a memory having configuration information of files managed by the file server application unit and the file system, and the I/O proxy daemon unit:
The method is characterized in that it receives I/O from the file server application unit, adds control information for the received I/O to the received I/O by referring to the configuration information, and transmits the I/O with the added control information to a file system that recognizes the I/O characteristics.

また、本発明のファイルサーバは、前記ファイルサーバアプリケーション部は、I/Oフックモジュール部を備えており、前記I/Oフックモジュール部は、前記ファイルサーバアプリケーション部のファイルI/O発行要求をフックし、フックしたファイルI/O発行要求からアクセス対象となるファイルの情報を取得して前記I/O代行デーモン部に渡すことを特徴とする。The file server of the present invention is characterized in that the file server application unit includes an I/O hook module unit, which hooks a file I/O issuance request from the file server application unit, obtains information about the file to be accessed from the hooked file I/O issuance request, and passes the information to the I/O proxy daemon unit.

また、本発明のファイルサーバは、前記I/O代行デーモン部は、I/Oパターン解析部を備えており、前記I/Oパターン解析部を用いて前記ファイルI/O発行要求のI/Oパターンを解析して取得した動的な制御情報を、前記ファイルI/O発行要求に付加することを特徴とする。The file server of the present invention is characterized in that the I/O proxy daemon unit includes an I/O pattern analysis unit, and adds dynamic control information obtained by analyzing the I/O pattern of the file I/O issuance request using the I/O pattern analysis unit to the file I/O issuance request.

本発明のデータ入出力方法は、I/O特性を認識しないファイルサーバアプリケーション部と、I/O代行デーモン部と、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識しないファイルシステムと、前記ファイルサーバアプリケーションからI/Oを受信する、I/O特性を認識するファイルシステムと、前記ファイルサーバアプリケーション及び前記ファイルシステムが管理するファイルの構成情報を有するメモリと、を備えるファイルサーバにおけるデータ入出力方法であって、前記ファイルサーバアプリケーション部から送信されるI/Oに、前記構成情報を参照して、該I/Oの制御情報を付加するステップ及び前記制御情報を付加したI/Oを、前記I/O特性を認識するファイルシステムに送信するステップを含むことを特徴とする。The data input/output method of the present invention is a data input/output method in a file server that includes a file server application unit that does not recognize I/O characteristics, an I/O proxy daemon unit, a file system that does not recognize I/O characteristics and receives I/O from the file server application unit, a file system that recognizes I/O characteristics and receives I/O from the file server application unit, and a memory that has configuration information of files managed by the file server application and the file system, and is characterized in that it includes a step of adding control information for the I/O sent from the file server application unit by referring to the configuration information, and a step of sending the I/O with the added control information to the file system that recognizes the I/O characteristics.

また、本発明のデータ入出力方法は、更に、前記ファイルサーバアプリケーション部のファイルI/O発行要求をフックするステップと、フックしたファイルI/O発行要求からアクセス対象となるファイルの情報を取得して前記I/O代行デーモン部に渡すステップとを含むことを特徴とする。The data input/output method of the present invention further includes a step of hooking a file I/O issuance request from the file server application unit, and a step of obtaining information about the file to be accessed from the hooked file I/O issuance request and passing the information to the I/O proxy daemon unit.

また、本発明のデータ入出力方法は、更に、前記ファイルI/O発行要求のI/Oパターンを解析するステップと、解析して取得した動的な制御情報を、前記ファイルI/O発行要求に付加するステップとを含むことを特徴とする。The data input/output method of the present invention further includes a step of analyzing the I/O pattern of the file I/O issuance request, and a step of adding dynamic control information obtained by the analysis to the file I/O issuance request.

本発明のI/Oフックモジュールプログラムは、ファイルサーバアプリケーションソフトウェアのファイルI/O発行要求をフックする手順と、フックした前記ファイルI/O発行要求からアクセス対象となるファイルのパス名およびファイル内のアクセス対象領域を示す情報を取得する手順と、取得した情報をI/Oデーモンプログラムに渡す手順と、を計算機に実行させることを特徴とする。The I/O hook module program of the present invention is characterized in that it causes a computer to execute the steps of hooking a file I/O issuance request from file server application software, obtaining information indicating the path name of the file to be accessed and the area to be accessed within the file from the hooked file I/O issuance request, and passing the obtained information to an I/O daemon program.

本発明のI/O代行デーモンプログラムは、I/Oフックモジュールプログラムから受け取った個々のファイルI/O発行要求に、ファイルサーバアプリケーションソフトウェアおよびアクセス対象ファイルに応じた制御情報を付加する手順と、前記制御情報を付加したファイルI/O発行要求をファイルシステムに対して発行する手順と、前記ファイルI/O発行要求の実行結果をI/Oフックモジュールプログラムを介して前記ファイルサーバアプリケーションソフトウェアに渡す手順と、を計算機に実行させることを特徴とする。The I/O proxy daemon program of the present invention is characterized in that it causes a computer to execute the steps of adding control information corresponding to the file server application software and the file to be accessed to each file I/O issuance request received from an I/O hook module program, issuing the file I/O issuance request with the added control information to a file system, and passing the execution result of the file I/O issuance request to the file server application software via the I/O hook module program.

また、本発明のI/O代行デーモンプログラムは、前記ファイルシステムと共有メモリ領域をI/Oバッファとして使用することにより、I/O特性を認識するファイルシステムに対して読み書きするデータの受け渡しを行う手順を、計算機に実行させることを特徴とする。The I/O proxy daemon program of the present invention is characterized in that it causes a computer to execute a procedure for transferring data to and from a file system that recognizes I/O characteristics by using the file system and shared memory area as an I/O buffer.

また、本発明のI/O代行デーモンプログラムは、前記ファイルサーバアプリケーションソフトウェアから受け取った個々のファイルI/O発行要求がデッドラインミスを起こした場合の再試行する回数であるリトライポリシー基づいてファイルI/O発行要求の手順を、計算機に実行させることを特徴とする。The I/O proxy daemon program of the present invention is also characterized in that it causes a computer to execute a file I/O issuance request procedure based on a retry policy, which is the number of retries to be made if an individual file I/O issuance request received from the file server application software causes a deadline miss.

また、本発明のI/O代行デーモンプログラムは、前記ファイルサーバアプリケーションソフトウェアのI/OフックモジュールプログラムからファイルI/O発行要求に関する情報を受け取る手順と、前記ファイルサーバアプリケーションソフトウェアからファイルI/O発行要求に構成情報に基づく制御情報を付加し、リアルタイムI/Oファイルシステムに対して非同期で発行する手順と、非同期で発行される読み込みおよび書き込みのファイルI/O発行要求を管理する手順と、管理される履歴情報を参照し、I/Oのパターンを解析する手順と、解析したパターンに基づく動的な制御情報を前記I/O発行要求に付加して前記リアルタイムI/Oファイルシステムに発行する手順と、を計算機に実行させることを特徴とする。The I/O proxy daemon program of the present invention is characterized in that it causes a computer to execute the steps of receiving information about a file I/O issuance request from an I/O hook module program of the file server application software, adding control information based on configuration information to the file I/O issuance request from the file server application software and issuing the request asynchronously to a real-time I/O file system, managing the asynchronously issued read and write file I/O issuance requests, referencing the managed history information and analyzing I/O patterns, and adding dynamic control information based on the analyzed pattern to the I/O issuance request and issuing it to the real-time I/O file system.

本発明によれば、個々のファイルサーバアプリケーション部には、ファイルI/O要求発行をフックするI/Oフックモジュール部に対応する改変を加えるのみで、実際のI/Oの発行をI/O代行デーモン部に代行させることができる。According to the present invention, by simply making modifications to the I/O hook module section that hooks the issuance of file I/O requests, each file server application section can have the I/O proxy daemon section proxy the issuance of actual I/O requests.

I/O代行デーモン部は、I/Oフックモジュール部から受け取った個々のファイルI/O要求にデッドライン情報等の制御情報を付加してファイルシステムに発行することにより、リアルタイムI/Oファイルシステム等の新たなファイルシステムが提供する拡張機能の効果を得ることができる。The I/O proxy daemon unit can obtain the benefits of the expanded functions provided by new file systems such as real-time I/O file systems by adding control information such as deadline information to each file I/O request received from the I/O hook module unit and issuing it to the file system.

従って、本発明によれば、個々のファイルサーバアプリケーション部の改変工数を従来技術と比較して少なく抑えて新たなファイルシステムの拡張機能に対応する装置および方法を提供することができる。Therefore, according to the present invention, it is possible to provide an apparatus and method that can accommodate new file system expansion functions while keeping the amount of work required to modify individual file server application sections to a minimum compared to conventional techniques.

図1は本発明の実施例1のネットワークファイル共有システムの構成例を示す。FIG. 1 shows an example of the configuration of a network file sharing system according to a first embodiment of the present invention.図2は本発明の実施例1のファイルサーバのハードウェア構成例を示す。FIG. 2 shows an example of the hardware configuration of a file server according to the first embodiment of the present invention.図3は本発明の実施例1のI/Oフックモジュール部の機能モジュール構成を示す。FIG. 3 shows a functional module configuration of the I/O hook module unit according to the first embodiment of the present invention.図4は本発明の実施例1のI/O代行デーモン部の機能モジュール構成を示す。FIG. 4 shows a functional module configuration of the I/O proxy daemon part according to the first embodiment of the present invention.図5は本発明の実施例1の構成情報の詳細を示す。FIG. 5 shows details of the configuration information according to the first embodiment of the present invention.図6は本発明の実施例1のI/Oフックモジュール部とI/O代行デーモン部との間のI/O代行通信プロトコルを示す。FIG. 6 shows an I/O proxy communication protocol between the I/O hook module unit and the I/O proxy daemon unit according to the first embodiment of the present invention.図7は本発明の実施例1のI/Oフックモジュール部の処理を示すフローチャートである。FIG. 7 is a flowchart showing the process of the I/O hook module unit according to the first embodiment of the present invention.図8は本発明の実施例1のI/Oフック処理の詳細を示すフローチャートである。FIG. 8 is a flowchart showing details of the I/O hook process according to the first embodiment of the present invention.図9は本発明の実施例1のI/O代行デーモン部の処理を示すフローチャートである。FIG. 9 is a flowchart showing the process of the I/O proxy daemon part according to the first embodiment of the present invention.図10は本発明の実施例1のI/O代行デーモン部のファイルサーバアプリケーション部との連携を開始する処理の詳細を示すフローチャートである。FIG. 10 is a flowchart showing details of a process for starting cooperation between the I/O proxy daemon unit and the file server application unit according to the first embodiment of the present invention.図11は本発明の実施例1のI/O代行デーモン部のファイルサーバアプリケーション部との連携を終了する処理の詳細を示すフローチャートである。FIG. 11 is a flowchart showing the details of a process for terminating the link between the I/O proxy daemon unit and the file server application unit according to the first embodiment of the present invention.図12は本発明の実施例1のI/Oフックモジュール部のファイルオープン処理の詳細を示すフローチャートである。FIG. 12 is a flowchart showing details of a file open process of the I/O hook module according to the first embodiment of the present invention.図13は本発明の実施例1のI/O代行デーモン部のファイルオープン代行実行処理の詳細を示すフローチャートである。FIG. 13 is a flowchart showing details of a file open proxy execution process of the I/O proxy daemon unit according to the first embodiment of the present invention.図14は本発明の実施例1のI/Oフックモジュール部のファイルクローズ処理の詳細を示すフローチャートである。FIG. 14 is a flowchart showing details of a file close process of the I/O hook module according to the first embodiment of the present invention.図15は本発明の実施例1のI/O代行デーモン部のファイルクローズ代行実行処理の詳細を示すフローチャートである。FIG. 15 is a flowchart showing details of a file close proxy execution process of the I/O proxy daemon part according to the first embodiment of the present invention.図16は本発明の実施例1のI/Oフックモジュール部のファイルリード処理の詳細を示すフローチャートである。FIG. 16 is a flowchart showing details of a file read process of the I/O hook module according to the first embodiment of the present invention.図17は本発明の実施例1のI/O代行デーモン部のファイルリード代行実行処理の詳細を示すフローチャートである。FIG. 17 is a flowchart showing details of a file read proxy execution process of the I/O proxy daemon part according to the first embodiment of the present invention.図18は本発明の実施例1のI/Oフックモジュール部のファイルライト処理の詳細を示すフローチャートである。FIG. 18 is a flowchart showing details of a file write process of the I/O hook module according to the first embodiment of the present invention.図19は本発明の実施例1のI/O代行デーモン部のファイルライト代行実行処理の詳細を示すフローチャートである。FIG. 19 is a flowchart showing details of a file write proxy execution process of the I/O proxy daemon part according to the first embodiment of the present invention.図20は本発明の実施例1のI/Oフックモジュール部のファイルサイズ変更処理の詳細を示すフローチャートである。FIG. 20 is a flowchart showing details of a file size change process of the I/O hook module according to the first embodiment of the present invention.図21は本発明の実施例1のI/O代行デーモン部のファイルサイズ変更代行実行処理の詳細を示すフローチャートである。FIG. 21 is a flowchart showing details of a file size change proxy execution process of the I/O proxy daemon part according to the first embodiment of the present invention.図22は本発明の実施例1のI/Oフックモジュール部のファイル削除処理の詳細を示すフローチャートである。FIG. 22 is a flowchart showing details of a file deletion process of the I/O hook module according to the first embodiment of the present invention.図23は本発明の実施例1のI/O代行デーモン部のファイル削除代行実行処理の詳細を示すフローチャートである。FIG. 23 is a flowchart showing details of a file deletion proxy execution process of the I/O proxy daemon part according to the first embodiment of the present invention.図24は本発明の実施例2のネットワークファイル共有システムの構成例を示す。FIG. 24 shows an example of the configuration of a network file sharing system according to the second embodiment of the present invention.図25は本発明の実施例2のI/O代行デーモン部の機能モジュール構成を示す。FIG. 25 shows a functional module configuration of an I/O proxy daemon part according to the second embodiment of the present invention.

以下、本発明を実施するための形態について、図面を用いて説明する。なお、各図面で同様の構成には同じ符号を付しその説明を省略する。Below, the embodiments of the present invention will be described with reference to the drawings. Note that the same components in each drawing will be given the same reference numerals and their description will be omitted.

図1は、本発明の第1の実施の形態に係るネットワークファイル共有システムの構成例を示す。本実施例のシステムは、ファイルサーバ100、クライアント端末110、ネットワーク120、および、ストレージ装置130からなる。本システムでは、ファイルサーバ100が、クライアント端末110に対して、ファイルサーバ100に接続されたストレージ装置130に格納される文書および画像等のデータファイルを、ネットワーク120を経由してアクセスする、ネットワークファイル共有サービスを提供する。Figure 1 shows an example of the configuration of a network file sharing system according to a first embodiment of the present invention. The system of this embodiment comprises afile server 100, aclient terminal 110, anetwork 120, and astorage device 130. In this system, thefile server 100 provides a network file sharing service to theclient terminal 110, which allows theclient terminal 110 to access data files such as documents and images stored in thestorage device 130 connected to thefile server 100 via thenetwork 120.

ファイルサーバ100は、例えば、UNIX(登録商標)等のOSが動作するWSであり、ファイルサーバアプリケーション部140、VFS(Virtual File System)150、リアルタイムI/Oファイルシステム160、および、I/O代行デーモン部400からなる。ファイルサーバアプリケーション部140は、ネットワークファイル共有サービスを提供するファイルサーバアプリケーションソフトウェアであり、例えば、SMBD(Samba Daemon)やNFSD(Network File System Daemon)等である。Thefile server 100 is a WS on which an OS such as UNIX (registered trademark) runs, and is made up of a fileserver application unit 140, a VFS (Virtual File System) 150, a real-time I/O file system 160, and an I/Oproxy daemon unit 400. The fileserver application unit 140 is file server application software that provides a network file sharing service, such as SMBD (Samba Daemon) or NFSD (Network File System Daemon).

ファイルサーバアプリケーション部140は、ファイルサーバ100上に同一あるいは異なる種類のものが複数存在してもよい。ファイルサーバアプリケーション部140のVFS150に対するI/O要求は、I/Oフックモジュール部300によってフックされる。There may be multiple fileserver application units 140 of the same or different types on thefile server 100. I/O requests from the fileserver application unit 140 to theVFS 150 are hooked by the I/Ohook module unit 300.

VFS150は、ファイルサーバ100のOSが提供するファイルシステムインタフェースモジュールであり、例えば、open(), close(), read(), write()等のシステムコールインタフェースを提供する、I/O特性を認識しないファイルシステムである。VFS150 is a file system interface module provided by the OS of thefile server 100, and is a file system that does not recognize I/O characteristics and provides system call interfaces such as open(), close(), read(), and write().

リアルタイムI/Oファイルシステム160は、リアルタイムI/O制御機能を備えたファイルシステムモジュールであり、例えば、個々のI/O要求にデッドライン情報等の制御情報を付加してI/O制御の精度を高めることにより、I/O特性を認識するファイルシステムである。The real-time I/O file system 160 is a file system module equipped with a real-time I/O control function, and is a file system that recognizes I/O characteristics by, for example, adding control information such as deadline information to individual I/O requests to improve the accuracy of I/O control.

I/O代行デーモン部400は、I/Oフックモジュール部300を介してファイルサーバ140のI/O要求を受け取り、ファイルサーバ140に代行してリアルタイムI/Oファイルシステム160にI/O要求を発行する。I/O代行デーモン部400は、構成情報500に基づき、個々のI/Oにデッドライン情報等の制御情報を付加する。The I/Oproxy daemon unit 400 receives I/O requests from thefile server 140 via the I/Ohook module unit 300, and issues I/O requests to the real-time I/O file system 160 on behalf of thefile server 140. The I/Oproxy daemon unit 400 adds control information such as deadline information to each I/O based on theconfiguration information 500.

クライアント端末110は、例えば、文書編集や画像閲覧機能を備えるPCや携帯端末等である。クライアント端末110は、ネットワーク120を介してファイルサーバ140上のデータファイルにアクセスする。クライアント端末110は、同一あるいは異なる種類のものが複数存在してもよい。Theclient terminal 110 is, for example, a PC or a mobile terminal equipped with document editing and image viewing functions. Theclient terminal 110 accesses data files on thefile server 140 via thenetwork 120. There may bemultiple client terminals 110 of the same or different types.

ネットワーク120は、例えば、LANおよびWAN等のIP(Internet Protocol)ネットワークである。ネットワーク120は、ファイルサーバ100とクライアント端末110を接続する。Thenetwork 120 is, for example, an IP (Internet Protocol) network such as a LAN or a WAN. Thenetwork 120 connects thefile server 100 and theclient terminal 110.

ストレージ装置130は、ファイルサーバ100の補助記憶装置であり、例えば、HDD(Hard Disk Drive)やSSD(Solid State
Drive)、および、HDDやSSDを複数備えるRAID(Redundant Arrays of Inexpensive Independent
Disks)装置等である。ストレージ装置130には、文書や画像データ等のデータファイルが格納される。
Thestorage device 130 is an auxiliary storage device of thefile server 100, and may be, for example, a hard disk drive (HDD) or a solid state drive (SSD).
RAID (Redundant Arrays of Inexpensive Independent Drives) with multiple HDDs and SSDs
Thestorage device 130 stores data files such as documents and image data.

図2は本実施例のファイルサーバ100のハードウェア構成例を示す。ファイルサーバ100は、CPU(Central Processing Unit)200、メモリ210、NIC(Network
Interface Card)220、HBA(Host Bus Adapter)230、および、プログラム格納領域240からなる。なお、本発明の説明に直接関係しないハードウェア構成要素、例えば、キーボード、マウス、電源装置等については記載および説明を省略する。
2 shows an example of the hardware configuration of thefile server 100 of this embodiment. Thefile server 100 includes a CPU (Central Processing Unit) 200, amemory 210, a NIC (Network Interface Card), and a network interface card (NIC).
The computer system is made up of a host interface card (HBA) 220, a host bus adapter (HBA) 230, and aprogram storage area 240. Note that descriptions of hardware components that are not directly related to the description of the present invention, such as a keyboard, mouse, and power supply unit, will be omitted.

CPU200は、プログラム格納領域240に格納されるプログラムをメモリ210上にロードして実行することにより、ファイルサーバ100全体を制御する。CPU200は、ファイルサーバ100上に複数存在してもよく、シングルコアプロセッサであってもマルチコアプロセッサであってもよい。TheCPU 200 controls theentire file server 100 by loading the programs stored in theprogram storage area 240 onto thememory 210 and executing them. There may bemultiple CPUs 200 on thefile server 100, and theCPUs 200 may be single-core processors or multi-core processors.

メモリ210は、計算機100の主記憶装置であり、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等を用いて構成される。メモリ210には、CPU200が実行しているOSおよびアプリケーションソフトウェアのプログラムコードおよびデータが格納される。Memory 210 is the main storage device ofcomputer 100, and is configured using, for example, dynamic random access memory (DRAM) or static random access memory (SRAM).Memory 210 stores program code and data of the OS and application software executed byCPU 200.

NIC220は、ファイルサーバ100とネットワーク120を接続するI/Oインタフェースデバイスであり、例えば、イーサネット(登録商標)、ミリネット、インフィニバンド等の接続機能を提供する。TheNIC 220 is an I/O interface device that connects thefile server 100 to thenetwork 120, and provides connection functions such as Ethernet (registered trademark), Millinet, and Infiniband.

HBA230、ファイルサーバ100とストレージ装置130を接続するI/Oインタフェースデバイスであり、例えば、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、FC(Fibre Channel)等の接続機能を提供する。HBA 230 is an I/O interface device that connectsfile server 100 andstorage device 130, and provides connection functions such as SCSI (Small Computer System Interface), SAS (Serial Attached SCSI), and FC (Fibre Channel).

プログラム格納領域240は、不揮発性の記憶領域であり、例えば、ROM(Read Only Memory)やフラッシュメモリ等を用いて構成される。プログラム格納領域240には、OSプログラム241、ファイルサーバプログラム242、I/Oフックモジュールプログラム243、および、I/O代行デーモンプログラム244が格納される。なお、これらのプログラムの一部あるいは全部が、ストレージ装置130上に格納されていてもよい。この場合、CPU200は、HBA230を介してストレージ装置130からそれぞれのプログラムをメモリ210にロードして実行する。Theprogram storage area 240 is a non-volatile storage area, and is configured using, for example, a ROM (Read Only Memory) or a flash memory. Theprogram storage area 240 stores anOS program 241, afile server program 242, an I/Ohook module program 243, and an I/Oproxy daemon program 244. Note that some or all of these programs may be stored on thestorage device 130. In this case, theCPU 200 loads each program from thestorage device 130 via theHBA 230 into thememory 210 and executes it.

図3は、I/Oフックモジュール部300の機能モジュール構成を示す。I/Oフックモジュール部300は、I/Oフック部310、および、プロセス間通信部320からなる。I/Oフックモジュール部300は、例えば、Sambaの場合、ソースファイルのファイルI/O発行部分を改変してもよく、スタッカブルVFSモジュールとして実装してもよい。また、環境変数LD_PRELOAD等の機構を利用してファイルサーバアプリケーション部140に依存しないダイナミックリンクライブラリとして実装してもよい。Figure 3 shows the functional module configuration of the I/Ohook module unit 300. The I/Ohook module unit 300 consists of an I/O hook unit 310 and aninter-process communication unit 320. For example, in the case of Samba, the I/Ohook module unit 300 may be implemented by modifying the file I/O issuing portion of the source file, or as a stackable VFS module. It may also be implemented as a dynamic link library that is independent of the fileserver application unit 140, using a mechanism such as the environment variable LD_PRELOAD.

I/Oフック部310は、ファイルサーバアプリケーション部140がVFS150に対して発行するファイルI/O要求をフックする。I/Oフック部310は、フックしたファイルI/O要求のうち、open(), close(), read(), write(), unlink(), ftruncate()の各ファイルI/O要求をI/O代行デーモン部400に代行させる。I/Oフック部310は、その他のファイルI/O要求、例えば、stat()等を、VFS150に対して発行することでファイルサーバアプリケーション部140のプロセスコンテキストで実行する。The I/O hook unit 310 hooks file I/O requests issued by the fileserver application unit 140 to theVFS 150. Of the hooked file I/O requests, the I/O hook unit 310 proxies the open(), close(), read(), write(), unlink(), and ftruncate() file I/O requests to the I/Oproxy daemon unit 400. The I/O hook unit 310 issues other file I/O requests, such as stat(), to theVFS 150, to execute them in the process context of the fileserver application unit 140.

プロセス間通信部320は、ファイルサーバアプリケーション部140とI/O代行デーモン部400との間のプロセス間通信機能を提供する。プロセス間通信部320は、I/Oフック部310でフックしたファイルI/O要求に関する情報をI/O代行デーモン部400へ送り、実行結果をI/O代行デーモン部400より受信する。プロセス通信部320は、プロセス間通信機能を、例えば、UNIX(登録商標)ドメインソケットを用いて実装してもよく、POSIX(Portable Operating System Interface)メッセージキューを用いて実装してもよい。Theinter-process communication unit 320 provides an inter-process communication function between the fileserver application unit 140 and the I/Oproxy daemon unit 400. Theinter-process communication unit 320 sends information about the file I/O request hooked by the I/O hook unit 310 to the I/Oproxy daemon unit 400, and receives the execution result from the I/Oproxy daemon unit 400. Theprocess communication unit 320 may implement the inter-process communication function, for example, using a UNIX (registered trademark) domain socket, or a POSIX (Portable Operating System Interface) message queue.

図4は、I/O代行デーモン部400の機能モジュール構成を示す。I/O代行デーモン部400は、プロセス間通信部410、セッション管理部420、ファイル管理部430、共有メモリ管理部440、非同期I/O管理部450、および、構成情報500からなる。I/O代行デーモン部400は、例えば、ファイルサーバアプリケーション部140と完全独立したプロセスとして実装してもよく、ファイルサーバアプリケーション部140から実行中にfork()されるプロセスとして実装してもよい。Figure 4 shows the functional module configuration of the I/Oproxy daemon unit 400. The I/Oproxy daemon unit 400 consists of aninter-process communication unit 410, asession management unit 420, afile management unit 430, a sharedmemory management unit 440, an asynchronous I/O management unit 450, andconfiguration information 500. The I/Oproxy daemon unit 400 may be implemented, for example, as a process completely independent of the fileserver application unit 140, or may be implemented as a process that is fork()ed from the fileserver application unit 140 during execution.

プロセス間通信部410は、I/Oフックモジュール部300のプロセス間通信部320と同様の機構により、I/O代行デーモン部400とファイルサーバアプリケーション部140との間のプロセス間通信機能を提供する。プロセス間通信部410は、ファイルサーバアプリケーション部140のI/Oフックモジュール部300よりファイルI/O要求に関する情報を受け取る。Theinter-process communication unit 410 provides an inter-process communication function between the I/Oproxy daemon unit 400 and the fileserver application unit 140 by a mechanism similar to that of theinter-process communication unit 320 of the I/Ohook module unit 300. Theinter-process communication unit 410 receives information regarding file I/O requests from the I/Ohook module unit 300 of the fileserver application unit 140.

セッション管理部420は、I/O代行デーモン部400とファイルサーバアプリケーション部140との通信をセッションとして扱い、ファイルサーバアプリケーション部140の代理で開いているファイル等を管理する。セッション管理部420は、ファイルサーバアプリケーション部140のプロセスの終了を検出した場合に、代理で開いているファイルを閉じる等の後片付け処理を行う。Thesession management unit 420 treats communication between the I/Oproxy daemon unit 400 and the fileserver application unit 140 as a session, and manages files and other information that are open on behalf of the fileserver application unit 140. When thesession management unit 420 detects the end of a process of the fileserver application unit 140, it performs cleanup processing, such as closing files that have been opened on behalf of the fileserver application unit 140.

ファイル管理部430は、I/O代行デーモン部400が開いているファイル、および、当該ファイルのデータ領域の一部であるファイルブロックのうち、共有メモリ管理部440においてキャッシュしているファイルブロックを管理する。Thefile management unit 430 manages the files that are open by the I/Oproxy daemon unit 400 and the file blocks that are part of the data area of the files and that are cached in the sharedmemory management unit 440.

共有メモリ管理部440は、I/O代行デーモン部400が、ファイルサーバ100のメモリ210上に確保した共有メモリ領域を管理する。I/O代行デーモン部400は、メモリ210上に確保した共有メモリ領域を、ファイルサーバアプリケーション部140と共有する。I/O代行デーモン部400とファイルサーバアプリケーション部140は、共有メモリ領域をI/Oバッファとして使用することにより、リアルタイムI/Oファイルシステム160に対して読み書きするデータの受け渡しを行う。The sharedmemory management unit 440 manages the shared memory area that the I/Oproxy daemon unit 400 has secured in thememory 210 of thefile server 100. The I/Oproxy daemon unit 400 shares the shared memory area secured in thememory 210 with the fileserver application unit 140. The I/Oproxy daemon unit 400 and the fileserver application unit 140 use the shared memory area as an I/O buffer to transfer data to be read and written to the real-time I/O file system 160.

非同期I/O管理部450は、I/O代行デーモン部400が、リアルタイムI/Oファイルシステム160に対して発行する非同期I/O要求を管理する。非同期I/O管理部450は、ファイルサーバアプリケーション部140から受け取ったファイルI/O要求に構成情報500に基づく制御情報を付加し、リアルタイムI/Oファイルシステム160に対して非同期で発行する。非同期I/O管理部450は、リアルタイムI/Oファイルシステム160からファイルI/O実行結果を非同期で受け取り、プロセス間通信部410を介してファイルサーバアプリケーション部140に通知する。The asynchronous I/O management unit 450 manages asynchronous I/O requests issued by the I/Oproxy daemon unit 400 to the real-time I/O file system 160. The asynchronous I/O management unit 450 adds control information based on theconfiguration information 500 to the file I/O request received from the fileserver application unit 140, and issues the request asynchronously to the real-time I/O file system 160. The asynchronous I/O management unit 450 asynchronously receives the file I/O execution results from the real-time I/O file system 160, and notifies the fileserver application unit 140 via theinter-process communication unit 410.

図5は、構成情報500の詳細を示す。構成情報500は、アプリケーション構成情報510、および、ファイル構成情報520からなる。構成情報500は、コンフィグファイルとしてストレージ装置130に格納されているものをI/O代行デーモン部400の起動時に読み込んでもよく、I/O代行デーモンプログラム244の一部として組み込まれていてもよい。Figure 5 shows details ofconfiguration information 500.Configuration information 500 consists ofapplication configuration information 510 andfile configuration information 520.Configuration information 500 may be stored instorage device 130 as a config file and read when I/Oproxy daemon unit 400 is started, or may be incorporated as part of I/Oproxy daemon program 244.

アプリケーション構成情報510は、アプリケーション名511、優先度512、リトライポリシー513を格納するテーブルである。アプリケーション名511は、I/O代行デーモン部400と連携するファイルサーバアプリケーション部140のプロセス名やバイナリファイル名である。Theapplication configuration information 510 is a table that stores an application name 511, apriority 512, and a retrypolicy 513. The application name 511 is the process name or binary file name of the fileserver application unit 140 that cooperates with the I/Oproxy daemon unit 400.

優先度512は当該ファイルサーバアプリケーション部140のI/O実行優先度であり、例えば、優先度の値の高いファイルサーバアプリケーション部140から受け取ったファイルI/O要求は、優先度の低いファイルサーバアプリケーション部140から受け取ったファイルI/O要求に比べて、I/O代行デーモン部400によって、優先的に処理される。Thepriority 512 is the I/O execution priority of the fileserver application unit 140. For example, a file I/O request received from a fileserver application unit 140 with a high priority value is processed preferentially by the I/Oproxy daemon unit 400 compared to a file I/O request received from a fileserver application unit 140 with a low priority value.

リトライポリシー513は、当該ファイルサーバアプリケーション部140から受け取った個々のファイルI/O要求がデッドラインミスを起こした場合に、ファイルI/Oデーモン部400が再試行する回数等を格納する。The retrypolicy 513 stores the number of times the file I/O daemon unit 400 will retry if an individual file I/O request received from the fileserver application unit 140 causes a deadline miss.

ファイル構成情報520は、ファイルパス521、ビットレート522、デッドライン523の値を格納するテーブルである。ファイルパス521は、I/O代行デーモン部400がアクセス対象とするファイルのパスである。ビットレート522は、当該ファイルの読み込みおよび書き込みビットレートである。デッドライン523は、当該ファイルに対する個々のファイルI/O要求に付加するデッドライン情報である。なお、ファイルパス521は、例えば、絶対パスによって単一のファイルを一意に識別するものであってもよく、正規表現を含むパス名によって複数のファイルを識別すものであってもよい。File configuration information 520 is a table that stores values offile path 521,bit rate 522, anddeadline 523.File path 521 is the path of the file to be accessed by the I/Oproxy daemon unit 400.Bit rate 522 is the read and write bit rate of the file.Deadline 523 is deadline information to be added to each file I/O request for the file. Note thatfile path 521 may, for example, be an absolute path that uniquely identifies a single file, or may be a path name that includes a regular expression that identifies multiple files.

図6は、I/Oフックモジュール部300とI/O代行デーモン部400との間のI/O代行通信プロトコル600を示す。I/O代行通信プロトコル600には、I/Oフックモジュール部300からI/O代行デーモン部400へ伝達されるI/O代行要求と、その応答としてI/O代行デーモン部400からI/Oフックモジュール部300へ伝達されるI/O代行応答がある。Figure 6 shows an I/Oproxy communication protocol 600 between the I/Ohook module unit 300 and the I/Oproxy daemon unit 400. The I/Oproxy communication protocol 600 includes an I/O proxy request transmitted from the I/Ohook module unit 300 to the I/Oproxy daemon unit 400, and an I/O proxy response transmitted from the I/Oproxy daemon unit 400 to the I/Ohook module unit 300 in response thereto.

I/O代行要求には、CONNECT要求610、DISCONNECT要求611、OPEN要求612、CLOSE要求613、READ0要求614、READ1要求615、WRITE0要求616、WRITE1要求617、FTRUNCATE要求618、および、UNLINK要求619がある。I/O proxy requests include aCONNECT request 610, aDISCONNECT request 611, anOPEN request 612, aCLOSE request 613, aREAD0 request 614, aREAD1 request 615, aWRITE0 request 616, aWRITE1 request 617, anFTRUNCATE request 618, and anUNLINK request 619.

I/O代行応答には、CONNECT応答620、DISCONNECT応答621、OPEN応答622、CLOSE応答623、READ0応答624、READ1応答625、WRITE0応答626、WRITE1応答627、FTRUNCATE応答628、および、UNLINK応答629がある。I/O proxy responses include aCONNECT response 620, aDISCONNECT response 621, anOPEN response 622, aCLOSE response 623, aREAD0 response 624, aREAD1 response 625, aWRITE0 response 626, aWRITE1 response 627, aFTRUNCATE response 628, and anUNLINK response 629.

CONNECT要求610は、I/Oフックモジュール部300がI/O代行デーモン部400と連携を開始する場合に使用される。CONNECT要求610には、I/Oフックモジュール300が組み込まれているファイルサーバアプリケーション部140のプロセス識別子、例えば、プロセスID(PID)と、I/Oフックモジュール部300が応答の受信に使用する情報、例えば、メッセージキュー名(MQ NAME)が含まれる。CONNECT要求610を受け取ったI/O代行デーモン部400は、送信元のファイルサーバアプリケーション部140との通信を、セッション管理部420においてセッションとして管理する。TheCONNECT request 610 is used when the I/Ohook module unit 300 starts cooperation with the I/Oproxy daemon unit 400. TheCONNECT request 610 includes the process identifier of the fileserver application unit 140 in which the I/O hook module 300 is incorporated, such as the process ID (PID), and information used by the I/Ohook module unit 300 to receive responses, such as the message queue name (MQ NAME). When the I/Oproxy daemon unit 400 receives theCONNECT request 610, it manages the communication with the sender's fileserver application unit 140 as a session in thesession management unit 420.

CONNECT応答620は、CONNECT要求610に対する応答として使用される。CONNECT応答620には、CONNECT要求610の実行結果(RESULT)と、I/O代行デーモン部400が共有メモリ管理部440において管理している共有メモリ領域の情報、例えば、共有メモリ名(SHM NAME)と、共有メモリ領域サイズ(SHM SIZE)が含まれる。CONNECT応答620を受け取ったI/Oフックモジュール部300は、共有メモリ領域をファイルサーバアプリケーション部140のプロセスメモリ空間にマップする。TheCONNECT response 620 is used as a response to theCONNECT request 610. TheCONNECT response 620 includes the execution result (RESULT) of theCONNECT request 610 and information about the shared memory area managed by the I/Oproxy daemon unit 400 in the sharedmemory management unit 440, such as the shared memory name (SHM NAME) and the shared memory area size (SHM SIZE). The I/Ohook module unit 300 that receives theCONNECT response 620 maps the shared memory area into the process memory space of the fileserver application unit 140.

DISCONNECT要求611は、I/Oフックモジュール部300がI/O代行デーモン部400との連携を終了する場合に使用される。DISCONNECT要求611には、プロセス識別子が含まれる。DISCONNECT要求610を受け取ったI/O代行デーモン部400は、対応するファイルサーバアプリケーション部140のセッションの後片付け処理を行う。TheDISCONNECT request 611 is used when the I/Ohook module unit 300 terminates cooperation with the I/Oproxy daemon unit 400. TheDISCONNECT request 611 includes a process identifier. Upon receiving theDISCONNECT request 610, the I/Oproxy daemon unit 400 performs a cleanup process for the session of the corresponding fileserver application unit 140.

DISCONNECT応答621は、DISCONNECT要求611に対する応答として使用される。DISCONNECT応答621には、DISCONNECT要求611の実行結果が含まれる。TheDISCONNECT response 621 is used as a response to theDISCONNECT request 611. TheDISCONNECT response 621 includes the result of executing theDISCONNECT request 611.

OPEN要求612は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルオープン処理をフックした場合に使用される。OPEN要求612には、プロセス識別子と、ファイルサーバアプリケーション部140内でファイルを一意に示すファイル識別子、例えば、ファイルID(FID)と、読み出しのみ、あるいは、読み書きのオープンモードを示すフラグ(FLAGS)と、ファイルのパス名(PATH)が含まれる。OPEN要求612を受け取ったI/O代行デーモン部400は、当該ファイルを指定されたモードでオープンし、ファイル管理部430において管理する。TheOPEN request 612 is used when the I/Ohook module unit 300 hooks the file open process of the fileserver application unit 140. TheOPEN request 612 includes a process identifier, a file identifier that uniquely identifies the file within the fileserver application unit 140, such as a file ID (FID), a flag (FLAGS) indicating the open mode of read-only or read/write, and the path name (PATH) of the file. The I/Oproxy daemon unit 400 that receives theOPEN request 612 opens the file in the specified mode and manages it in thefile management unit 430.

OPEN応答622は、OPEN要求612に対する応答として使用される。OPEN応答622には、OPEN要求612の実行結果と、ファイル識別子が含まれる。TheOPEN response 622 is used as a response to theOPEN request 612. TheOPEN response 622 includes the result of executing theOPEN request 612 and a file identifier.

CLOSE要求613は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルクローズ処理をフックした場合に使用される。CLOSE要求613には、ファイルサーバアプリケーション部140の識別子と、ファイル識別子が含まれる。CLOSE要求613を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルをクローズする。TheCLOSE request 613 is used when the I/Ohook module unit 300 hooks the file close process of the fileserver application unit 140. TheCLOSE request 613 includes the identifier of the fileserver application unit 140 and the file identifier. When the I/Oproxy daemon unit 400 receives theCLOSE request 613, it closes the file managed by thefile management unit 430.

CLOSE応答623は、CLOSE要求613に対する応答して使用される。CLOSE応答623には、CLOSE要求613の実行結果と、ファイル識別子が含まれる。TheCLOSE response 623 is used in response to theCLOSE request 613. TheCLOSE response 623 includes the result of executing theCLOSE request 613 and a file identifier.

READ0要求614は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルリード処理をフックした場合に使用される。TheREAD0 request 614 is used when the I/Ohook module unit 300 hooks the file read process of the fileserver application unit 140.

READ0要求614には、プロセス識別子と、読み込み対象ファイルを示すファイル識別子と、ファイルサーバアプリケーション部140内でI/O代行デーモン部400に代行させるファイルI/O要求を一意に識別するI/O識別子(IOID)と、対象ファイル内の読み込み位置を示すオフセット(OFFSET)とサイズ(SIZE)が含まれる。TheREAD0 request 614 includes a process identifier, a file identifier indicating the file to be read, an I/O identifier (IOID) that uniquely identifies the file I/O request to be proxied by the I/Oproxy daemon unit 400 within the fileserver application unit 140, and an offset (OFFSET) and size (SIZE) indicating the read position within the target file.

READ0要求614を受け取ったI/O代行デーモン部400は、共有メモリ管理部440においてI/Oバッファメモリとなる共有メモリ領域を割り当て、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、割り当てたI/Oバッファメモリに当該ファイルデータを読み込む。When the I/Oproxy daemon unit 400 receives theREAD0 request 614, the sharedmemory management unit 440 allocates a shared memory area that will serve as the I/O buffer memory, and the asynchronous I/O management unit 450 issues a file I/O request to the real-time I/O file system 160 with control information based on theconfiguration information 500 added, and reads the file data into the allocated I/O buffer memory.

READ0応答624は、READ0要求614に対する応答として使用される。READ0応答624には、READ0要求614の実行結果と、ファイル識別子と、I/O識別子と、読み込んだデータが格納されているI/Oバッファメモリを示す共有メモリ領域内のオフセット(SHM OFFSET)とサイズが含まれる。TheREAD0 response 624 is used as a response to theREAD0 request 614. TheREAD0 response 624 includes the execution result of theREAD0 request 614, a file identifier, an I/O identifier, and the offset (SHM OFFSET) and size in the shared memory area indicating the I/O buffer memory where the read data is stored.

READ1要求615は、I/Oフックモジュール部300が、READ0応答624を受け取り、例えば、クライアント端末110に送信し終わった等、共有メモリ領域に読み込まれたデータの使用を完了した場合に使用される。READ1要求615には、プロセス識別子と、ファイル識別子と、I/O識別子が含まれる。READ1要求615を受け取ったI/O代行デーモン部400は、共有メモリ部450において当該ファイルI/O要求のために割り当てたI/Oバッファメモリを開放する。TheREAD1 request 615 is used when the I/Ohook module unit 300 receives aREAD0 response 624 and completes the use of the data read into the shared memory area, for example, by finishing sending it to theclient terminal 110. TheREAD1 request 615 includes a process identifier, a file identifier, and an I/O identifier. The I/Oproxy daemon unit 400 that receives theREAD1 request 615 releases the I/O buffer memory that was allocated for the file I/O request in the sharedmemory unit 450.

READ1応答625は、READ1要求615に対する応答として使用される。READ1応答625には、READ1要求625の実行結果と、ファイル識別子と、I/O識別子が含まれる。TheREAD1 response 625 is used as a response to theREAD1 request 615. TheREAD1 response 625 includes the result of executing theREAD1 request 625, a file identifier, and an I/O identifier.

WRITE0要求616は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルライト処理をフックした場合に使用される。WRITE0要求616には、プロセス識別子と、ファイル識別子と、I/O識別子と、対象ファイル内の書き込み位置を示すオフセットとサイズが含まれる。WRITE0要求616を受け取ったI/O代行デーモン部400は、共有メモリ管理部440においてI/Oバッファメモリとなる共有メモリ領域を割り当てる。TheWRITE0 request 616 is used when the I/Ohook module unit 300 hooks the file write process of the fileserver application unit 140. TheWRITE0 request 616 includes a process identifier, a file identifier, an I/O identifier, and an offset and size indicating the write position within the target file. The I/Oproxy daemon unit 400 that receives theWRITE0 request 616 allocates a shared memory area that will become the I/O buffer memory in the sharedmemory management unit 440.

WRITE0応答626は、WRITE0要求616に対する応答として使用される。WRITE0応答626には、WRITE0要求616の実行結果と、ファイル識別子と、I/O識別子と、I/O代行デーモン部400が割り当てたI/Oバッファメモリを示す共有メモリ領域内のオフセットとサイズが含まれる。TheWRITE0 response 626 is used as a response to theWRITE0 request 616. TheWRITE0 response 626 includes the execution result of theWRITE0 request 616, a file identifier, an I/O identifier, and an offset and size within the shared memory area indicating the I/O buffer memory allocated by the I/Oproxy daemon unit 400.

WRITE1要求617は、I/Oフックモジュール部300が、WRITE0応答626を受け取り、I/Oバッファとして割り当てられた共有メモリ領域へ書き込むべきデータの転送を完了した場合に使用される。WRITE1要求617には、プロセス識別子と、ファイル識別子と、I/O識別子が含まれる。WRITE1要求617を受け取ったI/O代行デーモン部400は、非同期I/O管理部450において構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、I/Oバッファメモリに格納されたデータを当該ファイルに書き込む。TheWRITE1 request 617 is used when the I/Ohook module unit 300 receives theWRITE0 response 626 and completes the transfer of data to be written to the shared memory area allocated as an I/O buffer. TheWRITE1 request 617 includes a process identifier, a file identifier, and an I/O identifier. The I/Oproxy daemon unit 400 that receives theWRITE1 request 617 issues a file I/O request to the real-time I/O file system 160 in the asynchronous I/O management unit 450, to which control information based on theconfiguration information 500 has been added, and writes the data stored in the I/O buffer memory to the file.

WRITE1応答627は、WRITE1要求617の応答として使用される。WRITE1応答627には、WRITE1要求617の実行結果と、ファイル識別子と、I/O識別子と、実際に書き込まれたサイズが含まれる。TheWRITE1 response 627 is used as a response to theWRITE1 request 617. TheWRITE1 response 627 includes the execution result of theWRITE1 request 617, the file identifier, the I/O identifier, and the size actually written.

FTRUNCATE要求618は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルサイズ変更処理をフックした場合に使用される。FTRUNCATE要求618には、プロセス識別子と、ファイル識別子と、I/O識別子と、当該ファイルの変更後のファイルサイズが含まれる。TheFTRUNCATE request 618 is used when the I/Ohook module unit 300 hooks the file size change process of the fileserver application unit 140. TheFTRUNCATE request 618 includes a process identifier, a file identifier, an I/O identifier, and the changed file size of the file.

FTRUNCATE要求618を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルのサイズを変更し、非同期I/O管理部450において、ファイルサイズ変更要求をリアルタイムI/Oファイルシステム160に対して発行する。ファイルサイズが縮小される場合、I/O代行デーモン部400は、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックのうち、ファイルサイズの変更により不要となる部分を無効化する。The I/Oproxy daemon unit 400, which has received theFTRUNCATE request 618, changes the size of the file managed by thefile management unit 430, and issues a file size change request to the real-time I/O file system 160 in the asynchronous I/O management unit 450. When the file size is reduced, the I/Oproxy daemon unit 400 invalidates the portion of the data block of the file cached in the shared memory area in the sharedmemory management unit 440 that becomes unnecessary due to the change in file size.

FTRUNCATE応答628は、FTRUNCATE要求618の応答として使用される。FTRUNCATE応答628には、FTRUNCATE応答628の実行結果と、フィル識別子と、I/O識別子が含まれる。TheFTRUNCATE response 628 is used as a response to theFTRUNCATE request 618. TheFTRUNCATE response 628 includes the results of the execution of theFTRUNCATE response 628, a fill identifier, and an I/O identifier.

UNLINK要求619は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイル削除処理をフックした場合に使用される。UNLINK要求619には、プロセス識別子と、ファイル識別子と、削除対象のファイルのパス名が含まれる。UNLINK要求619を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルの情報を削除し、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックを無効化する。TheUNLINK request 619 is used when the I/Ohook module unit 300 hooks the file deletion process of the fileserver application unit 140. TheUNLINK request 619 includes a process identifier, a file identifier, and the path name of the file to be deleted. When the I/Oproxy daemon unit 400 receives theUNLINK request 619, it deletes the information of the file managed by thefile management unit 430, and invalidates the data block of the file cached in the shared memory area by the sharedmemory management unit 440.

UNLINK応答629は、UNLINK要求619の応答として使用される。UNLINK応答629には、UNLINK要求619の実行結果と、ファイル識別子が含まれる。TheUNLINK response 629 is used as a response to theUNLINK request 619. TheUNLINK response 629 includes the result of executing theUNLINK request 619 and a file identifier.

以下、フローチャートを用いてI/Oフックモジュール部300、および、I/O代行デーモン部400の処理を説明する。The processing of the I/Ohook module unit 300 and the I/Oproxy daemon unit 400 is explained below using a flowchart.

図7は、I/Oフックモジュール部300の処理を示すフローチャートである。I/Oフックモジュール部300は、ファイルサーバアプリケーション部140の開始時に合わせて開始される。I/Oフックモジュール部300は、開始時にFIDテーブル等の初期化処理を行う(S700)。Figure 7 is a flowchart showing the processing of the I/Ohook module unit 300. The I/Ohook module unit 300 starts at the same time as the fileserver application unit 140 starts. The I/Ohook module unit 300 performs initialization processing of the FID table, etc. at the time of starting (S700).

次に、連携するI/O代行デーモン部400に対して、自身のファイルサーバアプリケーション部140のプロセスID(PID)CONNECT要求610を送信し(S710)、その応答としてCONNECT応答620を受信する(S720)。I/Oフックモジュール部300は、CONNECT応答620に含まれる共有メモリ領域の情報をもとに、当該共有メモリを自身のプロセス空間にマップする(S730)。Next, the I/Ohook module unit 300 sends aCONNECT request 610 with the process ID (PID) of its own fileserver application unit 140 to the associated I/O proxy daemon unit 400 (S710), and receives aCONNECT response 620 in response (S720). Based on the information about the shared memory area included in theCONNECT response 620, the I/Ohook module unit 300 maps the shared memory into its own process space (S730).

I/Oフックモジュール部300は、ファイルサーバアプリケーション部140が終了するまで、I/Oフック処理を繰り返す(S740)。The I/Ohook module unit 300 repeats the I/O hook process until the fileserver application unit 140 terminates (S740).

I/Oフックモジュール部300は、ファイルサーバアプリケーション部140が終了する際に、I/O代行処理の終了を通知するためにI/O代行デーモン部400に対してDISCONNECT要求611を送信する(S750)。最後に、I/Oフックモジュール部300は、DISCONNECT応答S621を受信し(S760)、自身の処理を終了する。When the fileserver application unit 140 is terminated, the I/Ohook module unit 300 sends aDISCONNECT request 611 to the I/Oproxy daemon unit 400 to notify it of the end of the I/O proxy processing (S750). Finally, the I/Ohook module unit 300 receives a DISCONNECT response S621 (S760) and terminates its own processing.

図8は、I/Oフック処理(S710)の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルサーバアプリケーション部140のファイルI/O要求をフックした際に、フックしたファイルI/O要求がファイルI/Oデーモン400部に代行させる対象のI/O要求、例えば、ファイルオープンopen()、ファイルクローズclose()、ファイルリードread()、ファイルライトwrite()、ファイルサイズ変更ftruncate()、および、ファイル削除unlink()であるかを判定する(S800)。Figure 8 is a flowchart showing the details of the I/O hook process (S710). When the I/Ohook module unit 300 hooks a file I/O request from the fileserver application unit 140, it determines whether the hooked file I/O request is an I/O request to be acted on behalf of the file I/O daemon 400 unit, such as a file open (open()), file close (close()), file read (read()), file write (write()), file size change (ftruncate()), or file deletion (unlink()) (S800).

代行対象I/O要求である場合(S800においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400にI/Oを代行させる処理を行い(S810)、結果をファイルサーバアプリケーション部140に返す。If it is an I/O request to be proxied (YES in S800), the I/Ohook module unit 300 performs processing to have the I/Oproxy daemon unit 400 proxied the I/O (S810) and returns the result to the fileserver application unit 140.

代行対象I/O要求でない場合(S800においてNO)、I/Oフックモジュール部300は、VFS関数を実行することにより自身でVFS150に対してファイルI/O要求を発行し(S820)、結果をファイルサーバアプリケーション部140に返す。If the I/O request is not a proxy target (NO in S800), the I/Ohook module unit 300 issues a file I/O request to theVFS 150 by executing a VFS function (S820) and returns the result to the fileserver application unit 140.

図9は、I/O代行デーモン部400の処理を示すフローチャートである。I/O代行デーモン部400は、例えば、デーモンプロセスとして起動され、最初に、共有メモリ管理部440において共有メモリ領域を確保する等の初期化処理を行う(S900)。Figure 9 is a flowchart showing the processing of the I/Oproxy daemon unit 400. The I/Oproxy daemon unit 400 is started, for example, as a daemon process, and first performs initialization processing such as allocating a shared memory area in the shared memory management unit 440 (S900).

初期化処理を完了すると、I/O代行デーモン部400は、自身のプロセスを終了するまで、I/Oフックモジュール部300からのI/O代行要求の処理を行うI/O代行実行処理を繰り返す(S910)。When the initialization process is completed, the I/Oproxy daemon unit 400 repeats the I/O proxy execution process to process I/O proxy requests from the I/Ohook module unit 300 until its own process is terminated (S910).

図10は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルサーバアプリケーション部140との連携を開始する処理の詳細を示すフローチャートである。Figure 10 is a flowchart showing the details of the process of starting collaboration with the fileserver application unit 140, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400.

I/O代行デーモン部400は、CONNECT要求610を受信した場合(S1000)、要求に含まれるファイルサーバアプリケーション部140のプロセス識別子をセッション管理部420においてセッション情報として登録する(S1010)。次に、I/O代行デーモン400は、I/Oフックモジュール部300に対して、実行結果および共有メモリ領域の情報等を含むCONNECT応答620を送信し(S1020)、I/O代行実行処理を終了する。When the I/Oproxy daemon unit 400 receives a CONNECT request 610 (S1000), it registers the process identifier of the fileserver application unit 140 included in the request as session information in the session management unit 420 (S1010). Next, the I/O proxy daemon 400 sends aCONNECT response 620 including the execution result and information on the shared memory area to the I/O hook module unit 300 (S1020), and ends the I/O proxy execution process.

図11は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルサーバアプリケーション部140との連携を終了する処理の詳細を示すフローチャートである。Figure 11 is a flowchart showing the details of the process of terminating collaboration with the fileserver application unit 140, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400.

I/O代行デーモン部400は、DISCONNECT要求611を受信した場合(S1100)、要求に含まれるプロセス識別子を含むセッション情報をセッション管理部420において削除する(S1110)。次に、I/O代行デーモン部400は、I/Oフックモジュール300に対して、実行結果を含むDISCONNECT応答621を送信し(S1120)、I/O代行実行処理を終了する。When the I/Oproxy daemon unit 400 receives a DISCONNECT request 611 (S1100), it deletes the session information including the process identifier included in the request in the session management unit 420 (S1110). Next, the I/Oproxy daemon unit 400 sends aDISCONNECT response 621 including the execution result to the I/O hook module 300 (S1120), and ends the I/O proxy execution process.

図12は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイルオープン処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルオープンI/O要求をフックした場合、最初に、VFS150が提供するVFS関数を用いて対象ファイルを自身でオープンし、FIDを取得する(S1200)。ファイルオープンに失敗した場合(S1210においてNO)、I/Oフックモジュール部300は、失敗をファイルサーバアプリケーション部140に返す。Figure 12 is a flowchart showing the details of the file open process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file open I/O request, it first opens the target file by itself using the VFS function provided byVFS 150 and obtains the FID (S1200). If the file open fails (NO in S1210), the I/Ohook module unit 300 returns a failure to the fileserver application unit 140.

ファイルオープンに成功した場合(S1210においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、ファイルサーバアプリケーション部140のPID、オープンしたファイルのFID、対象ファイルのパス等を含むOPEN要求612を送信する(S1220)。If the file is successfully opened (YES in S1210), the I/Ohook module unit 300 sends anOPEN request 612 to the I/Oproxy daemon unit 400, which includes the PID of the fileserver application unit 140, the FID of the opened file, the path of the target file, etc. (S1220).

次に、I/Oフックモジュール部300は、I/O代行モジュール部400からOPEN応答622を受信し(S1230)、応答に含まれる実行結果が成功であったかを判定する(S1240)。実行結果が失敗であった場合(S1240においてNO)、自身のファイルオープン処理には成功しているため、成功をファイルサーバアプリケーション部140に返す。Next, the I/Ohook module unit 300 receives anOPEN response 622 from the I/O proxy module unit 400 (S1230) and determines whether the execution result included in the response was successful (S1240). If the execution result is failure (NO in S1240), the file open process itself was successful, so the I/Ohook module unit 300 returns success to the fileserver application unit 140.

実行結果が成功であった場合(S1240においてYES)、FIDをファイルI/O要求代行対象のファイルを示す情報としてI/Oフックモジュール部300内に登録し(S1250)、成功をファイルサーバアプリケーション部140に返す。If the execution result is successful (YES in S1240), the FID is registered in the I/Ohook module unit 300 as information indicating the file for which the file I/O request is to be acted upon (S1250), and success is returned to the fileserver application unit 140.

図13は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルオープン代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、OPEN要求612を受信した場合(S1300)、要求に含まれるパス名等の情報を用いて、対象ファイルをオープンする(S1310)。ファイルオープンに失敗した場合(S1320においてNO)、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、実行結果に失敗を含むOPEN応答622を送信(S1340)し、I/O代行実行処理を終了する。Figure 13 is a flowchart showing the details of the file open proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives an OPEN request 612 (S1300), it opens the target file using information such as the path name included in the request (S1310). If the file open fails (NO in S1320), the I/Oproxy daemon unit 400 sends anOPEN response 622 including a failure in the execution result to the I/O hook module unit 300 (S1340), and ends the I/O proxy execution process.

ファイルオープンに成功した場合(S1320においてYES)、I/O代行デーモン部400は、ファイル管理部430において、要求に含まれるFID、自身がファイルオープン処理により取得したFID等の情報をファイル管理情報として登録する(S1330)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、実行結果に成功を含むOPEN応答622を送信(S1340)し、I/O代行実行処理を終了する。If the file opening is successful (YES in S1320), the I/Oproxy daemon unit 400 registers information such as the FID included in the request and the FID it obtained through the file open process as file management information in the file management unit 430 (S1330). Next, the I/Oproxy daemon unit 400 sends anOPEN response 622 including success as an execution result to the I/O hook module unit 300 (S1340), and ends the I/O proxy execution process.

図14は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイルクローズ処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルクローズI/O要求をフックした場合、最初に、対象ファイルが代行対象ファイルであるかを判定する(S1400)。代行対象ファイルであるかの判定は、対象FIDがI/Oフックモジュール部300内に登録されているかどうかを判定することによって行う。Figure 14 is a flowchart showing the details of the file close process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file close I/O request, it first determines whether the target file is a proxy target file (S1400). The determination of whether the target file is a proxy target file is made by determining whether the target FID is registered in the I/Ohook module unit 300.

代行対象ファイルでない場合(S1400においてNO)、I/Oフックモジュール部300は、自身でオープンしたファイルをクローズし(S1440)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1400), the I/Ohook module unit 300 closes the file that it opened (S1440) and returns the result to the fileserver application unit 140.

代行対象ファイルである場合(S1400においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、PIDおよびFIDを含むCLOSE要求613を送信する(S1410)。次に、I/Oフックモジュール部300は、I/O代行モジュール400からCLOSE応答623を受信し(S1420)、結果をファイルサーバアプリケーション部140に返す。If it is a file to be substituted (YES in S1400), the I/Ohook module unit 300 sends aCLOSE request 613 including the PID and FID to the I/O proxy daemon unit 400 (S1410). Next, the I/Ohook module unit 300 receives aCLOSE response 623 from the I/O proxy module 400 (S1420) and returns the result to the fileserver application unit 140.

図15は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルクローズ代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、CLOSE要求613を受信した場合(S1500)、要求に含まれるPID、FIDに対応するファイルをクローズする(S1510)。Figure 15 is a flowchart showing the details of the file close proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives a CLOSE request 613 (S1500), it closes the file corresponding to the PID and FID included in the request (S1510).

次に、I/O代行デーモン部400は、ファイル管理部430において、登録されている対応するファイル情報を削除し(S1520)する。次に、I/O代行デーモン部400は、CLOSE応答623を送信(S1530)し、I/O代行実行処理を終了する。Next, the I/Oproxy daemon unit 400 deletes the corresponding file information registered in the file management unit 430 (S1520). Next, the I/Oproxy daemon unit 400 sends a CLOSE response 623 (S1530) and ends the I/O proxy execution process.

図16は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイルリード処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルリードI/O要求をフックした場合、最初に、対象ファイルが代行対象ファイルであるかを判定する(S1600)。Figure 16 is a flowchart showing the details of the file read process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file read I/O request, it first determines whether the target file is a proxy target file (S1600).

代行対象ファイルでない場合(S1600においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルリード処理を実行し(S1610)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1600), the I/Ohook module unit 300 executes the file read process by executing the VFS function provided by the VFS 150 (S1610) and returns the result to the fileserver application unit 140.

代行対象ファイルである場合(S1600においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、PID、FID、IOID、そして、ファイルの読み出し範囲を示すOFFSETおよびSIZEを含むREAD0要求614を送信する(S1620)。ここで、IOIDは、ファイルサーバアプリケーション部140プロセス内で単調増加する整数値を用いればよい。If the file is a proxy target file (YES in S1600), the I/Ohook module unit 300 sends aREAD0 request 614 including the PID, FID, IOID, and OFFSET and SIZE indicating the read range of the file to the I/O proxy daemon unit 400 (S1620). Here, the IOID may be an integer value that increases monotonically within the fileserver application unit 140 process.

次に、I/Oフックモジュール部300は、I/O代行モジュール部400からREAD0応答624を受信し(S1630)、応答に含まれるSHM OFFSETおよびSIZEで示される共有メモリ領域に格納されたファイルデータを読み出す(S1640)。Next, the I/Ohook module unit 300 receives aREAD0 response 624 from the I/O proxy module unit 400 (S1630), and reads the file data stored in the shared memory area indicated by the SHM OFFSET and SIZE included in the response (S1640).

ここで、例えば、ファイルデータのストレージ装置130からの読み込みおよびネットワーク120への送信を一度に行うsendfile()をフック対象にしている場合は、共有メモリ領域に格納されたファイルデータを直接ネットワーク120へ送信すればよい。通常のread()をフックした場合は、共有メモリ領域に格納されたファイルデータをファイルサーバアプリケーション140が読み込みバッファに指定したメモリ領域にコピーすればよい。Here, for example, if the hook target is sendfile(), which reads file data fromstorage device 130 and transmits it to network 120 in one go, the file data stored in the shared memory area can be sent directly tonetwork 120. If a normal read() is hooked, the file data stored in the shared memory area can be copied to the memory area specified byfile server application 140 as a read buffer.

次に、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、READ0要求614送信時と同一のIOID含むREAD1要求615を送信し(S1650)、共有メモリ領域に格納されたファイルデータの使用を完了したことを通知する。Next, the I/Ohook module unit 300 sends aREAD1 request 615 containing the same IOID as when theREAD0 request 614 was sent to the I/O proxy daemon unit 400 (S1650), notifying it that use of the file data stored in the shared memory area has been completed.

次に、I/Oフックモジュール部300は、I/O代行デーモン部400からREAD1応答625を受信し(S1660)、結果をファイルサーバアプリケーション部140に返す。Next, the I/Ohook module unit 300 receives aREAD1 response 625 from the I/O proxy daemon unit 400 (S1660) and returns the result to the fileserver application unit 140.

図17は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルリード代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、READ0要求614を受信した場合(S1700)、共有メモリ管理部440において要求に含まれるサイズ分の共有メモリ領域をI/Oバッファメモリとして割り当てる(S1710)。Figure 17 is a flowchart showing the details of the file read proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives a READ0 request 614 (S1700), the sharedmemory management unit 440 allocates a shared memory area of the size included in the request as I/O buffer memory (S1710).

次に、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、割り当てた共有メモリ領域に当該ファイルデータを読み込む(S1720)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、ファイルデータを読み込んだ共有メモリ領域の情報を含むREAD0応答624を送信する(S1730)。Next, the asynchronous I/O management unit 450 issues a file I/O request to the real-time I/O file system 160 with added control information based on theconfiguration information 500, and reads the file data into the allocated shared memory area (S1720). Next, the I/Oproxy daemon unit 400 sends aREAD0 response 624 to the I/Ohook module unit 300, including information about the shared memory area into which the file data has been read (S1730).

次に、I/O代行デーモン部400は、READ1要求615を受信し(S1740)、共有メモリ管理部440においてI/Oバッファメモリとして割り当てた共有メモリ領域を解放する(S1750)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、READ1応答625を送信し(S1760)、I/O代行実行処理を終了する。Next, the I/Oproxy daemon unit 400 receives the READ1 request 615 (S1740) and releases the shared memory area allocated as I/O buffer memory in the shared memory management unit 440 (S1750). Next, the I/Oproxy daemon unit 400 sends aREAD1 response 625 to the I/O hook module unit 300 (S1760) and ends the I/O proxy execution process.

図18は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイルライト処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルライトI/O要求をフックした場合、最初に、対象ファイルが代行対象ファイルであるかを判定する(S1800)。Figure 18 is a flowchart showing the details of the file write process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file write I/O request, it first determines whether the target file is a proxy target file (S1800).

代行対象ファイルでない場合(S1800においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルライト処理を実行し(S1810)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1800), the I/Ohook module unit 300 executes the file write process by executing the VFS function provided by the VFS 150 (S1810) and returns the result to the fileserver application unit 140.

代行対象ファイルである場合(S1800においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、PID、FID、IOID、そして、ファイルの書き込み範囲を示すOFFSETおよびSIZEを含むWRITE0要求616を送信する(S1820)。If the file is a proxy target file (YES in S1800), the I/Ohook module unit 300 sends aWRITE0 request 616 to the I/Oproxy daemon unit 400, which includes the PID, FID, IOID, and OFFSET and SIZE indicating the write range of the file (S1820).

次に、I/Oフックモジュール部300は、I/O代行デーモン部400からWRITE0応答626を受信し(S1830)、応答に含まれるSHM OFFSETおよびSIZEで示される共有メモリ領域に対して、対象ファイルに書き込むデータを書き込む(S1840)。次に、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、WRITE0要求616送信時と同一のIOID含むWRITE1要求617を送信し(S1850)、共有メモリ領域へのファイルデータの書き込みが完了したことを通知する。Next, the I/Ohook module unit 300 receives aWRITE0 response 626 from the I/O proxy daemon unit 400 (S1830), and writes the data to be written to the target file to the shared memory area indicated by the SHM OFFSET and SIZE included in the response (S1840). Next, the I/Ohook module unit 300 sends aWRITE1 request 617 containing the same IOID as when theWRITE0 request 616 was sent to the I/O proxy daemon unit 400 (S1850), and notifies the I/Oproxy daemon unit 400 that writing of the file data to the shared memory area has been completed.

次に、I/Oフックモジュール部300は、I/O代行デーモン部400からWRITE1応答627を受信し(S1860)、結果をファイルサーバアプリケーション部140に返す。Next, the I/Ohook module unit 300 receives theWRITE1 response 627 from the I/O proxy daemon unit 400 (S1860) and returns the result to the fileserver application unit 140.

図19は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルライト代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、WRITE0要求616を受信した場合(S1900)、共有メモリ管理部440において要求に含まれるサイズ分の共有メモリ領域をI/Oバッファメモリとして割り当てる(S1910)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、割り当てた共有メモリ領域の情報を含むWRITE0応答626を送信する(S1920)。Figure 19 is a flowchart showing the details of the file write proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives a WRITE0 request 616 (S1900), the sharedmemory management unit 440 allocates a shared memory area of the size included in the request as I/O buffer memory (S1910). Next, the I/Oproxy daemon unit 400 sends aWRITE0 response 626 including information about the allocated shared memory area to the I/O hook module unit 300 (S1920).

次に、I/O代行デーモン部400は、WRITE1要求617を受信し(S1930)、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、共有メモリ領域に格納された当該ファイルデータを書き込む(S1940)。次に、I/O代行デーモン部400は、共有メモリ管理部440において割り当てた共有メモリ領域を解放する(S1950)。Next, the I/Oproxy daemon unit 400 receives the WRITE1 request 617 (S1930), and in the asynchronous I/O management unit 450, issues a file I/O request to the real-time I/O file system 160 with added control information based on theconfiguration information 500, and writes the file data stored in the shared memory area (S1940). Next, the I/Oproxy daemon unit 400 releases the shared memory area allocated in the shared memory management unit 440 (S1950).

次に、I/O代行デーモン部400は、I/Oフックモジュール300に対して、WRITE1応答627を送信し(S1960)、I/O代行実行処理を終了する。Next, the I/Oproxy daemon unit 400 sends aWRITE1 response 627 to the I/O hook module 300 (S1960) and ends the I/O proxy execution process.

図20は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイルサイズ変更処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイルサイズ変更I/O要求をフックした場合、最初に、対象ファイルが代行対象ファイルであるかを判定する(S2000)。Figure 20 is a flowchart showing the details of the file size change process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file size change I/O request, it first determines whether the target file is a proxy target file (S2000).

代行対象ファイルでない場合(S2000においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルサイズ変更処理を実行し(S2010)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S2000), the I/Ohook module unit 300 executes the file size change process by executing the VFS function provided by the VFS 150 (S2010) and returns the result to the fileserver application unit 140.

代行対象ファイルである場合(S2000においてYES)、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、PID、FID、IOID、そして、変更後のファイルサイズを示すSIZEを含むFTRUNCATE要求618を送信する(S2020)。次に、I/Oフックモジュール部300は、I/O代行デーモン部400からFTRUNCATE応答628を受信し(S2030)、結果をファイルサーバアプリケーション部140に返す。If it is a file to be substituted (YES in S2000), the I/Ohook module unit 300 sends anFTRUNCATE request 618 including the PID, FID, IOID, and SIZE indicating the changed file size to the I/O proxy daemon unit 400 (S2020). Next, the I/Ohook module unit 300 receives anFTRUNCATE response 628 from the I/O proxy daemon unit 400 (S2030) and returns the result to the fileserver application unit 140.

図21は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルサイズ変更代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、FTRUNCATE要求618を受信した場合(S2100)、ファイル管理部430において管理されている当該ファイルのサイズを変更し、非同期I/O管理部450において、ファイルサイズ変更要求をリアルタイムI/Oファイルシステム160に対して発行する(S2110)。次に、I/O代行デーモン部400は、ファイルサイズ変更処理がファイルサイズ縮小であるかを判定する(S2120)。Figure 21 is a flowchart showing the details of the file size change proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives an FTRUNCATE request 618 (S2100), it changes the size of the file managed by thefile management unit 430, and issues a file size change request to the real-time I/O file system 160 in the asynchronous I/O management unit 450 (S2110). Next, the I/Oproxy daemon unit 400 determines whether the file size change process is a file size reduction (S2120).

ファイルサイズ縮小である場合(S2120においてYES)、I/O代行デーモン部400は、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックのうち、ファイルサイズの変更により不要となる部分を無効化する(S2130)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、FTRUNCATE応答628を送信し(S2140)、I/O代行実行処理を終了する。If the file size is to be reduced (YES in S2120), the I/Oproxy daemon unit 400 invalidates the portion of the data blocks of the file that are cached in the shared memory area in the sharedmemory management unit 440 and that will become unnecessary due to the change in file size (S2130). Next, the I/Oproxy daemon unit 400 sends anFTRUNCATE response 628 to the I/O hook module unit 300 (S2140), and ends the I/O proxy execution process.

ファイルサイズ縮小でない場合(S2120においてNO)、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、直ちにFTRUNCATE応答628を送信し(S2140)、I/O代行実行処理を終了する。If the file size is not reduced (NO in S2120), the I/Oproxy daemon unit 400 immediately sends anFTRUNCATE response 628 to the I/O hook module unit 300 (S2140) and ends the I/O proxy execution process.

図22は、I/Oフックモジュール部300のI/O代行処理(S810)のひとつである、ファイル削除処理の詳細を示すフローチャートである。I/Oフックモジュール部300は、ファイル削除I/O要求をフックした場合、I/O代行デーモン部400に対して、PID、FID、そして、削除対象のファイルを示すPATHを含むUNLINK要求619を送信する(S2200)。次に、I/Oフックモジュール部300は、I/O代行デーモン部400からUNLINK応答629を受信し(S2210)、VFS関数を用いて対象ファイルを削除して(S2220)、結果をファイルサーバアプリケーション部140に返す。Figure 22 is a flowchart showing the details of the file deletion process, which is one of the I/O proxy processes (S810) of the I/Ohook module unit 300. When the I/Ohook module unit 300 hooks a file deletion I/O request, it sends anUNLINK request 619 including the PID, FID, and PATH indicating the file to be deleted to the I/O proxy daemon unit 400 (S2200). Next, the I/Ohook module unit 300 receives anUNLINK response 629 from the I/O proxy daemon unit 400 (S2210), deletes the target file using a VFS function (S2220), and returns the result to the fileserver application unit 140.

図23は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイル削除代行実行処理の詳細を示すフローチャートである。I/O代行デーモン部400は、UNLINK要求619を受信した場合(S2300)、対象ファイルがファイル管理部430において管理されている代行対象ファイルであるかを判定する(S2310)。Figure 23 is a flowchart showing the details of the file deletion proxy execution process, which is one of the I/O proxy execution processes (S910) of the I/Oproxy daemon unit 400. When the I/Oproxy daemon unit 400 receives an UNLINK request 619 (S2300), it determines whether the target file is a proxy target file managed by the file management unit 430 (S2310).

代行対象ファイルである場合(S2310においてYES)、I/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルの情報を削除し、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックを無効化する(S2320)。次に、UNLINK応答629を送信し(S2330)、I/O代行実行処理を終了する。If the file is a proxy target file (YES in S2310), the I/Oproxy daemon unit 400 deletes the information about the file managed by thefile management unit 430, and invalidates the data block of the file cached in the shared memory area in the shared memory management unit 440 (S2320). Next, anUNLINK response 629 is sent (S2330), and the I/O proxy execution process is terminated.

代行対象ファイルでない場合(S2310においてNO)、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、直ちにUNLINK応答629を送信し(S2330)、I/O代行実行処理を終了する。If the file is not a proxy target file (NO in S2310), the I/Oproxy daemon unit 400 immediately sends anUNLINK response 629 to the I/O hook module unit 300 (S2330) and ends the I/O proxy execution process.

以上に説明したように、本発明の第1の実施の形態に係るネットワークファイル共有システムでは、個々のファイルサーバアプリケーション部140には、ファイルI/O要求発行をフックするI/Oフックモジュール部300に対応する改変を加えるのみで、実際のファイルI/Oの発行をI/O代行デーモン部400に代行させることができる。I/O代行デーモン部400は、I/Oフックモジュール部300から受け取った個々のファイルI/O要求にリトライポリシー513およびデッドライン523等の制御情報を付加してリアルタイムI/Oファイルシステム160に発行することにより、リアルタイムI/Oファイルシステム160等の新たなファイルシステムが提供する拡張機能の効果を得ることができる。As described above, in the network file sharing system according to the first embodiment of the present invention, the individual fileserver application units 140 can be made to delegate the issuance of actual file I/O to the I/Oproxy daemon unit 400 simply by making modifications to the I/Ohook module unit 300, which hooks the issuance of file I/O requests. The I/Oproxy daemon unit 400 adds control information such as a retrypolicy 513 and adeadline 523 to the individual file I/O requests received from the I/Ohook module unit 300 and issues the requests to the real-time I/O file system 160, thereby obtaining the effect of the expanded functions provided by new file systems such as the real-time I/O file system 160.

従って、本発明によれば、個々のファイルサーバアプリケーションソフトウェアの改変工数を従来技術と比較して少なく抑えて新たなファイルシステムの拡張機能に対応する方式および装置を提供することができる。Therefore, according to the present invention, it is possible to provide a method and device that supports the expansion functions of new file systems while keeping the amount of work required to modify individual file server application software to a minimum compared to conventional techniques.

また、本発明は、Sambaに限らず、例えば、HTTPDなど他のI/O特性を認識しないアプリケーションに適用して実施することが出来る。In addition, the present invention is not limited to Samba, but can also be applied to applications that do not recognize other I/O characteristics, such as HTTPD.

図24は、本発明の第2の実施の形態に係るネットワークファイル共有システムの構成例を示す。本実施例のI/O代行デーモン部2500は、I/Oパターン解析部2510を備える。I/O代行デーモン部2500は、I/Oパターン解析部2510において、代行するファイルI/O要求のI/Oパターンを解析し、ファイルブロックの先読み等の処理を行う。Figure 24 shows an example of the configuration of a network file sharing system according to the second embodiment of the present invention. The I/Oproxy daemon unit 2500 of this embodiment includes an I/Opattern analysis unit 2510. The I/Oproxy daemon unit 2500 uses the I/Opattern analysis unit 2510 to analyze the I/O pattern of the file I/O request it is acting on, and performs processing such as file block prefetching.

図25は、I/O代行デーモン部2500の機能モジュール構成を示す。本発明の実施例1のI/O代行デーモン部400の構成に加えて、I/Oパターン解析部2510を備える。I/Oパターン解析部2510は、I/O履歴管理部2512、I/Oパターン検出部2511、および、先読みI/O管理部2513からなる。Figure 25 shows the functional module configuration of the I/Oproxy daemon unit 2500. In addition to the configuration of the I/Oproxy daemon unit 400 of the first embodiment of the present invention, it includes an I/Opattern analysis unit 2510. The I/Opattern analysis unit 2510 is made up of an I/Ohistory management unit 2512, an I/Opattern detection unit 2511, and a look-ahead I/O management unit 2513.

I/O履歴管理部2511は、非同期I/O管理部450において発行される読み込みおよび書き込みのファイルI/O要求の履歴情報を管理する。I/O履歴管理部2511が管理する履歴情報には、例えば、読み書き種別、要求元PID、対象FID、対象領域オフセットおよびサイズ等がある。The I/Ohistory management unit 2511 manages history information of read and write file I/O requests issued by the asynchronous I/O management unit 450. The history information managed by the I/Ohistory management unit 2511 includes, for example, the read/write type, requestor PID, target FID, target area offset and size, etc.

I/Oパターン検出部2512は、I/O履歴管理部2511において管理される履歴情報を参照し、非同期I/O管理部450において発行されるI/Oのパターンを検出する。I/Oパターン検出部2512が検出するI/Oパターンは、例えば、ファイルI/O要求のアクセス対象となるファイルブロックのオフセットが一定サイズ間隔で増加あるいは減少している、および、ファイルブロックのアクセス時間間隔等である。The I/Opattern detection unit 2512 refers to the history information managed by the I/Ohistory management unit 2511, and detects the pattern of I/O issued by the asynchronous I/O management unit 450. The I/O pattern detected by the I/Opattern detection unit 2512 is, for example, an increase or decrease in the offset of a file block that is the access target of a file I/O request at regular size intervals, and the access time interval of the file block, etc.

従って、本発明の第2の実施の形態に係るネットワークファイル共有システムでは、本発明の第1の実施の形態では対応できない、動的に変化する制御情報(I/O特性)についても付加してリアルタイムI/Oファイルシステム160に発行することにより、リアルタイムI/Oファイルシステム160等の新たなファイルシステムが提供する拡張機能の効果を得ることができる。Therefore, in the network file sharing system according to the second embodiment of the present invention, dynamically changing control information (I/O characteristics) that cannot be handled in the first embodiment of the present invention is added and issued to the real-time I/O file system 160, thereby achieving the effect of the expansion functions provided by new file systems such as the real-time I/O file system 160.

100 ファイルサーバ
110 クライアント端末
120 ネットワーク
130 ストレージ装置
140 ファイルサーバアプリケーション部
150 VFS
160 リアルタイムI/Oファイルシステム
200 CPU
210 メモリ
220 NIC
230 HBA
240 プログラム格納領域
241 OSプログラム
242 ファイルサーバプログラム
243 I/Oフックモジュールプログラム
244 I/O代行デーモンプログラム
300 I/Oフックモジュール部
310 I/Oフック部
320 プロセス間通信部
400 I/O代行デーモン部
410 プロセス間通信部
420 セッション管理部
430 ファイル管理部
440 共有メモリ管理部
450 非同期I/O管理部
500 構成情報
510 アプリケーション構成情報
511 アプリケーション名
512 優先度
513 リトライポリシー
520 ファイル構成情報
521 ファイルパス
522 ビットレート
523 デッドライン
600 I/O代行通信プロトコル
610 CONNECT要求
611 DISCONNECT要求
612 OPEN要求
613 CLOSE要求
614 READ0要求
615 READ1要求
616 WRITE0要求
617 WRITE1要求
618 FTRUNCATE要求
619 UNLINK要求
620 CONNECT応答
621 DISCONNECT応答
622 OPEN応答
623 CLOSE応答
624 READ0応答
625 READ1応答
626 WRITE0応答
627 WRITE1応答
628 FTRUNCATE応答
629 UNLINK応答
2500 I/O代行デーモン部
2510 I/Oパターン解析部
2511 I/Oパターン検出部
2512 I/O履歴管理部
2513 先読みI/O管理部
100File server 110Client terminal 120Network 130Storage device 140 Fileserver application unit 150 VFS
160 Real-time I/O file system 200 CPU
210memory 220 NIC
230 HBA
240Program storage area 241OS program 242 File server program 243 I/O hook module program 244 I/O proxy daemon program 300 I/O hook module section 310 I/O hook section 320 Inter-process communication section 400 I/Oproxy daemon section 410Inter-process communication section 420Session management section 430File management section 440 Sharedmemory management section 450 Asynchronous I/O management section 500Configuration information 510 Application configuration information 511Application name 512Priority 513 Retrypolicy 520File configuration information 521File path 522Bit rate 523 Deadline 600 I/Oproxy communication protocol 610CONNECT request 611DISCONNECT request 612OPEN request 613CLOSE request 614READ0 request 615READ1 request 616WRITE0 request 617WRITE1 request 618FTRUNCATE request 619UNLINK request 620CONNECT response 621DISCONNECT response 622OPEN response 623CLOSE response 624READ0 response 625READ1 response 626WRITE0 response 627WRITE1 response 628FTRUNCATE response 629 UNLINK response 2500 I/O proxy daemon section 2510 I/O pattern analysis section 2511 I/O pattern detection section 2512 I/Ohistory management section 2513 Read-ahead I/O management unit

Claims (10)

Translated fromJapanese
I/O特性を認識しないファイルサーバアプリケーション部と、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識しないファイルシステムとを備えたファイルサーバにおいて、
I/O代行デーモン部、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識するファイルシステム、及び、前記ファイルサーバアプリケーション部及び前記ファイルシステムが管理するファイルの構成情報を有するメモリを備え、
前記I/O代行デーモン部は、
前記ファイルサーバアプリケーション部からI/Oを受信し、
前記受信したI/Oに、前記構成情報を参照して、前記受信したI/Oの制御情報を付加し、
該制御情報を付加したI/Oを、前記I/O特性を認識するファイルシステムへ送信することを特徴とするファイルサーバ。
A file server including a file server application unit that does not recognize I/O characteristics, and a file system that receives I/O from the file server application unit and does not recognize I/O characteristics,
an I/O proxy daemon unit, a file system that receives I/O from the file server application unit and recognizes I/O characteristics, and a memory that has configuration information of files managed by the file server application unit and the file system;
The I/O proxy daemon unit is
Receives I/O from the file server application unit;
adding control information of the received I/O to the received I/O by referring to the configuration information;
A file server that transmits the I/O with the control information added to a file system that recognizes the I/O characteristics.
請求項1に記載のファイルサーバにおいて、
前記ファイルサーバアプリケーション部は、I/Oフックモジュール部を備えており、
前記I/Oフックモジュール部は、前記ファイルサーバアプリケーション部のファイルI/O発行要求をフックし、フックしたファイルI/O発行要求からアクセス対象となるファイルの情報を取得して前記I/O代行デーモン部に渡すことを特徴とするファイルサーバ。
2. The file server according to claim 1,
The file server application unit includes an I/O hook module unit,
A file server characterized in that the I/O hook module unit hooks a file I/O issuance request of the file server application unit, obtains information about the file to be accessed from the hooked file I/O issuance request, and passes it to the I/O proxy daemon unit.
請求項2に記載のファイルサーバにおいて、
前記I/O代行デーモン部は、I/Oパターン解析部を備えており、
前記I/Oパターン解析部を用いて前記ファイルI/O発行要求のI/Oパターンを解析して取得した動的な制御情報を、前記ファイルI/O発行要求に付加することを特徴とするファイルサーバ。
3. The file server according to claim 2,
The I/O proxy daemon unit includes an I/O pattern analysis unit,
A file server characterized in that dynamic control information obtained by analyzing an I/O pattern of the file I/O issuance request using the I/O pattern analysis unit is added to the file I/O issuance request.
I/O特性を認識しないファイルサーバアプリケーション部と、I/O代行デーモン部と、前記ファイルサーバアプリケーション部からI/Oを受信する、I/O特性を認識しないファイルシステムと、前記ファイルサーバアプリケーションからI/Oを受信する、I/O特性を認識するファイルシステムと、前記ファイルサーバアプリケーション及び前記ファイルシステムが管理するファイルの構成情報を有するメモリと、を備えるファイルサーバにおけるデータ入出力方法であって、
前記ファイルサーバアプリケーション部から送信されるI/Oに、前記構成情報を参照して、該I/Oの制御情報を付加するステップ及び
前記制御情報を付加したI/Oを、前記I/O特性を認識するファイルシステムに送信するステップを含むことを特徴とするデータ入出力方法。
A data input/output method for a file server comprising: a file server application unit that does not recognize I/O characteristics; an I/O proxy daemon unit; a file system that does not recognize I/O characteristics and receives I/O from the file server application unit; a file system that recognizes I/O characteristics and receives I/O from the file server application unit; and a memory having configuration information of files managed by the file server application and the file system,
A data input/output method comprising: a step of adding control information for an I/O transmitted from the file server application unit by referring to the configuration information; and a step of transmitting the I/O with the added control information to a file system that recognizes the I/O characteristics.
請求項4に記載のデータ入出力方法において、
更に、前記ファイルサーバアプリケーション部のファイルI/O発行要求をフックするステップと、
フックしたファイルI/O発行要求からアクセス対象となるファイルの情報を取得して前記I/O代行デーモン部に渡すステップとを含むことを特徴とするデータ入出力方法。
5. The data input/output method according to claim 4,
further, hooking a file I/O issuing request of the file server application unit;
A data input/output method comprising the steps of: acquiring information about a file to be accessed from the hooked file I/O issuing request; and transferring the information to the I/O proxy daemon unit.
請求項5に記載のデータ入出力方法において、
更に、前記ファイルI/O発行要求のI/Oパターンを解析するステップと、解析して取得した動的な制御情報を、前記ファイルI/O発行要求に付加するステップとを含むことを特徴とするデータ入出力方法。
6. The data input/output method according to claim 5,
The data input/output method further comprises the steps of: analyzing an I/O pattern of the file I/O issuance request; and adding dynamic control informationobtained by the analysis to the file I/O issuance request.
ファイルサーバアプリケーションソフトウェアのファイル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フックモジュールプログラム。
An I/O hook module program that hooks a file I/O issue request of a file server application software, acquires information on a file to be accessed from the hooked file I/O issue request, and passes the information to an I/O proxy daemon program,
the I/O proxy daemon program receives an I/O request of a file server from an I/O hook module program, and issues the I/O request to a real-time I/O file system on behalf of the file server;
The I/O hook module program includes a procedure for hooking a file I/O issue request of the file server application software, and a procedure for acquiring information indicating a path name of a file to be accessed and an area to be accessed within the file from the hooked file I/O issue request.
a step ofpassing informationindicating the obtained access target area to the I/Oproxy daemon program;
An I/O hook module program for causing a computer to execute the above.
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代行デーモンプログラム。
an I/O proxy daemon program that receives an I/O request of a file server from an I/O hook module program and issues the I/O request to a real-time I/O file system on behalf of the file server ,
a step of adding file I/O control information corresponding to the file server application software and the file to be accessed toeachfile I/O issue request received from the I/Ohook module program;
a step of issuing a file I/O request with the control information added thereto tothe real-time I/O file system;
a step of passing a result of the execution of the file I/O issue request to application softwareof the file servervia the I/O hook module program;
An I/O proxy daemon program that causes a computer to execute the above.
I/Oフックモジュールプログラムから受け取った個々のファイルI/O発行要求に、ファイルサーバアプリケーションソフトウェアおよびアクセス対象ファイルに応じた制御情報を付加する手順と、
前記制御情報を付加したファイルI/O発行要求をファイルシステムに対して発行する手順と、
前記ファイルI/O発行要求の実行結果をI/Oフックモジュールプログラムを介して前記ファイルサーバアプリケーションソフトウェアに渡す手順と、
前記ファイルサーバアプリケーションソフトウェアから受け取った個々のファイルI/O発行要求がデッドラインミスを起こした場合の再試行する回数であるリトライポリシー基づいてファイルI/O発行要求の手順を、
計算機に実行させることを特徴とするI/O代行デーモンプログラム。
a step of adding control information corresponding to the file server application software and the file to be accessed to each file I/O issue request received from the I/O hook module program;
a step of issuing a file I/O request to a file system, the file I/O request having the control information added thereto;
a step of passing a result of the execution of the file I/O issue request to the file server application software via an I/O hook module program;
A procedure for issuing a file I/O request basedon a retry policy, which is the number of times to retry when each file I/O request received from the file server application software causes a deadline miss,
An I/O proxy daemon program that is executed by a computer.
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代行デーモンプログラム。
a step of adding control information corresponding to the file server application software and the file to be accessed to each file I/O issue request received from the I/O hook module program;
a step of issuing a file I/O request to a file system, the file I/O request having the control information added thereto;
a step of passing a result of the execution of the file I/O issue request to the file server application software via an I/O hook module program;
receiving information regarding a file I/O issuance request from an I/O hook module program of the file server application software;
a step of adding control information based on configuration information to a file I/O request from the file server application software and asynchronously issuing the request to a real-time I/O file system;
A procedure for managing file I/O requests for reading and writing that are issued asynchronously, and a procedure for analyzing I/O patterns by referring to the managed history information;
adding dynamic control information based on the analyzed pattern to the I/O issue request and issuing the I/O issue request to the real-time I/O file system;
2. An I/O proxy daemon program for causing a computer to execute the above.
JP2012059548A2012-03-162012-03-16 File server, data input/output method, I/O hook module program, and I/O proxy daemon programActiveJP5723812B2 (en)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
JP2012059548AJP5723812B2 (en)2012-03-162012-03-16 File server, data input/output method, I/O hook module program, and I/O proxy daemon program

Applications Claiming Priority (1)

Application NumberPriority DateFiling DateTitle
JP2012059548AJP5723812B2 (en)2012-03-162012-03-16 File server, data input/output method, I/O hook module program, and I/O proxy daemon program

Publications (2)

Publication NumberPublication Date
JP2013196066A JP2013196066A (en)2013-09-30
JP5723812B2true JP5723812B2 (en)2015-05-27

Family

ID=49394999

Family Applications (1)

Application NumberTitlePriority DateFiling Date
JP2012059548AActiveJP5723812B2 (en)2012-03-162012-03-16 File server, data input/output method, I/O hook module program, and I/O proxy daemon program

Country Status (1)

CountryLink
JP (1)JP5723812B2 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
KR20170008153A (en)*2015-07-132017-01-23삼성전자주식회사A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
KR20180026327A (en)*2016-09-022018-03-12삼성전자주식회사Automatic stream detection and assignment algorithm
US10592171B2 (en)2016-03-162020-03-17Samsung Electronics Co., Ltd.Multi-stream SSD QoS management
US10656838B2 (en)2015-07-132020-05-19Samsung Electronics Co., Ltd.Automatic stream detection and assignment algorithm
US10732905B2 (en)2016-02-092020-08-04Samsung Electronics Co., Ltd.Automatic I/O stream selection for storage devices
US10739995B2 (en)2016-10-262020-08-11Samsung Electronics Co., Ltd.Method of consolidate data streams for multi-stream enabled SSDs
US10824576B2 (en)2015-07-132020-11-03Samsung Electronics Co., Ltd.Smart I/O stream detection based on multiple attributes
US10866905B2 (en)2016-05-252020-12-15Samsung Electronics Co., Ltd.Access parameter based multi-stream storage device access
US10901907B2 (en)2017-10-192021-01-26Samsung Electronics Co., Ltd.System and method for identifying hot data and stream in a solid-state drive
US10949087B2 (en)2018-05-152021-03-16Samsung Electronics Co., Ltd.Method for rapid reference object storage format for chroma subsampled images
US11194710B2 (en)2017-04-252021-12-07Samsung Electronics Co., Ltd.Garbage collection—automatic data placement
US11449256B2 (en)2018-05-152022-09-20Samsung Electronics Co., Ltd.Method for accelerating image storing and retrieving differential latency storage devices based on access rates
US11461010B2 (en)2015-07-132022-10-04Samsung Electronics Co., Ltd.Data property-based data placement in a nonvolatile memory device
US11507326B2 (en)2017-05-032022-11-22Samsung Electronics Co., Ltd.Multistreaming in heterogeneous environments

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP6165580B2 (en)*2013-10-042017-07-19株式会社 日立産業制御ソリューションズ Content distribution apparatus and content distribution method for content distribution apparatus
JP7100260B2 (en)2018-11-212022-07-13富士通株式会社 Information processing equipment and information processing programs
CN110750242B (en)*2019-09-192023-05-02北京字节跳动网络技术有限公司File deployment method, system, medium and electronic equipment

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP3335801B2 (en)*1995-07-052002-10-21株式会社日立製作所 Information processing system enabling access to different types of files and control method thereof
JP4057201B2 (en)*1999-09-162008-03-05富士通株式会社 High-speed data exchange method between different computers and extent extraction / conversion program recording medium
JP2002196960A (en)*2000-12-252002-07-12Hitachi Ltd File input / output control method, file management server, and parallel computer system
JP5056529B2 (en)*2007-03-282012-10-24富士通株式会社 Access control program

Cited By (25)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US11461010B2 (en)2015-07-132022-10-04Samsung Electronics Co., Ltd.Data property-based data placement in a nonvolatile memory device
US11392297B2 (en)2015-07-132022-07-19Samsung Electronics Co., Ltd.Automatic stream detection and assignment algorithm
US10509770B2 (en)2015-07-132019-12-17Samsung Electronics Co., Ltd.Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
KR20170008153A (en)*2015-07-132017-01-23삼성전자주식회사A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10656838B2 (en)2015-07-132020-05-19Samsung Electronics Co., Ltd.Automatic stream detection and assignment algorithm
US11249951B2 (en)2015-07-132022-02-15Samsung Electronics Co., Ltd.Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
EP3118745B1 (en)*2015-07-132020-09-16Samsung Electronics Co., Ltd.A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10824576B2 (en)2015-07-132020-11-03Samsung Electronics Co., Ltd.Smart I/O stream detection based on multiple attributes
US10732905B2 (en)2016-02-092020-08-04Samsung Electronics Co., Ltd.Automatic I/O stream selection for storage devices
US12073125B2 (en)2016-03-162024-08-27Samsung Electronics Co., Ltd.Multi-stream SSD QOS management
US11586392B2 (en)2016-03-162023-02-21Samsung Electronics Co., Ltd.Multi-stream SSD QoS management
US10592171B2 (en)2016-03-162020-03-17Samsung Electronics Co., Ltd.Multi-stream SSD QoS management
US10866905B2 (en)2016-05-252020-12-15Samsung Electronics Co., Ltd.Access parameter based multi-stream storage device access
KR20180026327A (en)*2016-09-022018-03-12삼성전자주식회사Automatic stream detection and assignment algorithm
US11048411B2 (en)2016-10-262021-06-29Samsung Electronics Co., Ltd.Method of consolidating data streams for multi-stream enabled SSDs
US10739995B2 (en)2016-10-262020-08-11Samsung Electronics Co., Ltd.Method of consolidate data streams for multi-stream enabled SSDs
US11194710B2 (en)2017-04-252021-12-07Samsung Electronics Co., Ltd.Garbage collection—automatic data placement
US11630767B2 (en)2017-04-252023-04-18Samsung Electronics Co., Ltd.Garbage collection—automatic data placement
US12332777B2 (en)2017-04-252025-06-17Samsung Electronics Co., Ltd.Garbage collection—automatic data placement
US11507326B2 (en)2017-05-032022-11-22Samsung Electronics Co., Ltd.Multistreaming in heterogeneous environments
US11847355B2 (en)2017-05-032023-12-19Samsung Electronics Co., Ltd.Multistreaming in heterogeneous environments
US10901907B2 (en)2017-10-192021-01-26Samsung Electronics Co., Ltd.System and method for identifying hot data and stream in a solid-state drive
US11449256B2 (en)2018-05-152022-09-20Samsung Electronics Co., Ltd.Method for accelerating image storing and retrieving differential latency storage devices based on access rates
US10949087B2 (en)2018-05-152021-03-16Samsung Electronics Co., Ltd.Method for rapid reference object storage format for chroma subsampled images
US11947826B2 (en)2018-05-152024-04-02Samsung Electronics Co., Ltd.Method for accelerating image storing and retrieving differential latency storage devices based on access rates

Also Published As

Publication numberPublication date
JP2013196066A (en)2013-09-30

Similar Documents

PublicationPublication DateTitle
JP5723812B2 (en) File server, data input/output method, I/O hook module program, and I/O proxy daemon program
US8407448B1 (en)Shared storage I/O elimination through mapping client integration into a hypervisor
US8966476B2 (en)Providing object-level input/output requests between virtual machines to access a storage subsystem
EP2879040B1 (en)Data storage method, data storage apparatus, and storage device
CN100405304C (en) Implementation method of high-speed solid-state storage device based on storage area network
US9811276B1 (en)Archiving memory in memory centric architecture
US8966188B1 (en)RAM utilization in a virtual environment
US9959074B1 (en)Asynchronous in-memory data backup system
CN102708060B (en)Method, device and system for accessing image files
US20090019223A1 (en)Method and systems for providing remote strage via a removable memory device
US8812677B2 (en)Data processing method and apparatus for remote storage system
US8595454B1 (en)System and method for caching mapping information for off-host backups
EP3985522B1 (en)System, device and method for indirect addressing
TW201516658A (en)Method and apparatus for performing transparent mass storage backups and snapshots
JPWO2009069326A1 (en) Network boot system
US11983115B2 (en)System, device and method for accessing device-attached memory
US8612495B2 (en)Computer and data management method by the computer
US10303556B1 (en)Modifiable volume snapshots
CN115878580A (en) A log management method and device
TWI564803B (en)Systems and methods for storage virtualization
US12379859B2 (en)Storage controller mapping physical function to virtual machine and method of operating electronic system including the same
Ostroukh et al.Research of performance Linux kernel file systems
WangComputer Memory and Storage
TWI460584B (en)Server, host and method for reading base image through storage area network
CN118131990A (en) Data processing method and computing device in Ordered log mode

Legal Events

DateCodeTitleDescription
A621Written request for application examination

Free format text:JAPANESE INTERMEDIATE CODE: A621

Effective date:20140409

A977Report on retrieval

Free format text:JAPANESE INTERMEDIATE CODE: A971007

Effective date:20150128

A131Notification of reasons for refusal

Free format text:JAPANESE INTERMEDIATE CODE: A131

Effective date:20150210

A521Written amendment

Free format text:JAPANESE INTERMEDIATE CODE: A523

Effective date:20150302

TRDDDecision of grant or rejection written
A01Written decision to grant a patent or to grant a registration (utility model)

Free format text:JAPANESE INTERMEDIATE CODE: A01

Effective date:20150324

A61First payment of annual fees (during grant procedure)

Free format text:JAPANESE INTERMEDIATE CODE: A61

Effective date:20150330

R150Certificate of patent or registration of utility model

Ref document number:5723812

Country of ref document:JP

Free format text:JAPANESE INTERMEDIATE CODE: R150


[8]ページ先頭

©2009-2025 Movatter.jp