Oracle Cloud Lustre File Storage を作成してみてみた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/6f09df65-e67e-4e68-829b-e3230091140b.png)
[Lustre (ラスター)](https://en.wikipedia.org/wiki/Lustre_(file_system)) は、大規模のクラスターコンピューティング・スーパーコンピュータで使用されている並列分散ファイルシステムです。
[Oracle Cloud Infrastructure (OCI) File Storage with Lustre](https://www.oracle.com/jp/cloud/storage/file-storage-with-lustre/) は、Lustreのパフォーマンスとスケールメリット（ミリ秒単位のメタデータレイテンシ、ペタバイト規模の容量、テラバイト/秒の高スループットなど）を提供しながら、管理の複雑さを排除するフルマネージド型共有ストレージです。OCIはファイルシステムの導入、スケーリング、メンテナンスを完全に自動化・管理するため、お客様は高パフォーマンス・アプリケーションに集中できます。
![Luster01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/038f0ed3-af4f-4f2c-98dd-86342c7dd0cd.png)

- **大規模なパフォーマンス：**
数千のクライアントとGPUからファイルシステムに並列アクセスします。OCI File Storage with Lustreは、膨大なデータロードを効率的に処理します。このファイルシステムは最大20ペタバイト（PB）まで拡張可能で、トレーニングデータセット、研究モデル、チェックポイントなど、AI、ML、HPCデータを保存できます。プロビジョニングされた容量のテラバイト（TB）ごとに、高い持続的なパフォーマンスを実現します。OCI File Storage with Lustreは、以下のパフォーマンス層を提供します。
```
    プロビジョニングされた TB あたり 125 MBps
    プロビジョニングされた TB あたり 250 MBps
    プロビジョニングされた TB あたり 500 MBps
    プロビジョニングされた TB あたり 1000 MBps
```
- **フルマネージドサービス：**
ストレージサーバー、メタデータサーバー、データボリュームといったLustreインフラストラクチャコンポーネントのセットアップとメンテナンスを代行します。本番環境のアプリケーションを継続しながら、必要に応じて簡単に容量を拡張し、パフォーマンスを集約できます。



- **高可用性アーキテクチャ:**
LustreファイルシステムをOCI Object Storageバケットにリンクすることで、オブジェクトストレージのデータをオンデマンドでコピーし、Lustreファイルシステムから直接アクセスできるようになります。これにより、オブジェクトストレージからファイルシステムへのデータのロードが可能になり、アクセス速度が向上します。

- **クォータ管理：**
OCI File Storage with Lustreを使用すると、ユーザー、グループ、プロジェクトごとに容量制限を設定できます。これにより、ストレージ消費量を予測し、ストレージコストを抑制できます。


ということで Luster File Storage と Lustreクライアントを作成し、マウントしてスループット・パフォーマンスを測定してみてみます。


# ■ 構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8fac8d48-284a-4e20-a0d1-6944e2052e48.png)


# ■ Lustre ファイル・ストレージ 作成
Lustreファイル・システムを使用したファイル・ストレージを作成します。


## ● 前提条件とセキュリティ情報および推奨事項
Lustre ファイル・ストレージを作成する前に、次の前提条件が満たされていることを確認してください。

・ [制限事項および考慮事項](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/manage-file-systems.htm#limits)
・ [必要VCNセキュリティ・ルール](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/security-rules.htm#top)
・ [必須IAMポリシー](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/manage-file-systems.htm#iam-policies)
・ [Lustreによるファイル・ストレージの保護](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/Security/Reference/lustre_security.htm)

## ● Service Limit 確認
Lustre ファイル・ストレージサービス制限を確認し不足している場合は、サービス制限の増加をリクエストします。

**1) OCI コンソール**
リストメニューから、[Governance & Administration] > [Limits, Quotas and Usage] をクリック
![01_ServiceLimit01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1e94bd45-2dc0-4397-8114-ae903bf3d4dc.png)


**2) Limits, Quotas and Usage 画面**
[Service]へ "Luster File Storage" を選択し、Service Limit を確認
![01_ServiceLimit02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/581a430a-0f7a-4079-b996-bd3fbf872b3d.png)



## ● Lustre file storage 作成

**1) OCI コンソール**
リストメニューから、[Storage] > [Luster File Systems] をクリック
![Luster作成01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/275b3d44-141a-43b4-ad21-f3826684f0ed.png)


**2) Lustre file systems 画面**
[Create] をクリック
![Luster作成02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/60eca740-5937-48c3-8ed8-ba90c7a91411.png)

**3) Create Lustre file system 画面**
次の情報を入力し、[Create] をクリックして作成
```
・ ファイル・システム名: ファイル・システムの名前を入力
・ マウント名: ファイル・システムのマウント時に使用する名前を入力。　Lustreクライアントは、マウント時にこの名前を使用してファイル・システムを参照します。
・ ファイル・システムの説明: ファイル・システムの説明を入力
・ クラスタ配置グループ: レイテンシが低いように、ファイル・システムやその他のリソースを可用性ドメインに物理的に配置するクラスタ配置グループを選択することをお薦めします。
        クラスタ配置グループは、ファイル・システムの作成後に変更できません。
・ パフォーマンス層: ファイル・システムのパフォーマンス層を選択。パフォーマンス層は、ファイル・システムのスループットを制御します。スループットは、プロビジョニングされたストレージのテラバイト(TB)単位で指定されます。ファイル・システムの作成後は、パフォーマンス層を変更できません。
・ 容量: ファイルシステムのストレージ容量を選択。サービス制限を超える容量を選択した場合、増加のリクエストを求めるプロンプトが表示されることがあります。詳細は、Increasing File System Capacityを参照してください。
・ 確認: このボックスをチェックすることで、ファイル・システムを作成すると月次サブスクリプションが開始されることに同意したことになります。ファイル・システムは、請求サイクルの終了前に削除された場合でも、請求サイクルの終了まで請求されます。
・ ネットワーキング: ファイル・システムをマウントするVCNおよびサブネットを選択。ワークロードが実行されているVCNおよびサブネットにファイル・システムをマウントすることをお薦めします。
・ ネットワーク・セキュリティ・グループ: このオプションを有効にし、ファイル・システムの仮想ファイアウォールとして機能するネットワーク・セキュリティ・グループ(NSG)を選択
・ ルート・スカッシュ: ファイル・システムにアクセスするクライアントに、「Squash UID」および「Squash GID」に再マップされたユーザーID (UID)およびグループID (GID)があるかどうかを制御
    Squash: 「None」または「Root」を選択。デフォルト値は「なし」であるため、デフォルトでは再マッピングは行われません。
    Squash UID: 「Squash」が「Root」に設定されている場合、ルート・ユーザー(UID 0)はこの値に再マップされます。デフォルト値は「65534」です。
    Squash GID: 「Squash」が「Root」に設定されている場合、ルート・グループ・ユーザー(GID 0)はこの値に再マップされます。デフォルト値は「65534」です。
    rootユーザーをスカッシュする場合、ルート・スカッシュ例外を指定して、特定のクライアントをスカッシュ構成から除外できます。有効なIPアドレスまたは範囲として除外するクライアント・アドレスを入力します。たとえば、10.0.2.4または10.0[2-10][1-255]です。「+別のクライアント・アドレス」を選択して、最大10個の例外を追加します。
```
![Luster作成03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/815fe1b4-c48d-47fc-8e29-f2a49943f178.png)


**4) Lustre file system 作成中~**
![Luster作成04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2c96c15c-57a7-46c9-ba0e-7faa820360ab.jpeg)



**5) Lustre file system 作成完了**
![Luster作成05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f6f6fdd0-4649-4027-b262-11513f646574.png)



# ■ Lustre File Systemのマウントおよびアクセス
Lustreファイル・システムにアクセスするには、コンピュート・インスタンスで実行されているLustreクライアントが必要です。[Mounting and Accessing a Lustre File System](https://docs.public.oneportal.content.oci.oraclecloud.com/en-us/iaas/Content/lustre/file-system-connect.htm)を参考にファイル・システムをマウントするインスタンスのOSと互換性のあるクライアントを構築およびインストールします。今回は、Oracle Linux 8 へインストールします。


## ● Unbreakable Enterprise Kernel(UEK) から Red Hat Compatible Kernel (RHCK) へ変更
Oracle LinuxでLustreクライアントを使用するには、カーネルをRed Hat Compatible Kernel (RHCK)に変更する必要があります。カーネル・バージョンの切替えについては、[Oracle Linuxでのデフォルト・カーネルの変更](https://blogs.oracle.com/linux/post/changing-the-default-kernel-in-oracle-linux-its-as-simple-as-1-2-3)を参照して実施します。

**1) 設定カーネル確認**
起動時に使用するデフォルトカーネルとして既に設定されているカーネルを確認するには、  grubby --default-kernel コマンドを実行します。 さらに、システムで現在実行中のカーネルを確認するには、  una​​me -r コマンドを使用します。 
以下に示すOracle Linux 8 インスタンスでは、起動時に使用するデフォルトカーネルとしてUEKが設定されており、現在システム上でUEKが実行されています。 

```
[opc@client ~]$  sudo grubby --default-kernel
    /boot/vmlinuz-5.15.0-306.177.4.el8uek.x86_64

[opc@client ~]$ uname -r
    5.15.0-306.177.4.el8uek.x86_64
```

**2) インストールおよび設定されているすべてのカーネルを表示**
grubby --info=ALL | grep ^kernelコマンドを使用して、システムにインストールおよび設定されているすべてのカーネルを表示します。システムの/bootディレクトリにある各カーネルに関連付けられたブート構成に関する詳細情報を取得したい場合は、grepの出力のパイプ処理を削除し、grubby --info=ALL を実行するだけです。
以下の例では、el8サフィックスはRHCKを示し、el8uekはUEKを示します。
```
[opc@client ~]$ sudo grubby --info=ALL | grep ^kernel
	kernel="/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64"
	kernel="/boot/vmlinuz-5.15.0-306.177.4.el8uek.x86_64"
	kernel="/boot/vmlinuz-0-rescue-c6ba8a0f7826174140463c4a8bdad37a"
```


**3) 起動カーネル変更**
再起動後に実行するカーネルを指定してgrubby --set-defaultコマンドを実行することで、デフォルトのカーネルを変更できます。以下では、デフォルトのカーネルを 上記で確認した RHCK (5.14.0-503.26.1.el9_5.x86_64) に変更しています。
変更はすぐに反映されるため、あとはシステムを再起動するだけです。
```
[opc@client ~]$ sudo grubby --set-default /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
    The default is /boot/loader/entries/7063910fe2979258f8fd66f2fb8b8567-4.18.0-553.40.1.el8_10.x86_64.conf with index 0 and kernel /boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64
```

**4) 再起動**
```
[opc@client ~]$  sudo reboot
	Connection to 10.0.0.2 closed by remote host.
	Connection to 10.0.0.2 closed.
```


**5) 起動カーネル変更確認**
```
[opc@client ~]$ sudo grubby --default-kernel
/boot/vmlinuz-4.18.0-553.40.1.el8_10.x86_64

[opc@client ~]$ uname -r
4.18.0-553.40.1.el8_10.x86_64
```


## ● Oracle Linux 8 用 Lustreクライアント構築
管理者は、ファイル・システムにアクセスする必要があるGPUホストまたは他のコンピュート・ホストにLustreクライアントをデプロイします。
Lustreを使用したファイル・ストレージでは、Lustreバージョン2.15.5が使用され、次のOSに2.15.5クライアントを使用できます。
Lustreクライアントを1つのシステムに構築し、Lustreファイル・システムをマウントする各インスタンスにクライアント・パッケージをインストールします。

**1) 必要パッケージ インストール**
Lustreクライアントを1つのシステムに構築し、Lustreファイル・システムをマウントする各インスタンスにクライアント・パッケージをインストールします。
次のコマンドを使用して、必要なパッケージをインストールします。

```:コマンド
release=$(cat /etc/os-release | grep ^VERSION= |cut -f2 -d\" |cut -f1 -d.)
sudo dnf config-manager --set-enabled ol${release}_codeready_builder
sudo dnf config-manager --enable ol${release}_developer_EPEL
sudo yum-config-manager --enable ol${release}_developer
sudo yum install git libtool patch pkgconfig libnl3-devel.x86_64 libblkid-devel libuuid-devel rpm-build kernel-rpm-macros kernel-devel kernel-abi-whitelists libmount libmount-devel libyaml-devel
```


```:コマンド実行例
[opc@client ~]$ release=$(cat /etc/os-release | grep ^VERSION= |cut -f2 -d\" |cut -f1 -d.)
[opc@client ~]$ sudo dnf config-manager --set-enabled ol${release}_codeready_builder
[opc@client ~]$ sudo dnf config-manager --enable ol${release}_developer_EPEL
[opc@client ~]$ sudo yum-config-manager --enable ol${release}_developer
[opc@client ~]$ sudo yum install git libtool patch pkgconfig libnl3-devel.x86_64 libblkid-devel libuuid-devel rpm-build kernel-rpm-macros kernel-devel kernel-abi-whitelists libmount libmount-devel libyaml-devel
Ksplice for Oracle Linux 8 (x86_64)                                             50 MB/s |  19 MB     00:00
MySQL 8.4 Server Community for Oracle Linux 8 (x86_64)                          19 MB/s | 846 kB     00:00
MySQL 8.4 Tools Community for Oracle Linux 8 (x86_64)                          2.7 MB/s | 305 kB     00:00
・・・
省略
・・・
  python3-rpm-macros-3-45.el8.noarch                 qt5-srpm-macros-5.15.3-1.el8.noarch
  redhat-rpm-config-131-1.0.1.el8.noarch             rpm-build-4.14.3-32.0.1.el8_10.x86_64
  rust-srpm-macros-5-2.el8.noarch                    zstd-1.4.4-1.0.1.el8.x86_64

Complete!
```



**2) クライアント チェックアウト**
次のコマンドを使用して、Lustreクライアント・ソース・リポジトリをクローニングし、クライアントをチェックアウトします。

```:コマンド
git clone git://git.whamcloud.com/fs/lustre-release.git lustre-client
cd lustre-client/
git checkout tags/2.15.5
```


```:コマンド実行例
[opc@client ~]$  git clone git://git.whamcloud.com/fs/lustre-release.git lustre-client
	Cloning into 'lustre-client'...
	remote: Counting objects: 399611, done.
	remote: Compressing objects: 100% (86956/86956), done.
	remote: Total 399611 (delta 293903), reused 398206 (delta 292500)
	Receiving objects: 100% (399611/399611), 230.64 MiB | 7.67 MiB/s, done.
	Resolving deltas: 100% (293903/293903), done.


[opc@client ~]$ cd lustre-client/


[opc@client lustre-client]$ git checkout tags/2.15.5
Note: switching to 'tags/2.15.5'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 21921fb111 New release 2.15.5
```



**3) RPM構築**
クライアントおよびRPMを構築します。現在のディレクトリ内のすべてのLustre RPMは、次のコマンドを使用して構築されます。
```:コマンド
sudo sh autogen.sh
./configure --enable-client
sudo make
sudo make rpms
sudo make dkms-rpm
```

```:コマンド実行例
[opc@client lustre-client]$ sudo sh autogen.sh
	configure.ac:15: installing 'config/compile'
	configure.ac:10: installing 'config/config.guess'
	configure.ac:10: installing 'config/config.sub'
    ・・・
    省略
    ・・・
	config.status: creating config.h
	config.status: executing depfiles commands
	config.status: executing libtool commands
	
	CC:            gcc
	LD:            /usr/bin/ld -m elf_x86_64
	CPPFLAGS:      -include /home/opc/lustre-client/undef.h -include /home/opc/lustre-client/config.h -I/home/opc/lustre-client/lnet/include/uapi -I/home/opc/lustre-client/lustre/include/uapi -I/home/opc/lustre-client/libcfs/include -I/home/opc/lustre-client/lnet/utils/ -I/home/opc/lustre-client/lustre/include
	CFLAGS:        -g -O2 -Wall -Werror
	EXTRA_KCFLAGS: -include /home/opc/lustre-client/undef.h -include /home/opc/lustre-client/config.h  -g -I/home/opc/lustre-client/libcfs/include -I/home/opc/lustre-client/libcfs/include/libcfs -I/home/opc/lustre-client/lnet/include/uapi -I/home/opc/lustre-client/lnet/include -I/home/opc/lustre-client/lustre/include/uapi -I/home/opc/lustre-client/lustre/include -Wno-format-truncation -Wno-stringop-truncation -Wno-stringop-overflow
	
	Type 'make' to build Lustre.


[opc@client lustre-client]$ sudo make
	grep -v config.h.in config.h.in > undef.h
	make  all-recursive
	make[1]: Entering directory '/home/opc/lustre-client'
	Making all in .
	make[2]: Entering directory '/home/opc/lustre-client'
    ・・・
    省略
    ・・・
	make[3]: Leaving directory '/home/opc/lustre-client/lustre'
	make[2]: Leaving directory '/home/opc/lustre-client/lustre'
	make[1]: Leaving directory '/home/opc/lustre-client'


[opc@client lustre-client]$ sudo make rpms
	make  dist-gzip am__post_remove_distdir='@:'
	make[1]: Entering directory '/home/opc/lustre-client'
	make  distdir-am
	make[2]: Entering directory '/home/opc/lustre-client'
    ・・・
    省略
    ・・・
	+ cd /tmp/rpmbuild-lustre-root-jUEFXMcI/BUILD
	+ rm -rf lustre-2.15.5
	+ exit 0


[opc@client lustre-client]$ sudo make dkms-rpm
	make  dist-gzip am__post_remove_distdir='@:'
	make[1]: Entering directory '/home/opc/lustre-client'
	make  distdir-am
    ・・・
    省略
    ・・・
	+ cd /tmp/rpmbuild-lustre-root-YO2NcifH/BUILD
	+ rm -rf lustre-2.15.5
	+ exit 0
```






**4) RPM 確認**
RPMを調べます。
```
[opc@client lustre-client]$ ls -l *.rpm
	-rw-r--r--. 1 root root  2618112 Apr 15 02:08 kmod-lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root 24856240 Apr 15 02:08 kmod-lustre-client-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root    51232 Apr 15 02:08 kmod-lustre-client-tests-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root   308968 Apr 15 02:08 kmod-lustre-client-tests-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root 20313002 Apr 15 02:06 lustre-2.15.5-1.src.rpm
	-rw-r--r--. 1 root root   682464 Apr 15 02:08 lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root  1189124 Apr 15 02:08 lustre-client-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root  2414888 Apr 15 02:08 lustre-client-debugsource-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root   211328 Apr 15 02:08 lustre-client-devel-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root 17856948 Apr 15 02:17 lustre-client-dkms-2.15.5-1.el8.noarch.rpm
	-rw-r--r--. 1 root root 20304529 Apr 15 02:17 lustre-client-dkms-2.15.5-1.el8.src.rpm
	-rw-r--r--. 1 root root 12671564 Apr 15 02:08 lustre-client-tests-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root   517556 Apr 15 02:08 lustre-client-tests-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 root root    46280 Apr 15 02:08 lustre-iokit-2.15.5-1.el8.x86_64.rpm
```



**5) Lustre クライアント インストール準備**
構築した同じインスタンスに Lustreクライアントをインストールする場合は、次のコマンドを実行します。
```:コマンド
sudo make install
sudo depmod
sudo modprobe lustre
```


```:コマンド実行例
[opc@client lustre-client]$ sudo make install
	Making install in .
	make[1]: Entering directory '/home/opc/lustre-client'
	make DEQUOTE_CC_VERSION_TEXT=yes \
    ・・・
    省略
    ・・・
	make[3]: Leaving directory '/home/opc/lustre-client/lustre'
	make[2]: Leaving directory '/home/opc/lustre-client/lustre'
	make[1]: Leaving directory '/home/opc/lustre-client/lustre'

[opc@client lustre-client]$ sudo depmod

[opc@client lustre-client]$ sudo modprobe lustre
```





# ■ Oracle Linux 8 Lustreクライアントのインストール
この例では、Lustre Dynamic Kernel Module Support (DKMS)クライアント・パッケージを使用して、異なるカーネル・バージョン間の柔軟性を確保しています。構築したDKMS RPMは、Oracle Linux 8 で動作します。ただし、DKMSクライアントを使用している場合は、インストール時にLustreモジュールを構築するか、カーネルをアップグレードする必要があります。Linuxモジュール用の非DKMS kmod-lustre-clientパッケージなど、インストールするRPMを選択できます。


## ● Lustreクライアント ディレクトリ作成
Lustreクライアントをインストールするインスタンスにディレクトリを作成
```
[opc@client lustre-client]$ pwd
    /home/opc/lustre-client

[opc@client lustre-client]$ ls -l | grep lustre-client-
	-rw-r--r--.  1 root root  2618112 Apr 15 02:08 kmod-lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root 24856240 Apr 15 02:08 kmod-lustre-client-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root    51232 Apr 15 02:08 kmod-lustre-client-tests-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root   308968 Apr 15 02:08 kmod-lustre-client-tests-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root   682464 Apr 15 02:08 lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root  1189124 Apr 15 02:08 lustre-client-debuginfo-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root  2414888 Apr 15 02:08 lustre-client-debugsource-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root   211328 Apr 15 02:08 lustre-client-devel-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root 17856948 Apr 15 02:17 lustre-client-dkms-2.15.5-1.el8.noarch.rpm
	-rw-r--r--.  1 root root 20304529 Apr 15 02:17 lustre-client-dkms-2.15.5-1.el8.src.rpm
	-rw-r--r--.  1 root root 12671564 Apr 15 02:08 lustre-client-tests-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--.  1 root root   517556 Apr 15 02:08 lustre-client-tests-debuginfo-2.15.5-1.el8.x86_64.rpm

[opc@client lustre-client]$ mkdir lustre-rpms
[opc@client lustre-client]$ cp lustre-client-2.15.5-1.el8.x86_64.rpm lustre-client-dkms-2.15.5-1.el8.noarch.rpm ./lustre-rpms/
[opc@client lustre-client]$ ls -l ./lustre-rpms/
	total 18108
	-rw-r--r--. 1 opc opc   682464 Apr 15 03:05 lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 opc opc 17856948 Apr 15 03:05 lustre-client-dkms-2.15.5-1.el8.noarch.rpm
```

## ● RHCKカーネルを実行していることを確認
Oracle LinuxでLustreクライアントを使用するには、カーネルをRed Hat Compatible Kernel (RHCK)に変更する必要があります。
```
[opc@client lustre-client]$ uname -r
    4.18.0-553.40.1.el8_10.x86_64
```

## ● 依存関係インストール
依存関係に必要な Linuxリポジトリを有効にし、次のコマンドを使用して依存関係をインストールします。
```
[opc@client lustre-client]$ release=$(cat /etc/os-release | grep ^VERSION= |cut -f2 -d\" |cut -f1 -d.)
[opc@client lustre-client]$ sudo dnf config-manager --set-enabled ol${release}_codeready_builder
[opc@client lustre-client]$ sudo dnf config-manager --enable ol${release}_developer_EPEL
[opc@client lustre-client]$ sudo yum install dkms libmount-devel libyaml-devel
Oracle Linux 8 EPEL Packages for Development (x86_64)                          380 kB/s | 4.3 kB     00:00
Oracle Linux 8 BaseOS Latest (x86_64)                                          102 kB/s | 4.3 kB     00:00
Oracle Linux 8 Application Stream (x86_64)                                     343 kB/s | 4.5 kB     00:00
Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported                        184 kB/s | 3.8 kB     00:00
Oracle Linux 8 Addons (x86_64)                                                 185 kB/s | 3.5 kB     00:00
Package libmount-devel-2.32.1-46.0.1.el8.x86_64 is already installed.
Package libyaml-devel-0.1.7-5.el8.x86_64 is already installed.
Dependencies resolved.
===============================================================================================================
 Package             Architecture          Version                     Repository                         Size
===============================================================================================================
Installing:
 dkms                noarch                3.1.6-1.el8                 ol8_developer_EPEL                 86 k

Transaction Summary
===============================================================================================================
Install  1 Package

Total download size: 86 k
Installed size: 196 k
Is this ok [y/N]: y
Downloading Packages:
dkms-3.1.6-1.el8.noarch.rpm                                                    1.1 MB/s |  86 kB     00:00
---------------------------------------------------------------------------------------------------------------
Total                                                                          1.1 MB/s |  86 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                       1/1
  Installing       : dkms-3.1.6-1.el8.noarch                                                               1/1
  Running scriptlet: dkms-3.1.6-1.el8.noarch                                                               1/1
  Verifying        : dkms-3.1.6-1.el8.noarch                                                               1/1

Installed:
  dkms-3.1.6-1.el8.noarch

Complete!
```

## ● クライアントRPM インストール
次のコマンドを使用して、クライアントRPMをインストールします。

```
[opc@client lustre-client]$ cd lustre-rpms
[opc@client lustre-rpms]$ ls -l
	total 18108
	-rw-r--r--. 1 opc opc   682464 Apr 15 03:05 lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 opc opc 17856948 Apr 15 03:05 lustre-client-dkms-2.15.5-1.el8.noarch.rpm

[opc@client lustre-rpms]$ sudo yum localinstall -y ./*.rpm
	Last metadata expiration check: 0:00:48 ago on Tue 15 Apr 2025 03:08:41 AM GMT.
	Error: Will not install a source rpm package (lustre-2.15.5-1.src).

[opc@client lustre-client]$ cd lustre-rpms
[opc@client lustre-rpms]$ ls -l
	total 18108
	-rw-r--r--. 1 opc opc   682464 Apr 15 03:05 lustre-client-2.15.5-1.el8.x86_64.rpm
	-rw-r--r--. 1 opc opc 17856948 Apr 15 03:05 lustre-client-dkms-2.15.5-1.el8.noarch.rpm
    
[opc@client lustre-rpms]$ sudo yum localinstall -y ./*.rpm
	Last metadata expiration check: 0:03:46 ago on Tue 15 Apr 2025 03:08:41 AM GMT.
	Dependencies resolved.
	===============================================================================================================
	 Package                        Arch     Version                                     Repository           Size
	===============================================================================================================
    ・・・
    省略
    ・・・
	  perl-perlfaq-5.20180605-1.el8.noarch
	  perl-utils-5.26.3-422.el8.noarch
	  perl-version-6:0.99.24-1.el8.x86_64
	
	Complete!
```




## ● モジュール テスト
次のコマンドを使用してモジュールをテストします。

```
[opc@client lustre-rpms]$ sudo modprobe lustre
[opc@client lustre-rpms]$ sudo lsmod |grep lustre
    lustre               1052672  0
    lmv                   208896  1 lustre
    mdc                   286720  1 lustre
    lov                   348160  2 mdc,lustre
    ptlrpc               1441792  7 fld,osc,fid,lov,mdc,lmv,lustre
    obdclass             3371008  8 fld,osc,fid,ptlrpc,lov,mdc,lmv,lustre
    lnet                  720896  6 osc,obdclass,ptlrpc,ksocklnd,lmv,lustre
    libcfs                266240  11 fld,lnet,osc,fid,obdclass,ptlrpc,ksocklnd,lov,mdc,lmv,lustre
```

## ● 設定反映再起動
Lustreクライアントの準備ができました。システムを再起動してください。

```
[opc@client lustre-rpms]$ sudo reboot
	Connection to 10.0.0.2 closed by remote host.
	Connection to 10.0.0.2 closed.
```




# ■ マウント・コマンド
Lustreクライアント・モジュールがインストールされているインスタンスから、ファイル・システムをマウントできます。


## ● mountコマンドの取得
特定のファイル・システムの mountコマンドを取得するには、次のステップを実行します。

**1) Luter 画面**
「Lustre File Systems」リスト・ページで、使用するファイル・システムを選択し、ファイル・システムの詳細ページの「Lustre Properties」で、「Mount command」を見つけます。
「コピー」を選択して、マウント・コマンドをクリップボードにコピーします。

```:コピー内容
mount -t lustre 10.0.2.6@tcp:/lustrefs /mnt/mymountpoint
```

## ● Firewalld 設定
OCI コンピュートはデフォルト Firewalld がONです。
mount前にFirewallの設定を確認し、TCP 988 Port が通るよう設定します。

**1) firewalld 設定**
TCP 988 Portを登録
```
[root@client ~]# firewall-cmd --permanent --add-port=988/tcp
    success
```

**2) firewalld 設定確認**
```
[root@client ~]# firewall-cmd --list-all --permanent | grep 988
  ports: 988/tcp
```

**3) firewalld 設定チェック**
```
[root@client ~]# firewall-cmd --check-config
success
```

**4) firewalld 設定反映**

```
[root@client ~]# firewall-cmd --reload
    success
```



## ● ファイルシステムのマウント
**1) Mount ディレクトリ作成**
```
[root@client ~]# sudo mkdir /mnt/lustre
[root@client ~]# ls -ld /mnt/lustre/
	drwxr-xr-x. 2 root root 6 Apr 15 03:24 /mnt/lustre/
```

**2) Mount実行**
```
[root@client ~]# mount -t lustre 10.0.2.6@tcp:/lustrefs /mnt/lustre
```


**3) Mount確認**
```
[root@client ~]# mount | grep lustre
	10.0.2.6@tcp:/lustrefs on /mnt/lustre type lustre (rw,seclabel,checksum,flock,nouser_xattr,lruresize,lazystatfs,nouser_fid2path,verbose,encrypt)

[root@client ~]# df -hT | grep lustre
	10.0.2.6@tcp:/lustrefs    lustre     30T  102G   28T   1% /mnt/lustre

[root@client ~]# df -hT
	Filesystem                 Type      Size  Used Avail Use% Mounted on
	devtmpfs                   devtmpfs   40G     0   40G   0% /dev
	tmpfs                      tmpfs      40G     0   40G   0% /dev/shm
	tmpfs                      tmpfs      40G  8.8M   40G   1% /run
	tmpfs                      tmpfs      40G     0   40G   0% /sys/fs/cgroup
	/dev/mapper/ocivolume-root xfs        36G   14G   22G  39% /
	/dev/mapper/ocivolume-oled xfs        10G  351M  9.7G   4% /var/oled
	/dev/sda2                  xfs      1014M  394M  621M  39% /boot
	/dev/sda1                  vfat      100M  6.0M   94M   6% /boot/efi
	tmpfs                      tmpfs     7.9G     0  7.9G   0% /run/user/986
	tmpfs                      tmpfs     7.9G     0  7.9G   0% /run/user/1000
	10.0.2.6@tcp:/lustrefs    lustre     30T  102G   28T   1% /mnt/lustre

[root@client ~]# lfs df -h
	UUID                       bytes        Used   Available Use% Mounted on
	lustrefs-MDT0000_UUID      563.4G      976.7M      512.4G   1% /mnt/lustre[MDT:0]
	lustrefs-MDT0001_UUID      563.4G        3.5G      509.9G   1% /mnt/lustre[MDT:1]
	lustrefs-OST0000_UUID        2.4T        1.5T      835.1G  65% /mnt/lustre[OST:0]
	lustrefs-OST0001_UUID        2.4T        1.5T      837.9G  65% /mnt/lustre[OST:1]
	lustrefs-OST0002_UUID        2.4T        1.5T      838.9G  65% /mnt/lustre[OST:2]
	lustrefs-OST0003_UUID        2.4T        1.5T      838.2G  65% /mnt/lustre[OST:3]
	lustrefs-OST0004_UUID        2.4T        1.5T      833.9G  65% /mnt/lustre[OST:4]
	lustrefs-OST0005_UUID        2.4T        1.5T      847.9G  65% /mnt/lustre[OST:5]
	lustrefs-OST0006_UUID        2.4T        1.5T      837.5G  65% /mnt/lustre[OST:6]
	lustrefs-OST0007_UUID        2.4T        1.5T      835.5G  65% /mnt/lustre[OST:7]
	lustrefs-OST0008_UUID        2.4T        1.5T      842.6G  65% /mnt/lustre[OST:8]
	lustrefs-OST0009_UUID        2.4T        1.5T      836.9G  65% /mnt/lustre[OST:9]
	lustrefs-OST000a_UUID        2.4T        1.5T      838.6G  65% /mnt/lustre[OST:10]
	lustrefs-OST000b_UUID        2.4T        1.5T      847.9G  65% /mnt/lustre[OST:11]

	filesystem_summary:        29.4T       17.9T        9.8T  65% /mnt/lustre
```


**・ ストライピング確認**
```
[root@client ~]# lfs getstripe /mnt/lustre/
/mnt/lustre/
  lcm_layout_gen:    0
  lcm_mirror_count:  1
  lcm_entry_count:   4
    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 0
    lcme_extent.e_end:   104857600
      stripe_count:  1       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 104857600
    lcme_extent.e_end:   10737418240
      stripe_count:  8       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 10737418240
    lcme_extent.e_end:   107374182400
      stripe_count:  16       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 107374182400
    lcme_extent.e_end:   EOF
      stripe_count:  32       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1
```

**・ /mnt/lustre/内ディレクトリ配下に存在する全てのオブジェクトについてStripe 情報確認**
```
[root@client ~]# lfs getstripe -r /mnt/lustre/
/mnt/lustre/
  lcm_layout_gen:    0
  lcm_mirror_count:  1
  lcm_entry_count:   4
    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 0
    lcme_extent.e_end:   104857600
      stripe_count:  1       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 104857600
    lcme_extent.e_end:   10737418240
      stripe_count:  8       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 10737418240
    lcme_extent.e_end:   107374182400
      stripe_count:  16       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1

    lcme_id:             N/A
    lcme_mirror_id:      N/A
    lcme_flags:          0
    lcme_extent.e_start: 107374182400
    lcme_extent.e_end:   EOF
      stripe_count:  32       stripe_size:   1048576       pattern:       raid0       stripe_offset: -1
```


**・ Quota 確認**
```
[root@client ~]# lfs quota /mnt/lustre/
  Disk quotas for usr root (uid 0):
      Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
    /mnt/lustre/ 2624327948       0       0       -     764       0       0       -
  Disk quotas for grp root (gid 0):
      Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
    /mnt/lustre/ 2624327948       0       0       -     764       0       0
```

**・ 各obdidx Object Name 確認**
```
[root@client ~]# lfs osts
OBDS:
0: lustrefs-OST0000_UUID ACTIVE
1: lustrefs-OST0001_UUID ACTIVE
2: lustrefs-OST0002_UUID ACTIVE
3: lustrefs-OST0003_UUID ACTIVE
4: lustrefs-OST0004_UUID ACTIVE
5: lustrefs-OST0005_UUID ACTIVE
6: lustrefs-OST0006_UUID ACTIVE
7: lustrefs-OST0007_UUID ACTIVE
8: lustrefs-OST0008_UUID ACTIVE
9: lustrefs-OST0009_UUID ACTIVE
10: lustrefs-OST000a_UUID ACTIVE
11: lustrefs-OST000b_UUID ACTIVE
```

# ■ FIO コマンド使用して スループット・パフォーマンス・テスト
Linuxベース・インスタンスでブロック・ボリューム・パフォーマンス・テストを行うためのサンプルFIOコマンドを参照して FIOコマンドで IOPSとスループットのパフォーマンス・テストをします。
テストするには、次のFIOサンプル・コマンドを使用します。コマンドを直接実行することも、コマンドを使用してジョブ・ファイルを作成してからそのジョブ・ファイルを実行することもできます。


## ● Lustre File System パフォーマンス確認
作成した Lustre File System Aggregate throughput (MB/s) を確認します。
今回は金銭の都合で、、最小容量 31.2 TB と 最小パフォーマンス TB あたり 125 MBps の Aggregate throughput (MB/s): 3,900 であることを確認できます。

![Luster作成06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8f3f91ae-3951-40a5-9b3e-94bd89b6ea0d.png)


## ● FIO インストール

**1) Install FIO**
Oracle LinuxまたはCentOSシステムにFIOをインストールして構成するには、次のコマンドを実行します
```
[root@client ~]# dnf install fio -y
Last metadata expiration check: 0:05:37 ago on Thu 17 Apr 2025 12:07:22 PM GMT.
Dependencies resolved.
==================================================================================================================================================================================================
 Package                                             Architecture                         Version                                           Repository                                       Size
==================================================================================================================================================================================================
Installing:
 fio                                                 x86_64                               3.19-4.el8                                        ol8_appstream                                   538 k
Installing dependencies:
 boost-iostreams                                     x86_64                               1.66.0-13.el8                                     ol8_appstream                                    42 k
 boost-program-options                               x86_64                               1.66.0-13.el8                                     ol8_appstream                                   141 k
 boost-random                                        x86_64                               1.66.0-13.el8                                     ol8_appstream                                    22 k
 daxctl-libs                                         x86_64                               73-1.0.2.el8                                      ol8_UEKR7                                        44 k
 libpmem                                             x86_64                               1.6.1-1.el8                                       ol8_appstream                                    79 k
 libpmemblk                                          x86_64                               1.6.1-1.el8                                       ol8_appstream                                    92 k
 librados2                                           x86_64                               1:12.2.7-9.0.2.el8                                ol8_appstream                                   2.9 M
 librbd1                                             x86_64                               1:12.2.7-9.0.2.el8                                ol8_appstream                                   1.1 M
 librdmacm                                           x86_64                               48.0-1.el8                                        ol8_baseos_latest                                77 k
 ndctl-libs                                          x86_64                               73-1.0.2.el8                                      ol8_UEKR7                                        87 k

Transaction Summary
==================================================================================================================================================================================================
Install  11 Packages

Total download size: 5.0 M
Installed size: 17 M
Downloading Packages:
(1/11): boost-iostreams-1.66.0-13.el8.x86_64.rpm                                                                                                                  1.8 MB/s |  42 kB     00:00
(2/11): boost-random-1.66.0-13.el8.x86_64.rpm                                                                                                                     6.2 MB/s |  22 kB     00:00
(3/11): librdmacm-48.0-1.el8.x86_64.rpm                                                                                                                           2.4 MB/s |  77 kB     00:00
(4/11): boost-program-options-1.66.0-13.el8.x86_64.rpm                                                                                                            4.1 MB/s | 141 kB     00:00
(5/11): fio-3.19-4.el8.x86_64.rpm                                                                                                                                  31 MB/s | 538 kB     00:00
(6/11): libpmem-1.6.1-1.el8.x86_64.rpm                                                                                                                            2.4 MB/s |  79 kB     00:00
(7/11): librados2-12.2.7-9.0.2.el8.x86_64.rpm                                                                                                                      62 MB/s | 2.9 MB     00:00
(8/11): librbd1-12.2.7-9.0.2.el8.x86_64.rpm                                                                                                                        30 MB/s | 1.1 MB     00:00
(9/11): daxctl-libs-73-1.0.2.el8.x86_64.rpm                                                                                                                       3.9 MB/s |  44 kB     00:00
(10/11): libpmemblk-1.6.1-1.el8.x86_64.rpm                                                                                                                        1.3 MB/s |  92 kB     00:00
(11/11): ndctl-libs-73-1.0.2.el8.x86_64.rpm                                                                                                                       6.8 MB/s |  87 kB     00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                              43 MB/s | 5.0 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                          1/1
  Installing       : daxctl-libs-73-1.0.2.el8.x86_64                                                                                                                                         1/11
  Installing       : libpmem-1.6.1-1.el8.x86_64                                                                                                                                              2/11
  Running scriptlet: libpmem-1.6.1-1.el8.x86_64                                                                                                                                              2/11
  Installing       : boost-random-1.66.0-13.el8.x86_64                                                                                                                                       3/11
  Running scriptlet: boost-random-1.66.0-13.el8.x86_64                                                                                                                                       3/11
  Installing       : boost-program-options-1.66.0-13.el8.x86_64                                                                                                                              4/11
  Running scriptlet: boost-program-options-1.66.0-13.el8.x86_64                                                                                                                              4/11
  Installing       : boost-iostreams-1.66.0-13.el8.x86_64                                                                                                                                    5/11
  Running scriptlet: boost-iostreams-1.66.0-13.el8.x86_64                                                                                                                                    5/11
  Installing       : librados2-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                     6/11
  Running scriptlet: librados2-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                     6/11
  Installing       : librbd1-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                       7/11
  Running scriptlet: librbd1-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                       7/11
  Installing       : ndctl-libs-73-1.0.2.el8.x86_64                                                                                                                                          8/11
  Installing       : libpmemblk-1.6.1-1.el8.x86_64                                                                                                                                           9/11
  Running scriptlet: libpmemblk-1.6.1-1.el8.x86_64                                                                                                                                           9/11
  Installing       : librdmacm-48.0-1.el8.x86_64                                                                                                                                            10/11
  Installing       : fio-3.19-4.el8.x86_64                                                                                                                                                  11/11
  Running scriptlet: fio-3.19-4.el8.x86_64                                                                                                                                                  11/11
  Verifying        : librdmacm-48.0-1.el8.x86_64                                                                                                                                             1/11
  Verifying        : boost-iostreams-1.66.0-13.el8.x86_64                                                                                                                                    2/11
  Verifying        : boost-program-options-1.66.0-13.el8.x86_64                                                                                                                              3/11
  Verifying        : boost-random-1.66.0-13.el8.x86_64                                                                                                                                       4/11
  Verifying        : fio-3.19-4.el8.x86_64                                                                                                                                                   5/11
  Verifying        : libpmem-1.6.1-1.el8.x86_64                                                                                                                                              6/11
  Verifying        : libpmemblk-1.6.1-1.el8.x86_64                                                                                                                                           7/11
  Verifying        : librados2-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                     8/11
  Verifying        : librbd1-1:12.2.7-9.0.2.el8.x86_64                                                                                                                                       9/11
  Verifying        : daxctl-libs-73-1.0.2.el8.x86_64                                                                                                                                        10/11
  Verifying        : ndctl-libs-73-1.0.2.el8.x86_64                                                                                                                                         11/11

Installed:
  boost-iostreams-1.66.0-13.el8.x86_64    boost-program-options-1.66.0-13.el8.x86_64    boost-random-1.66.0-13.el8.x86_64      daxctl-libs-73-1.0.2.el8.x86_64      fio-3.19-4.el8.x86_64
  libpmem-1.6.1-1.el8.x86_64              libpmemblk-1.6.1-1.el8.x86_64                 librados2-1:12.2.7-9.0.2.el8.x86_64    librbd1-1:12.2.7-9.0.2.el8.x86_64    librdmacm-48.0-1.el8.x86_64
  ndctl-libs-73-1.0.2.el8.x86_64

Complete!
```

**2) FIO インストール確認**
```
[root@client ~]# fio -v
    fio-3.19
```

## ● 順次読取りのテスト
・順次読取りのテスト実行

データベース・ワークロードなど、順次アクセス・パターンを利用できるワークロードに対しては、順次読取りをテストすることにより、このパターンのパフォーマンスを確認できます。
順次読取りをテストするには、次のコマンドを実行します。

```
[root@client ~]# sudo fio --directory=/mnt/lustre/fio --direct=1 --rw=read --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=200 --time_based --group_reporting --name=read_throughput --eta-newline=1 --readonly
read_throughput: (g=0): rw=read, bs=(R) 256KiB-256KiB, (W) 256KiB-256KiB, (T) 256KiB-256KiB, ioengine=libaio, iodepth=64
...
fio-3.19
Starting 200 processes
Jobs: 200 (f=200)
Jobs: 200 (f=200): [R(200)][2.5%][r=2246MiB/s][r=8983 IOPS][eta 01m:57s]
Jobs: 200 (f=200): [R(200)][3.3%][r=2212MiB/s][r=8846 IOPS][eta 01m:56s]
Jobs: 200 (f=200): [R(200)][5.0%][r=2258MiB/s][r=9030 IOPS][eta 01m:55s]
Jobs: 200 (f=200): [R(200)][5.8%][r=2320MiB/s][r=9278 IOPS][eta 01m:54s]
Jobs: 200 (f=200): [R(200)][6.6%][r=2350MiB/s][r=9398 IOPS][eta 01m:53s]
Jobs: 200 (f=200): [R(200)][7.4%][r=2502MiB/s][r=10.0k IOPS][eta 01m:52s]
Jobs: 200 (f=200): [R(200)][8.3%][r=2437MiB/s][r=9746 IOPS][eta 01m:51s]
Jobs: 200 (f=200): [R(200)][9.1%][r=2465MiB/s][r=9858 IOPS][eta 01m:50s]
Jobs: 200 (f=200): [R(200)][9.9%][r=2437MiB/s][r=9749 IOPS][eta 01m:49s]
Jobs: 200 (f=200): [R(200)][10.7%][r=2498MiB/s][r=9990 IOPS][eta 01m:48s]
Jobs: 200 (f=200): [R(200)][11.6%][r=2543MiB/s][r=10.2k IOPS][eta 01m:47s]
Jobs: 200 (f=200): [R(200)][12.4%][r=2582MiB/s][r=10.3k IOPS][eta 01m:46s]
Jobs: 200 (f=200): [R(200)][13.2%][r=2547MiB/s][r=10.2k IOPS][eta 01m:45s]
Jobs: 200 (f=200): [R(200)][14.0%][r=2569MiB/s][r=10.3k IOPS][eta 01m:44s]
Jobs: 200 (f=200): [R(200)][14.9%][r=2535MiB/s][r=10.1k IOPS][eta 01m:43s]
Jobs: 200 (f=200): [R(200)][15.7%][r=2418MiB/s][r=9671 IOPS][eta 01m:42s]
Jobs: 200 (f=200): [R(200)][16.5%][r=2452MiB/s][r=9807 IOPS][eta 01m:41s]
Jobs: 200 (f=200): [R(200)][17.4%][r=2449MiB/s][r=9797 IOPS][eta 01m:40s]
Jobs: 200 (f=200): [R(200)][18.2%][r=2369MiB/s][r=9474 IOPS][eta 01m:39s]
Jobs: 200 (f=200): [R(200)][19.0%][r=2258MiB/s][r=9032 IOPS][eta 01m:38s]
Jobs: 200 (f=200): [R(200)][19.8%][r=2266MiB/s][r=9065 IOPS][eta 01m:37s]
Jobs: 200 (f=200): [R(200)][20.7%][r=2264MiB/s][r=9054 IOPS][eta 01m:36s]
Jobs: 200 (f=200): [R(200)][21.5%][r=2203MiB/s][r=8811 IOPS][eta 01m:35s]
Jobs: 200 (f=200): [R(200)][22.3%][r=2180MiB/s][r=8719 IOPS][eta 01m:34s]
Jobs: 200 (f=200): [R(200)][23.1%][r=2213MiB/s][r=8851 IOPS][eta 01m:33s]
Jobs: 200 (f=200): [R(200)][24.0%][r=2129MiB/s][r=8516 IOPS][eta 01m:32s]
Jobs: 200 (f=200): [R(200)][24.8%][r=2176MiB/s][r=8705 IOPS][eta 01m:31s]
Jobs: 200 (f=200): [R(200)][25.6%][r=2215MiB/s][r=8861 IOPS][eta 01m:30s]
Jobs: 200 (f=200): [R(200)][26.4%][r=2193MiB/s][r=8772 IOPS][eta 01m:29s]
Jobs: 200 (f=200): [R(200)][27.3%][r=2206MiB/s][r=8823 IOPS][eta 01m:28s]
Jobs: 200 (f=200): [R(200)][28.1%][r=2287MiB/s][r=9148 IOPS][eta 01m:27s]
Jobs: 200 (f=200): [R(200)][28.9%][r=2228MiB/s][r=8912 IOPS][eta 01m:26s]
Jobs: 200 (f=200): [R(200)][29.8%][r=2338MiB/s][r=9353 IOPS][eta 01m:25s]
Jobs: 200 (f=200): [R(200)][30.6%][r=2265MiB/s][r=9061 IOPS][eta 01m:24s]
Jobs: 200 (f=200): [R(200)][31.4%][r=2380MiB/s][r=9518 IOPS][eta 01m:23s]
Jobs: 200 (f=200): [R(200)][32.2%][r=2294MiB/s][r=9177 IOPS][eta 01m:22s]
Jobs: 200 (f=200): [R(200)][33.1%][r=2271MiB/s][r=9084 IOPS][eta 01m:21s]
Jobs: 200 (f=200): [R(200)][33.9%][r=2250MiB/s][r=9000 IOPS][eta 01m:20s]
Jobs: 200 (f=200): [R(200)][34.7%][r=2166MiB/s][r=8662 IOPS][eta 01m:19s]
Jobs: 200 (f=200): [R(200)][35.5%][r=2249MiB/s][r=8995 IOPS][eta 01m:18s]
Jobs: 200 (f=200): [R(200)][36.4%][r=2337MiB/s][r=9347 IOPS][eta 01m:17s]
Jobs: 200 (f=200): [R(200)][37.2%][r=2365MiB/s][r=9458 IOPS][eta 01m:16s]
Jobs: 200 (f=200): [R(200)][38.0%][r=2210MiB/s][r=8840 IOPS][eta 01m:15s]
Jobs: 200 (f=200): [R(200)][38.8%][r=2206MiB/s][r=8825 IOPS][eta 01m:14s]
Jobs: 200 (f=200): [R(200)][39.7%][r=2354MiB/s][r=9414 IOPS][eta 01m:13s]
Jobs: 200 (f=200): [R(200)][40.5%][r=2276MiB/s][r=9103 IOPS][eta 01m:12s]
Jobs: 200 (f=200): [R(200)][41.3%][r=2350MiB/s][r=9400 IOPS][eta 01m:11s]
Jobs: 200 (f=200): [R(200)][42.1%][r=2330MiB/s][r=9318 IOPS][eta 01m:10s]
Jobs: 200 (f=200): [R(200)][43.0%][r=2248MiB/s][r=8990 IOPS][eta 01m:09s]
Jobs: 200 (f=200): [R(200)][43.8%][r=2139MiB/s][r=8554 IOPS][eta 01m:08s]
Jobs: 200 (f=200): [R(200)][44.6%][r=2142MiB/s][r=8566 IOPS][eta 01m:07s]
Jobs: 200 (f=200): [R(200)][45.5%][r=2261MiB/s][r=9045 IOPS][eta 01m:06s]
Jobs: 200 (f=200): [R(200)][46.3%][r=2318MiB/s][r=9273 IOPS][eta 01m:05s]
Jobs: 200 (f=200): [R(200)][47.1%][r=2387MiB/s][r=9548 IOPS][eta 01m:04s]
Jobs: 200 (f=200): [R(200)][47.9%][r=2386MiB/s][r=9544 IOPS][eta 01m:03s]
Jobs: 200 (f=200): [R(200)][48.8%][r=2328MiB/s][r=9311 IOPS][eta 01m:02s]
Jobs: 200 (f=200): [R(200)][49.6%][r=2283MiB/s][r=9131 IOPS][eta 01m:01s]
Jobs: 200 (f=200): [R(200)][50.4%][r=2355MiB/s][r=9421 IOPS][eta 01m:00s]
Jobs: 200 (f=200): [R(200)][51.2%][r=2232MiB/s][r=8928 IOPS][eta 00m:59s]
Jobs: 200 (f=200): [R(200)][52.1%][r=2301MiB/s][r=9203 IOPS][eta 00m:58s]
Jobs: 200 (f=200): [R(200)][52.9%][r=2328MiB/s][r=9312 IOPS][eta 00m:57s]
Jobs: 200 (f=200): [R(200)][53.7%][r=2281MiB/s][r=9123 IOPS][eta 00m:56s]
Jobs: 200 (f=200): [R(200)][54.5%][r=2366MiB/s][r=9465 IOPS][eta 00m:55s]
Jobs: 200 (f=200): [R(200)][55.4%][r=2406MiB/s][r=9623 IOPS][eta 00m:54s]
Jobs: 200 (f=200): [R(200)][56.2%][r=2300MiB/s][r=9201 IOPS][eta 00m:53s]
Jobs: 200 (f=200): [R(200)][57.0%][r=2276MiB/s][r=9102 IOPS][eta 00m:52s]
Jobs: 200 (f=200): [R(200)][57.9%][r=2199MiB/s][r=8797 IOPS][eta 00m:51s]
Jobs: 200 (f=200): [R(200)][58.7%][r=2308MiB/s][r=9230 IOPS][eta 00m:50s]
Jobs: 200 (f=200): [R(200)][59.5%][r=2293MiB/s][r=9171 IOPS][eta 00m:49s]
Jobs: 200 (f=200): [R(200)][60.3%][r=2235MiB/s][r=8941 IOPS][eta 00m:48s]
Jobs: 200 (f=200): [R(200)][61.2%][r=2245MiB/s][r=8978 IOPS][eta 00m:47s]
Jobs: 200 (f=200): [R(200)][62.0%][r=2293MiB/s][r=9173 IOPS][eta 00m:46s]
Jobs: 200 (f=200): [R(200)][62.8%][r=2156MiB/s][r=8624 IOPS][eta 00m:45s]
Jobs: 200 (f=200): [R(200)][63.6%][r=2204MiB/s][r=8816 IOPS][eta 00m:44s]
Jobs: 200 (f=200): [R(200)][64.5%][r=2154MiB/s][r=8617 IOPS][eta 00m:43s]
Jobs: 200 (f=200): [R(200)][65.3%][r=2234MiB/s][r=8935 IOPS][eta 00m:42s]
Jobs: 200 (f=200): [R(200)][66.1%][r=2242MiB/s][r=8969 IOPS][eta 00m:41s]
Jobs: 200 (f=200): [R(200)][66.9%][r=2235MiB/s][r=8939 IOPS][eta 00m:40s]
Jobs: 200 (f=200): [R(200)][67.8%][r=2359MiB/s][r=9437 IOPS][eta 00m:39s]
Jobs: 200 (f=200): [R(200)][68.6%][r=2335MiB/s][r=9338 IOPS][eta 00m:38s]
Jobs: 200 (f=200): [R(200)][69.4%][r=2350MiB/s][r=9399 IOPS][eta 00m:37s]
Jobs: 200 (f=200): [R(200)][70.2%][r=2464MiB/s][r=9856 IOPS][eta 00m:36s]
Jobs: 200 (f=200): [R(200)][71.1%][r=2376MiB/s][r=9505 IOPS][eta 00m:35s]
Jobs: 200 (f=200): [R(200)][71.9%][r=2395MiB/s][r=9578 IOPS][eta 00m:34s]
Jobs: 200 (f=200): [R(200)][72.7%][r=2327MiB/s][r=9306 IOPS][eta 00m:33s]
Jobs: 200 (f=200): [R(200)][73.6%][r=2240MiB/s][r=8961 IOPS][eta 00m:32s]
Jobs: 200 (f=200): [R(200)][74.4%][r=2171MiB/s][r=8682 IOPS][eta 00m:31s]
Jobs: 200 (f=200): [R(200)][75.2%][r=2144MiB/s][r=8576 IOPS][eta 00m:30s]
Jobs: 200 (f=200): [R(200)][76.0%][r=2241MiB/s][r=8962 IOPS][eta 00m:29s]
Jobs: 200 (f=200): [R(200)][76.9%][r=2385MiB/s][r=9538 IOPS][eta 00m:28s]
Jobs: 200 (f=200): [R(200)][77.7%][r=2391MiB/s][r=9564 IOPS][eta 00m:27s]
Jobs: 200 (f=200): [R(200)][78.5%][r=2344MiB/s][r=9374 IOPS][eta 00m:26s]
Jobs: 200 (f=200): [R(200)][79.3%][r=2315MiB/s][r=9261 IOPS][eta 00m:25s]
Jobs: 200 (f=200): [R(200)][80.2%][r=2131MiB/s][r=8524 IOPS][eta 00m:24s]
Jobs: 200 (f=200): [R(200)][81.0%][r=2167MiB/s][r=8667 IOPS][eta 00m:23s]
Jobs: 200 (f=200): [R(200)][81.8%][r=2356MiB/s][r=9423 IOPS][eta 00m:22s]
Jobs: 200 (f=200): [R(200)][82.6%][r=2309MiB/s][r=9234 IOPS][eta 00m:21s]
Jobs: 200 (f=200): [R(200)][83.5%][r=2244MiB/s][r=8975 IOPS][eta 00m:20s]
Jobs: 200 (f=200): [R(200)][84.3%][r=2296MiB/s][r=9185 IOPS][eta 00m:19s]
Jobs: 200 (f=200): [R(200)][85.1%][r=2328MiB/s][r=9311 IOPS][eta 00m:18s]
Jobs: 200 (f=200): [R(200)][86.0%][r=2394MiB/s][r=9575 IOPS][eta 00m:17s]
Jobs: 200 (f=200): [R(200)][86.8%][r=2277MiB/s][r=9108 IOPS][eta 00m:16s]
Jobs: 200 (f=200): [R(200)][87.6%][r=2198MiB/s][r=8790 IOPS][eta 00m:15s]
Jobs: 200 (f=200): [R(200)][89.2%][r=2261MiB/s][r=9042 IOPS][eta 00m:13s]
Jobs: 200 (f=200): [R(200)][90.0%][r=2196MiB/s][r=8784 IOPS][eta 00m:12s]
Jobs: 200 (f=200): [R(200)][90.8%][r=2280MiB/s][r=9120 IOPS][eta 00m:11s]
Jobs: 200 (f=200): [R(200)][91.7%][r=2323MiB/s][r=9292 IOPS][eta 00m:10s]
Jobs: 200 (f=200): [R(200)][92.5%][r=2403MiB/s][r=9612 IOPS][eta 00m:09s]
Jobs: 200 (f=200): [R(200)][93.3%][r=2406MiB/s][r=9624 IOPS][eta 00m:08s]
Jobs: 200 (f=200): [R(200)][94.2%][r=2294MiB/s][r=9174 IOPS][eta 00m:07s]
Jobs: 200 (f=200): [R(200)][95.0%][r=2226MiB/s][r=8904 IOPS][eta 00m:06s]
Jobs: 200 (f=200): [R(200)][95.8%][r=2271MiB/s][r=9085 IOPS][eta 00m:05s]
Jobs: 200 (f=200): [R(200)][96.7%][r=2279MiB/s][r=9115 IOPS][eta 00m:04s]
Jobs: 200 (f=200): [R(200)][97.5%][r=2290MiB/s][r=9160 IOPS][eta 00m:03s]
Jobs: 200 (f=200): [R(200)][98.3%][r=2192MiB/s][r=8769 IOPS][eta 00m:02s]
Jobs: 200 (f=200): [R(200)][99.2%][r=2230MiB/s][r=8918 IOPS][eta 00m:01s]
Jobs: 200 (f=200): [R(200)][100.0%][r=2200MiB/s][r=8798 IOPS][eta 00m:00s]
Jobs: 200 (f=200): [R(200)][7.8%][r=2108MiB/s][r=8433 IOPS][eta 23m:55s]
Jobs: 189 (f=189): [_(1),R(1),_(1),R(5),_(1),R(86),_(1),R(20),_(1),R(17),_(1),R(19),_(1),E(1),R(4),_(1),R(10),_(1),R(6),_(1),R(21)][9.2%][r=209MiB/s][r=837 IOPS][eta 20m:00s]
Jobs: 75 (f=71): [_(6),R(1),_(2),R(1),_(2),R(1),_(2),R(1),_(2),R(1),_(1),R(2),_(3),R(1),_(1),R(1),_(2),f(1),R(2),_(4),R(3),_(3),R(3),_(2),R(1),_(1),R(1),_(3),R(1),_(6),R(3),_(2),R(1),_(1),R(1),_(3),R(1),_(1),R(2),_(2),R(2),_(4),R(4),_(2),R(2),_(5),R(1),_(1),R(1),_(4),R(1),f(1),_(2),R(2),_(4),R(2),_(4),R(1),_(5),R(1),_(2),R(1),_(2),R(1),_(5),R(4),_(2),R(4),_(3),R(1),_(1),R(1),_(4),f(1),_(3),R(2),_(1),R(1),_(2),f(1),R(2),_(3),R(3),_(4),R(2),_(9),R(3),_(3),R(1),_(1)][7.8%][r=1855MiB/s][r=7419 IOPS][eta 24m:18s]
read_throughput: (groupid=0, jobs=200): err= 0: pid=226774: Thu Apr 17 12:47:40 2025
  read: IOPS=9091, BW=2273MiB/s (2383MB/s)(272GiB/122639msec)
    slat (usec): min=12, max=79892, avg=45.71, stdev=226.35
    clat (usec): min=1837, max=47608k, avg=1397520.69, stdev=3365459.31
     lat (usec): min=1891, max=47608k, avg=1397566.63, stdev=3365458.60
    clat percentiles (msec):
     |  1.00th=[    5],  5.00th=[    6], 10.00th=[    7], 20.00th=[    8],
     | 30.00th=[    9], 40.00th=[   12], 50.00th=[   22], 60.00th=[  113],
     | 70.00th=[  481], 80.00th=[ 1469], 90.00th=[ 4665], 95.00th=[ 8658],
     | 99.00th=[16442], 99.50th=[17113], 99.90th=[17113], 99.95th=[17113],
     | 99.99th=[17113]
   bw (  MiB/s): min=  153, max=16684, per=100.00%, avg=4242.13, stdev=16.08, samples=25924
   iops        : min=  509, max=66719, avg=16939.90, stdev=64.33, samples=25924
  lat (msec)   : 2=0.01%, 4=1.00%, 10=34.02%, 20=14.30%, 50=5.78%
  lat (msec)   : 100=4.18%, 250=6.00%, 500=5.02%, 750=3.35%, 1000=2.65%
  lat (msec)   : 2000=6.68%, >=2000=17.00%
  cpu          : usr=0.02%, sys=0.19%, ctx=561806, majf=0, minf=106492
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.3%, 32=0.6%, >=64=98.9%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=1114993,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=2273MiB/s (2383MB/s), 2273MiB/s-2273MiB/s (2383MB/s-2383MB/s), io=272GiB (292GB), run=122639-122639msec
```


**・ 順次読取りのテスト結果**
スループット・パフォーマンスは、次の bw 行を見ると、

```: bw行
   bw (  MiB/s): min=  153, max=16684, per=100.00%, avg=4242.13, stdev=16.08, samples=25924
```

OCIコンソールに表示された Aggregate throughput (MB/s): 3,900 以上であることを確認できました。
```
max = 16684 (MiB/s) ≒ 17494.44 (MB/s) = 133.47 (Gbps)
avg = 4242.13 (MiB/s) ≒ 4448.16 (MB/s) = 35.58 (Gbps)
```

今回は、最小容量、最小パフォーマンスで構成しました。
次回は、Luster の Performance tier を上げて 200 Gbps スループット・チャレンジします
＼(^o^)／



# ■ 参考
## ● Lustre .org
　・ [lustre.org](https://www.lustre.org/about/)
　・ [Documentation](https://www.lustre.org/documentation/)
　・ [Luster Wiki](https://wiki.lustre.org/Main_Page)
　・ [Introduction to Lustre](https://wiki.lustre.org/Introduction_to_Lustre)

## ● Lustre 概要
　・ [Lustre によるファイル ストレージ](https://www.oracle.com/jp/cloud/storage/file-storage-with-lustre/)
　・ [File Storage with Lustre Pricing](https://www.oracle.com/cloud/storage/file-storage-with-lustre/pricing/)

## ● Oracle Cloud Infrastructureドキュメント
　・ [Lustreを使用したファイル・ストレージ](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/home.htm)
　・ [必要なIAMポリシー](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/manage-file-systems.htm#iam-policies)
　・ [制限事項および考慮事項](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/manage-file-systems.htm#limits)
　・ [Lustreリソースを使用したファイル・ストレージの制限](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/overview.htm#limits)
　・ [Service Limit: Lustre制限のあるファイル・ストレージ](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/General/Concepts/servicelimits.htm#File_Storage_w_Lustre_Limits)
　・ [Lustreポリシーを使用したファイル・ストレージ](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/policies.htm#top)
　・ [Lusterに必要なVCNセキュリティ・ルール](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/security-rules.htm#top)
　・ [Lustreファイル・システムを使用したファイル・ストレージの管理](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/manage-file-systems.htm#limits)
　・ [Lustreファイル・システムの作成](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/file-system-create.htm)
　・ [Lustre File Systemのマウントおよびアクセス](https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/lustre/file-system-connect.htm#top)



## ● アーキテクチャ
　・ [Lustreを使用したスケーラブルな分散ファイル・システムの導入](https://docs.oracle.com/ja/solutions/deploy-lustre-fs/index.html)
　・ [Lustreファイル・システムのデプロイについて](https://docs.oracle.com/ja/solutions/deploy-lustre-file-systems/index.html#GUID-491C8D51-C85C-4F0F-83DD-5EBE8338F3B6)

## ● Oracle Cloud Infrastructure Blog
　・ [Generally Available: Fully Managed Lustre File Storage in the Cloud ](https://blogs.oracle.com/cloud-infrastructure/post/fully-managed-lustre-file-storage-in-the-cloud)
　・ [Lustre File System Performance on Oracle Cloud Infrastructure](https://blogs.oracle.com/cloud-infrastructure/post/lustre-file-system-performance-on-oracle-cloud-infrastructure)
　・ [Building storage systems for the future: The OCI roadmap](https://blogs.oracle.com/cloud-infrastructure/post/building-storage-systems-for-future-oci-roadmap)
　・ [Storage Solutions for AI Applications in Oracle Cloud Infrastructure](https://blogs.oracle.com/cloud-infrastructure/post/storage-solutions-ai-applications-oci)
　・ [Changing the default kernel in Oracle Linux | It's as simple as 1-2-3](https://blogs.oracle.com/linux/post/changing-the-default-kernel-in-oracle-linux-its-as-simple-as-1-2-3)

## ● その他
　・ [MiB -> MB 単位変換](convertlive.com)
　・ [Red Hat: firewalld の使用および設定](https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters)