Hitachi

インメモリデータグリッド Hitachi Elastic Application Data Store ユーザーズガイド


7.7.2 キャッシュファイルの種類と格納先の設定

ディスクキャッシュ,および2Wayキャッシュを使用する場合に,キャッシュの情報を格納するファイルの格納先を指定します。

キャッシュの情報を格納するファイルを,キャッシュファイルといいます。

ディスクキャッシュ,および2Wayキャッシュを使用する場合は,キャッシュファイルの格納先を指定します。

ディスクキャッシュの格納先には,不揮発性メモリも使用できます(eads.cache.disk.persistentMemory.enableパラメタで指定します)。詳細については,「7.7.2(4) ディスクキャッシュの格納先として不揮発性メモリを使用する」を参照してください。

〈この項の構成〉

(1) キャッシュファイルの種類

キャッシュファイルには次の3種類があります。

(a) キャッシュデータファイル

キャッシュに格納するデータ(keyおよびvalue)を格納するファイルです。

(b) キャッシュインデックスファイル

キャッシュデータファイルに含まれるデータのインデックスを格納するファイルです。

キャッシュデータファイルと同じ数のファイルが作成されます。

(c) キャッシュ情報ファイル

キャッシュの設定情報を格納するファイルです。

キャッシュごとにファイルが1つ作成されます。

(2) キャッシュファイルの格納先の設定

キャッシュファイルの格納先を指定します。

キャッシュファイルのうち,キャッシュデータファイルの格納先は必ず指定します。キャッシュファイルの格納先を次の表に示します。

表7‒9 キャッシュファイルの格納先とファイル名

項番

キャッシュファイル種別

格納先

ファイル名

1

キャッシュデータファイル

<キャッシュ定義のeads.cache.disk.<n>.dirパラメタで指定したディレクトリ>/<キャッシュ名>

eads_data_[EADSサーバID]_[キャッシュ名]_[レンジID]_[nnnnn].ecf

<キャッシュ定義のeads.cache.disk.persistentMemory.deviceパラメタで指定した不揮発性メモリのデバイスファイル>※1

※2

2

キャッシュインデックスファイル

<キャッシュ定義のeads.cache.disk.info.dirパラメタで指定したディレクトリ>/<キャッシュ名>

eads_index_[EADSサーバID]_[キャッシュ名]_[レンジID]_[nnnnn].ecf

<キャッシュ定義のeads.cache.disk.persistentMemory.deviceパラメタで指定した不揮発性メモリのデバイスファイル>※1

※2

3

キャッシュ情報ファイル

<キャッシュ定義のeads.cache.disk.info.dirパラメタで指定したディレクトリ>/<キャッシュ名>

eads_info_[EADSサーバID]_[キャッシュ名].ecf

(凡例)

[レンジID]:キャッシュ内のレンジを識別するための番号(01〜96の整数)です。データの格納先EADSサーバのサーバIDと一致します。

[nnnnn]:ファイル数の連番(5桁の整数)です。

−:該当しません。

注※1

ディスクキャッシュの格納先として不揮発性メモリを使用する場合の格納先です。

注※2

ディスクキャッシュの格納先として不揮発性メモリを使用する場合,指定したデバイスファイルにキャッシュが作成されるため,キャッシュファイルは作成されません。

なお,キャッシュデータファイルとキャッシュインデックスファイルを配置できるファイルシステムは,EADSがサポートしているファイルシステム(EADSが動作するOSがデフォルトで提供しているファイルシステム)です。

EADSが動作するOSと,キャッシュデータファイルおよびキャッシュインデックスファイルを配置できるファイルシステムを次の表に示します。

表7‒10 EADSが動作するOSと,キャッシュデータファイルおよびキャッシュインデックスファイルを配置できるファイルシステム

項番

EADSが動作するOS

キャッシュデータファイルおよびキャッシュインデックスファイルを配置できるファイルシステム

1

Red Hat Enterprise Linux 6(64-bit x86_64)

ext4

2

Red Hat Enterprise Linux 7(64-bit x86_64)

xfs

ポイント

ディスクキャッシュの格納先として不揮発性メモリを使用する場合(eads.cache.disk.persistentMemory.enableパラメタにtrueを指定する場合)は,不揮発性メモリに対応するデバイスファイルの領域に各ファイルが格納されます。そのため,OSが提供するファイルシステムは使用しません。

その代わりに,不揮発性メモリのデバイスファイルを使用する前に,不揮発性メモリを初期化する必要があります。不揮発性メモリのデバイスファイルの作成や初期化の手順については,リリースノートを参照してください。

(3) データを多重化している場合の,キャッシュデータファイルの格納先とEADSサーバの関係

キャッシュデータファイルの格納先は,eads.cache.disk.<n>.dirパラメタで,指定した多重度の数だけ指定する必要があります。例えば,データの多重度を3に設定している場合,nには1〜3を指定します。

データの多重度を3に設定している場合の,キャッシュデータファイルの格納先とEADSサーバの関係について,EADSサーバ1を例にして説明します。

図7‒5 キャッシュデータファイルの格納先とEADSサーバの関係

[図データ]

EADSではデータが分散配置されるため,キャッシュデータファイルは各EADSサーバに格納されます。

EADSサーバ1には,次のキャッシュデータファイルが格納されます。

このキャッシュデータファイルの格納先を,それぞれキャッシュ定義のeads.cache.disk.<n>.dirパラメタで指定します。

eads.cache.disk.<n>.dirパラメタの指定例(キャッシュデータファイルを同じディレクトリで管理する場合)
eads.cache.disk.1.dir=/hdd/cache_server01     # コピー元のデータの格納先
eads.cache.disk.2.dir=/hdd/cache_server01     # レンジ5のデータ(コピー1)の格納先
eads.cache.disk.3.dir=/hdd/cache_server01     # レンジ4のデータ(コピー2)の格納先
eads.cache.disk.<n>.dirパラメタの指定例(キャッシュデータファイルを異なるディレクトリで管理する場合)
eads.cache.disk.1.dir=/hdd/cache_server01_range01     # コピー元のデータの格納先
eads.cache.disk.2.dir=/hdd/cache_server01_range05     # レンジ5のデータ(コピー1)の格納先
eads.cache.disk.3.dir=/hdd/cache_server01_range04     # レンジ4のデータ(コピー2)の格納先

(4) ディスクキャッシュの格納先として不揮発性メモリを使用する

ディスクキャッシュの格納先として不揮発性メモリを使用することができます。不揮発性メモリを使用する場合は,キャッシュ定義のeads.cache.disk.persistentMemory.enableパラメタにtrueを指定します。

ディスクキャッシュの格納先として不揮発性メモリを使用すると,キャッシュファイル(キャッシュデータファイル,キャッシュインデックスファイル)は不揮発性メモリのデバイスファイルに格納されます。また,データアクセス処理も不揮発性メモリに最適化された方式になります。

キャッシュファイルの格納先となるデバイスファイルはキャッシュ定義のeads.cache.disk.persistentMemory.deviceパラメタで指定します。1つのデバイスファイルに対して,対象となるキャッシュのコピー元のデータとコピーされたデータが格納されます。パラメタの指定例を次に示します。

eads.cache.disk.persistentMemory.deviceパラメタの指定例(キャッシュデータファイルを不揮発性メモリのデバイスファイルで管理する場合)
eads.cache.disk.persistentMemory.device=/dev/dax0.0
説明

図7-5の例の場合,dax0.0はコピー元のデータの格納先,レンジ5のデータ(コピー1)の格納先,レンジ4のデータ(コピー2)の格納先となります。

格納先のデバイスファイルに指定できるのはDevice DAXモードで生成されたcharacter deviceだけです。Device DAXモードでcharacter deviceを生成する方法については,リリースノートを参照してください。

ポイント

不揮発性メモリのデバイスファイルを使用する前に,不揮発性メモリを初期化する必要があります。不揮発性メモリを初期化する手順については,リリースノートを参照してください。

(a) 不揮発性メモリ内のファイルへのアクセス

ディスクキャッシュの格納先として不揮発性メモリを使用する場合,EADSが不揮発性メモリ内にキャッシュデータファイルおよびキャッシュインデックスファイルに相当する領域を作成してアクセスします。そのため,OSから不揮発性メモリ内のキャッシュデータファイルおよびキャッシュインデックスファイルは参照できません。キャッシュファイルの確認やバックアップなどを行う場合には,eztoolコマンドを使用してください。

なお,不揮発性メモリのデバイスファイル内の各ファイルがログなどに出力される場合は,次の形式で出力されます。

形式:

<不揮発性メモリのデバイスファイルの絶対パス>/<キャッシュファイル名>

例:

/dev/dax0.0/eads_data_01_cachename_01_00001.ecf

参考

不揮発性メモリのデバイスファイルに対する操作には,PMDK(Persistent Memory Development Kit)に含まれるツールとライブラリを使用します。詳細については,リリースノートを参照してください。

(b) 不揮発性メモリのデバイスファイルの構成

キャッシュ定義のeads.cache.disk.persistentMemory.deviceパラメタで不揮発性メモリのデバイスファイルを指定する際は,1つのキャッシュにつき1つの不揮発性メモリのデバイスファイルを割り当ててください。また,対応するキャッシュの見積もり結果に従って,各デバイスファイルに容量を割り当ててください。

不揮発性メモリのデバイスファイルの構成を次の図に示します。

図7‒6 不揮発性メモリのデバイスファイルの構成

[図データ]

EADSサーバ内の複数のキャッシュが同一の不揮発性メモリのデバイスファイルを使用することはできません。

同一OS上に複数のEADSサーバを配置する場合,EADSサーバ間で同一の不揮発性メモリのデバイスファイルを指定したときは,EADSサーバの動作およびデータは保証されません。同じようにEADSサーバ以外の他プロセスが,EADSサーバが使用している不揮発性メモリのデバイスファイルを使用してデータを更新した場合もEADSサーバの動作およびデータは保証されません。

注意事項

EADSと他プロセスとの間で,デバイスファイルの排他は行われません。他EADSサーバと他プログラムが同一のデバイスファイルを指定した場合,データが破壊されるおそれがあるので注意してください。

(c) 不揮発性メモリを使用する場合の注意事項

ディスクキャッシュの格納先として不揮発性メモリを使用する場合の注意事項を次に示します。

  • ディスクキャッシュの格納先として,高性能SSDと不揮発性メモリを同時に使用することはできません。また,2Wayキャッシュの格納先として不揮発性メモリは使用できません。

  • 次の場合はキャッシュが作成できません。

    • Device DAX以外のモードで生成されたデバイスファイルが指定された場合

    • 指定したデバイスファイルに割り当てられているサイズが,格納するキャッシュデータファイルおよびキャッシュインデックスファイルの総容量よりも小さい場合

    • キャッシュ作成時に指定したデバイスファイルが,同一EADSサーバ内の作成済みキャッシュを格納しているデバイスファイルと重複した場合

  • 不揮発性メモリにミラーリングなどの冗長化機能がない場合は,不揮発性メモリが故障した際のデータの消失を防ぐため,次のような運用にすることを推奨します。

    • 共通設定のeads.replication.factorパラメタの値を2以上にして,複数の不揮発性メモリ上にデータを複製する構成にする。

    • 定期的にeztool exportecfコマンドを実行してバックアップを取得する。

  • OSのマシンチェック機能のToleranceLevelには0を設定してください。この設定をすると,不揮発性メモリに発生した不良ブロックにアクセスしたときに,破損データによって処理が継続することをOSが再起動することで防止できます。

    ただし,OS起動時にEADSサーバを自動で復旧する設定にしている場合,OSの起動時に毎回不良ブロックにアクセスして,再起動を繰り返すおそれがあります。そのため,EADSサーバを自動で復旧する設定にしている場合は,復旧を試みる回数に上限を設けたり,復旧処理前に不良ブロックが発生していないかを確認してからEADSサーバを起動したりするように設計してください。