Skip to content

4. ストレージ

4.1. ホーム領域

ホーム領域は、インタラクティブノードおよび各計算ノードで共有されたディスク領域です。すべての利用者がデフォルトで利用可能です。ディスククォータは200GiBに設定されています。

[高度な設定] ストライプ機能

ホーム領域は並列ファイルシステムで構成されています。並列ファイルシステムでは、ファイルのデータはストレージを構成する複数のディスクに分散して格納されます。ホーム領域では、この分散方式として、ラウンドロビン分散(デフォルト)とストライプ分散が使用可能です。以下では、ストライプ機能の設定方法を説明します。

ストライプ機能の設定方法

ストライプ機能の設定は、lfs setstripeコマンドで行います。 lfs setstripeコマンドでは、データを分散させるストライプパターン(ストライプサイズや範囲)を指定することができます。

$ lfs setstripe  [options] <dirname | filename>
オプション 説明
-S ストライプサイズを設定。-S #k, -S #m, -S #gとすることで、サイズをKiB,MiB,GiBで設定可能。
-i ファイル書き込みを開始するOSTインデックスを指定。 -1とした場合、ファイル書き込みを開始するOSTはランダム。本システムでは、OSTインデックスは 0 から 17 を指定可能です。
-c ストライプカウントを設定。 -1とした場合、すべてのOSTに書き込みを実行。

Tips

OSTインデックスは、lfs dfコマンドの OST:#の値 やlfs ostsコマンドの左端の値で確認可能です。

例)ストライプパターンを持った新規ファイルの作成

[username@es1 work]$ lfs setstripe -S 1m -i 10 -c 4 stripe-file
[username@es1 work]$ ls
stripe-file

例) ディレクトリに対して、ストライプパターンを設定

[username@es1 work]$ mkdir stripe-dir
[username@es1 work]$ lfs setstripe -S 1m -i 10 -c 4 stripe-dir

ストライプ機能の表示方法

ファイルやディレクトリのストライプパターンの情報を表示する場合は、lfs getstripeコマンドで行います。

$ lfs getstripe <dirname | filename>

例) ファイルの設定表示例

[username@es1 work]$ lfs getstripe stripe-file
stripe-file
lmm_stripe_count:  4
lmm_stripe_size:   1048576
lmm_pattern:       1
lmm_layout_gen:    0
lmm_stripe_offset: 10
        obdidx           objid           objid           group
            10         3024641       0x2e2701                0
            11         3026034       0x2e2c72                0
            12         3021952       0x2e1c80                0
            13         3019616       0x2e1360                0

例) ディレクトリの設定表示例

[username@es1 work]$ lfs getstripe stripe-dir
stripe-dir
stripe_count:  4 stripe_size:   1048576 stripe_offset: 10

4.2. グループ領域

グループ領域は、インタラクティブノードおよび各計算ノードで共有されたディスク領域です。ABCI利用ポータルから利用管理者権限でグループディスク追加申請を行うことで利用可能になります。追加申請方法については、ABCI利用ポータル利用手引きディスク追加申請をご参照ください。

4.3. ローカルストレージの利用

ABCIシステムでは各計算ノードに 1.6TB の NVMe ストレージが搭載されており、2通りの利用方法を選択できます。

  • 計算ノードのローカルストレージとして利用する(ローカルストレージ利用)。
  • 複数の計算ノードのローカルストレージから分散共有ファイルシステムを構成して利用する(BeeONDストレージ利用)。

4.3.1. ローカルストレージ利用

計算ノードのNVMeストレージは、そのまま計算ノードの ローカルストレージとして利用できます。 その場合、ローカルストレージには環境変数SGE_LOCALDIRを利用してアクセスすることができます。 ローカルストレージとして利用する場合は、ジョブ投入時に特別なオプションを指定する必要はありません。 なお、ローカルストレージとして利用できる容量は、指定したジョブ実行リソースによって異なります。

4.3.2. BeeONDストレージ利用

ジョブに割り当てられたすべての計算ノードの NVMe ストレージを、 分散共有ファイルシステム (BeeGFS) としてオンデマンドで利用できます。 オンデマンドの BeeGFS (BeeOND) を利用するジョブを投入するときは、 -l USE_BEEOND=1オプションを指定する必要があります。 また、BeeONDを利用する場合はノードを占有する必要があるため、 -l rt_Fオプションを指定する必要もあります。

作成された分散共有ファイルシステム領域には、/beeondからアクセスすることができます。

例)ジョブスクリプトの例(use_beeond.sh)

#!/bin/bash

#$-l rt_F=2
#$-l USE_BEEOND=1
#$-cwd

echo test1 > /beeond/foo.txt
echo test2 > /beeond/bar.txt
cp -rp /beeond/foo.txt $HOME/test/foo.txt

例)ジョブの投入

[username@es1 ~]$ qsub -g grpname use_beeond.sh

例)use_beeond.sh 実行後の状態

[username@es1 ~]$ ls $HOME/test/
foo.txt    <- スクリプト内で明示的にコピーしたファイルのみが残る。

Warning

/beeond以下に作成したファイルはジョブ実行終了時に削除されるため、必要なファイルはcpコマンドなどを用いてジョブスクリプト内でホーム領域またはグループ領域にコピーをしてください。

[高度な設定] BeeONDサーバ数変更

BeeONDファイルシステム領域は、ファイルの実体を格納するストレージサービスを提供する計算ノード(ストレージサーバ)、ファイルのメタデータを格納するメタデータサービスを提供する計算ノード(メタデータサーバ)により構成されます。 ABCIのBeeONDではストレージサーバ数、メタデータサーバ数を変更することができます。

メタデータサーバ数・ストレージサーバ数のデフォルトの設定は以下の通りです。

設定項目 デフォルト値
メタデータサーバ数 1
ストレージサーバ数 ジョブの要求ノード数

それぞれの数を変更するときには、ジョブスクリプトで次の環境変数を設定します。この環境変数はジョブ投入時に定義されている必要があり、ジョブスクリプト中で変更しても反映されません。サーバ数がジョブの要求ノード数よりも小さい場合、割り当てられた計算ノードから名前順に選択されます。

環境変数 説明
BEEOND_METADATA_SERVER メタデータサーバ数を整数で指定
BEEOND_STORAGE_SERVER ストレージサーバ数を整数で指定

以下の例では、メタデータサーバ数2、ストレージサーバ数4でBeeONDファイルシステム領域を構成する例です。beegfs-dfで構成を確認しています。

例)ジョブスクリプトの例(use_beeond.sh)

#!/bin/bash

#$-l rt_F=8
#$-l USE_BEEOND=1
#$-v BEEOND_METADATA_SERVER=2
#$-v BEEOND_STORAGE_SERVER=4
#$-cwd

beegfs-df -p /beeond

出力例

METADATA SERVERS:
TargetID   Cap. Pool        Total         Free    %      ITotal       IFree    %
========   =========        =====         ====    =      ======       =====    =
       1      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%
       2      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%

STORAGE TARGETS:
TargetID   Cap. Pool        Total         Free    %      ITotal       IFree    %
========   =========        =====         ====    =      ======       =====    =
       1      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%
       2      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%
       3      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%
       4      normal    1489.7GiB    1322.7GiB  89%      149.0M      149.0M 100%

[高度な設定] ストライプ機能

BeeONDファイルシステム領域では、ファイルのデータはファイルシステムを構成する複数のストレージサーバに分散して格納されます。ABCIのBeeONDではストライプ分散の設定を変更することができます。

ストライプ分散のデフォルトの設定は次の通りです。

設定項目 デフォルト値 説明
ストライプサイズ 512 KB ファイルの分割サイズ
ストライプカウント 4 分割したファイル断片を格納するストレージサーバの数

ファイル単位、またはディレクトリ単位でストライプ分散の設定を行えます。ストライプ分散の設定はbeegfs-ctlで行えます。

以下の例では/beeond/dataディレクトリ以下のストライプ設定を、ストライプカウント8、ストライプサイズ4MBに設定しています。

例)ジョブスクリプトの例(use_beeond.sh)

#!/bin/bash

#$-l rt_F=8
#$-l USE_BEEOND=1
#$-cwd

BEEOND_DIR=/beeond/data
mkdir ${BEEOND_DIR}
beegfs-ctl --setpattern --numtargets=8 --chunksize=4M --mount=/beeond ${BEEOND_DIR}
beegfs-ctl --mount=/beeond --getentryinfo ${BEEOND_DIR}

出力例

New chunksize: 4194304
New number of storage targets: 8

EntryID: 0-5D36F5EC-1
Metadata node: gXXXX.abci.local [ID: 1]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 4M
+ Number of storage targets: desired: 8
+ Storage Pool: 1 (Default)