
























本発明は、ネットワークファイル共有サービスを提供するファイルサーバアプリケーションソフトウェアに関し、制御情報付加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で使用する技術が開示されている。
一方、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 in
なぜならば、特許文献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.
前記従来の技術では、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.
以下、本発明を実施するための形態について、図面を用いて説明する。なお、各図面で同様の構成には同じ符号を付しその説明を省略する。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 a
  ファイルサーバ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)等である。The
  ファイルサーバアプリケーション部140は、ファイルサーバ100上に同一あるいは異なる種類のものが複数存在してもよい。ファイルサーバアプリケーション部140のVFS150に対するI/O要求は、I/Oフックモジュール部300によってフックされる。There may be multiple file
  VFS150は、ファイルサーバ100のOSが提供するファイルシステムインタフェースモジュールであり、例えば、open(), close(), read(), write()等のシステムコールインタフェースを提供する、I/O特性を認識しないファイルシステムである。VFS150 is a file system interface module provided by the OS of the
  リアルタイムI/Oファイルシステム160は、リアルタイムI/O制御機能を備えたファイルシステムモジュールであり、例えば、個々のI/O要求にデッドライン情報等の制御情報を付加してI/O制御の精度を高めることにより、I/O特性を認識するファイルシステムである。The real-time I/
  I/O代行デーモン部400は、I/Oフックモジュール部300を介してファイルサーバ140のI/O要求を受け取り、ファイルサーバ140に代行してリアルタイムI/Oファイルシステム160にI/O要求を発行する。I/O代行デーモン部400は、構成情報500に基づき、個々のI/Oにデッドライン情報等の制御情報を付加する。The I/O
  クライアント端末110は、例えば、文書編集や画像閲覧機能を備えるPCや携帯端末等である。クライアント端末110は、ネットワーク120を介してファイルサーバ140上のデータファイルにアクセスする。クライアント端末110は、同一あるいは異なる種類のものが複数存在してもよい。The
  ネットワーク120は、例えば、LANおよびWAN等のIP(Internet Protocol)ネットワークである。ネットワーク120は、ファイルサーバ100とクライアント端末110を接続する。The
  ストレージ装置130は、ファイルサーバ100の補助記憶装置であり、例えば、HDD(Hard Disk Drive)やSSD(Solid State
Drive)、および、HDDやSSDを複数備えるRAID(Redundant Arrays of Inexpensive Independent
Disks)装置等である。ストレージ装置130には、文書や画像データ等のデータファイルが格納される。  The
 RAID (Redundant Arrays of Inexpensive Independent Drives) with multiple HDDs and SSDs
 The
  図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 the
 The computer system is made up of a host interface card (HBA) 220, a host bus adapter (HBA) 230, and a
  CPU200は、プログラム格納領域240に格納されるプログラムをメモリ210上にロードして実行することにより、ファイルサーバ100全体を制御する。CPU200は、ファイルサーバ100上に複数存在してもよく、シングルコアプロセッサであってもマルチコアプロセッサであってもよい。The
  メモリ210は、計算機100の主記憶装置であり、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static  Random Access Memory)等を用いて構成される。メモリ210には、CPU200が実行しているOSおよびアプリケーションソフトウェアのプログラムコードおよびデータが格納される。
  NIC220は、ファイルサーバ100とネットワーク120を接続するI/Oインタフェースデバイスであり、例えば、イーサネット(登録商標)、ミリネット、インフィニバンド等の接続機能を提供する。The
  HBA230、ファイルサーバ100とストレージ装置130を接続するI/Oインタフェースデバイスであり、例えば、SCSI(Small Computer System Interface)、SAS(Serial  Attached SCSI)、FC(Fibre  Channel)等の接続機能を提供する。
  プログラム格納領域240は、不揮発性の記憶領域であり、例えば、ROM(Read Only Memory)やフラッシュメモリ等を用いて構成される。プログラム格納領域240には、OSプログラム241、ファイルサーバプログラム242、I/Oフックモジュールプログラム243、および、I/O代行デーモンプログラム244が格納される。なお、これらのプログラムの一部あるいは全部が、ストレージ装置130上に格納されていてもよい。この場合、CPU200は、HBA230を介してストレージ装置130からそれぞれのプログラムをメモリ210にロードして実行する。The
  図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/O
  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/
  プロセス間通信部320は、ファイルサーバアプリケーション部140とI/O代行デーモン部400との間のプロセス間通信機能を提供する。プロセス間通信部320は、I/Oフック部310でフックしたファイルI/O要求に関する情報をI/O代行デーモン部400へ送り、実行結果をI/O代行デーモン部400より受信する。プロセス通信部320は、プロセス間通信機能を、例えば、UNIX(登録商標)ドメインソケットを用いて実装してもよく、POSIX(Portable Operating System Interface)メッセージキューを用いて実装してもよい。The
  図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/O
  プロセス間通信部410は、I/Oフックモジュール部300のプロセス間通信部320と同様の機構により、I/O代行デーモン部400とファイルサーバアプリケーション部140との間のプロセス間通信機能を提供する。プロセス間通信部410は、ファイルサーバアプリケーション部140のI/Oフックモジュール部300よりファイルI/O要求に関する情報を受け取る。The
  セッション管理部420は、I/O代行デーモン部400とファイルサーバアプリケーション部140との通信をセッションとして扱い、ファイルサーバアプリケーション部140の代理で開いているファイル等を管理する。セッション管理部420は、ファイルサーバアプリケーション部140のプロセスの終了を検出した場合に、代理で開いているファイルを閉じる等の後片付け処理を行う。The
  ファイル管理部430は、I/O代行デーモン部400が開いているファイル、および、当該ファイルのデータ領域の一部であるファイルブロックのうち、共有メモリ管理部440においてキャッシュしているファイルブロックを管理する。The
  共有メモリ管理部440は、I/O代行デーモン部400が、ファイルサーバ100のメモリ210上に確保した共有メモリ領域を管理する。I/O代行デーモン部400は、メモリ210上に確保した共有メモリ領域を、ファイルサーバアプリケーション部140と共有する。I/O代行デーモン部400とファイルサーバアプリケーション部140は、共有メモリ領域をI/Oバッファとして使用することにより、リアルタイムI/Oファイルシステム160に対して読み書きするデータの受け渡しを行う。The shared
  非同期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/
  図5は、構成情報500の詳細を示す。構成情報500は、アプリケーション構成情報510、および、ファイル構成情報520からなる。構成情報500は、コンフィグファイルとしてストレージ装置130に格納されているものをI/O代行デーモン部400の起動時に読み込んでもよく、I/O代行デーモンプログラム244の一部として組み込まれていてもよい。Figure 5 shows details of
  アプリケーション構成情報510は、アプリケーション名511、優先度512、リトライポリシー513を格納するテーブルである。アプリケーション名511は、I/O代行デーモン部400と連携するファイルサーバアプリケーション部140のプロセス名やバイナリファイル名である。The
  優先度512は当該ファイルサーバアプリケーション部140のI/O実行優先度であり、例えば、優先度の値の高いファイルサーバアプリケーション部140から受け取ったファイルI/O要求は、優先度の低いファイルサーバアプリケーション部140から受け取ったファイルI/O要求に比べて、I/O代行デーモン部400によって、優先的に処理される。The
  リトライポリシー513は、当該ファイルサーバアプリケーション部140から受け取った個々のファイルI/O要求がデッドラインミスを起こした場合に、ファイルI/Oデーモン部400が再試行する回数等を格納する。The retry
  ファイル構成情報520は、ファイルパス521、ビットレート522、デッドライン523の値を格納するテーブルである。ファイルパス521は、I/O代行デーモン部400がアクセス対象とするファイルのパスである。ビットレート522は、当該ファイルの読み込みおよび書き込みビットレートである。デッドライン523は、当該ファイルに対する個々のファイルI/O要求に付加するデッドライン情報である。なお、ファイルパス521は、例えば、絶対パスによって単一のファイルを一意に識別するものであってもよく、正規表現を含むパス名によって複数のファイルを識別すものであってもよい。
  図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/O
  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 a
  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 a
  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においてセッションとして管理する。The
  CONNECT応答620は、CONNECT要求610に対する応答として使用される。CONNECT応答620には、CONNECT要求610の実行結果(RESULT)と、I/O代行デーモン部400が共有メモリ管理部440において管理している共有メモリ領域の情報、例えば、共有メモリ名(SHM NAME)と、共有メモリ領域サイズ(SHM SIZE)が含まれる。CONNECT応答620を受け取ったI/Oフックモジュール部300は、共有メモリ領域をファイルサーバアプリケーション部140のプロセスメモリ空間にマップする。The
  DISCONNECT要求611は、I/Oフックモジュール部300がI/O代行デーモン部400との連携を終了する場合に使用される。DISCONNECT要求611には、プロセス識別子が含まれる。DISCONNECT要求610を受け取ったI/O代行デーモン部400は、対応するファイルサーバアプリケーション部140のセッションの後片付け処理を行う。The
  DISCONNECT応答621は、DISCONNECT要求611に対する応答として使用される。DISCONNECT応答621には、DISCONNECT要求611の実行結果が含まれる。The
  OPEN要求612は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルオープン処理をフックした場合に使用される。OPEN要求612には、プロセス識別子と、ファイルサーバアプリケーション部140内でファイルを一意に示すファイル識別子、例えば、ファイルID(FID)と、読み出しのみ、あるいは、読み書きのオープンモードを示すフラグ(FLAGS)と、ファイルのパス名(PATH)が含まれる。OPEN要求612を受け取ったI/O代行デーモン部400は、当該ファイルを指定されたモードでオープンし、ファイル管理部430において管理する。The
  OPEN応答622は、OPEN要求612に対する応答として使用される。OPEN応答622には、OPEN要求612の実行結果と、ファイル識別子が含まれる。The
  CLOSE要求613は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルクローズ処理をフックした場合に使用される。CLOSE要求613には、ファイルサーバアプリケーション部140の識別子と、ファイル識別子が含まれる。CLOSE要求613を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルをクローズする。The
  CLOSE応答623は、CLOSE要求613に対する応答して使用される。CLOSE応答623には、CLOSE要求613の実行結果と、ファイル識別子が含まれる。The
  READ0要求614は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルリード処理をフックした場合に使用される。The
  READ0要求614には、プロセス識別子と、読み込み対象ファイルを示すファイル識別子と、ファイルサーバアプリケーション部140内でI/O代行デーモン部400に代行させるファイルI/O要求を一意に識別するI/O識別子(IOID)と、対象ファイル内の読み込み位置を示すオフセット(OFFSET)とサイズ(SIZE)が含まれる。The
  READ0要求614を受け取ったI/O代行デーモン部400は、共有メモリ管理部440においてI/Oバッファメモリとなる共有メモリ領域を割り当て、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、割り当てたI/Oバッファメモリに当該ファイルデータを読み込む。When the I/O
  READ0応答624は、READ0要求614に対する応答として使用される。READ0応答624には、READ0要求614の実行結果と、ファイル識別子と、I/O識別子と、読み込んだデータが格納されているI/Oバッファメモリを示す共有メモリ領域内のオフセット(SHM OFFSET)とサイズが含まれる。The
  READ1要求615は、I/Oフックモジュール部300が、READ0応答624を受け取り、例えば、クライアント端末110に送信し終わった等、共有メモリ領域に読み込まれたデータの使用を完了した場合に使用される。READ1要求615には、プロセス識別子と、ファイル識別子と、I/O識別子が含まれる。READ1要求615を受け取ったI/O代行デーモン部400は、共有メモリ部450において当該ファイルI/O要求のために割り当てたI/Oバッファメモリを開放する。The
  READ1応答625は、READ1要求615に対する応答として使用される。READ1応答625には、READ1要求625の実行結果と、ファイル識別子と、I/O識別子が含まれる。The
  WRITE0要求616は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルライト処理をフックした場合に使用される。WRITE0要求616には、プロセス識別子と、ファイル識別子と、I/O識別子と、対象ファイル内の書き込み位置を示すオフセットとサイズが含まれる。WRITE0要求616を受け取ったI/O代行デーモン部400は、共有メモリ管理部440においてI/Oバッファメモリとなる共有メモリ領域を割り当てる。The
  WRITE0応答626は、WRITE0要求616に対する応答として使用される。WRITE0応答626には、WRITE0要求616の実行結果と、ファイル識別子と、I/O識別子と、I/O代行デーモン部400が割り当てたI/Oバッファメモリを示す共有メモリ領域内のオフセットとサイズが含まれる。The
  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バッファメモリに格納されたデータを当該ファイルに書き込む。The
  WRITE1応答627は、WRITE1要求617の応答として使用される。WRITE1応答627には、WRITE1要求617の実行結果と、ファイル識別子と、I/O識別子と、実際に書き込まれたサイズが含まれる。The
  FTRUNCATE要求618は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイルサイズ変更処理をフックした場合に使用される。FTRUNCATE要求618には、プロセス識別子と、ファイル識別子と、I/O識別子と、当該ファイルの変更後のファイルサイズが含まれる。The
  FTRUNCATE要求618を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルのサイズを変更し、非同期I/O管理部450において、ファイルサイズ変更要求をリアルタイムI/Oファイルシステム160に対して発行する。ファイルサイズが縮小される場合、I/O代行デーモン部400は、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックのうち、ファイルサイズの変更により不要となる部分を無効化する。The I/O
  FTRUNCATE応答628は、FTRUNCATE要求618の応答として使用される。FTRUNCATE応答628には、FTRUNCATE応答628の実行結果と、フィル識別子と、I/O識別子が含まれる。The
  UNLINK要求619は、I/Oフックモジュール部300が、ファイルサーバアプリケーション部140のファイル削除処理をフックした場合に使用される。UNLINK要求619には、プロセス識別子と、ファイル識別子と、削除対象のファイルのパス名が含まれる。UNLINK要求619を受け取ったI/O代行デーモン部400は、ファイル管理部430において管理されている当該ファイルの情報を削除し、共有メモリ管理部440において共有メモリ領域にキャッシュされている当該ファイルのデータブロックを無効化する。The
  UNLINK応答629は、UNLINK要求619の応答として使用される。UNLINK応答629には、UNLINK要求619の実行結果と、ファイル識別子が含まれる。The
  以下、フローチャートを用いてI/Oフックモジュール部300、および、I/O代行デーモン部400の処理を説明する。The processing of the I/O
  図7は、I/Oフックモジュール部300の処理を示すフローチャートである。I/Oフックモジュール部300は、ファイルサーバアプリケーション部140の開始時に合わせて開始される。I/Oフックモジュール部300は、開始時にFIDテーブル等の初期化処理を行う(S700)。Figure 7 is a flowchart showing the processing of the I/O
  次に、連携するI/O代行デーモン部400に対して、自身のファイルサーバアプリケーション部140のプロセスID(PID)CONNECT要求610を送信し(S710)、その応答としてCONNECT応答620を受信する(S720)。I/Oフックモジュール部300は、CONNECT応答620に含まれる共有メモリ領域の情報をもとに、当該共有メモリを自身のプロセス空間にマップする(S730)。Next, the I/O
  I/Oフックモジュール部300は、ファイルサーバアプリケーション部140が終了するまで、I/Oフック処理を繰り返す(S740)。The I/O
  I/Oフックモジュール部300は、ファイルサーバアプリケーション部140が終了する際に、I/O代行処理の終了を通知するためにI/O代行デーモン部400に対してDISCONNECT要求611を送信する(S750)。最後に、I/Oフックモジュール部300は、DISCONNECT応答S621を受信し(S760)、自身の処理を終了する。When the file
  図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/O
  代行対象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/O
  代行対象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/O
  図9は、I/O代行デーモン部400の処理を示すフローチャートである。I/O代行デーモン部400は、例えば、デーモンプロセスとして起動され、最初に、共有メモリ管理部440において共有メモリ領域を確保する等の初期化処理を行う(S900)。Figure 9 is a flowchart showing the processing of the I/O
  初期化処理を完了すると、I/O代行デーモン部400は、自身のプロセスを終了するまで、I/Oフックモジュール部300からのI/O代行要求の処理を行うI/O代行実行処理を繰り返す(S910)。When the initialization process is completed, the I/O
  図10は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルサーバアプリケーション部140との連携を開始する処理の詳細を示すフローチャートである。Figure 10 is a flowchart showing the details of the process of starting collaboration with the file
  I/O代行デーモン部400は、CONNECT要求610を受信した場合(S1000)、要求に含まれるファイルサーバアプリケーション部140のプロセス識別子をセッション管理部420においてセッション情報として登録する(S1010)。次に、I/O代行デーモン400は、I/Oフックモジュール部300に対して、実行結果および共有メモリ領域の情報等を含むCONNECT応答620を送信し(S1020)、I/O代行実行処理を終了する。When the I/O
  図11は、I/O代行デーモン部400のI/O代行実行処理(S910)のひとつである、ファイルサーバアプリケーション部140との連携を終了する処理の詳細を示すフローチャートである。Figure 11 is a flowchart showing the details of the process of terminating collaboration with the file
  I/O代行デーモン部400は、DISCONNECT要求611を受信した場合(S1100)、要求に含まれるプロセス識別子を含むセッション情報をセッション管理部420において削除する(S1110)。次に、I/O代行デーモン部400は、I/Oフックモジュール300に対して、実行結果を含むDISCONNECT応答621を送信し(S1120)、I/O代行実行処理を終了する。When the I/O
  図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/O
  ファイルオープンに成功した場合(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/O
  次に、I/Oフックモジュール部300は、I/O代行モジュール部400からOPEN応答622を受信し(S1230)、応答に含まれる実行結果が成功であったかを判定する(S1240)。実行結果が失敗であった場合(S1240においてNO)、自身のファイルオープン処理には成功しているため、成功をファイルサーバアプリケーション部140に返す。Next, the I/O
  実行結果が成功であった場合(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/O
  図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/O
  ファイルオープンに成功した場合(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/O
  図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/O
  代行対象ファイルでない場合(S1400においてNO)、I/Oフックモジュール部300は、自身でオープンしたファイルをクローズし(S1440)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1400), the I/O
  代行対象ファイルである場合(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/O
  図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/O
  次に、I/O代行デーモン部400は、ファイル管理部430において、登録されている対応するファイル情報を削除し(S1520)する。次に、I/O代行デーモン部400は、CLOSE応答623を送信(S1530)し、I/O代行実行処理を終了する。Next, the I/O
  図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/O
  代行対象ファイルでない場合(S1600においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルリード処理を実行し(S1610)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1600), the I/O
  代行対象ファイルである場合(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/O
  次に、I/Oフックモジュール部300は、I/O代行モジュール部400からREAD0応答624を受信し(S1630)、応答に含まれるSHM OFFSETおよびSIZEで示される共有メモリ領域に格納されたファイルデータを読み出す(S1640)。Next, the I/O
  ここで、例えば、ファイルデータのストレージ装置130からの読み込みおよびネットワーク120への送信を一度に行うsendfile()をフック対象にしている場合は、共有メモリ領域に格納されたファイルデータを直接ネットワーク120へ送信すればよい。通常のread()をフックした場合は、共有メモリ領域に格納されたファイルデータをファイルサーバアプリケーション140が読み込みバッファに指定したメモリ領域にコピーすればよい。Here, for example, if the hook target is sendfile(), which reads file data from
  次に、I/Oフックモジュール部300は、I/O代行デーモン部400に対して、READ0要求614送信時と同一のIOID含むREAD1要求615を送信し(S1650)、共有メモリ領域に格納されたファイルデータの使用を完了したことを通知する。Next, the I/O
  次に、I/Oフックモジュール部300は、I/O代行デーモン部400からREAD1応答625を受信し(S1660)、結果をファイルサーバアプリケーション部140に返す。Next, the I/O
  図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/O
  次に、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、割り当てた共有メモリ領域に当該ファイルデータを読み込む(S1720)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、ファイルデータを読み込んだ共有メモリ領域の情報を含むREAD0応答624を送信する(S1730)。Next, the asynchronous I/
  次に、I/O代行デーモン部400は、READ1要求615を受信し(S1740)、共有メモリ管理部440においてI/Oバッファメモリとして割り当てた共有メモリ領域を解放する(S1750)。次に、I/O代行デーモン部400は、I/Oフックモジュール部300に対して、READ1応答625を送信し(S1760)、I/O代行実行処理を終了する。Next, the I/O
  図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/O
  代行対象ファイルでない場合(S1800においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルライト処理を実行し(S1810)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S1800), the I/O
  代行対象ファイルである場合(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/O
  次に、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/O
  次に、I/Oフックモジュール部300は、I/O代行デーモン部400からWRITE1応答627を受信し(S1860)、結果をファイルサーバアプリケーション部140に返す。Next, the I/O
  図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/O
  次に、I/O代行デーモン部400は、WRITE1要求617を受信し(S1930)、非同期I/O管理部450において、構成情報500に基づく制御情報を付加したファイルI/O要求をリアルタイムI/Oファイルシステム160に対して発行し、共有メモリ領域に格納された当該ファイルデータを書き込む(S1940)。次に、I/O代行デーモン部400は、共有メモリ管理部440において割り当てた共有メモリ領域を解放する(S1950)。Next, the I/O
  次に、I/O代行デーモン部400は、I/Oフックモジュール300に対して、WRITE1応答627を送信し(S1960)、I/O代行実行処理を終了する。Next, the I/O
  図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/O
  代行対象ファイルでない場合(S2000においてNO)、I/Oフックモジュール部300は、VFS150が提供するVFS関数を実行することによりファイルサイズ変更処理を実行し(S2010)、結果をファイルサーバアプリケーション部140に返す。If the file is not a proxy target file (NO in S2000), the I/O
  代行対象ファイルである場合(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/O
  図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/O
  ファイルサイズ縮小である場合(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/O
  ファイルサイズ縮小でない場合(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/O
  図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/O
  図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/O
  代行対象ファイルである場合(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/O
  代行対象ファイルでない場合(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/O
  以上に説明したように、本発明の第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 file
従って、本発明によれば、個々のファイルサーバアプリケーションソフトウェアの改変工数を従来技術と比較して少なく抑えて新たなファイルシステムの拡張機能に対応する方式および装置を提供することができる。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/O
  図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/O
  I/O履歴管理部2511は、非同期I/O管理部450において発行される読み込みおよび書き込みのファイルI/O要求の履歴情報を管理する。I/O履歴管理部2511が管理する履歴情報には、例えば、読み書き種別、要求元PID、対象FID、対象領域オフセットおよびサイズ等がある。The I/O
  I/Oパターン検出部2512は、I/O履歴管理部2511において管理される履歴情報を参照し、非同期I/O管理部450において発行されるI/Oのパターンを検出する。I/Oパターン検出部2512が検出するI/Oパターンは、例えば、ファイルI/O要求のアクセス対象となるファイルブロックのオフセットが一定サイズ間隔で増加あるいは減少している、および、ファイルブロックのアクセス時間間隔等である。The I/O
  従って、本発明の第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/
  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管理部
  100
 160 Real-time I/
 210
 230 HBA
 240
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| JP2012059548AJP5723812B2 (en) | 2012-03-16 | 2012-03-16 | File server, data input/output method, I/O hook module program, and I/O proxy daemon program | 
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| JP2012059548AJP5723812B2 (en) | 2012-03-16 | 2012-03-16 | File server, data input/output method, I/O hook module program, and I/O proxy daemon program | 
| Publication Number | Publication Date | 
|---|---|
| JP2013196066A JP2013196066A (en) | 2013-09-30 | 
| JP5723812B2true JP5723812B2 (en) | 2015-05-27 | 
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| JP2012059548AActiveJP5723812B2 (en) | 2012-03-16 | 2012-03-16 | File server, data input/output method, I/O hook module program, and I/O proxy daemon program | 
| Country | Link | 
|---|---|
| JP (1) | JP5723812B2 (en) | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| KR20170008153A (en)* | 2015-07-13 | 2017-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-02 | 2018-03-12 | 삼성전자주식회사 | Automatic stream detection and assignment algorithm | 
| US10592171B2 (en) | 2016-03-16 | 2020-03-17 | Samsung Electronics Co., Ltd. | Multi-stream SSD QoS management | 
| US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm | 
| US10732905B2 (en) | 2016-02-09 | 2020-08-04 | Samsung Electronics Co., Ltd. | Automatic I/O stream selection for storage devices | 
| US10739995B2 (en) | 2016-10-26 | 2020-08-11 | Samsung Electronics Co., Ltd. | Method of consolidate data streams for multi-stream enabled SSDs | 
| US10824576B2 (en) | 2015-07-13 | 2020-11-03 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes | 
| US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access | 
| US10901907B2 (en) | 2017-10-19 | 2021-01-26 | Samsung Electronics Co., Ltd. | System and method for identifying hot data and stream in a solid-state drive | 
| US10949087B2 (en) | 2018-05-15 | 2021-03-16 | Samsung Electronics Co., Ltd. | Method for rapid reference object storage format for chroma subsampled images | 
| US11194710B2 (en) | 2017-04-25 | 2021-12-07 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement | 
| US11449256B2 (en) | 2018-05-15 | 2022-09-20 | Samsung Electronics Co., Ltd. | Method for accelerating image storing and retrieving differential latency storage devices based on access rates | 
| US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device | 
| US11507326B2 (en) | 2017-05-03 | 2022-11-22 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| JP6165580B2 (en)* | 2013-10-04 | 2017-07-19 | 株式会社 日立産業制御ソリューションズ | Content distribution apparatus and content distribution method for content distribution apparatus | 
| JP7100260B2 (en) | 2018-11-21 | 2022-07-13 | 富士通株式会社 | Information processing equipment and information processing programs | 
| CN110750242B (en)* | 2019-09-19 | 2023-05-02 | 北京字节跳动网络技术有限公司 | File deployment method, system, medium and electronic equipment | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| JP3335801B2 (en)* | 1995-07-05 | 2002-10-21 | 株式会社日立製作所 | Information processing system enabling access to different types of files and control method thereof | 
| JP4057201B2 (en)* | 1999-09-16 | 2008-03-05 | 富士通株式会社 | High-speed data exchange method between different computers and extent extraction / conversion program recording medium | 
| JP2002196960A (en)* | 2000-12-25 | 2002-07-12 | Hitachi Ltd | File input / output control method, file management server, and parallel computer system | 
| JP5056529B2 (en)* | 2007-03-28 | 2012-10-24 | 富士通株式会社 | Access control program | 
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device | 
| US11392297B2 (en) | 2015-07-13 | 2022-07-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm | 
| US10509770B2 (en) | 2015-07-13 | 2019-12-17 | Samsung 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-13 | 2017-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-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm | 
| US11249951B2 (en) | 2015-07-13 | 2022-02-15 | Samsung 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-13 | 2020-09-16 | Samsung 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-13 | 2020-11-03 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes | 
| US10732905B2 (en) | 2016-02-09 | 2020-08-04 | Samsung Electronics Co., Ltd. | Automatic I/O stream selection for storage devices | 
| US12073125B2 (en) | 2016-03-16 | 2024-08-27 | Samsung Electronics Co., Ltd. | Multi-stream SSD QOS management | 
| US11586392B2 (en) | 2016-03-16 | 2023-02-21 | Samsung Electronics Co., Ltd. | Multi-stream SSD QoS management | 
| US10592171B2 (en) | 2016-03-16 | 2020-03-17 | Samsung Electronics Co., Ltd. | Multi-stream SSD QoS management | 
| US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access | 
| KR20180026327A (en)* | 2016-09-02 | 2018-03-12 | 삼성전자주식회사 | Automatic stream detection and assignment algorithm | 
| US11048411B2 (en) | 2016-10-26 | 2021-06-29 | Samsung Electronics Co., Ltd. | Method of consolidating data streams for multi-stream enabled SSDs | 
| US10739995B2 (en) | 2016-10-26 | 2020-08-11 | Samsung Electronics Co., Ltd. | Method of consolidate data streams for multi-stream enabled SSDs | 
| US11194710B2 (en) | 2017-04-25 | 2021-12-07 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement | 
| US11630767B2 (en) | 2017-04-25 | 2023-04-18 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement | 
| US12332777B2 (en) | 2017-04-25 | 2025-06-17 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement | 
| US11507326B2 (en) | 2017-05-03 | 2022-11-22 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments | 
| US11847355B2 (en) | 2017-05-03 | 2023-12-19 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments | 
| US10901907B2 (en) | 2017-10-19 | 2021-01-26 | Samsung Electronics Co., Ltd. | System and method for identifying hot data and stream in a solid-state drive | 
| US11449256B2 (en) | 2018-05-15 | 2022-09-20 | Samsung Electronics Co., Ltd. | Method for accelerating image storing and retrieving differential latency storage devices based on access rates | 
| US10949087B2 (en) | 2018-05-15 | 2021-03-16 | Samsung Electronics Co., Ltd. | Method for rapid reference object storage format for chroma subsampled images | 
| US11947826B2 (en) | 2018-05-15 | 2024-04-02 | Samsung Electronics Co., Ltd. | Method for accelerating image storing and retrieving differential latency storage devices based on access rates | 
| Publication number | Publication date | 
|---|---|
| JP2013196066A (en) | 2013-09-30 | 
| Publication | Publication Date | Title | 
|---|---|---|
| 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 | |
| Wang | Computer 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 | 
| Date | Code | Title | Description | 
|---|---|---|---|
| A621 | Written request for application examination | Free format text:JAPANESE INTERMEDIATE CODE: A621 Effective date:20140409 | |
| A977 | Report on retrieval | Free format text:JAPANESE INTERMEDIATE CODE: A971007 Effective date:20150128 | |
| A131 | Notification of reasons for refusal | Free format text:JAPANESE INTERMEDIATE CODE: A131 Effective date:20150210 | |
| A521 | Written amendment | Free format text:JAPANESE INTERMEDIATE CODE: A523 Effective date:20150302 | |
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) | Free format text:JAPANESE INTERMEDIATE CODE: A01 Effective date:20150324 | |
| A61 | First payment of annual fees (during grant procedure) | Free format text:JAPANESE INTERMEDIATE CODE: A61 Effective date:20150330 | |
| R150 | Certificate of patent or registration of utility model | Ref document number:5723812 Country of ref document:JP Free format text:JAPANESE INTERMEDIATE CODE: R150 |