Info
- 2023年10月27日15:00をもって、メモリインテンシブノードサービスは終了しました。
- 2024年10月31日をもって、グローバルスクラッチ領域、ローカルストレージサービスは終了しました。
ストレージ
ABCIで利用可能なストレージは、下記の3種類です。
Tips
ホーム領域やグループ領域等、ローカルストレージ以外の領域は利用者全員で共有している資源です。過度のI/O負荷や不必要なアクセスは他の利用者への迷惑になるだけでなく、ご自身のジョブの実行速度の低下を招くことになります。各ストレージは次の点に留意してご利用ください。
- 中間データなど、永続性を必要としないデータはファイル作成を控え、メモリ利用を推奨します。
- 高速にアクセスできるスクラッチ領域を積極的に活用してください。ジョブ実行中に何度もアクセスするファイルはローカルスクラッチにステージング(一時的にコピー)することを推奨します。
- 共有ファイルシステム上に小さなサイズのファイルを大量に作成し、アクセスすることは推奨しません。スクラッチ領域の利用、または複数のファイルをより大きなサイズのファイルにまとめた上で、アクセスすることを推奨します。例えば、HDF5、WebDataset などの利用を検討してみてください。
- 1つのジョブの中で同じファイルを不必要に繰り返し open/close することは控えてください。
- 短期間に億を超えるファイルを作成する場合は事前にご相談ください。
ホーム領域
ホーム領域は、インタラクティブノードおよび各計算ノードで共有されたLustreファイルシステムのディスク領域です。すべての利用者がデフォルトで利用可能です。ディスククォータは200GiBに設定されています。
Warning
ホーム領域では、1ディレクトリ配下に作成できるファイル数に上限があります。上限値はディレクトリ配下のファイル名の長さに依存し、約4百万〜12百万個です。 上限値を超えてファイルを作成しようとした場合、"No space left on device" のエラーメッセージが出力されファイル作成に失敗します。
[高度な設定] ストライプ機能
ホーム領域は並列ファイルシステムで構成されています。並列ファイルシステムでは、ファイルのデータはストレージを構成する複数のディスクに分散して格納されます。ホーム領域では、この分散方式として、ラウンドロビン分散(デフォルト)とストライプ分散が使用可能です。以下では、ストライプ機能の設定方法を説明します。
Tips
ストライプ機能の概要についてはConfiguring Lustre File Stripingを参照願います。
ストライプ機能の設定方法
ストライプ機能の設定は、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 から 7 を指定可能です。 |
-c | ストライプカウントを設定。 -1とした場合、すべてのOSTに書き込みを実行。 |
Tips
OSTインデックスは、lfs df
コマンドの OST:#の値 やlfs osts
コマンドの左端の値で確認可能です。
例)ストライプパターンを持った新規ファイルの作成
[username@es1 work]$ lfs setstripe -S 1m -i 4 -c 4 stripe-file
[username@es1 work]$ ls
stripe-file
例) ディレクトリに対して、ストライプパターンを設定
[username@es1 work]$ mkdir stripe-dir
[username@es1 work]$ lfs setstripe -S 1m -i 4 -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: 4
obdidx objid objid group
4 3024641 0x2e2701 0
5 3026034 0x2e2c72 0
6 3021952 0x2e1c80 0
7 3019616 0x2e1360 0
例) ディレクトリの設定表示例
[username@es1 work]$ lfs getstripe stripe-dir
stripe-dir
stripe_count: 4 stripe_size: 1048576 stripe_offset: 4
グループ領域
グループ領域は、インタラクティブノードおよび各計算ノードで共有されたLustreファイルシステムのディスク領域です。ABCI利用者ポータルから利用管理者権限でグループディスク追加申請を行うことで利用可能になります。追加申請方法については、ABCI利用者ポータルガイドのディスク追加申請をご参照ください。
グループ領域のパスを確認するには、show_quota
コマンドを実行してください。コマンドの説明については ディスククォータの確認 を参照してください。
inode使用率の確認方法
MDTではファイルのinode情報を格納していますが、MDT毎に格納できるinode数の上限があり、各MDTで現在どの程度inodeが使用されているかはlfs df -i
コマンドで確認
することが可能です。
コマンドの出力結果のうち、/groups[MDT:?]
の行に記載されているIUse%
の項目が各MDTにおけるinodeの使用率となります。
以下の例の場合、MDT:0 の inode使用率は 30% となります。
[username@es1 ~]$ lfs df -i /groups
UUID Inodes IUsed IFree IUse% Mounted on
groups-MDT0000_UUID 3110850464 904313344 2206537120 30% /groups[MDT:0]
groups-MDT0001_UUID 3110850464 2778144306 332706158 90% /groups[MDT:1]
groups-MDT0002_UUID 3110850464 935143862 2175706602 31% /groups[MDT:2]
groups-MDT0003_UUID 3110850464 1356224703 1754625761 44% /groups[MDT:3]
groups-MDT0004_UUID 3110850464 402932004 2707918460 13% /groups[MDT:4]
groups-MDT0005_UUID 3110850464 433 3110850031 1% /groups[MDT:5]
(snip)
なお、ABCIグループが使用しているMDTは以下のコマンドで確認することができます。
[username@es1 ~]$ ls -d /groups/?/(ABCIグループ名)
/groups/(MDT番号)/(ABCIグループ名)
以下の例の場合、MDT:0を使用しています。
[username@es1 ~]$ ls -d /groups/?/gaa00000
/groups/0/gaa00000
グローバルスクラッチ領域
Info
2024年10月31日をもって、グローバルスクラッチ領域サービスは終了しました。
グローバルスクラッチ領域は、利用者全員が利用可能な、インタラクティブノードおよび各計算ノードで共有されたLustreファイルシステムの短期利用向け高速ストレージです。ディスククォータは5TiBに設定されています。 各利用者は以下の領域を短期利用高速データ領域として利用することが可能です。
/scratch/(ABCIアカウント名)
グローバルスクラッチ領域のクォータを調査するには、show_quota
コマンドを実行してください。コマンドの説明については ディスククォータの確認 を参照してください。
Warning
グローバルスクラッチ領域は、クリーンアップ機能を備えています。
/scratchのファイル領域またはinode領域の利用率が80%を超過した場合に、/scratch/(ABCIアカウント名) 直下のファイルおよびディレクトリの最終アクセス時間と作成日をもとに削除候補を選び、削除候補のファイル/ディレクトリを自動的に削除します。/scratch/(ABCIアカウント名) 直下のディレクトリが削除候補になった場合は、そのディレクトリ配下のすべてのファイル/ディレクトリが削除されます。そのディレクトリ配下のファイル/ディレクトリの最終アクセス時間と作成日は考慮されませんので、ご注意ください。
最初の削除候補として、最終アクセス時間が7日を経過したものが選ばれます。その候補を削除した後に、まだ、/scratchの利用率が80%超過の場合は、作成日が7日を経過したものが次の削除候補として選ばれます。
Note
グローバルスクラッチ領域配下に大量のファイルを格納する場合は、/scratch/(ABCIアカウント名) 配下にディレクトリを作成の上、格納するようにして下さい。
ファイル/ディレクトリの作成日の確認
グローバルスクラッチ領域下のファイルおよびディレクトリは最終アクセス時間と作成日をもとに削除候補に選ばれます。 しかし、ファイルおよびディレクトリの作成日はlsコマンドでは確認できません。
グローバルスクラッチ領域下のファイルおよびディレクトリの作成日を確認するためのshow_scratch
コマンドを用意しました。
グローバルスクラッチ領域に作成したファイルが削除候補となっているかどうかの確認にはshow_scratch
コマンドを使用してください。
例) ファイル/ディレクトリの作成日を確認する。
[username@es1 ~]$ show_scratch
Last Updated: 2022/01/01 00:05
Directory/File created_date valid_date remained(days)
/bb/scratch/username/dir1 2021/12/17 2022/01/26 25
/bb/scratch/username/dir2 2021/12/18 2022/01/27 26
/bb/scratch/username/file1 2021/12/19 2022/01/28 27
/bb/scratch/username/file2 2021/11/20 2021/12/30 0
Directories and files that have expired will be deleted soon.
If necessary, please backup.
項目 | 説明 |
---|---|
Directory/File | ディレクトリ名/ファイル名 |
created_date | ディレクトリ/ファイルの作成日 |
valid_date | 有効期限(作成日から40日目の日付。この日を過ぎると削除候補となります。) |
remained(days) | 削除候補となるまでの残り日数 |
Note
ファイルおよびディレクトリの変更(作成、削除、改名)は、変更の翌日0時以降にshow_scratch
コマンドに反映されます。反映されるまで変更前の情報が表示されます。
[高度な設定] Data on MDT(DoM)機能
グローバルスクラッチ領域ではData on MDT(DoM)機能を利用可能です。DoM機能を有効にすることにより、サイズの小さいファイルアクセスにおける性能向上を期待できます。デフォルトはDoM機能およびストライプ機能は無効であり、1ファイルにつき1つのOSTに格納される設定となっております。
Tips
DoMの概要についてはData on MDTを参照願います。
DoM機能の設定方法
DoM機能の設定は、lfs setstripe
コマンドで行います。
$ lfs setstripe [options] <dirname | filename>
オプション | 説明 |
---|---|
-E | 部分ファイルの終端を示すオフセット。-E #k, -E #m, -E #gとすることで、サイズをKiB,MiB,GiBで設定可能です。 また、-1はeofを意味します。 |
-L | レイアウトタイプを設定。mdt を指定することで、DoM が有効になります。 |
Note
DoMが有効なファイルに対してDoMを無効にすることはできません。また、DoMが無効なファイルに対してDoMを有効にすることはできません。
例)DoM を有効にした新規ファイルの作成
64KiB までの部分ファイルのレイアウトをmdtに設定します。
[username@es1 work]$ lfs setstripe -E 64k -L mdt -E -1 dom-file
[username@es1 work]$ ls
dom-file
例)ディレクトリに対して、DoM 機能を設定
[username@es1 work]$ mkdir dom-dir
[username@es1 work]$ lfs setstripe -E 64k -L mdt -E -1 dom-dir
例) 保存されているファイルに対して、DoM機能が有効になっているかを確認
[username@es1 work]$ lfs getstripe -I1 -L dom-file
mdt
mdt
と表示されればそのファイルはDoM機能が有効になっています。それ以外の表示の場合は無効です。
Note
上記の例では 64KiB まで MDT にデータが格納されます。このとき、64KiB を超えたデータは OST に格納されます。
また、DoM 機能と一緒にストライプ機能を設定可能です。
例)DoM 機能とストライプパターンを持った新規ファイルの作成
64KiBまでの部分ファイルのレイアウトをmdtに設定し、残りの部分についてストライプパターンを設定します。
[username@es1 work]$ lfs setstripe -E 64k -L mdt -E -1 -S 1m -i -1 -c 4 dom-stripe-file
[username@es1 work]$ ls
dom-stripe-file
例)ディレクトリに対して、DoM 機能と OST に格納する部分データのストライプパターンを設定
[username@es1 work]$ mkdir dom-stripe-dir
[username@es1 work]$ lfs setstripe -E 64k -L mdt -E -1 -S 1m -i -1 -c 4 dom-stripe-dir
ローカルストレージ
Info
2024年10月31日をもって、ローカルストレージサービスは終了しました。
ABCIシステムでは、計算ノード(V)に1.6 TBのNVMe SSD x 1、計算ノード(A)に2.0 TBのNVMe SSD x 2が搭載されています。これらローカルストレージは次のように利用できます。
- ノードに閉じたスクラッチ領域として利用する(ローカルスクラッチ、永続ローカルスクラッチ (Reserved専用))。
- 複数の計算ノードのローカルストレージにまたがる分散共有ファイルシステムを構成して利用する(BeeONDストレージ)。
ローカルスクラッチ
計算ノードのローカルストレージは、ジョブ投入時に特別なオプションを指定することなくローカルスクラッチとして利用できます。
なお、ローカルストレージとして利用できる容量は、指定したジョブ実行リソースによって異なります。
ローカルストレージへのパスはジョブ毎に異なり、環境変数SGE_LOCALDIR
を利用してアクセスすることができます。
例)ジョブスクリプトの例(use_local_storage.sh)
#!/bin/bash
#$-l rt_F=1
#$-cwd
echo test1 > $SGE_LOCALDIR/foo.txt
echo test2 > $SGE_LOCALDIR/bar.txt
cp -rp $SGE_LOCALDIR/foo.txt $HOME/test/foo.txt
例)ジョブの投入
[username@es1 ~]$ qsub -g grpname use_local_storage.sh
例)use_local_storage.sh 実行後の状態
[username@es1 ~]$ ls $HOME/test/
foo.txt <- スクリプト内で明示的にコピーしたファイルのみが残る。
Warning
$SGE_LOCALDIR
以下に作成したファイルはジョブ実行終了時に削除されるため、必要なファイルはcp
コマンドなどを用いてジョブスクリプト内でホーム領域またはグループ領域にコピーをしてください。
Note
rt_AF では$SGE_LOCALDIR
だけではなく、/local2
以下も利用できます。ジョブ実行終了時に削除されるのは同様です。
永続ローカルスクラッチ (Reserved専用)
本機能は、Reservedサービス専用です。Reservedサービスでは、計算ノードのローカルストレージに、ジョブ毎に削除されない永続領域を使用可能です。この領域はReservedサービス開始時に作成され、Reservedサービス終了時に削除されます。
永続ローカルスクラッチは、環境変数SGE_ARDIR
を利用してアクセスすることができます。
例)ジョブスクリプトの例 (use_reserved_storage_write.sh)
#!/bin/bash
#$-l rt_F=1
#$-cwd
echo test1 > $SGE_ARDIR/foo.txt
echo test2 > $SGE_ARDIR/bar.txt
例)ジョブの投入
[username@es1 ~]$ qsub -g grpname -ar 12345 use_reserved_storage_write.sh
例)ジョブスクリプトの例 (use_reserved_storage_read.sh)
#!/bin/bash
#$-l rt_F=1
#$-cwd
cat $SGE_ARDIR/foo.txt
cat $SGE_ARDIR/bar.txt
例)ジョブの投入
[username@es1 ~]$ qsub -g grpname -ar 12345 use_reserved_storage_read.sh
Warning
$SGE_ARDIR
以下に作成したファイルはReservedサービス終了時に削除されるため、必要なファイルはcp
コマンドなどを用いてジョブにてホーム領域またはグループ領域にコピーをしてください。
Warning
計算ノード(A)では、NVMe SSD が2つ搭載されており、永続ローカルスクラッチは/local2
を使用します。ローカルスクラッチと永続ローカルスクラッチが同一のストレージに割り当てられる場合があり、その場合は容量を共有します。
計算ノード(V)では、NVMe SSD が1つしか搭載されていないため、ローカルスクラッチと永続ローカルスクラッチは同一のストレージとなり、必ず容量を共有します。
いずれの場合も、永続ローカルスクラッチを利用する場合には使用量に注意してください。
BeeGFS領域
BeeGFS On Demand (BeeOND) を使用することで、ジョブに割り当てられた計算ノードのローカルストレージを集約し、一時的な分散共有ファイルシステムとして使用可能です。
BeeOND を利用するジョブを投入するときは、-l USE_BEEOND=1
オプションを指定してジョブを実行してください。
また、BeeONDを利用する場合はノードを占有する必要があるため、-l rt_F
オプションもしくは-l rt_AF
オプションを指定する必要もあります。
作成された分散共有ファイルシステム領域には、環境変数SGE_BEEONDDIRを利用してアクセスすることができます。
例)ジョブスクリプトの例 (use_beeond.sh)
#!/bin/bash
#$-l rt_F=2
#$-l USE_BEEOND=1
#$-cwd
echo test1 > $SGE_BEEONDDIR/foo.txt
echo test2 > $SGE_BEEONDDIR/bar.txt
cp -rp $SGE_BEEONDDIR/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
$SGE_BEEONDDIR
以下に作成したファイルはジョブ実行終了時に削除されるため、必要なファイルはcp
コマンドなどを用いてジョブスクリプト内でホーム領域またはグループ領域にコピーをしてください。
Warning
計算ノード(A)では、NVMe SSD が2つ搭載されており、BeeGFS領域は/local2
を使用します。
計算ノード(V)では、NVMe SSD が1つしか搭載されていないため、ローカルスクラッチとBeeGFS領域は同一のストレージを使用し、必ず容量を共有します。
BeeONDではbeeond-cpコマンドを利用して、BeeONDファイルシステム領域に並列にデータをステージイン、ステージアウトする事が可能です。
beeond-cpを利用する場合、USE_SSH=1
オプションを指定し計算ノードへのSSHログインを有効にしたあと、PARALLEL_SSH
環境変数にsshコマンドとポート番号を指定してください。
以下はbeeond-cpを使用する例です。
#!/bin/bash
#$-l rt_F=4
#$-l USE_BEEOND=1
#$-l USE_SSH=1
#$-v SSH_PORT=2222
#$-j y
#$-cwd
export PARALLEL_SSH="ssh -p 2222"
export src_dir=/path/to/data
beeond-cp stagein -n ${SGE_JOB_HOSTLIST} -g ${src_dir} -l ${SGE_BEEONDDIR}
(計算処理)
beeond-cp stageout -n ${SGE_JOB_HOSTLIST} -g ${src_dir} -l ${SGE_BEEONDDIR}
[高度な設定] BeeONDサーバ数変更
BeeGFS領域は、ファイルの実体を格納するストレージサービスを提供する計算ノード(ストレージサーバ)、ファイルのメタデータを格納するメタデータサービスを提供する計算ノード(メタデータサーバ)により構成されます。 ABCIのBeeONDではストレージサーバ数、メタデータサーバ数を変更することができます。
メタデータサーバ数・ストレージサーバ数のデフォルトの設定は以下の通りです。
設定項目 | デフォルト値 |
---|---|
メタデータサーバ数 | 1 |
ストレージサーバ数 | ジョブの要求ノード数 |
それぞれの数を変更するときには、ジョブスクリプトで次の環境変数を設定します。この環境変数はジョブ投入時に定義されている必要があり、ジョブスクリプト中で変更しても反映されません。サーバ数がジョブの要求ノード数よりも小さい場合、割り当てられた計算ノードから名前順に選択されます。
環境変数 | 説明 |
---|---|
BEEOND_METADATA_SERVER | メタデータサーバ数を整数で指定 |
BEEOND_STORAGE_SERVER | ストレージサーバ数を整数で指定 |
以下の例では、メタデータサーバ数2、ストレージサーバ数4でBeeGFS領域を構成する例です。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%
[高度な設定] ストライプ機能
BeeGFS領域では、ファイルのデータはファイルシステムを構成する複数のストレージサーバに分散して格納されます。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)