JP2012164130A - Data division program - Google Patents
Data division program Download PDFInfo
- Publication number
- JP2012164130A JP2012164130A JP2011023960A JP2011023960A JP2012164130A JP 2012164130 A JP2012164130 A JP 2012164130A JP 2011023960 A JP2011023960 A JP 2011023960A JP 2011023960 A JP2011023960 A JP 2011023960A JP 2012164130 A JP2012164130 A JP 2012164130A
- Authority
- JP
- Japan
- Prior art keywords
- data
- division
- condition
- dividing
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、データを分割するプログラムに関するものである。 The present invention relates to a program for dividing data.
コンピュータにデータを格納する際に、重複部分を排除してデータサイズを小さくする処理を施す場合がある。具体的には、データをブロックに分割し、バイト列が同一であるブロックを削除する。 When data is stored in a computer, there is a case where processing for eliminating the overlapping portion and reducing the data size is performed. Specifically, the data is divided into blocks, and blocks having the same byte string are deleted.
データに重複排除処理を施す例として、データをバックアップする処理が挙げられる。バックアップデータは継続的に蓄積する必要があるため、サイズが大きくなりやすく、したがって重複しているデータを削除するニーズがあるからである。その他、今後はストレージ装置そのものにも重複排除技術が適用される可能性がある。 An example of performing deduplication processing on data includes processing for backing up data. This is because the backup data needs to be continuously stored, and therefore tends to increase in size, and therefore there is a need to delete duplicate data. In addition, the deduplication technology may be applied to the storage apparatus itself in the future.
バックアップデータに対して重複排除処理を実施する場合、まずバックアップするファイルをブロックに分割し、ブロックのハッシュ値をキーとして、適当な手法で圧縮したブロックをバックアップメディアに退避する。また、バックアップデータを取り出すことを容易にするため、各ブロックのハッシュ値をバックアップデータとは別の記憶装置に保持しておく場合もある。 When deduplication processing is performed on backup data, the file to be backed up is first divided into blocks, and the block compressed by an appropriate method is saved in the backup medium using the hash value of the block as a key. Further, in order to make it easy to extract backup data, the hash value of each block may be held in a storage device different from the backup data.
重複排除処理の効果を高めるためには、データを分割して生成した各ブロック同士ができる限り同一となるようにすることが望ましい。そのため、重複排除処理を実施する際には、データをどの位置で分割するかという課題がともなう。 In order to increase the effect of the deduplication processing, it is desirable that the blocks generated by dividing the data be as identical as possible. For this reason, when performing deduplication processing, there is a problem of where to divide data.
下記特許文献1では、バイト列を先頭から末尾に向かって順次スキャンし、所定長のバイト列のハッシュ値が、あらかじめ定めておいた規定の数値パターンになった時点でバイト列を分割する。予備的な分割条件として、ハッシュ値が規定数値パターンに部分的に一致した場合にも、バイト列を分割することとしている。
In
下記特許文献2では、バイト列の中に分割枠を設けておき、分割枠内の各分割位置候補の特徴値を求め、各特徴値を比較することにより、分割位置を決定している。
In
下記特許文献3では、分割位置候補のオフセット、ハッシュ値、その他の特徴値を評価することにより、分割位置を決定している。
In
下記特許文献4では、バイト列を何らかの方法で分割し、分割したバイト列内に、先に記憶装置へ書き込んだバイト列が含まれるか否かを、ハッシュ値によって判定している。これにより、記憶装置に書込済のバイト列については重複書込しないようにしている。 In Patent Document 4 below, a byte string is divided by some method, and whether or not the divided byte string includes a byte string written to the storage device first is determined by a hash value. As a result, the byte string already written in the storage device is not overwritten.
下記非特許文献1では、データを遠隔コンピュータに複製する技術が記載されている。全データを一括して遠隔複製することは難しいため、対象データを適当な大きさに分割する必要がある。重複しているブロックは複製しなくともよいため、分割位置を適切に定めることにより、複製効率を向上させることができる。同文献では、データを固定長で分割するのではなく、可変長で分割し、重複するブロックを探している。
The following
重複排除処理の効果を高めるためには、データをブロックに分割する際のブロックサイズをできる限り小さくしたほうがよいと考えられる。サイズが小さいブロックほど、他のブロックと一致する確率が高まるからである。 In order to increase the effect of deduplication processing, it is considered that the block size when dividing data into blocks should be as small as possible. This is because the smaller the block, the higher the probability of matching with another block.
一方で、データを圧縮する際には、圧縮前のデータサイズが大きいほど、圧縮効率がよいとされる。したがって、上述したバックアップの例のように、データをブロック毎に圧縮して保存する場合には、各ブロックサイズができる限り大きいほうがよいということになる。このことは、重複排除の効率を高めるために必要となる上記要件と相反している。 On the other hand, when compressing data, the larger the data size before compression, the better the compression efficiency. Therefore, when the data is compressed and stored for each block as in the above-described backup example, each block size should be as large as possible. This is in contradiction to the above requirement that is necessary to increase the efficiency of deduplication.
重複排除とデータ圧縮は、ともに余分なデータを除去する目的があるので、総合的にデータサイズを小さくすることができる手法を優先すべきであると考えられる。特に上述したバックアップの例のように、重複排除とデータ圧縮を双方とも実施する場合には、上記のような相反する要求のバランスをとりつつ、総合的な効果としてデータサイズを小さくすることが肝要である。 Since both deduplication and data compression have the purpose of removing excess data, it is considered that priority should be given to methods that can reduce the data size overall. In particular, when both deduplication and data compression are performed, as in the backup example described above, it is important to reduce the data size as a comprehensive effect while balancing the conflicting requirements described above. It is.
また、大容量のデータをバックアップする際には、バックアップ処理の効率も考慮する必要がある。分割ブロックのサイズを小さくすると、重複排除処理の効果は高まる反面、ブロックをバックアップメディアに格納する書込処理の回数が増えるため、結果としてバックアップ処理の時間が増大してしまう。 In addition, when backing up a large amount of data, it is necessary to consider the efficiency of backup processing. If the size of the divided block is reduced, the effect of the deduplication process is increased, but the number of write processes for storing the block in the backup medium is increased, resulting in an increase in the backup process time.
以上のような理由から、データ重複排除とデータ圧縮のバランスをとることのできるデータ分割手法が望まれる。この点、上記特許文献1〜4および非特許文献1では、重複排除処理のみに着目しており、したがって分割ブロックサイズを大きくするという観点は記載されていない。以下、個別に説明する。
For the above reasons, a data division method that can balance data deduplication and data compression is desired. In this regard,
非特許文献1では、あるブロックと重複するブロックを高速に探す方法を記載しているが、その前提として、重複するブロックが多くなるようにデータを分割することについては、明確には開示していない。
Non-Patent
特許文献1では、分割条件を複数設け、第1分割条件に該当する分割候補が見つけられなければ、予備的な第2分割条件に該当する位置でデータを分割している。しかし、第1分割条件および第2分割条件ともに、分割ブロックのサイズが大きくなるように明示的に構成されているわけではない。したがって、原則として重複排除処理の効率が高くなるように分割位置を定めるように動作すると思われる。
In
特許文献2〜3でも、特許文献1と同様に分割ブロックのサイズが大きくなるとは限らない。また、複数の分割位置候補を比較するため、処理負荷が高く、処理効率が求められる用途には向かないと考えられる。
Even in
特許文献4では、バイト列が書込済であるか否かを確認するために記憶装置から書込済データを読み取る必要があるので、記憶装置にアクセスする時間が長くなり、処理効率が高くないと考えられる。 In Patent Document 4, since it is necessary to read the written data from the storage device in order to confirm whether or not the byte string has been written, the time for accessing the storage device becomes long and the processing efficiency is not high. it is conceivable that.
本発明は、上記のような課題を解決するためになされたものであり、データ重複排除を実施しつつ、データ圧縮効率を高めることのできるデータ分割手法を提供することを目的とする。 The present invention has been made in order to solve the above-described problems, and an object of the present invention is to provide a data division method capable of improving data compression efficiency while performing data deduplication.
本発明に係るデータ分割プログラムは、データを分割する位置を判定する際に、データの終端により近い位置を優先して保存しておき、その位置でデータを分割する。 The data division program according to the present invention preferentially stores a position closer to the end of the data when determining the position to divide the data, and divides the data at that position.
本発明に係るデータ分割プログラムでは、データ重複排除を実施するためのデータ分割を実施する過程で、データの終端により近い位置が優先的に用いられるので、データ圧縮の効果を高める方向に処理を振り向けつつ、データ重複排除を実施することができる。これにより、データ重複排除とデータ圧縮のバランスをとり、データサイズを小さくする効果を総合的に最適化することができる。また、これにより、バックアップ処理の時間を総合的に短縮することができる。 In the data division program according to the present invention, the position closer to the end of the data is preferentially used in the process of performing the data division for performing the data deduplication. Therefore, the processing is directed to improve the data compression effect. However, data deduplication can be implemented. Thereby, it is possible to comprehensively optimize the effect of reducing the data size by balancing data deduplication and data compression. This also makes it possible to shorten the time for backup processing comprehensively.
<実施の形態1>
図1は、本発明の実施形態1に係るデータ分割装置100の機能ブロック図である。データ分割装置100は、データを分割する処理を実施する装置であり、データ読取部110、分割条件判定部120、データ分割部130、データ格納部140を備える。
<
FIG. 1 is a functional block diagram of a
データ読取部110は、ファイルサーバ200などのデータソースから、分割対象となるデータを読み取る。分割条件判定部120は、データ読取部110が読み取ったデータを順次取得し、データを分割する条件に該当するか否かを判定する。データ分割部130は、分割条件判定部120が判定した条件に該当する位置で、データをブロックに分割する。データ格納部140は、データ分割部130がデータ分割によって生成したデータブロックのハッシュ値を計算し、バックアップ装置400に格納する。また、データブロックとハッシュ値を対応付けてブロックDB300に格納する。
The
ブロックDB300は、データ分割部130が元のデータを分割して生成したデータブロックを記憶するデータベースである。ブロックDB300は、ハードディスクなどの記憶装置を用いて構成することができる。バックアップ装置400は、データ格納部140が生成したハッシュ値を記憶する記憶装置である。
The
データ読取部110、分割条件判定部120、データ分割部130、データ格納部140は、個別の機能部として構成することもできるし、一体的に構成することもできる。
The
データ読取部110、分割条件判定部120、データ分割部130、データ格納部140は、これらの機能を実現する回路デバイスなどのハードウェアとして構成することもできるし、CPU(Central Processing Unit)などの演算装置とその動作を規定するプログラムによって構成することもできる。以下では主にプログラムによってこれら機能部を構成した例を説明する。
The
図2は、データ分割装置100がデータを分割する処理を記述したプログラムである。説明の便宜上、ステップ番号を併記した。以下、図2の各ステップについて説明する。
FIG. 2 is a program describing a process in which the
(図2:ステップ200)
データ分割装置100は、データ読取部110が読み取ったデータ全てに対して、以下のステップ210〜223を実施する。データ全てに対して処理を終えていない場合は、「start」マーカを目印にして本ステップに戻り、同様の処理を繰り返す。データ読取部110が読み取ったデータは、変数blockStartが示すメモリアドレスから、変数blockEndが示すメモリアドレスの1つ手前のアドレスまでに、バイト列として格納されているものとする。
(Figure 2: Step 200)
The
(図2:ステップ210)
分割条件判定部120は、blockEnd <= blockStartが成り立てば処理を終了する。blockStart変数は、以下のステップにおいて逐次更新される。本ステップは、分割対象であるバイト列の長さが0となったことを確認し、処理を終了すべきか否かを判断するためのものである。
(FIG. 2: Step 210)
The division
(図2:ステップ211)
分割条件判定部120は、blockEnd <= blockStart + blockMinが成り立つか否かを判断する。成り立つ場合、データ格納部140は、blockStartとblockEnd間のブロックをブロックDB300に書き込む。データ格納部140は、同じブロックのハッシュ値を計算し、バックアップ装置400に格納する。データ格納部140が実施する上記処理は、関数bdb内に記述されている。同関数の詳細は、後述の図3で改めて説明する。
(Figure 2: Step 211)
The division
(図2:ステップ211:補足)
blockMinは、分割後ブロックの最小サイズである。したがって本ステップは、分割対象となるバイト列が最小サイズ以下になっているか否かを判定していることになる。対象バイト列が最小サイズ以下であれば、処理がデータの終端近くまで進んでおり、残りバイト列は僅かであることになるので、以下のステップを実施する意義はあまりない。そこで、残りバイト列についてはそのままブロックDB300に格納することとした。
(Figure 2: Step 211: Supplement)
blockMin is the minimum size of the divided block. Therefore, this step determines whether or not the byte sequence to be divided is smaller than the minimum size. If the target byte sequence is less than or equal to the minimum size, the process proceeds to near the end of the data, and the remaining byte sequence is small, so it is not meaningful to perform the following steps. Therefore, the remaining byte sequence is stored in the
(図2:ステップ212)
分割条件判定部120は、変数cP1と変数cP2を0で初期化する。変数cP1は、データを分割する条件である第1分割条件に該当するデータアドレスを保持するための変数である。変数cP2は、データを分割する条件である第2分割条件に該当するデータアドレスを保持するための変数である。
(Figure 2: Step 212)
The division
(図2:ステップ213)
分割条件判定部120は、分割位置を探す際に使用するアドレス変数cPを初期化する。最初の位置は、最小ブロックサイズに相当する位置よりも1バイト先のアドレスとする。以下、各機能部は、ファイルサーバ200から取得したデータを1バイトずつ順次読み取りながら、以下の処理を実施する。
(Figure 2: Step 213)
The division
(図2:ステップ214)
分割条件判定部120は、cP < blockEndが満たされる間、すなわち、アドレス変数cPが分割対象データの最後に到達するまで、ステップ215〜223の処理を繰り返す。
(Figure 2: Step 214)
The division
(図2:ステップ215)
分割条件判定部120は、分割条件に該当するか否かを判定するために用いる特徴値hashを求める。特徴値hashを求める処理は、関数crcに記述されている。関数crcの処理内容としては、任意の公知技術を用いることができる。
(Figure 2: Step 215)
The division
(図2:ステップ215:補足)
関数crcの処理内容として、例えば指定されたアドレスから所定長手前のバイト列について巡回冗長検査値やハッシュ値を求め、その値を特徴値hashとして用いることが考えられる。
(Figure 2: Step 215: Supplement)
As processing contents of the function crc, for example, it is conceivable to obtain a cyclic redundancy check value or a hash value for a byte string before a predetermined length from a specified address, and use the value as a feature value hash.
(図2:ステップ216)
分割条件判定部120は、特徴値hashが第1分割条件を満たすか否かを検査する。第1分割条件は、関数pattern1に記述されている。特徴値hashが第1分割条件を満たす場合は、変数cP1に現在のデータアドレスcPをセットし、ステップ219に進む。第1分割条件を満たさない場合は、ステップ217へ進む。
(Figure 2: Step 216)
The division
(図2:ステップ216:補足)
第1分割条件としては、例えば特徴値hashの部分ビットパターンが特定のビットパターンと一致するか否か、などが考えられる。その他、特徴値hashをある特定の値で割った余りが規定値に一致するか否か、などが考えられる。以下で説明する第2分割条件および第3分割条件も同様である。
(Figure 2: Step 216: Supplement)
As the first division condition, for example, whether or not the partial bit pattern of the feature value hash matches a specific bit pattern can be considered. In addition, it can be considered whether or not the remainder obtained by dividing the feature value hash by a specific value matches the specified value. The same applies to the second division condition and the third division condition described below.
(図2:ステップ217)
分割条件判定部120は、特徴値hashが第2分割条件を満たすか否かを検査する。第2分割条件は、関数pattern2に記述されている。第2分割条件は、ステップ216における第1分割条件とは異なる条件とする。特徴値hashが第2分割条件を満たす場合は、変数cP2に現在のデータアドレスcPをセットし、ステップ219に進む。第2分割条件を満たさない場合は、ステップ218へ進む。
(Figure 2: Step 217)
The division
(図2:ステップ218)
分割条件判定部120は、特徴値hashが第3分割条件を満たすか否かを検査する。第3分割条件は、関数pattern3に記述されている。第3分割条件は、ステップ216における第1分割条件およびステップ217における第2分割条件とは異なる条件とする。特徴値hashが第3分割条件を満たす場合は、変数cP2に現在のデータアドレスcPをセットする。
(Figure 2: Step 218)
The division
(図2:ステップ219)
データ分割部130は、変数cP1がセットされている(0でない)か否かを検査する。変数cP1がセットされていれば、ステップ216で第1分割条件を満たす位置が見つかっていることになる。データ分割部130は、アドレスblockStartとアドレスcP1の間でデータをデータブロックに分割する。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、blockStart = cP1として、ステップ210に戻る。変数cP1がセットされていない場合はステップ220に進む。
(Figure 2: Step 219)
The
(図2:ステップ220)
データ分割部130は、アドレスcP(分割条件を判定している現アドレス)が、分割後ブロックの最大サイズに相当する位置(blockStart + blockMax)に達しているか否かを検査する。最大サイズに相当する位置に達していればステップ221に進み、達していなければステップ223にスキップする。
(Figure 2: Step 220)
The
(図2:ステップ221)
データ分割部130は、変数cP2がセットされている(0でない)か否かを検査する。変数cP2がセットされていれば、ステップ217における第2分割条件またはステップ218における第3分割条件を満たす位置が見つかっていることになる。データ分割部130は、アドレスblockStartとアドレスcP2の間でデータをデータブロックに分割する。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、blockStart = cP2として、ステップ210に戻る。変数cP2がセットされていない場合はステップ222に進む。
(FIG. 2: Step 221)
The
(図2:ステップ222)
データ分割部130は、アドレスblockStartとアドレスcPの間でデータをデータブロック(ステップ220の条件により、分割ブロックの最大サイズとなっている)に分割する。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、blockStart = cPとして、ステップ210に戻る。
(Figure 2: Step 222)
The
(図2:ステップ223)
データ分割部130は、アドレスcPを1バイト前(データの終端に向かう方向)に進め、ステップ215に戻る。
(Figure 2: Step 223)
The
(図2:ステップ225)
データ分割部130は、アドレスblockStartとアドレスblockEndの間の残ったデータをデータブロックとして取り出す。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。本ステップは、分割後ブロックの最大サイズに相当する位置まで第1分割条件に該当する位置がみつからなかった場合の処理である。
(Figure 2: Step 225)
The
図3は、データ格納部140が実施する関数bdbの詳細処理フローを示す図である。以下、図3の各ステップについて説明する。
FIG. 3 is a diagram illustrating a detailed processing flow of the function bdb executed by the
(図3:ステップS301)
データ格納部140は、ブロックDB300に格納する対象となっているデータブロックのハッシュ値を計算する。衝突する確率が低いハッシュ関数を用いることが望ましい。例えば、SHA-1、SHA-256などのハッシュ関数を用いることができる。
(FIG. 3: Step S301)
The
(図3:ステップS302)
データ格納部140は、ステップS301でデータ格納部140が求めたハッシュ値をキーにして、同じ内容のデータブロックが既にブロックDB300へ登録されているか否かを検索する。
(FIG. 3: Step S302)
The
(図3:ステップS303)
ステップS302でキーが見つかった場合は、データ格納部140はハッシュ値をバックアップ装置400に出力し、本処理フローを終了する。
(FIG. 3: Step S303)
If the key is found in step S302, the
(図3:ステップS304)
ステップS302でキーが見つからなかった場合は、データ格納部140はハッシュ値をバックアップ装置400に出力し、ハッシュ値をキーにしてデータブロックをブロックDB300に格納する。ブロックDB300に格納するデータブロックは、適当なアルゴリズムを用いて圧縮することが望ましい。
(FIG. 3: Step S304)
If the key is not found in step S302, the
(図3:ステップS303〜S304:補足)
これらステップにおいてハッシュ値をキーにしているのは、ステップS304でブロックDB300にデータブロックを格納する際に、データブロックを圧縮する場合があるからである。データブロックを圧縮してからブロックDB300に格納する場合、既にブロックDB300に格納されているデータブロックと新たなデータブロックが同一であるか否かは、圧縮を解かない限り分からないため、処理負担が重くなる。そこで、ハッシュ値が一致するか否かによって簡易的に同一判定できるようにしているのである。
(FIG. 3: Steps S303 to S304: Supplement)
The reason why the hash value is used as a key in these steps is that the data block may be compressed when the data block is stored in the
<実施の形態1:まとめ>
以上のように、本実施形態1に係るデータ分割装置100は、第2分割条件に該当するデータ位置のうち、データの終端にできる限り近い分割位置を優先してデータを分割するように構成されている。これにより、重複排除処理のためのデータ分割を実施しつつ、分割後のデータブロックサイズができる限り大きくなるように処理方針を方向付けていることになるので、結果としてデータ重複排除とデータ圧縮をバランスよく両立させることができる。
<Embodiment 1: Summary>
As described above, the
具体的には、第1分割条件に該当する分割位置が見つからない場合には、第2分割条件に該当するできるだけ終端に近い分割位置を変数cP2に保存しておき、ステップ221でblockStartからcP2までのデータブロックをブロックDB300に書き込む。この処理手順により、最後に残ったcP2の値は、できる限りデータ終端に近い位置となる。
Specifically, if a division position corresponding to the first division condition is not found, a division position as close as possible to the end corresponding to the second division condition is stored in the variable cP2, and from blockStart to cP2 in
また、データブロックが第1分割条件と第2分割条件いずれにも該当しない場合には、ステップ222で分割後ブロックの最大サイズblockMaxのデータブロックをブロックDB300に格納するようにしている。これにより、重複排除に適していないデータブロックはデータ圧縮を優先してできる限り大きなサイズのデータブロックを格納することになるので、重複排除効果を発揮できないとしても、データ圧縮効果でこれを補い、総合的にデータサイズを小さくすることができる。
If the data block does not satisfy either the first division condition or the second division condition, a data block having the maximum size blockMax of the divided block is stored in the
<実施の形態2>
本発明の実施形態2では、実施形態1と同様にできる限りデータ終端に近い位置でデータを分割する手法を説明する。本実施形態2では、分割するデータを終端から先頭に向かって順次読み取り、分割条件に合致した時点でデータを分割する。データ分割装置100の構成は実施形態1と同様であるため、以下では差異点を中心に説明する。
<
In the second embodiment of the present invention, a method for dividing data at a position as close to the end of data as possible as in the first embodiment will be described. In the second embodiment, data to be divided is read sequentially from the end toward the beginning, and the data is divided when the division condition is met. Since the configuration of the
図4は、本実施形態2に係るデータ分割装置100がデータを分割する処理を記述したプログラムである。説明の便宜上、ステップ番号を併記した。以下、図4の各ステップについて説明する。
FIG. 4 is a program describing a process of dividing data by the
(図4:ステップ400〜412)
これらのステップは、図2のステップ200〜212と同様である。
(FIG. 4:
These steps are the same as
(図4:ステップ413)
分割条件判定部120は、blockStart + blockMax <= blockEndが成立する場合は、分割位置を探す際に使用するアドレス変数cPを、分割後ブロックの最大サイズに相当する位置に初期化する。
(FIG. 4: Step 413)
When blockStart + blockMax <= blockEnd is established, the division
(図4:ステップ414)
分割条件判定部120は、ステップ413の条件式が成立しない場合は、変数cPをデータブロックの末尾位置に初期化する。
(FIG. 4: Step 414)
If the conditional expression in
(図4:ステップ413〜414:補足)
これらのステップでは、条件判定する位置cPを、データブロックのできるだけ後方の位置に初期設定していることになる。
(FIG. 4:
In these steps, the condition determination position cP is initialized to a position as far back as possible in the data block.
(図4:ステップ415)
分割条件判定部120は、cP >= blockStart + blockMinが満たされる間、すなわちアドレスcPがデータブロックの末尾から最小ブロックサイズに相当する位置に達するまで、ステップ416からステップ421までの処理を繰り返す。
(FIG. 4: Step 415)
The division
(図4:ステップ416〜417)
これらのステップは、図2のステップ215〜216と同様である。
(FIG. 4:
These steps are the same as
(図4:ステップ418〜419)
これらのステップは、図2のステップ217〜218と同様である。ただし、分割条件判定部120は、第2分割条件pattern2と第3分割条件pattern3を判定する前に、アドレスcP2がセットされているか否か(値が0)を判定する。これは、本実施形態2ではデータブロックの末尾から先頭に向かってデータを読み取っていくため、最初に見つかったcP2の値が最もデータブロック末尾に近いからである。すなわち、できる限りデータブロックの末尾に近い位置でデータ分割するという観点では、cP2が既に見つかっていればその値を更新する必要はなく、cP2が空である場合に限り値をセットする必要があるからである。
(FIG. 4:
These steps are the same as
(図4:ステップ420)
本ステップは、図2のステップ219と同様である。
(FIG. 4: Step 420)
This step is the same as
(図4:ステップ421)
データ分割部130は、アドレスcPを1バイト後ろ(データの先頭に向かう方向)に進め、ステップ416に戻る。
(FIG. 4: Step 421)
The
(図4:ステップ423)
本ステップに到達した時点で変数cP2がセットされている場合、ステップ415〜421のループ内では、第1判定条件に合致する位置が見つからず、第2判定条件に合致する位置のみが見つかっていることになる。データ分割部130は、アドレスblockStartとアドレスcP2の間でデータをデータブロックに分割する。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、blockStart = cP2として、ステップ410に戻る。
(FIG. 4: Step 423)
When the variable cP2 is set when this step is reached, in the loop of
(図4:ステップ424)
ステップ423で変数cP2がセットされていない場合、ステップ415〜421のループ内では、第1判定条件と第2分割条件いずれも合致する位置が見つからなかったことになるので、分割後ブロックの最小サイズでデータブロックを分割する。データ分割部130は、アドレスblockStartとアドレスblockStart + blockMinの間でデータをデータブロックに分割する。データ格納部140は、そのデータブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、アドレスblockStartをblockMinだけインクリメントして、ステップ410に戻る。
(FIG. 4: Step 424)
If the variable cP2 is not set in
<実施の形態2:まとめ>
以上のように、本実施形態2に係るデータ分割装置100は、データの終端から先頭に向かって順次データを読み取り、第2分割条件に該当するできるだけ終端に近い分割位置を変数cP2に保存しておく。ステップ423では、blockStartからcP2までのデータブロックをブロックDB300に書き込む。この処理手順により、最後に残ったcP2の値は、できる限りデータ終端に近い位置となる。
<Embodiment 2: Summary>
As described above, the
また、データブロックが第1分割条件と第2分割条件いずれにも該当しない場合には、ステップ424で分割後ブロックの最小サイズblockMinのデータブロックをブロックDB300に格納するようにしている。これにより、重複排除に適していないデータブロックでも、少なくとも最小サイズblockMinのデータブロックを格納することになるので、最低限のデータ圧縮効果を発揮することができる。
If the data block does not satisfy either the first division condition or the second division condition, in
なお、ステップ424において、最大サイズblockMaxのデータブロックをブロックDB300に格納するようにしてもよい。これは、図2のステップ222と同様の処理を採用したものといえる。
In
<実施の形態3>
実施形態1〜2では、第1分割条件と第2分割条件のみを用いているが、より多くの分割条件を判定するようにすることもできる。本発明の実施形態3では、第1分割条件、第2分割条件、第3分割条件のいずれかに該当する位置でデータを分割する。データ分割装置100の構成は実施形態1と同様であるため、以下では差異点を中心に説明する。
<
In the first and second embodiments, only the first division condition and the second division condition are used. However, more division conditions can be determined. In
図5は、本実施形態3に係るデータ分割装置100がデータを分割する処理を記述したプログラムである。ここでは、実施形態1の図2で説明したプログラムに加えて、第3分割条件に合致する位置でデータ分割する処理を新たに設けた例を示すが、実施形態2の図4で説明したプログラムに加えて第3判定条件を設けることもできる。以下、図2で説明したプログラムと異なる部分を中心に説明する。
FIG. 5 is a program describing a process of dividing data by the
(図5:ステップ512)
分割条件判定部120は、変数cP1、変数cP2、変数cP3を0で初期化する。変数cP3は、データを分割する条件である第3分割条件に該当するデータアドレスを保持するための変数である。
(FIG. 5: Step 512)
The division
(図5:ステップ518)
分割条件判定部120は、特徴値hashが第3分割条件を満たす場合は、変数cP3に現在のデータアドレスcPをセットする。実施形態1〜2では、第3分割条件に合致する場合は変数cP2にデータアドレスcPを格納しているため、第1分割条件と第2分割条件のうちいずれかを採用していた。本実施形態3では、この選択肢に加えて新たに第3分割条件を設けた点が異なる。
(FIG. 5: Step 518)
When the feature value hash satisfies the third division condition, the division
(図5:ステップ522)
データ分割部130は、変数cP3がセットされている(0でない)か否かを検査する。変数cP3がセットされていれば、ステップ518における第3分割条件を満たす位置が見つかっていることになる。データ分割部130は、アドレスblockStartとアドレスcP3の間でデータをデータブロックに分割する。データ格納部140は、データブロックをブロックDB300に書き込む。データ格納部140は、同じデータブロックのハッシュ値を計算し、バックアップ装置400に書き込む。データ分割部130は、blockStart = cP3として、ステップ510に戻る。変数cP3がセットされていない場合はステップ523に進む。
(FIG. 5: Step 522)
The
<実施の形態3:まとめ>
以上のように、本実施形態3に係るデータ分割装置100は、第1分割条件、第2分割条件、第3分割条件の順に分割条件を判定し、いずれかに該当した位置でデータを分割する。これにより、実施形態1〜2よりも細かな分割条件を設定することができる。
<Embodiment 3: Summary>
As described above, the
<実施の形態4>
本発明の実施形態4では、データブロックのハッシュ値に加えてデータブロックの固有識別番号をブロックDB300とバックアップ装置400に格納する動作例を説明する。これにより、ハッシュ値が衝突した場合でもブロックDB300やバックアップ装置400に格納しているデータを破壊しないようにすることを図る。その他の構成は実施形態1〜3と同様であるため、以下では差異点を中心に説明する。
<Embodiment 4>
In the fourth embodiment of the present invention, an operation example in which the unique identification number of the data block is stored in the
図6は、本実施形態4においてデータ分割部130とデータ格納部140が実施する関数bdbの詳細処理フローを示す図である。以下、図6の各ステップについて説明する。
FIG. 6 is a diagram illustrating a detailed processing flow of the function bdb executed by the
(図6:ステップS601)
本ステップは、図3のステップS301と同様である。
(FIG. 6: Step S601)
This step is the same as step S301 in FIG.
(図6:ステップS602)
データ格納部140は、データブロックを固有に識別する固有識別番号を、0で初期化する。
(FIG. 6: Step S602)
The
(図6:ステップS603)
データ格納部140は、ステップS601でデータ格納部140が求めたハッシュ値とデータブロックの固有識別番号をキーにして、同じ内容のデータブロックが既にブロックDB300へ登録されているか否かを検索する。
(FIG. 6: Step S603)
The
(図6:ステップS604)
ステップS603でキーが見つかった場合は、データ格納部140は対応するデータブロックをブロックDB300から取り出し、処理対象になっているデータブロックと同一内容であるか否か比較する。同一であればハッシュ値と固有識別番号をバックアップ装置400に出力し、本処理フローを終了する。同一でなければ固有識別番号を1つインクリメントしてステップS603に戻る。
(FIG. 6: Step S604)
If a key is found in step S603, the
(図6:ステップS605)
ステップS603でキーが見つからなかった場合は、データ格納部140はハッシュ値と固有識別番号をバックアップ装置400に出力し、データ格納部140はハッシュ値と固有識別番号をキーにしてデータブロックをブロックDB300に格納する。ブロックDB300に格納するデータブロックは、適当なアルゴリズムを用いて圧縮することが望ましい。
(FIG. 6: Step S605)
If the key is not found in step S603, the
<実施の形態4:まとめ>
以上のように、本実施形態4に係るデータ分割装置100は、ハッシュ値が衝突する場合であっても、固有識別番号によってデータブロックを一意に識別することができる。これにより、ハッシュ値が衝突した場合でもブロックDB300やバックアップ装置400に格納しているデータを破壊しないようにすることができる。
<Embodiment 4: Summary>
As described above, the
<実施の形態5>
以上の実施形態1〜4において、データ分割装置100は、データ読取部110がファイルサーバ200からデータを読み取った時点で、そのデータが圧縮または暗号化されているか否かを判断し、圧縮または暗号化されている場合は図2〜図6で説明した処理を省略してそのデータをそのままブロックDB300に格納するようにしてもよい。圧縮または暗号化されているデータに対してさらに重複排除処理やデータ圧縮処理をしても、大きな効果は見込めないと考えられるからである。
<
In the first to fourth embodiments described above, the
図2〜図6で説明した処理を省略する場合は、データ全体を1つのデータブロックとして取り扱い、ハッシュ値はデータ全体に対して計算することになる。 When the processing described in FIGS. 2 to 6 is omitted, the entire data is handled as one data block, and the hash value is calculated for the entire data.
100:データ分割装置、110:データ読取部、120:分割条件判定部、130:データ分割部、140:データ格納部、200:ファイルサーバ、300:ブロックDB、400:バックアップ装置。 DESCRIPTION OF SYMBOLS 100: Data division | segmentation apparatus, 110: Data reading part, 120: Division condition determination part, 130: Data division part, 140: Data storage part, 200: File server, 300: Block DB, 400: Backup apparatus.
Claims (9)
前記コンピュータに、
前記データを所定の読取単位毎に順次読み取る読取ステップ、
前記読取ステップで読み取ったデータが、データを分割する条件に該当するか否かを判定してそのデータ位置を取得する判定ステップ、
前記データが前記条件に該当する位置で前記データを分割する分割ステップ、
を実行させ、
前記判定ステップでは、前記コンピュータに、
前記読取ステップで読み取ったデータが、データを分割する条件である第1分割条件に該当するか否かを判定する第1判定ステップ、
前記読取ステップで読み取ったデータが前記第1分割条件に該当しない場合は、前記読取ステップで読み取ったデータが、データを分割する条件である第2分割条件に該当するか否かをさらに判定する第2判定ステップ、
を実行させ、
前記第2判定ステップは、
前記データの終端により近い位置を前記判定ステップの結果として優先的に用いるように構成されている
ことを特徴とするデータ分割プログラム。 A program for causing a computer to execute a process of dividing data,
In the computer,
A reading step for sequentially reading the data for each predetermined reading unit;
A determination step of determining whether the data read in the reading step satisfies a condition for dividing the data and acquiring the data position;
A dividing step of dividing the data at a position where the data satisfies the condition;
And execute
In the determination step, the computer
A first determination step of determining whether or not the data read in the reading step satisfies a first division condition that is a condition for dividing the data;
If the data read in the reading step does not meet the first division condition, it is further determined whether the data read in the reading step satisfies a second division condition that is a condition for dividing the data. 2 determination steps;
And execute
The second determination step includes
A data division program characterized in that a position closer to the end of the data is preferentially used as a result of the determination step.
前記読取ステップでは、前記コンピュータに、
前記データを先頭から終端に向かって順次読み取らせ、
前記データ分割ステップでは、前記コンピュータに、
前記読取ステップで読み取ったデータが前記第1分割条件および前記第2分割条件のいずれにも該当しなかった場合は、前記上限サイズで前記分割ステップを実行させる
ことを特徴とする請求項1記載のデータ分割プログラム。 Causing the computer to execute a step of predefining an upper limit size of the data after being divided in the dividing step;
In the reading step, the computer is
Read the data sequentially from the beginning to the end,
In the data dividing step, the computer is
2. The division step according to claim 1, wherein when the data read in the reading step does not satisfy either the first division condition or the second division condition, the division step is executed with the upper limit size. Data partitioning program.
前記読取ステップでは、前記コンピュータに、
前記データを終端から先頭に向かって順次読み取らせ、
前記データ分割ステップでは、前記コンピュータに、
前記読取ステップで読み取ったデータが前記第1分割条件および前記第2分割条件のいずれにも該当しなかった場合は、前記下限サイズで前記分割ステップを実行させる
ことを特徴とする請求項1記載のデータ分割プログラム。 Causing the computer to execute a step of predefining a lower limit size of the data after being divided in the dividing step;
In the reading step, the computer is
Read the data sequentially from the end to the beginning,
In the data dividing step, the computer is
2. The division step according to claim 1, wherein when the data read in the reading step does not correspond to either the first division condition or the second division condition, the division step is executed with the lower limit size. Data partitioning program.
前記読取ステップで読み取ったデータが前記第1分割条件および前記第2分割条件のいずれにも該当しない場合は、前記読取ステップで読み取ったデータが、データを分割する条件である第3分割条件に該当するか否かをさらに判定する第3判定ステップを実行させ、
前記分割ステップでは、前記コンピュータに、
前記第1分割条件、前記第2分割条件、または前記第3分割条件のいずれかに該当した位置で前記データを分割させ、
前記第3判定ステップは、
前記データの終端により近い位置を前記判定ステップの結果として優先的に用いるように構成されている
ことを特徴とする請求項1から3のいずれか1項記載のデータ分割プログラム。 In the determination step, the computer
If the data read in the reading step does not correspond to either the first division condition or the second division condition, the data read in the reading step corresponds to a third division condition that is a condition for dividing the data. A third determination step for further determining whether or not to perform,
In the dividing step, the computer is
Dividing the data at a position corresponding to any of the first division condition, the second division condition, or the third division condition;
The third determination step includes
The data division program according to any one of claims 1 to 3, wherein a position closer to the end of the data is preferentially used as a result of the determination step.
ことを特徴とする請求項1から4のいずれか1項記載のデータ分割プログラム。 The data division program according to any one of claims 1 to 4, wherein the computer executes a storage step of storing the data divided in the division step in association with a hash value of the data in a storage device. .
前記分割ステップで分割した前記データを固有に識別する番号を前記ハッシュ値と対応付けて前記記憶装置に格納させる
ことを特徴とする請求項5記載のデータ分割プログラム。 In the storing step, the computer
The data division program according to claim 5, wherein a number that uniquely identifies the data divided in the division step is stored in the storage device in association with the hash value.
前記データが圧縮済みまたは暗号化されている場合は、前記読取ステップ、前記判定ステップ、前記分割ステップ、および前記格納ステップを省略し、前記データをそのハッシュ値と対応付けて記憶装置に格納する処理のみを実行するステップ、
を前記コンピュータに実行させる
ことを特徴とする請求項5または6記載のデータ分割プログラム。 Determining whether the data is compressed or encrypted;
When the data is compressed or encrypted, the reading step, the determining step, the dividing step, and the storing step are omitted, and the data is stored in the storage device in association with the hash value Steps to perform only,
The data division program according to claim 5 or 6, wherein the computer is executed.
前記データまたは前記分割ステップで分割した前記データを圧縮して記憶装置に格納させる
ことを特徴とする請求項5から7のいずれか1項記載のデータ分割プログラム。 In the storing step, the computer
The data division program according to any one of claims 5 to 7, wherein the data or the data divided in the division step is compressed and stored in a storage device.
前記データを所定の読取単位毎に順次読み取る読取部と、
前記読取部が読み取ったデータが、データを分割する条件に該当するか否かを判定する分割条件判定部と、
前記データが前記条件に該当する位置で前記データを分割する分割部と、
を備え、
前記分割条件判定部は、
前記読取部が読み取ったデータが、データを分割する条件である第1分割条件に該当するか否かを判定し、
前記読取部が読み取ったデータが前記第1分割条件に該当しない場合は、前記読取部が読み取ったデータが、データを分割する条件である第2分割条件に該当するか否かをさらに判定し、
前記分割条件判定部は、
前記データが第2分割条件に該当するか否かを判定する際に、前記データの終端により近い位置を優先的に用いる
ことを特徴とするデータ分割装置。 A device for dividing data,
A reading unit that sequentially reads the data for each predetermined reading unit;
A division condition determination unit that determines whether the data read by the reading unit satisfies a condition for dividing the data;
A dividing unit that divides the data at a position where the data satisfies the condition;
With
The division condition determining unit
Determining whether the data read by the reading unit satisfies a first division condition that is a condition for dividing the data;
If the data read by the reading unit does not meet the first division condition, further determine whether the data read by the reading unit meets a second division condition that is a condition for dividing the data,
The division condition determining unit
A data division apparatus characterized by preferentially using a position closer to the end of the data when determining whether or not the data satisfies a second division condition.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011023960A JP2012164130A (en) | 2011-02-07 | 2011-02-07 | Data division program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011023960A JP2012164130A (en) | 2011-02-07 | 2011-02-07 | Data division program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012164130A true JP2012164130A (en) | 2012-08-30 |
Family
ID=46843463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011023960A Pending JP2012164130A (en) | 2011-02-07 | 2011-02-07 | Data division program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012164130A (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5336645B1 (en) * | 2012-12-17 | 2013-11-06 | 義尚 神山 | Recording medium recording multiple multiplier division software |
JP2014203362A (en) * | 2013-04-08 | 2014-10-27 | 富士通株式会社 | Storage device and storage control method |
JP2016515250A (en) * | 2013-08-19 | 2016-05-26 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Data object processing method and apparatus |
WO2016084228A1 (en) * | 2014-11-28 | 2016-06-02 | 株式会社日立製作所 | Storage device |
US9477589B2 (en) | 2014-01-23 | 2016-10-25 | Samsung Electronics Co., Ltd. | Storage device that performs a de-duplication operation, and method of operating the same |
WO2018193707A1 (en) * | 2017-04-20 | 2018-10-25 | 富士通株式会社 | Information processing device, program, information processing method, and data structure |
JP2019061574A (en) * | 2017-09-27 | 2019-04-18 | 東芝情報システム株式会社 | File management system and program for file management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002044906A1 (en) * | 2000-11-29 | 2002-06-06 | Flex-Firm Inc. | Contents providing method |
JP2006092558A (en) * | 2004-09-24 | 2006-04-06 | Microsoft Corp | Efficient algorithm for finding candidate object for remote differential compression |
JP2010515114A (en) * | 2006-12-01 | 2010-05-06 | エヌイーシー ラボラトリーズ アメリカ インク | Method and system for rapid and efficient data management and / or data processing |
JP2010205100A (en) * | 2009-03-05 | 2010-09-16 | Nec Corp | Management server, backup system, backup method, and program |
JP2010218194A (en) * | 2009-03-17 | 2010-09-30 | Nec Corp | Storage system |
-
2011
- 2011-02-07 JP JP2011023960A patent/JP2012164130A/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002044906A1 (en) * | 2000-11-29 | 2002-06-06 | Flex-Firm Inc. | Contents providing method |
JP2006092558A (en) * | 2004-09-24 | 2006-04-06 | Microsoft Corp | Efficient algorithm for finding candidate object for remote differential compression |
JP2010515114A (en) * | 2006-12-01 | 2010-05-06 | エヌイーシー ラボラトリーズ アメリカ インク | Method and system for rapid and efficient data management and / or data processing |
JP2010205100A (en) * | 2009-03-05 | 2010-09-16 | Nec Corp | Management server, backup system, backup method, and program |
JP2010218194A (en) * | 2009-03-17 | 2010-09-30 | Nec Corp | Storage system |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5336645B1 (en) * | 2012-12-17 | 2013-11-06 | 義尚 神山 | Recording medium recording multiple multiplier division software |
JP2014203362A (en) * | 2013-04-08 | 2014-10-27 | 富士通株式会社 | Storage device and storage control method |
JP2016515250A (en) * | 2013-08-19 | 2016-05-26 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Data object processing method and apparatus |
US10359939B2 (en) | 2013-08-19 | 2019-07-23 | Huawei Technologies Co., Ltd. | Data object processing method and apparatus |
US9477589B2 (en) | 2014-01-23 | 2016-10-25 | Samsung Electronics Co., Ltd. | Storage device that performs a de-duplication operation, and method of operating the same |
WO2016084228A1 (en) * | 2014-11-28 | 2016-06-02 | 株式会社日立製作所 | Storage device |
JPWO2016084228A1 (en) * | 2014-11-28 | 2017-06-22 | 株式会社日立製作所 | Storage device |
WO2018193707A1 (en) * | 2017-04-20 | 2018-10-25 | 富士通株式会社 | Information processing device, program, information processing method, and data structure |
JP2018181196A (en) * | 2017-04-20 | 2018-11-15 | 富士通株式会社 | Information processing apparatus, program, information processing method, and data structure |
US11222068B2 (en) | 2017-04-20 | 2022-01-11 | Fujitsu Limited | Information processing device, information processing method, and data structure |
JP7003435B2 (en) | 2017-04-20 | 2022-01-20 | 富士通株式会社 | Information processing equipment, programs, information processing methods and data structures |
JP2019061574A (en) * | 2017-09-27 | 2019-04-18 | 東芝情報システム株式会社 | File management system and program for file management |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8200641B2 (en) | Dictionary for data deduplication | |
US8983952B1 (en) | System and method for partitioning backup data streams in a deduplication based storage system | |
US7962452B2 (en) | Data deduplication by separating data from meta data | |
JP2012164130A (en) | Data division program | |
US8321384B2 (en) | Storage device, and program and method for controlling storage device | |
US10416915B2 (en) | Assisting data deduplication through in-memory computation | |
US9183218B1 (en) | Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal | |
US20120011101A1 (en) | Integrating client and server deduplication systems | |
US10366072B2 (en) | De-duplication data bank | |
JP2012525633A5 (en) | ||
US9632720B2 (en) | Data de-duplication | |
US20120150824A1 (en) | Processing System of Data De-Duplication | |
US10657103B2 (en) | Combining data matches from multiple sources in a deduplication storage system | |
US10732881B1 (en) | Region cloning for deduplication | |
US8909606B2 (en) | Data block compression using coalescion | |
US9026505B1 (en) | Storing differences between precompressed and recompressed data files | |
US10708392B2 (en) | System and method for compression and decompression of data containing redundancies | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
JP2011065268A (en) | Method and device for determining start-end offset of variable-length data fragment | |
US20170124107A1 (en) | Data deduplication storage system and process | |
US9575679B2 (en) | Storage system in which connected data is divided | |
US20190370224A1 (en) | Identifying common file-segment sequences | |
US20220391118A1 (en) | Journals for data cloning operations | |
US20220245097A1 (en) | Hashing with differing hash size and compression size | |
WO2012053152A1 (en) | Storage system, data management device, method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130724 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140225 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140924 |