JP6731553B2 - Distributed storage system and distributed storage control method - Google Patents

Distributed storage system and distributed storage control method Download PDF

Info

Publication number
JP6731553B2
JP6731553B2 JP2019530302A JP2019530302A JP6731553B2 JP 6731553 B2 JP6731553 B2 JP 6731553B2 JP 2019530302 A JP2019530302 A JP 2019530302A JP 2019530302 A JP2019530302 A JP 2019530302A JP 6731553 B2 JP6731553 B2 JP 6731553B2
Authority
JP
Japan
Prior art keywords
node
nodes
transfer
cache
strips
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
JP2019530302A
Other languages
Japanese (ja)
Other versions
JPWO2019016911A1 (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 Ltd
Original Assignee
Hitachi 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 Ltd filed Critical Hitachi Ltd
Publication of JPWO2019016911A1 publication Critical patent/JPWO2019016911A1/en
Application granted granted Critical
Publication of JP6731553B2 publication Critical patent/JP6731553B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

Description

本発明は、概して、分散ストレージシステムでの記憶制御に関する。 The present invention relates generally to storage control in distributed storage systems.

分散ストレージに関する技術として、例えば、特許文献1及び2に開示の技術が知られている。 As a technique related to distributed storage, for example, the techniques disclosed in Patent Documents 1 and 2 are known.

特許文献1は、例えば次のことを開示する。すなわち、SDS(Software Defined Storage)グリッドを構成する複数のサーバのうち、第1サーバが、ホストコンピュータからI/O(Input/Output)要求を受信する。第1サーバが、SDSグリッドによって管理されるすべてのデータの場所を示すローカルグリッドデータマップを基に、そのI/O要求を第2サーバが処理することを識別した場合、そのI/O要求を第2サーバに転送する。 Patent Document 1 discloses the following, for example. That is, of the plurality of servers that form an SDS (Software Defined Storage) grid, the first server receives an I/O (Input/Output) request from the host computer. If the first server identifies that the second server will handle the I/O request based on a local grid data map that shows the location of all data managed by the SDS grid, then the I/O request is processed. Transfer to the second server.

特許文献2は、例えば次のことを開示する。ストレージシステムに複数の記憶デバイスが接続されている。複数の記憶デバイスの各々が、複数の記憶ブロックを有する。ストレージシステムが、複数の書込み要求をバッファリングし、定義された記憶ブロックのグループに、データを書き込む。 Patent Document 2 discloses the following, for example. Multiple storage devices are connected to the storage system. Each of the plurality of storage devices has a plurality of storage blocks. A storage system buffers multiple write requests and writes data to a defined group of storage blocks.

US2016/0173598US2016/0173598 特開2010−079928号Japanese Unexamined Patent Publication No. 2010-079928

以下の説明では、分散ストレージシステムの要素としての計算機を「ノード」と言うことがある。プロセッサやメモリや通信インターフェースデバイスといった計算リソースを有するいずれの計算機もノードになることができてよい。ノードは、物理的な計算機(例えば、汎用計算機又は物理的なストレージ装置)であってもよいし、物理的な計算機の少なくとも一部の計算リソースを基に動作する仮想的な計算機であってもよい。1つの物理的な計算機が、I/O要求を発行するホストのような仮想的な計算機と、I/O要求を受信し処理するストレージ装置のような仮想的な計算機(例えばSDS)とを実行してもよい。 In the following description, a computer as an element of the distributed storage system may be referred to as a “node”. Any computer having computing resources such as a processor, memory or communication interface device may be able to be a node. The node may be a physical computer (for example, a general-purpose computer or a physical storage device), or a virtual computer that operates based on at least part of the computational resources of the physical computer. Good. One physical computer executes a virtual computer such as a host that issues an I/O request and a virtual computer (for example, SDS) such as a storage device that receives and processes the I/O request. You may.

また、以下の説明では、複数のノードで冗長構成グループを形成する。冗長構成の例としては、Erasure Coding、RAIN(Redundant Array of Independent Nodes)、ノード間ミラーリング、ノードを1つのドライブとみなしたRAID(Redundant Array of Independent (or Inexpensive) Disks)などがあり、いずれでもよい。その他の方式(ノード間で冗長構成グループを構成する方式)が採用されてもよい。 Also, in the following description, a redundant configuration group is formed by a plurality of nodes. Examples of the redundant configuration include erasure coding, RAIN (Redundant Array of Independent Nodes), inter-node mirroring, and RAID (Redundant Array of Independent (or Inexpensive) Disks) in which a node is regarded as one drive, and any of them may be used. .. Other methods (methods of forming a redundant configuration group between nodes) may be adopted.

従って、以下の説明では、「冗長構成グループ」は、2以上のノードがそれぞれ提供する2以上の記憶領域で構成されデータを記憶するグループでよい。 Therefore, in the following description, the “redundant configuration group” may be a group configured by two or more storage areas provided by two or more nodes to store data.

また、以下の説明における複数種類の記憶領域の各々の定義は、下記の通りである。
・「冗長構成領域」とは、冗長構成グループが提供する論理記憶領域である。
・「ノード領域」とは、複数のノードの各々が提供する論理記憶領域である。複数のノードがそれぞれ提供する複数のノード領域が、冗長構成領域を構成する。
・「ストリップ」とは、ノード領域の一部である。ストリップは、ユーザデータセット又はパリティを格納する。ユーザデータセットが格納されるストリップを「ユーザストリップ」と言うことができ、パリティが格納されるストリップを「パリティストリップ」と言うことができる。なお、「ユーザデータセット」は、ライト要求に従うユーザデータ(ライト対象データ)の少なくとも一部としてのユーザデータユニットの一部である。「ユーザデータユニット」は、ストライプに対応した全ユーザデータセットの集合である。「パリティ」は、ユーザデータユニットに基づき生成されるデータセットである。「データセット」とは、1つのストリップに格納されるデータであり、以下の説明では、ユーザデータセット又はパリティである。つまり、データセットとは、ストリップ単位のデータである。
・「ストライプ」とは、冗長構成領域における2以上のノード領域にそれぞれ存在する2以上のストリップ(例えば同一論理アドレスの2以上のストリップ)で構成された記憶領域である。
Further, the definition of each of the plurality of types of storage areas in the following description is as follows.
-The "redundant configuration area" is a logical storage area provided by the redundant configuration group.
-A "node area" is a logical storage area provided by each of a plurality of nodes. A plurality of node areas provided by a plurality of nodes respectively configure a redundant configuration area.
-A "strip" is a part of a node area. The strip stores the user data set or parity. The strip in which the user data set is stored can be called a “user strip”, and the strip in which the parity is stored can be called a “parity strip”. The “user data set” is a part of the user data unit as at least a part of the user data (write target data) that complies with the write request. A "user data unit" is a set of all user data sets corresponding to stripes. "Parity" is a data set generated based on user data units. A "data set" is data stored in a strip, which in the following description is a user data set or parity. That is, the data set is data in strip units.
A “stripe” is a storage area composed of two or more strips (for example, two or more strips having the same logical address) respectively existing in two or more node areas in the redundant configuration area.

分散ストレージシステム(例えば、スケールアウト型のストレージシステム)において、各ノードは、更新後のデータセットのライト先ストリップが、そのノードにおけるストリップでなければ、ノード間転送を行う、すなわち、そのライト先ストリップを有するノードに更新後のデータセットを転送する。 In a distributed storage system (for example, a scale-out type storage system), each node performs inter-node transfer if the write-destination strip of the updated data set is not the strip at that node, that is, the write-destination strip. The updated data set is transferred to the node having.

ノード間転送は、ストリップ単位で行われる。このため、各ノードは、N個(Nは自然数)の更新後のデータセットにそれぞれ対応したN個のライト先ストリップが、いずれも、当該ノードに無い場合、N個のライト先ストリップの各々について、ノード間転送を行う。つまり、N回のノード間転送が行われる。ノード間転送は、通信のオーバーヘッドのため、分散ストレージシステムの性能(例えばI/O性能)を低下させる原因の1つである。 Transfer between nodes is performed in strip units. Therefore, each node does not have N write-destination strips respectively corresponding to N (N is a natural number) updated data set, and if none of the N write-destination strips exists in the node, the write-destination strips of each N are written. , Transfer between nodes. That is, transfer between nodes is performed N times. The inter-node transfer is one of the causes for lowering the performance (for example, I/O performance) of the distributed storage system due to the communication overhead.

複数のノードのうちのいずれかのノードである第1ノードが、ノード毎に当該ノードのノード領域におけるストリップがライト先となるデータセットである転送対象データセットの第1ノードでの有無を管理するノード管理情報を保持する。第1ノードは、複数のノードのうちの第1ノード以外の各ノードである各第2ノードについて、
(A)当該第2ノードのノード領域における2以上のストリップ(すなわち、2以上のストライプのうち、当該第2ノードに対応した2以上のストリップ)がそれぞれライト先となる2以上の転送対象データセットがあることをノード管理情報を基に特定した場合、当該2以上の転送対象データセットにそれぞれ対応した2以上のノード内位置をノード管理情報を基に特定し、
(B)特定した2以上のノード内位置にそれぞれ存在する2以上の転送対象データセットを転送対象とした1つの転送用コマンドを当該第2ノードに送信する。
A first node, which is any one of the plurality of nodes, manages, for each node, presence/absence of a transfer target data set, which is a data set to which a strip in a node area of the node is a write destination, in the first node. Holds node management information. The first node, for each second node that is each node other than the first node of the plurality of nodes,
(A) Two or more transfer target data sets to which two or more strips (that is, two or more strips corresponding to the second node of the two or more stripes) in the node area of the second node are write destinations When it is specified based on the node management information that there is a position, two or more positions in the node respectively corresponding to the two or more transfer target data sets are specified based on the node management information,
(B) One transfer command in which two or more transfer target data sets respectively existing in the identified two or more node positions are transferred is transmitted to the second node.

分散ストレージシステムの性能低下を低減することができる。 It is possible to reduce performance degradation of the distributed storage system.

実施形態の概要を示す。An outline of the embodiment is shown. 分散ストレージシステムを含むシステム全体の物理構成を示す。1 shows a physical configuration of the entire system including a distributed storage system. 分散ストレージシステムを含むシステム全体の論理構成を示す。1 shows a logical configuration of the entire system including a distributed storage system. ノードの論理構成を示す。The logical configuration of a node is shown. ホストライト処理の流れを示す。7 shows a flow of host write processing. ログストラクチャードライトの一例を示す。An example of a log structured light is shown. 非同期転送処理の流れを示す。The flow of asynchronous transfer processing is shown. 最大転送長制御処理の流れを示す。The flow of maximum transfer length control processing is shown.

以下、一実施形態を説明する。 An embodiment will be described below.

なお、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。 In the following description, the “interface unit” includes one or more interfaces. The one or more interfaces may be one or more same type interface devices (for example, one or more NICs (Network Interface Cards)) or two or more different types of interface devices (for example, NICs and HBAs (Host Bus Adapters)). It may be.

また、以下の説明では、「記憶部」は、メモリ部及びPDEV部のうちの少なくともメモリ部を含む。PDEV部は、1以上のPDEVを含む。メモリ部は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。 Further, in the following description, the “storage unit” includes at least the memory unit of the memory unit and the PDEV unit. The PDEV unit includes at least one PDEV. The memory unit includes one or more memories. The at least one memory may be a volatile memory or a non-volatile memory. The storage unit is mainly used during processing by the processor unit.

また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。 Further, in the following description, the “processor unit” includes one or more processors. At least one processor is typically a CPU (Central Processing Unit). The processor may include a hardware circuit that performs a part or all of the processing.

また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。 Further, in the following description, the information may be described by an expression such as “xxx table”, but the information may be expressed by any data structure. That is, the “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure. Further, in the following description, the configuration of each table is an example, and one table may be divided into two or more tables, or all or a part of the two or more tables may be one table. Good.

また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。 Further, in the following description, the process may be described by using “program” as a subject, but the program is executed by a processor (for example, a CPU (Central Processing Unit)) to appropriately perform a predetermined process. Since the processing is performed using the storage unit (for example, memory) and/or the interface device (for example, communication port), the subject of the process may be the processor (or the device or system having the processor). Further, the processor may include a hardware circuit that performs a part or all of the processing. The program may be installed in a device such as a computer from the program source. The program source may be, for example, a program distribution server or a computer-readable (for example, non-transitory) recording medium. Further, in the following description, two or more programs may be realized as one program, or one program may be realized as two or more programs.

また、以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。 In the following description, “PDEV” means a physical storage device, and is typically a non-volatile storage device (for example, auxiliary storage device), for example, HDD (Hard Disk Drive) or SSD (Solid State). Drive).

また、複数種類の記憶領域の各々の定義は、更に、下記の通りである。
・「キャッシュストリップ」は、ストリップに対応した記憶領域であってCM(キャッシュメモリ)上の記憶領域である。なお、キャッシュストリップもストリップも一定サイズでよい。
・「キャッシュストライプ」は、ストライプに対応した記憶領域であってCM上の記憶領域である。キャッシュストライプは、そのキャッシュストライプに対応するストライプを構成する2以上のストリップにそれぞれ対応した2以上のキャッシュストリップで構成されている。キャッシュストリップ内のデータセット(ユーザデータセット又はパリティ)が、そのキャッシュストリップに対応したストリップを有するノード領域に書き込まれる。
・「キャッシュノード領域」は、ノード領域に対応した記憶領域であってCM上の記憶領域である。キャッシュノード領域は、そのキャッシュノード領域に対応するノード領域を構成する2以上のストリップにそれぞれ対応した2以上のキャッシュストリップで構成されている。
・「VOL」は、論理ボリュームの略であり、ホストに提供される論理的な記憶領域である。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを提供するストレージシステムが有する物理的な記憶資源(例えば、1以上のPDEV)に基づくVOLでよい。「VVOL」は、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。
Further, the definition of each of the plurality of types of storage areas is as follows.
“Cash strip” is a storage area corresponding to a strip and is a storage area on a CM (cache memory). It should be noted that both the cash strip and the strip may have a fixed size.
A “cache stripe” is a storage area corresponding to a stripe and is a storage area on a CM. The cache stripe is composed of two or more cache strips respectively corresponding to two or more strips forming a stripe corresponding to the cache stripe. The data set in the cache strip (user data set or parity) is written to the node area which has a strip corresponding to that cache strip.
The “cache node area” is a storage area corresponding to the node area and is a storage area on the CM. The cache node area is composed of two or more cache strips respectively corresponding to two or more strips forming the node area corresponding to the cache node area.
-"VOL" is an abbreviation for logical volume, which is a logical storage area provided to the host. The VOL may be a substantial VOL (RVOL) or a virtual VOL (VVOL). The “RVOL” may be a VOL based on a physical storage resource (for example, one or more PDEV) included in the storage system that provides the RVOL. The “VVOL” may be a VOL that is configured by a plurality of virtual areas (virtual storage areas) and that complies with the capacity virtualization technology (typically Thin Provisioning).

また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合は、要素のID(例えば識別番号)を使用することがある。例えば、ノードを特に区別しないで説明する場合には、「ノード101」と記載し、個々のノードを区別して説明する場合には、「ノード0」、「ノード1」のように記載することがある。また、以下の説明では、ノードn(nは0以上の整数)内の要素の名称にnを付加することで、いずれのノードの要素であるか(或いは、いずれのノードに対応する要素であるか)を区別することができる。 Further, in the following description, when the same type of element is described without distinction, a reference numeral is used, and when the same type of element is described separately, an element ID (for example, an identification number) may be used. is there. For example, when description is made without particularly distinguishing nodes, it is described as "node 101", and when description is made by distinguishing individual nodes, it is described as "node 0" or "node 1". is there. In addition, in the following description, by adding n to the name of the element in the node n (n is an integer of 0 or more), which node is the element (or which node corresponds to which node) Can be distinguished.

図1は、実施形態の概要を示す。 FIG. 1 shows an outline of the embodiment.

分散ストレージシステム100が、複数のノード101、例えばノード0〜4を有する。各ノード101は、ノード領域52を提供する。ノード領域0〜4が、冗長構成領域53を構成する。また、ノード領域0〜4が、ノード0〜4が提供するVOL54に関連付けられている。 The distributed storage system 100 has a plurality of nodes 101, for example, nodes 0-4. Each node 101 provides a node area 52. The node areas 0 to 4 form the redundant configuration area 53. Also, the node areas 0 to 4 are associated with the VOL 54 provided by the nodes 0 to 4.

各ノード101は、CM(キャッシュメモリ)51を有する。CM51は、1以上のメモリであってもよいし、1以上のメモリの一部領域でもよい。CM51に、例えば、ライト要求に従うライト対象のユーザデータセット、リード要求に従うリード対象のユーザデータセット、パリティ、及び、他ノードからの転送用コマンドに従うデータセットが一時的に格納される。CM51の記憶容量は、典型的には、ノード領域52の記憶容量より小さい。CM51の少なくとも一部は、論理的には、マトリクス状の複数のキャッシュストリップ(以下、キャッシュストリップマトリクス)である。複数のキャッシュストリップ行は、複数のキャッシュストライプ56である(すなわち、複数のキャッシュストリップ行はそれぞれ複数のストライプに対応している)。複数のキャッシュストリップ列は、複数のキャッシュノード領域57である(すなわち、複数のキャッシュストリップ列はそれぞれ複数のノード101に対応している)。なお、CM51における領域のアドレスとストリップのアドレスとの対応関係は動的に変わる。例えば、キャッシュノード領域0において、2番目のキャッシュストリップと3番目のキャッシュストリップは連続しているが、ノード領域0において、2番目のキャッシュストリップに対応したストリップと、3番目のキャッシュストリップに対応したストリップとが連続しているとは限らない。 Each node 101 has a CM (cache memory) 51. The CM 51 may be one or more memories or a partial area of one or more memories. The CM 51 temporarily stores, for example, a write target user data set according to a write request, a read target user data set according to a read request, parity, and a data set according to a transfer command from another node. The storage capacity of the CM 51 is typically smaller than the storage capacity of the node area 52. At least a part of the CM 51 is logically a plurality of cash strips in a matrix (hereinafter, cash strip matrix). The plurality of cache strip rows are the plurality of cache stripes 56 (ie, each of the plurality of cache strip rows corresponds to a plurality of stripes). The plurality of cache strip rows are the plurality of cache node areas 57 (that is, the plurality of cache strip rows correspond to the plurality of nodes 101, respectively). Note that the correspondence between the area address and the strip address in the CM 51 changes dynamically. For example, in the cache node area 0, the second cache strip and the third cache strip are continuous, but in the node area 0, the strip corresponding to the second cache strip and the third cache strip are associated. It is not always continuous with the strip.

各ノード101は、コントローラ60を有する。コントローラ60は、1以上のコンピュータプログラムが実行されることにより発揮される機能の一例である。コントローラ60は、データセットの入出力等を制御する。 Each node 101 has a controller 60. The controller 60 is an example of a function exerted by executing one or more computer programs. The controller 60 controls input/output of a data set and the like.

各ノード101において、コントローラ60が、ノード管理ビットマップ102を管理する。コントローラ60が、CM51の更新に応じて、ノード管理ビットマップ102を更新する。ノード管理ビットマップ102は、転送対象のデータセットが存在するノード内位置をノード毎に管理するノード管理情報の一例である。ノード管理ビットマップ102は、複数のノードにそれぞれ対応した複数のサブビットマップ70で構成されている。サブビットマップ70は、サブノード管理情報の一例である。複数のサブビットマップ70は、それぞれ、複数のキャッシュノード領域57に対応している。各サブビットマップ70について、2以上のビットは、そのサブビットマップ70に対応するキャッシュノード領域57を構成する2以上のキャッシュストリップにそれぞれ対応している。ビット“0”は、そのビットに対応するキャッシュストリップ内のデータセットが非転送対象であることを意味する。ビット“1”は、そのビットに対応するキャッシュストリップ内のデータセットが転送対象であることを意味する。転送対象のデータセットが格納されているキャッシュストリップを「転送対象キャッシュストリップ」と言うことができる。また、ノードnに対応するサブビットマップ70を、「サブビットマップn」と言い、ノードnに対応するキャッシュノード領域57を、「キャッシュノード領域n」と言うことができる。なお、後に詳述するように、サブビットマップ70の長さ(言い換えれば、サブビットマップを構成するビットの数)は変更可能である。サブビットマップ70の長さが、最大転送長に相当する。「最大転送長」は、転送可能なデータセットの総量でよい。また、本実施形態では、CM51には、後述のログストラクチャード方式でデータセットが書き込まれるため、各ノードについて、2以上の転送対象キャッシュストリップが連続する傾向にあることが期待できる。 In each node 101, the controller 60 manages the node management bitmap 102. The controller 60 updates the node management bitmap 102 according to the update of the CM 51. The node management bitmap 102 is an example of node management information that manages, for each node, an in-node position where a transfer target data set exists. The node management bitmap 102 is composed of a plurality of sub-bitmaps 70 respectively corresponding to a plurality of nodes. The sub-bitmap 70 is an example of sub-node management information. The plurality of sub-bitmaps 70 respectively correspond to the plurality of cache node areas 57. For each sub-bitmap 70, two or more bits respectively correspond to two or more cache strips forming the cache node area 57 corresponding to the sub-bitmap 70. Bit "0" means that the data set in the cache strip corresponding to that bit is not transferred. Bit "1" means that the data set in the cache strip corresponding to that bit is to be transferred. A cache strip in which a data set to be transferred is stored can be called a “transfer target cache strip”. Further, the sub-bitmap 70 corresponding to the node n can be referred to as “sub-bitmap n”, and the cache node area 57 corresponding to the node n can be referred to as “cache node area n”. As will be described later in detail, the length of the sub-bitmap 70 (in other words, the number of bits forming the sub-bitmap) can be changed. The length of the sub-bitmap 70 corresponds to the maximum transfer length. The “maximum transfer length” may be the total amount of transferable data sets. Further, in the present embodiment, since the data set is written in the CM 51 by the log structured method described later, it can be expected that two or more transfer target cache strips tend to be continuous in each node.

以下、説明を分かり易くするため、各ノード101の説明として、主にノード0を例に取る。すなわち、以下の説明では、ノード0が第1ノード(又は自ノード)の一例であり、ノード1〜3の各々が第2ノード(又は他ノード)の一例である。 Hereinafter, in order to make the description easy to understand, the node 0 is mainly taken as an example for describing each node 101. That is, in the following description, the node 0 is an example of the first node (or its own node), and each of the nodes 1 to 3 is an example of the second node (or another node).

本実施形態によれば、ノード0が、転送対象キャッシュストリップの位置をノード毎に管理するノード管理ビットマップ102を有する。コントローラ0が、ノード管理ビットマップ0を参照することにより、キャッシュノード領域0〜3の各々について、全ての転送対象キャッシュストリップを特定できる。 According to this embodiment, the node 0 has the node management bitmap 102 for managing the position of the transfer target cache strip for each node. By referring to the node management bitmap 0, the controller 0 can specify all the transfer target cache strips for each of the cache node areas 0 to 3.

コントローラ0は、ノード1〜3の各々に、1回のノード間転送で(言い換えれば、1つの転送用コマンド(ノード間転送用のコマンド)で)、その特定した全ての転送対象キャッシュストリップにおける全ての転送対象データセットを、その特定した全ての転送対象キャッシュストリップが連続したキャッシュストリップであるか否かに関わらず、転送することができる。すなわち、ノード間転送の回数(言い換えれば、発行する転送用コマンドの数)を削減することができる。別の言い方をすれば、複数回のノード間転送を1回のノード間転送にまとめることができる。以って、分散ストレージシステム100の性能低下を低減することができる。 The controller 0 transfers to all of the nodes 1 to 3 in one transfer between nodes (in other words, with one transfer command (command for transfer between nodes)) in all the specified transfer target cache strips. Can be transferred regardless of whether all the specified transfer target cache strips are continuous cache strips. That is, it is possible to reduce the number of inter-node transfers (in other words, the number of transfer commands issued). In other words, multiple inter-node transfers can be combined into one inter-node transfer. As a result, the performance degradation of the distributed storage system 100 can be reduced.

具体的には、例えば、コントローラ0は、サブビットマップ1における連続した3つのビット“1”(1番目のビット〜3番目のビット)にそれぞれ対応した、キャッシュノード領域1における連続した3つのキャッシュストリップを、3つの転送対象キャッシュストリップとして特定する。コントローラ0は、連続した3つの転送対象キャッシュストリップ内の3つのデータセットD1を転送対象(ライト対象)とした1つの転送用コマンド(例えば、ノード領域1の先頭のライト先ストリップのアドレスと転送長とを指定したコマンド)をノード1に転送する。なお、「転送長」は、最大転送長以下の長さである。上述したように、転送対象キャッシュストリップが連続する傾向にあることが期待でき、以って、2以上の転送対象データセットを1つの転送コマンドで転送することが容易である。具体的には、1つの転送用コマンドで、先頭のアドレスと転送長とを指定すればよい。 Specifically, for example, the controller 0 has three consecutive caches in the cache node area 1 corresponding to three consecutive bits “1” (first bit to third bit) in the sub-bitmap 1. The strip is identified as three transfer target cache strips. The controller 0 makes one transfer command (for example, the address and transfer length of the head write destination strip of the node area 1) in which three data sets D1 in three consecutive transfer target cache strips are transfer targets (write targets). Command that specifies and) is transferred to the node 1. The "transfer length" is a length equal to or shorter than the maximum transfer length. As described above, it can be expected that the transfer target cache strips tend to be continuous, so that it is easy to transfer two or more transfer target data sets with one transfer command. Specifically, the start address and the transfer length may be specified with one transfer command.

同様に、例えば、コントローラ0は、サブビットマップ2における連続した3つのビット“1”(2番目のビット〜4番目のビット)にそれぞれ対応した、キャッシュノード領域2における連続した3つのキャッシュストリップを、3つの転送対象キャッシュストリップとして特定する。コントローラ0は、連続した3つの転送対象キャッシュストリップ内の3つのデータセットD2を転送対象とした1つの転送用コマンドをノード2に転送する。 Similarly, for example, the controller 0 creates three consecutive cache strips in the cache node area 2 corresponding to three consecutive bits “1” (second bit to fourth bit) in the sub-bitmap 2, respectively. It is specified as three transfer target cash strips. The controller 0 transfers to the node 2 one transfer command in which three data sets D2 in three consecutive transfer target cache strips are transferred.

上述したように、1つのノードに対する1つの転送用コマンドで転送対象とする2以上のデータセット(2以上のストリップをそれぞれライト先とする2以上のデータセット)は、連続した2以上のキャッシュストリップ内の2以上のデータセットに限らず、非連続の2以上のキャッシュストリップ内の2以上のデータセットでもよい。その場合、スキャッタギャザーリスト(SGL)の手法を適用すること(非転送対象のデータセットについてのアドレスを転送用コマンドで指定すること)ができる。具体的には、例えば、コントローラ0は、サブビットマップ3における非連続の2つのビット“1”(1番目のビット及び4番目のビット)にそれぞれ対応した、キャッシュノード領域3における非連続の2つのキャッシュストリップを、2つの転送対象キャッシュストリップとして特定する。コントローラ0は、非連続の2つの転送対象キャッシュストリップ内の2つのデータセットD3を転送対象とした1つの転送用コマンド(例えば、ノード領域3の先頭のライト先ストリップのアドレス及び転送長と、非ライト先ストリップの先頭アドレス及びデータ長(オフセット)とを指定したコマンド)をノード3に転送する。すなわち、転送対象キャッシュストリップが非連続のケースは、転送対象キャッシュストリップが連続のケースに比べて、1つの転送用コマンドで2以上の転送対象データセットを転送するために指定するパラメータの数が増えるが、転送対象キャッシュストリップが非連続でも、1つの転送用コマンドで2以上の転送対象データセットを転送することができる。 As described above, two or more data sets (two or more data sets each having two or more strips as write destinations) to be transferred by one transfer command for one node are two or more consecutive cache strips. It is not limited to two or more data sets in the above, and may be two or more data sets in two or more non-contiguous cash strips. In that case, the method of the scatter-gather list (SGL) can be applied (the address for the non-transfer target data set can be designated by the transfer command). Specifically, for example, the controller 0 corresponds to two non-consecutive bits “1” (first bit and fourth bit) in the sub-bitmap 3 in the cache node area 3 respectively. One cash strip is specified as two transfer target cash strips. The controller 0 uses a single transfer command (for example, the address and transfer length of the head write destination strip of the node area 3 and A command specifying the start address and the data length (offset) of the write destination strip is transferred to the node 3. That is, in the case where the transfer target cache strips are non-continuous, the number of parameters specified for transferring two or more transfer target data sets with one transfer command increases in comparison with the case where the transfer target cache strips are continuous. However, even if the transfer target cache strips are discontinuous, it is possible to transfer two or more transfer target data sets with one transfer command.

また、コントローラ0は、ノード領域0に対しても、1回の書込みで(すなわち、1つのライトコマンドで)、2以上のストリップに2以上のデータセットを書き込むことができる。具体的には、例えば、コントローラ0は、サブビットマップ0における連続した2つのビット“1”(2番目のビット及び3番目のビット)にそれぞれ対応した、キャッシュノード領域0における連続した2つのキャッシュストリップを、2つのライト対象キャッシュストリップとして特定する。コントローラ0は、連続した2つのライト対象キャッシュストリップ内の2つのデータセットD0をライト対象とした1つのライトコマンドを発行する。それにより、2つのデータセットD0がノード領域0における2つのストリップに書き込まれる。 Further, the controller 0 can also write two or more data sets to two or more strips with one write (that is, one write command) to the node area 0 as well. Specifically, for example, the controller 0 has two consecutive caches in the cache node area 0 corresponding to two consecutive bits “1” (the second bit and the third bit) in the sub-bitmap 0, respectively. The strip is specified as two write target cache strips. The controller 0 issues one write command for writing two data sets D0 in two consecutive cache strips for writing. Thereby, the two data sets D0 are written in the two strips in the node area 0.

以下、本実施形態を詳細に説明する。 Hereinafter, this embodiment will be described in detail.

図2は、分散ストレージシステム100を含むシステム全体の物理構成を示す。 FIG. 2 shows the physical configuration of the entire system including the distributed storage system 100.

1以上のホスト201、管理システム203及び分散ストレージシステム100が、ネットワーク240に接続される。ネットワーク240は、例えば、FC(Fibre Channel)ネットワークとIP(Internet Protocol)ネットワークとのうちの少なくとも1つを含んでよい。 One or more hosts 201, management system 203, and distributed storage system 100 are connected to network 240. The network 240 may include at least one of an FC (Fibre Channel) network and an IP (Internet Protocol) network, for example.

ホスト201は、ユーザデータのI/O要求を発行する。ホスト201は、物理的な計算機であってもよいし、物理的な計算機で実行される仮想的な計算機であってもよい。仮想的な計算機としてのホスト201は、ノード101において実行されてもよい。具体的には、例えば、同一のノード101において、ホスト201としての仮想的な計算機と、ホスト201からI/O要求を受信して処理するストレージ(コントローラ60)としての仮想的な計算機(例えばSDS(Software Defined Storage))とが実行されてもよい。 The host 201 issues an I/O request for user data. The host 201 may be a physical computer or a virtual computer executed by a physical computer. The host 201 as a virtual computer may be executed in the node 101. Specifically, for example, in the same node 101, a virtual computer as the host 201 and a virtual computer (eg, SDS) as a storage (controller 60) that receives and processes an I/O request from the host 201. (Software Defined Storage) and may be executed.

管理システム203は、分散ストレージシステム100を管理する。管理システム203は、一以上の計算機(一以上の物理計算機又は仮想計算機)で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システム203でよい。また、例えば、管理計算機(例えばサーバ)が表示用情報を遠隔の表示用計算機(例えばクライアント)に送信し表示用計算機がその情報を表示する場合(管理計算機が表示用計算機に情報を表示する場合)、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システム203でよい。 The management system 203 manages the distributed storage system 100. The management system 203 may be composed of one or more computers (one or more physical computers or virtual computers). Specifically, for example, when the management computer has a display device and the management computer displays information on its own display device, the management computer may be the management system 203. Also, for example, when a management computer (for example, a server) sends display information to a remote display computer (for example, a client) and the display computer displays the information (when the management computer displays information on the display computer) ), a system including at least the management computer of the management computer and the display computer may be the management system 203.

分散ストレージシステム100は、ネットワーク240に接続された複数のノード101を含む。各ノード101は、インターフェース部251、PDEV部252、メモリ部253及びそれらに接続されたプロセッサ部254を有する。例えば、インターフェース部251は、ネットワーク240に接続され、インターフェース部251経由でノード間転送が行われる。PDEV部252に基づく論理記憶領域が、ノード領域である。メモリ部253が、1以上のプログラム、及び、上述したノード管理ビットマップ102を記憶する。プロセッサ部254が、1以上のプログラムを実行する。 The distributed storage system 100 includes a plurality of nodes 101 connected to a network 240. Each node 101 has an interface unit 251, a PDEV unit 252, a memory unit 253, and a processor unit 254 connected to them. For example, the interface unit 251 is connected to the network 240, and inter-node transfer is performed via the interface unit 251. The logical storage area based on the PDEV unit 252 is a node area. The memory unit 253 stores one or more programs and the node management bitmap 102 described above. The processor unit 254 executes one or more programs.

図3は、分散ストレージシステム100を含むシステム全体の論理構成を示す。 FIG. 3 shows a logical configuration of the entire system including the distributed storage system 100.

2以上のノード101がそれぞれ有する2以上のVOL(例えば、VOL A1、及び、VOL A2)が1つのVOL(例えば、VOL A)としてホスト201に提供される。ホスト201は、VOL Aを指定したI/O要求を、VOL A1を提供するノード0、又は、VOL A2を提供するノード1に送信する。 Two or more VOLs (for example, VOL A1 and VOL A2) that the two or more nodes 101 respectively have are provided to the host 201 as one VOL (for example, VOL A). The host 201 sends an I/O request that specifies VOL A to node 0 that provides VOL A1 or node 1 that provides VOL A2.

各ノード101は、上述したようにコントローラ60を有する。コントローラ60は、データプレーン311及びコントロールプレーン312を有する。データプレーン311が、VOLを提供し、ホスト201からのI/O要求に従う処理を行う。コントロールプレーン312が、種々の制御を行う。コントロールプレーン312は、コントロールマスタ322とコントロールエージェント321とを有する。コントロールマスタ322が、管理システム203から指示を受け、その指示に従う制御コマンドを、1以上のコントロールエージェント321に送信する。コントロールエージェント321は、制御コマンドに従い制御を行う。 Each node 101 has the controller 60 as described above. The controller 60 has a data plane 311 and a control plane 312. The data plane 311 provides the VOL and performs processing according to the I/O request from the host 201. The control plane 312 performs various controls. The control plane 312 has a control master 322 and a control agent 321. The control master 322 receives an instruction from the management system 203 and sends a control command according to the instruction to one or more control agents 321. The control agent 321 controls according to a control command.

各ノード101が、ノード管理ビットマップ102を基に、ノード毎に、転送対象データセットを特定し転送する。分散ストレージシステム100において、データの整合性を、例えば下記のうちのいずれかの方法で維持することができる。
・ストライプ毎に、いずれかのノード101が担当ノードとなる。ノード101は、ライト要求に対応したライト先ストライプの担当ノードが自ノードであれば、ライト対象のユーザデータをCM51に書き、当該ストライプについて、転送対象データセットを他ノードに転送する。ノード101は、ライト要求に対応したライト先ストライプの担当ノードが自ノードでなければ、担当ノード(他ノード)に、そのライト要求を転送する。
・各ノード101が、自ノードについて、ライト要求に従うデータセットが書き込まれる第1のCM部分と、受信した転送用コマンドに従うデータセットが書き込まれる第2のCM部分とを持ち、それらのCM部分のうちより新しいデータセットを格納している方を、自ノードのノード領域におけるストリップへの書込み対象として採用する。
Each node 101 specifies and transfers a transfer target data set for each node based on the node management bitmap 102. In the distributed storage system 100, data consistency can be maintained by, for example, one of the following methods.
-Each node becomes the responsible node for each stripe. If the node in charge of the write-destination stripe corresponding to the write request is the self node, the node 101 writes the write-target user data to the CM 51, and transfers the transfer-target data set for that stripe to another node. The node 101 transfers the write request to the responsible node (other node) if the responsible node of the write destination stripe corresponding to the write request is not the own node.
Each node 101 has, for its own node, a first CM part in which a data set complying with a write request is written and a second CM part in which a data set complying with the received transfer command is written. The one storing the newer data set is adopted as the write target for the strip in the node area of the own node.

図4は、ノード101の論理構成を示す。 FIG. 4 shows a logical configuration of the node 101.

ノード101において、データプレーン311は、フロントエンドプログラム421、コントロールプログラム422、キャッシュプログラム423、アドレス変換プログラム424、データ転送プログラム425及びバックエンドプログラム426を含む。データプレーン0が、ノード管理ビットマップ102を管理する。フロントエンドプログラム421は、I/O要求を受けたり、I/O要求の応答を返したりする。コントロールプログラム422は、受けたI/O要求の処理を実行したり、I/O要求の処理と非同期で転送処理を実行したりする。キャッシュプログラム423は、CM51を更新したり、ノード管理ビットマップ102を更新したりする。アドレス変換プログラム424は、キャッシュアドレス(CMの論理アドレス)をストリップアドレス(ストリップの論理アドレス)に変換する。データ転送プログラム425は、1以上の転送対象データセットを指定した転送用コマンドを送信したり、1以上のライト対象データセットを指定したライトコマンドを送信したりする。バックエンドプログラム426は、ライトコマンドに応答して、そのライトコマンドで指定されている1以上のライト対象データセットを1以上のストリップに書き込む。 In the node 101, the data plane 311 includes a front end program 421, a control program 422, a cache program 423, an address conversion program 424, a data transfer program 425, and a back end program 426. The data plane 0 manages the node management bitmap 102. The front-end program 421 receives an I/O request and returns a response to the I/O request. The control program 422 executes the processing of the received I/O request or executes the transfer processing asynchronously with the processing of the I/O request. The cache program 423 updates the CM 51 and the node management bitmap 102. The address conversion program 424 converts the cache address (CM logical address) into a strip address (strip logical address). The data transfer program 425 sends a transfer command that specifies one or more transfer target data sets, or sends a write command that specifies one or more write target data sets. In response to the write command, the back-end program 426 writes the one or more write target data sets designated by the write command to one or more strips.

ノード101において、コントロールプレーン312は、CLI(Command Line Interface)プログラム431、GUI(Graphical User Interface)プログラム432、REST(REpresentational State Transfer)サーバプログラム433、コントロールエージェント321、コントロールマスタ322及び保守プログラム434を含む。CLIプログラム431は、CLI経由でホスト201のユーザから指示を受け付ける。GUIプログラム432は、GUI経由でホスト201のユーザから指示を受け付ける。RESTサーバプログラム433は、ノード101において、コントローラ60(例えばSDS)外の少なくとも1つのプログラムである外部プログラム(例えば、図示しないアプリケーションプログラム)から指示を受け付ける。RESTサーバプログラム433は、例えば、外部プログラムからの指示に従い保守プログラム434に指示を出すことができる。コントロールエージェント321は、少なくとも1つのノード101におけるコントロールマスタ322から指示を受け付ける。コントロールマスタ322は、少なくとも1つのノード101におけるコントロールエージェント321に指示を出す。保守プログラム434は、RESTサーバプログラム433から指示を受け付け、その指示に従う保守(例えば、少なくとも1つのノードに対応した最大転送長(サブビットマップの長さ)を変更すること)を行う。 In the node 101, the control plane 312 includes a CLI (Command Line Interface) program 431, a GUI (Graphical User Interface) program 432, a REST (REpresentational State Transfer) server program 433, a control agent 321, a control master 322, and a maintenance program 434. .. The CLI program 431 receives an instruction from the user of the host 201 via the CLI. The GUI program 432 receives an instruction from the user of the host 201 via the GUI. The REST server program 433 receives an instruction in the node 101 from an external program (for example, an application program (not shown)) which is at least one program outside the controller 60 (for example, SDS). The REST server program 433 can issue an instruction to the maintenance program 434 according to an instruction from an external program, for example. The control agent 321 receives an instruction from the control master 322 in at least one node 101. The control master 322 issues an instruction to the control agent 321 in at least one node 101. The maintenance program 434 receives an instruction from the REST server program 433 and performs maintenance according to the instruction (for example, changing the maximum transfer length (length of sub-bitmap) corresponding to at least one node).

以下、本実施形態で行われる処理の一例を説明する。また、ノード0を例に取る。 Hereinafter, an example of the processing performed in this embodiment will be described. Also, the node 0 is taken as an example.

図5は、ホストライト処理の流れを示す。 FIG. 5 shows the flow of host write processing.

フロントエンドプログラム0が、ホスト201からユーザデータのライト要求を受信する(S501)。ライト要求は、ライト先を示す情報であるライト先情報を含む。ライト先情報は、例えば、ライト先VOLのID(例えばLUN(Logical Unit Number))と、ライト先VOLにおけるライト先の領域の論理アドレスとを含む。 The front-end program 0 receives a user data write request from the host 201 (S501). The write request includes write destination information that is information indicating the write destination. The write destination information includes, for example, the ID of the write destination VOL (for example, LUN (Logical Unit Number)) and the logical address of the write destination area in the write destination VOL.

フロントエンドプログラム0が、そのライト要求をコントロールプログラム0に転送する(S502)。 The front end program 0 transfers the write request to the control program 0 (S502).

コントロールプログラム0は、そのライト要求を解析する(S503)。例えば、コントロールプログラム0は、要求がライト要求であることと、そのライト要求におけるライト先情報とを特定する。 The control program 0 analyzes the write request (S503). For example, the control program 0 specifies that the request is a write request and the write destination information in the write request.

コントロールプログラム0は、ライト要求に従うユーザデータのキャッシュをキャッシュプログラム0に指示する(S504)。 The control program 0 instructs the cache program 0 to cache the user data according to the write request (S504).

キャッシュプログラム0は、その指示に応答して、CM0に対してユーザデータのログストラクチャードライトを行う、すなわち、ログストラクチャード方式でCM0にユーザデータを書き込む(S505)。なお、ログストラクチャードライトは、図5に示すように、ライト要求に応答して行われる処理において行われてもよいし、ライト要求に応答して行われる処理とは非同期に行われてもよい(例えば、ユーザデータをCM0に書き込んだ後に、CM0において離散したデータセットが連続するようにログストラクチャードライトを行ってよい)。 In response to the instruction, the cache program 0 performs the log structured write of the user data to the CM 0, that is, writes the user data to the CM 0 by the log structured method (S505). Note that the log structured write may be performed in the process performed in response to the write request as shown in FIG. 5, or may be performed asynchronously with the process performed in response to the write request ( For example, after writing user data in CM0, log structured write may be performed so that the discrete data sets in CM0 are continuous).

また、キャッシュプログラム0は、S505のCM0の更新に伴い、ノード管理ビットマップ0を更新する(S506)。例えば、新たなVOL領域(VOLにおける領域)をライト先としたユーザデータに従うデータセットがキャッシュストリップに書き込まれた場合、キャッシュプログラム0は、そのキャッシュストリップに対応したビットの値を“0”から“1”に更新する。 Further, the cache program 0 updates the node management bitmap 0 with the update of CM0 in S505 (S506). For example, when a data set according to user data having a new VOL area (area in VOL) as a write destination is written in the cache strip, the cache program 0 changes the value of the bit corresponding to the cache strip from “0” to “0”. Update to 1".

キャッシュプログラム0は、S504の指示に対する応答をコントロールプログラム0に返す(S507)。コントロールプログラム0は、その応答を受けた場合、S502の要求に対する応答をフロントエンドプログラム0に返す(S508)。フロントエンドプログラム0は、その応答を受けた場合、S501のライト要求に対する完了応答をホスト201に返す(S509)。 The cache program 0 returns a response to the instruction of S504 to the control program 0 (S507). When the control program 0 receives the response, it returns a response to the request of S502 to the front end program 0 (S508). When receiving the response, the front-end program 0 returns a completion response to the write request of S501 to the host 201 (S509).

図6を参照して、ログストラクチャードライトの一例を説明する。 An example of the log structured write will be described with reference to FIG.

新たなユーザデータユニットXがライト対象の場合、キャッシュプログラム0は、そのユーザデータユニットXを構成するユーザデータセットx1、x2及びx3と、それらのユーザデータセットに基づくパリティxPとを、第1のキャッシュストライプ(連続したキャッシュストリップ)に書き込む。 When the new user data unit X is the write target, the cache program 0 sets the user data sets x1, x2, and x3 forming the user data unit X and the parity xP based on these user data sets as the first data. Write to a cache stripe (consecutive cache strips).

次に、新たなユーザデータユニットYがライト対象の場合、キャッシュプログラム0は、そのユーザデータユニットYを構成するユーザデータセットy1、y2及びy3と、それらのユーザデータセットに基づくパリティyPとを、第1のキャッシュストライプの次のキャッシュストライプである第2のキャッシュストライプ(具体的には、第1のキャッシュストライプの終端キャッシュストリップの次のキャッシュストリップを先頭とした第2のキャッシュストライプ)に書き込む。 Next, when the new user data unit Y is the write target, the cache program 0 sets the user data sets y1, y2, and y3 that form the user data unit Y and the parity yP based on these user data sets. Writing is performed to a second cache stripe that is a cache stripe next to the first cache stripe (specifically, a second cache stripe starting with a cache strip next to the end cache strip of the first cache stripe).

次に、ユーザデータユニットXの全てを更新するためのユーザデータユニットX´がライト対象の場合、キャッシュプログラム0は、そのユーザデータユニットX´を構成するユーザデータセットx1´、x2´及びx3´と、それらのユーザデータセットに基づくパリティxP´とを、第2のキャッシュストライプの次のキャッシュストライプである第3のキャッシュストライプに書き込む。また、キャッシュプログラム0は、更新前のユーザデータユニットXを構成するユーザデータセットx1、x2及びx3をそれぞれ格納している3つのキャッシュストリップを、空き領域として管理する。更新前パリティxPが格納されているキャッシュストリップも空き領域として管理されてよい。 Next, when the user data unit X'for updating all the user data units X is a write target, the cache program 0 sets the user data sets x1', x2', and x3' that compose the user data unit X'. And the parity xP′ based on those user data sets are written in the third cache stripe, which is the cache stripe next to the second cache stripe. Further, the cache program 0 manages three cache strips respectively storing the user data sets x1, x2, and x3 forming the user data unit X before update as free areas. The cache strip in which the pre-update parity xP is stored may also be managed as a free area.

このように、ログストラクチャードライトによれば、更新前データセットが格納されている領域に更新後データセットが上書きされるのではなく、更新後データセットのために新たに領域が確保され、その領域が、新たにキャッシュストリップとなる。これにより、ライト先アドレスが非連続のランダムライトが行われても、一定のアドレス長のCM0に、アドレスが連続したデータ領域(アドレスが連続した転送対象キャッシュストリップ)を得ることができる。 In this way, according to the log structured write, the area in which the pre-update data set is stored is not overwritten with the post-update data set, but a new area is reserved for the post-update data set, and the area However, it will be a new cash strip. As a result, even if random write is performed with non-contiguous write destination addresses, a data area with continuous addresses (transfer target cache strip with continuous addresses) can be obtained in CM0 having a constant address length.

なお、更新後ユーザデータセットx1´、x2´及びx3´にそれぞれ対応した3つのライト先ストリップは、更新前ユーザデータセットx1、x2及びx3にそれぞれ対応した3つのライト先ストリップと同じため、キャッシュプログラム0は、ノード管理ビットマップ0は更新しないでよい(例えば、更新前ユーザデータセットx1を格納したキャッシュストリップに対応したビットの値は“1”のままでよい)。但し、転送対象データセットが格納されているキャッシュストリップのアドレスは変更されたため、キャッシュプログラム0は、ビット“1”に対応したキャッシュアドレスを、更新前ユーザデータセット(例えばx1)を格納しているキャッシュストリップのアドレスから、更新後ユーザデータセット(例えばx1´)を格納しているキャッシュストリップのアドレスに変更してよい。 Note that the three write destination strips respectively corresponding to the updated user data sets x1′, x2′, and x3′ are the same as the three write destination strips respectively corresponding to the pre-update user data sets x1, x2, and x3. The program 0 may not update the node management bitmap 0 (for example, the value of the bit corresponding to the cache strip storing the pre-update user data set x1 may remain “1”). However, since the address of the cache strip in which the transfer target data set is stored has been changed, the cache program 0 stores the cache address corresponding to bit “1” and the pre-update user data set (eg, x1). The address of the cache strip may be changed to the address of the cache strip that stores the updated user data set (eg, x1′).

図7は、非同期転送処理の流れを示す。非同期転送処理は、ホストライト処理と非同期に行われる転送処理であって、転送対象データを転送先ノードに転送する処理を含む処理である。 FIG. 7 shows the flow of asynchronous transfer processing. The asynchronous transfer process is a transfer process that is performed asynchronously with the host write process, and includes a process of transferring the transfer target data to the transfer destination node.

コントロールプログラム0が、ロック取得をキャッシュプログラム0に指示する(S701)。 The control program 0 instructs the cache program 0 to acquire the lock (S701).

キャッシュプログラム0が、その指示に応答して、次の処理を行う(S702)。
・キャッシュプログラム0は、ノード管理ビットマップ102を参照し、ノード0〜3の各々について、転送対象キャッシュストリップを特定する。以下、ノード1を例に取る。
・キャッシュプログラム0は、ノード1について、特定した全ての転送対象キャッシュストリップを含む連続したキャッシュストリップをロックできるか否かの判断であるロック判断を行う。
・ロック判断の結果が真の場合、キャッシュプログラム0は、連続したキャッシュストリップをロックする。ロックされたキャッシュストリップ内のデータセットがホストライト処理において更新されることがない。
The cache program 0 performs the following processing in response to the instruction (S702).
The cache program 0 refers to the node management bitmap 102 and specifies the transfer target cache strip for each of the nodes 0 to 3. Hereinafter, the node 1 will be taken as an example.
The cache program 0 makes a lock determination for the node 1, which is a determination as to whether or not consecutive cache strips including all specified transfer target cache strips can be locked.
-If the result of the lock judgment is true, the cache program 0 locks consecutive cache strips. Data sets in locked cache strips are never updated during host write operations.

キャッシュプログラム0が、S701の指示に対する応答として、S702の結果を表す応答をコントロールプログラム0に返す(S703)。 The cache program 0 returns a response indicating the result of S702 to the control program 0 as a response to the instruction of S701 (S703).

コントロールプログラム0が、ロックされた連続したキャッシュストリップのうちの各転送対象キャッシュストリップのキャッシュアドレスを特定する(S704)。コントロールプログラム0が、S704で特定したキャッシュアドレスのアドレス変換をアドレス変換プログラム0に指示する。アドレス変換プログラム0が、その指示に応答して、キャッシュアドレスに対応したストリップアドレスを特定し(S706)、特定したストリップアドレスをコントロールプログラム0に返す(S707)。 The control program 0 specifies the cache address of each transfer target cache strip among the locked consecutive cache strips (S704). The control program 0 instructs the address translation program 0 to translate the cache address specified in S704. In response to the instruction, the address translation program 0 identifies the strip address corresponding to the cache address (S706) and returns the identified strip address to the control program 0 (S707).

必要に応じて(例えば、当該ストリップを含むストライプについてノード0が少なくともパリティ生成の担当の場合)、コントロールプログラム0が、更新前データセットをノード1から読み出し、パリティを生成する(S708)。 The control program 0 reads the pre-update data set from the node 1 as needed (for example, when the node 0 is in charge of parity generation for the stripe including the strip) and generates parity (S708).

コントロールプログラム0が、ノード1のキャッシュロックをデータ転送プログラム0に指示する(S709)。その指示では、ストリップ数及びストリップアドレス群が指定される。ストリップ数は、例えば、ノード1についてS702でロックされたキャッシュストリップの数、又は、ノード1についてS702でロックされたキャッシュストリップのうちの転送対象キャッシュストリップの数である。ストリップアドレス群は、ノード領域1内の1以上のストリップのアドレスでもよいし、ストリップアドレスと転送長との組でもよい。当該指示に応答して、データ転送プログラム0が、ロック要求をノード1に送信する(S710)。当該ロック要求でも、ストリップ数及びストリップアドレス群が指定される。つまり、当該ロック要求は、指定されたストリップ数と同数のキャッシュストリップをノード1のCMからロックすること(確保すること)の要求である。当該ロック要求に応答して、ノード1(例えばコントローラ1)が、CM1から、指定されたストリップ数と同数の領域(キャッシュストリップ)をロックし(例えば、キャッシュノード領域1からキャッシュストリップをロックし)、且つ、それらの領域に、ストリップアドレス群を関連付ける(S711)。ノード1(例えばコントローラ1)が、S710の指示に対する応答をデータ転送ログラム0に返す(S712)。データ転送プログラム0が、S709の指示に対する応答をコントロールプログラム0に返す(S713)。 The control program 0 instructs the data transfer program 0 to cache the node 1 (S709). In the instruction, the number of strips and the strip address group are designated. The number of strips is, for example, the number of cache strips locked in S702 for the node 1 or the number of transfer target cache strips of the cache strips locked in S702 for the node 1. The strip address group may be addresses of one or more strips in the node area 1, or may be a set of strip addresses and transfer lengths. In response to the instruction, the data transfer program 0 transmits a lock request to the node 1 (S710). The lock request also specifies the number of strips and the strip address group. That is, the lock request is a request for locking (securing) the same number of cache strips as the designated number of strips from the CM of the node 1. In response to the lock request, the node 1 (for example, the controller 1) locks the same number of areas (cache strips) as the specified number of strips from the CM 1 (for example, locks the cache strip from the cache node area 1). , And the strip address group is associated with these areas (S711). The node 1 (for example, the controller 1) returns a response to the instruction of S710 to the data transfer program 0 (S712). The data transfer program 0 returns a response to the instruction of S709 to the control program 0 (S713).

コントロールプログラム0が、データ転送をデータ転送プログラム0に指示する(S714)。 The control program 0 instructs the data transfer program 0 to transfer data (S714).

その指示に応答して、下記が行われる。
・データ転送プログラム0が、ノード領域0に対する全転送対象データセットのライトコマンドを生成する(S715)。ライトコマンドでは、ストリップアドレス群(ノード領域0内のストリップのアドレス)が指定される。データ転送プログラム0が、そのライトコマンドの送信をバックエンドプログラム0に指示する。その指示に応答して、バックエンドプログラム0が、ノード領域0に対するライトコマンドを送信する(S716)。バックエンドプログラム0が、応答をデータ転送プログラム0に返す(S718)。
・データ転送プログラム0が、ノード1に対する全転送対象データセットの転送用コマンドを生成する(S715)。転送用コマンドでは、上記ストリップアドレス群(ノード領域1内のストリップのアドレス)が指定される。データ転送プログラム0が、転送用コマンドをノード1に転送する(S717)。ノード1(例えばコントローラ1)が、その転送用コマンドに応答して、その転送用コマンドに従う転送対象データセットを、S711でロックしたキャッシュストリップに書き込んで、応答をデータ転送プログラム0に返す(S719)。ノード1において、コントローラ1が、転送対象データセットを、キャッシュストリップからノード領域1のストリップに書き込む。
In response to that instruction:
The data transfer program 0 generates a write command for all transfer target data sets to the node area 0 (S715). In the write command, a strip address group (addresses of strips in the node area 0) is designated. The data transfer program 0 instructs the backend program 0 to send the write command. In response to the instruction, the backend program 0 transmits a write command for the node area 0 (S716). The backend program 0 returns a response to the data transfer program 0 (S718).
The data transfer program 0 generates a transfer command for all transfer target data sets to the node 1 (S715). The transfer command specifies the strip address group (addresses of strips in the node area 1). The data transfer program 0 transfers the transfer command to the node 1 (S717). In response to the transfer command, the node 1 (for example, the controller 1) writes the transfer target data set according to the transfer command in the cache strip locked in S711, and returns the response to the data transfer program 0 (S719). .. In the node 1, the controller 1 writes the data set to be transferred from the cache strip to the strip in the node area 1.

データ転送プログラム0が、S714の指示に対する応答をコントロールプログラム0に返す(S720)。 The data transfer program 0 returns a response to the instruction of S714 to the control program 0 (S720).

コントロールプログラム0が、ロック解除をキャッシュプログラム0に指示する(S721)。その指示に応答して、キャッシュプログラム0が、S702で取得したロックを解除する(S722)。キャッシュプログラム0が、S721の指示に対する応答をコントロールプログラム0に返す(S723)。 The control program 0 instructs the cache program 0 to release the lock (S721). In response to the instruction, the cache program 0 releases the lock acquired in S702 (S722). The cache program 0 returns a response to the instruction of S721 to the control program 0 (S723).

以上が、非同期転送処理である。 The above is the asynchronous transfer process.

なお、非同期転送処理では、転送元ノードが転送先ノードに転送用コマンドを送信することで転送元ノードから転送先ノードへ転送対象データセットが転送されるが(プッシュ型の転送)、転送先ノードが転送元ノードへ転送要求を送信することで転送元ノードから転送先ノードへ転送対象データセットが転送されてよい(プル型の転送)。 In the asynchronous transfer process, the transfer source node sends a transfer command to the transfer destination node to transfer the transfer target data set from the transfer source node to the transfer destination node (push type transfer). The transfer target data set may be transferred from the transfer source node to the transfer destination node by transmitting a transfer request to the transfer source node (pull type transfer).

また、上述のロック判断(特定した全ての転送対象キャッシュストリップを含む連続したキャッシュストリップをロックできるか否かの判断)の結果が、例えば下記の場合に偽となる。
・ロック対象のキャッシュストリップのうちの少なくとも1つが既にロックされている。
・ロック対象のキャッシュストリップをロックすると、ロック割合(CMの容量に対する、ロックされているキャッシュストリップの全容量の割合)が閾値を超える。
Further, the result of the above-mentioned lock determination (determination as to whether or not consecutive cache strips including all specified transfer target cache strips can be locked) is false in the following cases.
• At least one of the locked cash strips is already locked.
When the cache strip to be locked is locked, the lock ratio (ratio of the total capacity of locked cache strips to the capacity of CM) exceeds the threshold value.

ロック判断の結果が偽の場合、コントローラ0は、非同期転送処理とは別の処理(例えば、別のノードに対応したキャッシュノード領域におけるキャッシュストリップに関してのロック判断)を行ってもよい。 When the result of the lock determination is false, the controller 0 may perform processing different from the asynchronous transfer processing (for example, lock determination regarding the cache strip in the cache node area corresponding to another node).

全てのノード101について、最大転送長(ノード管理テーブル102におけるサブビットマップ70の長さ)が同じである必要は無い。最大転送長は、例えば、下記のように設定又は変更可能である。 The maximum transfer length (the length of the sub-bitmap 70 in the node management table 102) does not have to be the same for all nodes 101. The maximum transfer length can be set or changed as follows, for example.

図8は、最大転送長制御処理の流れを示す。最大転送長制御処理は、ノード101において実行される。以下、ノード0を例に取る。 FIG. 8 shows the flow of maximum transfer length control processing. The maximum transfer length control process is executed in the node 101. Hereinafter, the node 0 will be taken as an example.

最大転送長を設定する設定イベントが生じた場合(S801:YES)、ノード0に最大転送長が設定される(S802)。すなわち、ノード0に、ノード0〜3の各々についてサブビットマップ70が設定される。ここで言う「設定イベント」とは、例えば、下記のうちのいずれかでよい。
・最大転送長を指定した設定指示をCLIプログラム0がホスト201から受けたこと。
・最大転送長を指定した設定指示をGUIプログラム0がホスト201から受けたこと。
・保守プログラム434が、RESTサーバプログラム0経由で外部プログラムから最大転送長を指定した設定指示を受けたこと。
・最大転送長を指定した設定指示をコントロールマスタ0が管理システム203から受けたこと。
When a setting event for setting the maximum transfer length occurs (S801: YES), the maximum transfer length is set in the node 0 (S802). That is, the sub-bitmap 70 is set in the node 0 for each of the nodes 0 to 3. The “setting event” mentioned here may be, for example, one of the following.
The CLI program 0 has received a setting instruction specifying the maximum transfer length from the host 201.
The GUI program 0 receives the setting instruction designating the maximum transfer length from the host 201.
The maintenance program 434 receives a setting instruction designating the maximum transfer length from an external program via the REST server program 0.
The control master 0 receives a setting instruction designating the maximum transfer length from the management system 203.

指定された最大転送長は、管理システム203、外部プログラム及びコントローラ0のうちのいずれによって決定されてもよい。 The designated maximum transfer length may be determined by any of the management system 203, the external program, and the controller 0.

最大転送長は、コントローラ0(例えばSDS)の性能値に基づく。具体的には、最大転送長は、例えば、下記のうちの少なくとも1つに基づく。なお、以下の説明において、「Kが比較的大きい(又は小さい)」とは、「或るKの値k1よりも別の或るKの値k2の方が大きい(又は小さい)」ことを意味する。また、「最大転送長は比較的小さい(又は大きい)」とは、「或るKの値k1に対応した最大転送長t1よりも別の或るKの値k2に対応した最大転送長t2の方が小さい(又は大きい)」ことを意味する。
・ノード0について目標とされるI/O処理性能(単位時間当たりに入出力されるデータの量)。例えば、I/O処理性能が比較的高い場合、最大転送長は比較的小さい。非同期転送処理がホストI/O処理の性能に与える影響を小さくするためである。なお、「I/O処理性能」とは、I/O要求(本実施形態ではホストから受信したI/O要求)の処理の性能である。「I/O」は、ライトであってもよいし、リードであってもよいし、ライト及びリードの両方であってもよい。
・ノード0に搭載されるインターフェース部のネットワーク帯域。例えば、ネットワーク帯域が比較的小さい程、最大転送長は比較的小さい。インターフェース部という物理的なハードウェアの性能を超えた転送はできないからである。
・ホストライト処理の多重度。例えば、多重度が比較的大きい場合、最大転送長は比較的小さい。多重度が大きいと非同期転送処理に使用可能なリソース量が圧迫されるからである。
・冗長構成領域53を構成するノード数。例えば、ノード数が比較的大きい場合、最大転送長は比較的小さい。ノード数が大きいと、サブビットマップの数が増え、以って、ノード管理ビットマップのサイズが大きくなる傾向にあるからである。
The maximum transfer length is based on the performance value of the controller 0 (for example, SDS). Specifically, the maximum transfer length is based on at least one of the following, for example. In the following description, “K is relatively large (or small)” means “a certain K value k2 is larger (or smaller) than a certain K value k1”. To do. Further, "the maximum transfer length is relatively small (or large)" means "the maximum transfer length t2 corresponding to another certain K value k2 than the maximum transfer length t1 corresponding to a certain K value k1. Means smaller (or larger)".
Target I/O processing performance for node 0 (amount of data input/output per unit time). For example, when the I/O processing performance is relatively high, the maximum transfer length is relatively small. This is to reduce the influence of the asynchronous transfer processing on the performance of the host I/O processing. The “I/O processing performance” is the processing performance of an I/O request (I/O request received from the host in this embodiment). The “I/O” may be a write, a read, or both a write and a read.
-Network bandwidth of the interface unit installed in node 0. For example, the smaller the network bandwidth, the smaller the maximum transfer length. This is because transfer that exceeds the performance of the physical hardware called the interface unit cannot be performed.
-Multiplicity of host write processing. For example, when the multiplicity is relatively large, the maximum transfer length is relatively small. This is because if the multiplicity is large, the amount of resources available for asynchronous transfer processing is stressed.
-The number of nodes configuring the redundant configuration area 53. For example, when the number of nodes is relatively large, the maximum transfer length is relatively small. This is because when the number of nodes is large, the number of sub-bitmaps increases, and the size of the node management bitmap tends to increase accordingly.

稼動した後(S803)、少なくとも1つのノードについて設定済の最大転送長を変更する変更イベントが生じた場合(S804:YES)、ノード0に設定済の最大転送長が変更される(S805)、変更後の最大転送長が設定される(S806)。例えば、サブビットマップ70が長くなる又は短くなる。ここで言う「変更イベント」とは、例えば、下記のうちのいずれかでよい。
・変更後の最大転送長を指定した変更指示をCLIプログラム0がホスト201から受けたこと。
・変更後の最大転送長を指定した変更指示をGUIプログラム0がホスト201から受けたこと。
・保守プログラム434が、RESTサーバプログラム0経由で外部プログラムから変更後の最大転送長を指定した変更指示を受けたこと。
・保守プログラム434が、ノード0の負荷(例えば、計算リソース(ハードウェア)の負荷、又は、1以上の外部プログラムの稼働状況)が1以上の閾値のうちのいずれかの閾値以上となった又はいずれかの閾値未満となったことを検出した。
・変更後の最大転送長を指定した変更指示をコントロールマスタ0が管理システム203から受けたこと。
・前回のS804の判断から一定時間が経った。
・現在時刻が所定の時刻になった。
When the change event for changing the set maximum transfer length for at least one node occurs after the operation (S803) (S804: YES), the set maximum transfer length for the node 0 is changed (S805), The changed maximum transfer length is set (S806). For example, the sub-bitmap 70 becomes longer or shorter. The “change event” referred to here may be, for example, one of the following.
The CLI program 0 has received from the host 201 a change instruction designating the maximum transfer length after the change.
The GUI program 0 receives the change instruction designating the maximum transfer length after the change from the host 201.
The maintenance program 434 receives a change instruction specifying the maximum transfer length after the change from the external program via the REST server program 0.
The maintenance program 434 determines that the load of the node 0 (for example, the load of computing resources (hardware) or the operating status of one or more external programs) is greater than or equal to any one of the thresholds of 1 or more, or It was detected that the value fell below either threshold.
The control master 0 receives a change instruction designating the maximum transfer length after the change from the management system 203.
-A certain amount of time has passed since the previous determination in S804.
-The current time has reached the specified time.

変更後の最大転送長は、例えば、下記のうちの少なくとも1つに基づく。
・ノード0の計算リソース(ハードウェア)の性能値。例えば、コントローラ0(例えば保守プログラム0)が、ノード0の計算リソースの性能値(例えば、CM0の空き容量)に基づいて帯域の限界値を予測し(或いは、当該帯域の限界値の予測値を管理システム203のような外部から受けて)、限界値の予測値を基に、最大転送長を変更する。
・1以上の外部プログラムの稼働状況。例えば、1又は複数の外部プログラム(例えば或る外部プログラム)が新たに稼働又は停止する場合、コントローラ0(例えば、RESTサーバプログラム0)が、その1又は複数の外部プログラムの新たな稼動又は停止の通知をその1又は複数の外部プログラムの少なくとも1つから受ける、又は、コントローラ0(例えば、保守プログラム0)が、1又は複数の外部プログラムの新たな稼動又は停止の通知を管理システム203から受ける。その通知を受けたコントローラ0(例えば、RESTサーバプログラム0又は保守プログラム0)が、1又は複数の外部プログラムが新たに稼働するならば最大転送長を比較的小さくし、1又は複数の外部プログラムが新たに停止するならば最大転送長を比較的大きくする。
The changed maximum transfer length is based on at least one of the following, for example.
-Performance value of the calculation resource (hardware) of node 0. For example, the controller 0 (for example, the maintenance program 0) predicts the limit value of the band based on the performance value of the calculation resource of the node 0 (for example, the free capacity of CM0) (or the predicted value of the limit value of the band is calculated). The maximum transfer length is changed based on the predicted value of the limit value (received from the outside such as the management system 203).
-Operation status of one or more external programs. For example, when one or a plurality of external programs (for example, a certain external program) is newly started or stopped, the controller 0 (for example, REST server program 0) notifies the new start or stop of the one or a plurality of external programs. The notification is received from at least one of the one or more external programs, or the controller 0 (for example, the maintenance program 0) receives the notification of the new operation or stop of the one or more external programs from the management system 203. The controller 0 (for example, the REST server program 0 or the maintenance program 0) that has received the notification makes the maximum transfer length relatively small if one or more external programs newly operate, and the one or more external programs If it is newly stopped, the maximum transfer length is made relatively large.

以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。 Although some embodiments have been described above, these are merely examples for explaining the present invention, and the scope of the present invention is not limited only to these embodiments. The present invention can be implemented in various other forms.

例えば、CM51に対するライトとして、必ずしもログストラクチャードライトが採用されなくてもよい。 For example, the log structured write does not necessarily have to be adopted as the write for the CM 51.

また、例えば、未転送の転送対象データセットの冗長性維持のため、ノード101は、その転送対象データセットをPDEV部に書き込んでおき、その転送対象データセットのノード間転送完了後にその転送対象データをPDEV部から削除してもよい。 Further, for example, in order to maintain the redundancy of the untransferred transfer target data set, the node 101 writes the transfer target data set in the PDEV unit, and after the inter-node transfer of the transfer target data set is completed, the transfer target data set is transferred. May be deleted from the PDEV section.

また、例えば、転送対象データセットは、CMからデステージされていないデータセットである「ダーティデータセット」と言うことができる。また、例えば、転送対象データセットを格納するキャッシュストリップを「ダーティキャッシュストリップ」と言うことができる。 Further, for example, the transfer target data set can be referred to as a “dirty data set” that is a data set that is not destaged from the CM. Also, for example, a cache strip that stores a transfer target data set can be referred to as a “dirty cache strip”.

101…ノード 101... Node

Claims (14)

複数のノードを有し
前記複数のノードの各々は、1以上のストリップで構成された論理的な記憶領域であるノード領域を有し、
前記複数のノードは、2以上の前記ノード領域から冗長構成領域を構成し、
前記冗長構成領域は、前記2以上のノード領域がそれぞれ有する2以上のストリップから構成されるストライプを含む分散ストレージシステムにおいて前記ノード間でのライト対象データの転送を行うコンピュータプログラムであって
前記コンピュータプログラムは前記複数のノードのうちのいずれかのノードである第1ノードで実行され、
前記第1ノードが、
前記複数のノードそれぞれの前記ノード領域にライトされるデータセットを記憶するキャッシュメモリと、
前記複数のノードのうち前記第1ノード以外の複数の第2ノードそれぞれの前記ノード領域におけるストリップがライト先となる、前記キャッシュメモリに記憶されたデータセットである転送対象データセットの前記第1ノードでの有無を管理するノード管理情報と、を保持し、
前記コンピュータプログラムが、前記第1ノードに、
(A)当該1つの前記第2ノードのノード領域における2以上のストリップがそれぞれライト先となる2以上の転送対象データセットがあることを前記ノード管理情報を基に特定した場合、当該2以上の転送対象データセットのキャッシュストリップを前記ノード管理情報を基に特定し、
(B)前記特定した前記キャッシュストリップに対応する2以上のノード内位置にそれぞれ存在する2以上の転送対象データセットを転送対象とした1つの転送用コマンドを当該第2ノードに送信する、
を実行させることで1つの転送用コマンドで2以上のライト対象データを当該第2ノードに送信するコンピュータプログラム。
Has multiple nodes ,
Each of the plurality of nodes has a node area which is a logical storage area composed of one or more strips,
The plurality of nodes form a redundant configuration area from two or more node areas,
The redundant area is a computer program that the two or more nodes region performs write target data transfer between the nodes a stripe composed of two or more strips each having at including distributed storage system,
The computer program is executed by a first node, which is any one of the plurality of nodes,
The first node is
A cache memory for storing a data set written in the node area of each of the plurality of nodes;
The first node of the transfer target data set, which is the data set stored in the cache memory, to which the strip in the node area of each of the plurality of second nodes other than the first node among the plurality of nodes becomes a write destination holds, and node management information for managing the presence in,
The computer program, in the first node,
(A) When it is specified based on the node management information that there are two or more transfer target data sets to which two or more strips in the node area of the one second node are write destinations, respectively, Specify the cache strip of the data set to be transferred based on the node management information,
(B) One transfer command in which two or more transfer target data sets respectively existing in two or more node positions corresponding to the specified cash strip are transferred is transmitted to the second node.
A computer program for executing two or more to transmit two or more write target data to the second node by one transfer command .
前記第1ノードに、前記各第2ノードについて、(B)において、
(b1)前記2以上の転送対象データセットをそれぞれ格納する2以上のキャッシュストリップを含む、当該第2ノードに対応した複数のキャッシュストリップをロックし、
(b2)前記ロックした複数のキャッシュストリップにおける前記2以上の転送対象データセットの前記転送用コマンドを当該第2ノードに送信する、
を実行させる請求項1記載のコンピュータプログラム。
In the first node, for each of the second nodes, in (B),
(B1) lock a plurality of cache strips corresponding to the second node, the cache strips including two or more cache strips respectively storing the two or more transfer target data sets,
(B2) transmitting the transfer command of the two or more transfer target data sets in the plurality of locked cache strips to the second node,
The computer program according to claim 1, which executes the program.
前記第1ノードに、ログストラクチャード方式で、前記第1ノードにおける前記キャッシュメモリにデータセットを書き込ませるようになっており、
(b1)において、ロック対象の前記複数のキャッシュストリップは、連続した前記2以上のキャッシュストリップである、
請求項2記載のコンピュータプログラム。
The first node is configured to write a data set to the cache memory in the first node in a log structured manner,
In (b1), the plurality of cash strips to be locked are the two or more consecutive cash strips.
The computer program according to claim 2 .
前記第1ノードに、ログストラクチャード方式で、前記第1ノードにおける前記キャッシュメモリにデータセットを書き込ませるようになっており、
(b1)において、ロック対象の前記複数のキャッシュストリップは、連続しており、非連続の前記2以上のキャッシュストリップを含む、
請求項2記載のコンピュータプログラム。
The first node is configured to write a data set to the cache memory in the first node in a log structured manner,
In (b1), the plurality of cash strips to be locked are continuous and include the two or more non-continuous cash strips.
The computer program according to claim 2 .
前記ノード管理情報が、ノード毎のサブノード管理情報を含み、
前記サブノード管理情報が管理する各ノード内位置は、当該情報に対応したノードに対応したキャッシュストリップであって、転送対象データセットのライト先ストリップに対応したキャッシュストリップであり、
各ノードについて、前記第1ノードがロック可能なキャッシュストリップの最大数は、当該ノードに対応したサブノード管理情報のサイズに依存し、
各ノードについて、サブノード管理情報のサイズは、前記第1ノードが転送可能なデータセットの総量である最大転送長に依存する、
請求項2記載のコンピュータプログラム。
The node management information includes subnode management information for each node,
The position in each node managed by the subnode management information is a cache strip corresponding to the node corresponding to the information, and a cache strip corresponding to the write destination strip of the transfer target data set,
For each node, the maximum number of cache strips that the first node can lock depends on the size of the subnode management information corresponding to that node,
For each node, the size of the subnode management information depends on the maximum transfer length, which is the total amount of data sets that the first node can transfer,
The computer program according to claim 2 .
前記第1ノードにおいて、前記複数のノードの少なくとも1つについて、前記最大転送長は、下記のうちの少なくとも1つに基づく、
(p1)当該ノードについて目標とされるI/O処理性能、
(p2)当該ノードのネットワーク帯域、
(p3)I/O処理の多重度、及び、
(p4)前記冗長構成領域を構成する複数のノード領域を提供するノードの数、
請求項5記載のコンピュータプログラム。
In the first node, for at least one of the plurality of nodes, the maximum transfer length is based on at least one of the following:
(P1) I/O processing performance targeted for the node,
(P2) Network bandwidth of the node,
(P3) I/O processing multiplicity, and
(P4) the number of nodes that provide a plurality of node areas forming the redundant configuration area,
The computer program according to claim 5 .
(p1)が採用される場合、I/O処理性能が比較的高い場合、最大転送長は比較的小さい、
(p2)が採用される場合、ネットワーク帯域が比較的小さい場合、最大転送長は比較的小さい、
(p3)が採用される場合、I/O処理の多重度が比較的大きい場合、最大転送長は比較的小さい、
(p4)が採用される場合、ノード数が比較的大きい場合、最大転送長は比較的小さい、
請求項6記載のコンピュータプログラム。
When (p1) is adopted, the maximum transfer length is relatively small when the I/O processing performance is relatively high,
When (p2) is adopted, the maximum transfer length is relatively small when the network bandwidth is relatively small,
When (p3) is adopted, the maximum transfer length is relatively small when the I/O processing multiplicity is relatively large,
When (p4) is adopted, the maximum transfer length is relatively small when the number of nodes is relatively large,
The computer program according to claim 6 .
前記第1ノードの稼働後、前記第1ノードにおいて、前記複数のノードの少なくとも1つについて、前記最大転送長を、前記第1ノードに、下記のうちの少なくとも1つに基づいて変更させる、
(q1)前記第1ノードの計算リソースの性能値、及び、
(q2)前記第1ノードで実行されるプログラムであって前記コンピュータプログラム以外のいずれか1以上のプログラムである1以上の外部プログラムの稼働状況、
請求項5記載のコンピュータプログラム。
After the operation of the first node, the first node causes the first node to change the maximum transfer length for at least one of the plurality of nodes based on at least one of the following:
(Q1) the performance value of the computational resource of the first node, and
(Q2) Operation status of one or more external programs that are programs executed by the first node and are one or more programs other than the computer program,
The computer program according to claim 5 .
(q1)が採用されている場合、前記第1ノードの計算リソースの性能値に基づく帯域限界値の予測値を基に、最大転送長を変更し、
(q2)が採用されている場合、1又は複数の外部プログラムが新たに稼働することに応じて、最大転送長を比較的小さくし、1又は複数の外部プログラムが新たに停止することに応じて、最大転送長を比較的大きくする、
を、前記第1ノードに実行させる請求項6記載のコンピュータプログラム。
When (q1) is adopted, the maximum transfer length is changed based on the predicted value of the bandwidth limit value based on the performance value of the calculation resource of the first node,
When (q2) is adopted, the maximum transfer length is made relatively small in response to the one or more external programs newly operating, and the one or more external programs are newly stopped. , Make the maximum transfer length relatively large,
7. The computer program according to claim 6, which causes the first node to execute.
前記第1ノードに、前記各第2ノードについて、(B)において、
(b3)前記転送対象データセットの数に従うストリップ数と同数のキャッシュストリップを当該第2ノードのキャッシュメモリからロックすることの要求であるロック要求を、前記第2ノードに送信し、
(b1)及び(b3)の完了後に、(b2)を実行する、
を実行させる請求項1記載コンピュータプログラム。
In the first node, for each of the second nodes, in (B),
(B3) transmits a lock request, which is a request for locking, from the cache memory of the second node, the same number of cache strips as the number of strips according to the number of transfer target data sets, to the second node,
After completing (b1) and (b3), execute (b2),
The computer program according to claim 1, which executes the program.
前記ノード管理情報が、ノード毎のサブノード管理情報を含み、
各ノードについて、サブノード管理情報のサイズは、前記第1ノードが転送可能なデータセットの総量である最大転送長に依存する、
請求項1記載のコンピュータプログラム。
The node management information includes subnode management information for each node,
For each node, the size of the subnode management information depends on the maximum transfer length, which is the total amount of data sets that the first node can transfer,
The computer program according to claim 1.
複数のノードを有し、
前記複数のノードの各々は、1以上のストリップで構成された論理的な記憶領域であるノード領域を有し、
前記複数のノードは、2以上の前記ノード領域から冗長構成領域を構成し、
前記冗長構成領域は、前記2以上のノード領域がそれぞれ有する2以上のストリップから構成されるストライプを含み、前記ノード間でのライト対象データの転送を行う分散ストレージシステムにおいて、
前記複数のノードのうちのいずれかのノードである第1ノードが、
前記複数のノードの各々の前記ノード領域にライトされるデータセットを記憶するキャッシュメモリと、
前記複数のノードのうち前記第1ノード以外の複数の第2ノードそれぞれの前記ノード領域におけるストリップがライト先となる、前記キャッシュメモリに記憶されたデータセットである転送対象データセットの前記第1ノードでの有無を管理するノード管理情報と、を保持し、
前記第1ノードは、
(A)1つの前記第2ノードのノード領域における2以上のストリップがそれぞれライト先となる2以上の転送対象データセットがあることを前記ノード管理情報を基に特定した場合、当該2以上の転送対象データセットのキャッシュストリップを前記ノード管理情報を基に特定し、
(B)前記特定した前記キャッシュストリップに対応する2以上のノード内位置にそれぞれ存在する2以上の転送対象データセットを転送対象とした1つの転送用コマンドを当該第2ノードに送信する、
ことで1つの転送用コマンドで2以上のライト対象データを当該第2ノードに送信する分散ストレージシステム。
Has multiple nodes,
Each of the plurality of nodes has a node area which is a logical storage area composed of one or more strips,
The plurality of nodes form a redundant configuration area from two or more node areas,
In the distributed storage system, wherein the redundant configuration area includes stripes composed of two or more strips respectively included in the two or more node areas , and transfers write target data between the nodes,
A first node, which is any one of the plurality of nodes,
A cache memory storing a data set written in the node area of each of the plurality of nodes;
The first node of the transfer target data set, which is the data set stored in the cache memory, to which the strip in the node area of each of the plurality of second nodes other than the first node among the plurality of nodes becomes a write destination holds, and node management information for managing the presence in,
The first node is
(A) When it is specified based on the node management information that there are two or more transfer target data sets to which the two or more strips in the node area of the one second node are write destinations, the two or more transfer operations are performed. Specify the cache strip of the target data set based on the node management information ,
(B) One transfer command in which two or more transfer target data sets respectively existing in two or more node positions corresponding to the specified cash strip are transferred is transmitted to the second node .
As a result, the distributed storage system that transmits two or more write target data to the second node by one transfer command .
複数のノードを有
前記複数のノードの各々は、1以上のストリップで構成された論理的な記憶領域であるノード領域を有し、
前記複数のノードは、2以上の前記ノード領域から冗長構成領域を構成し、
前記冗長構成領域は、前記2以上のノード領域がそれぞれ有する2以上のストリップから構成されるストライプを含み、前記ノード間でのライト対象データの転送を行う分散ストレージシステムの制御方法において、
前記複数のノードのうちのいずれかのノードである第1ノードが、
前記複数のノードの各々の前記ノード領域にライトされるデータセットを記憶するキャッシュメモリと、
前記複数のノードのうち前記第1ノード以外の複数の第2ノードそれぞれの前記ノード領域におけるストリップがライト先となる、前記キャッシュメモリに記憶されたデータセットである転送対象データセットの前記第1ノードでの有無を管理するノード管理情報と、を保持し、
前記第1ノードに、
(A)1つの前記第2ノードのノード領域における2以上のストリップがそれぞれライト先となる2以上の転送対象データセットがあることを前記ノード管理情報を基に特定した場合、当該2以上の転送対象データセットのキャッシュストリップを前記ノード管理情報を基に特定させ、
(B)前記特定した前記キャッシュストリップに対応する2以上のノード内位置にそれぞれ存在する2以上の転送対象データセットを転送対象とした1つの転送用コマンドを当該第2ノードに送信させる、
ことで1つの転送用コマンドで2以上のライト対象データを当該第2ノードに送信する分散ストレージ制御方法。
Have a plurality of nodes,
Each of the plurality of nodes has a node area which is a logical storage area composed of one or more strips,
The plurality of nodes form a redundant configuration area from two or more node areas,
In the method of controlling a distributed storage system, wherein the redundant configuration area includes stripes composed of two or more strips respectively possessed by the two or more node areas , and transfers write target data between the nodes,
A first node, which is any one of the plurality of nodes ,
A cache memory storing a data set written in the node area of each of the plurality of nodes;
The first node of the transfer target data set, which is the data set stored in the cache memory, to which the strip in the node area of each of the plurality of second nodes other than the first node among the plurality of nodes becomes a write destination holds, and node management information for managing the presence in,
In the first node ,
(A) When it is specified based on the node management information that there are two or more transfer target data sets to which the two or more strips in the node area of the one second node are write destinations, the two or more transfer operations are performed. The cache strip of the target data set is specified based on the node management information ,
(B) A single transfer command for transferring two or more transfer target data sets respectively existing at two or more node positions corresponding to the specified cash strip is transmitted to the second node .
Thus, the distributed storage control method of transmitting two or more write target data to the second node by one transfer command .
請求項1に記載のコンピュータプログラムであって、The computer program according to claim 1, wherein
前記第1ノードの前記キャッシュメモリは、 The cache memory of the first node is
複数の前記キャッシュストリップを含むキャッシュストリップ列を複数有し、 A plurality of cash strip rows including a plurality of the cash strips,
それぞれの前記キャッシュストリップ列には、互いに異なる前記ノードへの転送対象データセットを記憶し、 Each of the cash strip columns stores a data set to be transferred to the different nodes,
1つの前記キャッシュストリップ列に含まれる複数の前記転送対象データセットを、前記1つの転送用コマンドで、前記キャッシュストリップ列に対応する前記ノード(単数)に転送するコンピュータプログラム。 A computer program for transferring a plurality of the transfer target data sets included in one cache strip sequence to the node (single) corresponding to the cache strip sequence by the one transfer command.
JP2019530302A 2017-07-20 2017-07-20 Distributed storage system and distributed storage control method Active JP6731553B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/026205 WO2019016911A1 (en) 2017-07-20 2017-07-20 Distributed storage system and distributed storage control method

Publications (2)

Publication Number Publication Date
JPWO2019016911A1 JPWO2019016911A1 (en) 2019-12-12
JP6731553B2 true JP6731553B2 (en) 2020-07-29

Family

ID=65016616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019530302A Active JP6731553B2 (en) 2017-07-20 2017-07-20 Distributed storage system and distributed storage control method

Country Status (3)

Country Link
US (1) US10657062B2 (en)
JP (1) JP6731553B2 (en)
WO (1) WO2019016911A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767997B (en) * 2017-03-23 2022-06-21 日商索尼半導體解決方案公司 Communication device, communication method, program, and communication system
US10949303B2 (en) * 2017-12-11 2021-03-16 Fungible, Inc. Durable block storage in data center access nodes with inline erasure coding
US10761931B2 (en) 2018-10-24 2020-09-01 Fungible, Inc. Inline reliability coding for storage on a network
US10990478B2 (en) 2019-02-01 2021-04-27 Fungible, Inc. Flexible reliability coding for storage on a network
US11630729B2 (en) 2020-04-27 2023-04-18 Fungible, Inc. Reliability coding with reduced network traffic
CN113590041A (en) * 2021-07-29 2021-11-02 杭州宏杉科技股份有限公司 Data protection storage method, device and equipment

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772245B1 (en) * 2000-03-29 2004-08-03 Intel Corporation Method and apparatus for optimizing data transfer rates between a transmitting agent and a receiving agent
US20020194427A1 (en) * 2001-06-18 2002-12-19 Ebrahim Hashemi System and method for storing data and redundancy information in independent slices of a storage device
JP3702231B2 (en) * 2002-01-31 2005-10-05 株式会社東芝 Disk array apparatus and dynamic storage capacity expansion method in the same
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
JP4440803B2 (en) * 2005-03-03 2010-03-24 富士通株式会社 Storage device, control method thereof, and program
US8386741B2 (en) * 2010-08-31 2013-02-26 International Business Machines Corporation Method and apparatus for optimizing data allocation
US9075720B2 (en) * 2010-10-04 2015-07-07 International Business Machines Corporation Locking a cache line for write operations on a bus
US9136005B2 (en) 2010-11-16 2015-09-15 Samsung Electronics Co., Ltd. Erasing methods of three-dimensional nonvolatile memory devices with cell strings and dummy word lines
US8935484B2 (en) * 2011-03-31 2015-01-13 Hewlett-Packard Development Company, L.P. Write-absorbing buffer for non-volatile memory
JP2013134690A (en) * 2011-12-27 2013-07-08 Toshiba Corp Information processor and cache control method
US10402374B2 (en) * 2013-08-26 2019-09-03 Vmware, Inc. Log-structured storage device format
US9170928B1 (en) * 2013-12-31 2015-10-27 Symantec Corporation I/O scheduling and load balancing across the multiple nodes of a clustered environment
US9501418B2 (en) * 2014-06-26 2016-11-22 HGST Netherlands B.V. Invalidation data area for cache
US9524107B2 (en) * 2014-07-30 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Host-based device drivers for enhancing operations in redundant array of independent disks systems
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
KR101548689B1 (en) * 2014-12-26 2015-09-01 성균관대학교산학협력단 Method and apparatus for partial garbage collection in filesystems
JP6476959B2 (en) * 2015-02-13 2019-03-06 富士通株式会社 Storage control device, storage system, and control program
JP2016192170A (en) * 2015-03-31 2016-11-10 富士通株式会社 Storage control device, storage system, and storage control program
US10235288B2 (en) * 2015-10-02 2019-03-19 Netapp, Inc. Cache flushing and interrupted write handling in storage systems

Also Published As

Publication number Publication date
US20190026034A1 (en) 2019-01-24
US10657062B2 (en) 2020-05-19
JPWO2019016911A1 (en) 2019-12-12
WO2019016911A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
JP6731553B2 (en) Distributed storage system and distributed storage control method
US10852959B2 (en) Data storage system, process and computer program for such data storage system for reducing read and write amplifications
JP6600698B2 (en) Computer system
US9785349B2 (en) Efficient free-space management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap in bind segments
US9792061B2 (en) Efficient cache management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap
CN110300960B (en) Information system, management program, and program replacement method for information system
US10394484B2 (en) Storage system
US11321208B2 (en) Distributed storage system and distributed storage control method
US10884924B2 (en) Storage system and data writing control method
US10846234B2 (en) Storage control system and storage control method
JP6025973B2 (en) Computer system and volume management method for computer system
US9298397B2 (en) Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
US20170097795A1 (en) Storage system
US9785553B2 (en) Asynchronous cleanup after a peer-to-peer remote copy (PPRC) terminate relationship operation
US9535610B2 (en) Optimizing peer-to-peer remote copy (PPRC) transfers for partial write operations using a modified sectors bitmap
WO2018055686A1 (en) Information processing system
US20160357479A1 (en) Storage control apparatus
JP7113698B2 (en) Information system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190807

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190807

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: 20200616

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200706

R150 Certificate of patent or registration of utility model

Ref document number: 6731553

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150