12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud: 超高パフォーマンス・ボリューム(UHP) で 300万IOPS, 100Gbpsスループット出してみてみた

Last updated at Posted at 2024-09-01

Oracle Cloud Infrastructure(OCI)ネットワーキングは、コンバージド・イーサネット上でRDMAを実行する専用の非ブロッキング・ネットワーク上の32,000以上のGPUを持つ超大規模クラスタ上で分散AIおよびHPCワークロードを実行します。最大16,000 GPUのクラスタで、最大3.2 Tb/秒のネットワーキング速度を活用します。Virtual Cloud Network(VCN)は、次の特徴があります。
・ 高帯域幅、低遅延環境
Oracleのクラスターネットワーキングは、コンバージドイーサネット(RoCE)v2および100 Gbpsネットワークを介したリモート・ダイレクト・メモリ・アクセス(RDMA)を提供し、マイクロ秒の遅延を備えた高性能コンピューティングクラスターを作成します。これは最も要求の厳しいワークロードに最適です。
・ フラット・ネットワーク
オラクルの非常にスケーラブルでフラットなネットワーク設計により、コンピューティングとストレージ間のネットワークホップ数が最大2つまで制限されます。Oracleはネットワークリソースをオーバーサブスクライブしないため、顧客は予測可能なパフォーマンスを備えた低遅延ネットワークを体験できます。
・ パフォーマンスSLA
Oracleは、ネットワーキング用のパフォーマンスSLAを提供する唯一の大規模なクラウドサービスプロバイダーです。お客様がアプリケーションのワークロードに対する予測可能なネットワーク応答に依存できるよう、一貫したネットワークパフォーマンスを保証します。

構成図2.png
Oracle Cloud Infrastructure (OCI) Compute BM.Standard.E5 は 100 Gbps のネットワークを備えているということで、前回実施した 40Gbpsスループット備えた VM.Optimized3.Flexシェイプにアタッチした Ultra High Performance Volumes (UHP) ブロック ボリュームでは 100万IOPS 出たのでそれ以上の IOPS が出そうです。

ストレージ技術基礎より、ストレージの IOPSとスループットの算出は次のようになります。

Gbps と IOPSの算出 ※1回あたりのI/Oを4KBとした場合
[スループット] = [1回のアクセスで処理する容量] x [IOPS] 
 --> 100Gbps = 4KB x IOPS
 -->    IOPS = 100Gb / 4KB = 12.5GB / 4 KB = 12,500,000 KB / 4 KB = 3,125,000

ということで 100Gbps の帯域幅を備えた BM.Standard.E5 コンピユートのストレージ・パフォーマンスは、300万 IOPS出そうです。
また、前回は Singlepath で実施しましたが、Ultra High Performance(UHP) のボリュームを Multipath で最大32まで複数アタッチすることがサポートされるようになりましたのでやってみてみます。

■ 超高パフォーマンス・ボリュームのためのアタッチメントの構成

超高パフォーマンス・レベルで構成されたボリュームをアタッチして、最適なパフォーマンスを実現するには、ボリューム・アタッチメントをマルチパス対応にする必要があります。
ブロック・ボリューム・サービスでは、ボリュームをアタッチする際に、アタッチメントがマルチパス対応になるよう試行します。満たしていない前提条件があると、ボリューム・アタッチメントはマルチパス対応になりません。

● マルチパス対応の iSCSI アタッチメント前提条件

マルチパス対応の iSCSI ボリュームアタッチメントを構成するために必要な前提条件
・参考: 超高パフォーマンス・ボリュームのためのアタッチメントの構成
 - サポートされているシェイプ
 - サポートされてるイメージ
 - インスタンスのブロック・ボリューム管理プラグインを有効化
 - ブロック・ボリューム管理プラグインのパブリックIPアドレスまたはサービス・ゲートウェイを設定
 - 権限の構成
 - 一貫性のあるデバイス・パスを使用
 - インスタンスに、同じインスタンスの別のマルチパス対応アタッチメントが存在しないこと(Oracle Cloud Agentバージョン1.39未満の場合)

■ 権限の構成

ブロック・ボリューム管理プラグインが、マルチパス対応iSCSIアタッチメントの iSCSI設定の結果をレポートできるよう、権限を構成する必要があります

1) 動的グループの作成

次のコード・サンプルの一致ルールを使用して動的グループを作成し、指定したコンパートメント内のすべてのインスタンスを追加します

例)
ANY {instance.compartment.id = '<テナンシOCID>', instance.compartment.id = '<コンパートメントOCID>'}

11_動的グループ01.jpg

2) 動的グループのポリシーの構成

前のステップで作成した動的グループに権限を付与するポリシーを構成して、インスタンス・エージェントによるアクセスを可能にし、ブロック・ボリューム・サービスをコールして、アタッチメント構成を取得できるようにします。

例)
Allow dynamic-group InstantAgent to use instances in tenancy <テナンシ名>
Allow dynamic-group InstantAgent to use volume-attachments in tenancy <テナンシ名>

11_動的グループ02.jpg

■ サービス・ゲートウェイ設定

コンピュート・インスタンスが Oracleサービス (OCN) にアクセスできるよう
サービス・ゲートウェイを作成して、インスタンス配置するサブネットの ルート・ルールへ「 All Oracle Services Network Service」を設定します。
12_ルートルール01.jpg

■ コンピュート・インスタンス作成

1) OCIコンソール画面
メニューから [コンピュート] > [コンピュート] をクリックし、[インスタンス作成]をクリック
01_BM.E5作成00.png

2) コンピュート・インスタンスの作成画面
今回、BM.Standard.E5 を使用して UHPブロック・ボリュームのマルチパス有効化するために 以下項目を設定して作成します。

・サポートされているシェイプ: Oracle Linux 8
・サポートされてるイメージ: BM.Standard.E5
・インスタンスのブロック・ボリューム管理プラグイン: 有効化

・コンピュート・インスタンスの作成画面
01_BM.E5作成01.png
01_BM.E5作成02-2.png

・すべてのシェイプの参照画面
主に次の項目を設定して[Select Shape]をクリック

Instance type: 今回は、[Bare metal machine]を選択
Shape name: 今回は、[BM.Standard.E5.192]を選択
Provision only a percentage of cores and disable the rest: 192あるCPUから利用する%を指定します。

全ての項目の入力が完了したら、[Create]をクリック

3) 作成中
01_BM.E5作成03.png

4) 作成完了
01_BM.E5作成04.png

5) Block Volume Management プラグイン確認
UHPのiSCSIを自動認識するようにBlock Volume Management プラグインが有効化されていることを確認
01_BM.E5作成05.png

● 複数 UHPボリューム・サポート確認

Oracle Cloud Agentバージョン1.39以降のインスタンスでは、複数の超高パフォーマンス・ボリュームがサポートされています。次のコマンドを使用して、バージョンを確認します。

[opc@bm-e5 ~]$ yum info oracle-cloud-agent
  Ksplice for Oracle Linux 9 (x86_64)                                                 11 MB/s | 992 kB     00:00
  Oracle Linux 9 OCI Included Packages (x86_64)                                       81 MB/s | 109 MB     00:01
  Oracle Linux 9 BaseOS Latest (x86_64)                                              141 MB/s |  34 MB     00:00
  Oracle Linux 9 Application Stream Packages (x86_64)                                144 MB/s |  40 MB     00:00
  Oracle Linux 9 Addons (x86_64)                                                     4.8 MB/s | 453 kB     00:00
  Oracle Linux 9 UEK Release 7 (x86_64)                                              142 MB/s |  41 MB     00:00
  Installed Packages
  Name         : oracle-cloud-agent
  Version      : 1.44.0
  Release      : 5257.el9
  Architecture : x86_64
  Size         : 450 M
  Source       : oracle-cloud-agent-1.44.0-5257.el9.src.rpm
  Repository   : @System
  From repo    : @commandline
  Summary      : Oracle Cloud Agent
  URL          : https://docs.cloud.oracle.com/iaas/
  License      : https://oss.oracle.com/licenses/upl/
  Description  : Oracle Cloud Infrastructure agent for management and monitoring.

■ ブロック・ボリューム作成とアタッチ

VPUのパフォーマンスの特性を参照してブロック・ボリュームのパフォーマンスが最大になるように設定します。
超高パフォーマンス VPU=120は、1つのブロック・ボリュームを 1,333GBで作成すると最大IOPS は 300,000 です。
3,000,000 IOPSになるように 10つのブロック・ボリュームを作成して コンピュートへアタッチします。

1) OCIコンソール画面
メニューから [ストレージ] > [ブロック・ストレージ] をクリックし、[ブロック・ストレージの作成]をクリック
02_Block-Volume作成01.png

2) ブロック・ボリューム作成画面
次の項目を入力し、[ブロック・ボリュームの作成]をクリック

・Volume size (in GB): 1500
・VPUs/GB: 120

02_Block-Volume作成02.png

3) 作成完了
02_Block-Volume作成03.png

4) 10個作成
同様に全部で10個作成します。
02_Block-Volume作成10.png

● ブロック・ボリュームのアタッチ

作成した10個のブロック・ボリュームをアタッチします。
1) コンピュート画面
左リストにある[Attached block volumes]をクリックし、[Attach block volume]をクリック
04_ブロック・ボリュームのアタッチ01.png

2) Attach block volume画面
次の項目を入力し、[Attach]をクリック

 ・ Select volume: 作成したボリュームを選択
 ・ Use Oracle Cloud Agent to automatically connect to iSCSI-attached volumes:自動認識するようにチェック

04_ブロック・ボリュームのアタッチ02.png

3) Attach block volume画面
内容を確認し、[Close]をクリック
04_ブロック・ボリュームのアタッチ04.png

4) コンピュート: Attached block volumes画面
アタッチ完了したら、Multipath の項目が 'Yes' であることを確認
04_ブロック・ボリュームのアタッチ05.png

5) 10個の Block Volumeをアタッチ
10個の Block Volumeをアタッチして、全て Multipath の項目が 'Yes' であることを確認
04_ブロック・ボリュームのアタッチ05.png

● OSコマンドで物理ボリューム確認

物理ボリュームの情報を表示して追加した /dev/oracleoci/oraclevdb があることを確認

・ 物理ボリュームの情報

[opc@bm-e5 ~]$ sudo -i
[root@bm-e5 ~]# pvs -a
  PV                       VG        Fmt  Attr PSize  PFree
  /dev/oracleoci/oraclevdb                ---      0     0
  /dev/oracleoci/oraclevdc                ---      0     0
  /dev/oracleoci/oraclevdd                ---      0     0
  /dev/oracleoci/oraclevde                ---      0     0
  /dev/oracleoci/oraclevdf                ---      0     0
  /dev/oracleoci/oraclevdg                ---      0     0
  /dev/oracleoci/oraclevdh                ---      0     0
  /dev/oracleoci/oraclevdi                ---      0     0
  /dev/oracleoci/oraclevdj                ---      0     0
  /dev/oracleoci/oraclevdk                ---      0     0
  /dev/sda1                               ---      0     0
  /dev/sda2                               ---      0     0
  /dev/sda3                ocivolume lvm2 a--  44.50g    0

・ 各物理ボリュームの詳細

[root@bm-e5 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ocivolume
  PV Size               44.50 GiB / not usable 0
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              11392
  Free PE               0
  Allocated PE          11392
  PV UUID               C6GHix-nzze-n8Pt-hcuw-VlYT-zyhY-dli5LO

・ LVM ブロックデバイスをすべてスキャン

[root@bm-e5 ~]# pvscan
  PV /dev/sda3   VG ocivolume   lvm2 [44.50 GiB / 0    free]
  Total: 1 [44.50 GiB] / in use: 1 [44.50 GiB] / in no VG: 0 [0   ]

・ 物理ボリュームに使用できるブロックデバイスを一覧表示

[root@bm-e5 ~]# lvmdiskscan
  /dev/sda1                [     100.00 MiB]
  /dev/sda2                [       2.00 GiB]
  /dev/oracleoci/oraclevdf [       1.46 TiB]
  /dev/sda3                [      44.50 GiB] LVM physical volume
  /dev/oracleoci/oraclevdg [       1.46 TiB]
  /dev/oracleoci/oraclevdj [       1.46 TiB]
  /dev/oracleoci/oraclevdb [       1.46 TiB]
  /dev/oracleoci/oraclevdc [       1.46 TiB]
  /dev/oracleoci/oraclevdd [       1.46 TiB]
  /dev/oracleoci/oraclevde [       1.46 TiB]
  /dev/oracleoci/oraclevdh [       1.46 TiB]
  /dev/oracleoci/oraclevdi [       1.46 TiB]
  /dev/oracleoci/oraclevdk [       1.46 TiB]
  10 disks
  2 partitions
  0 LVM physical volume whole disks
  1 LVM physical volume

・ ブロックデバイス確認

[root@bm-e5 ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
sda                  8:0    0 46.6G  0 disk
├─sda1               8:1    0  100M  0 part  /boot/efi
├─sda2               8:2    0    2G  0 part  /boot
└─sda3               8:3    0 44.5G  0 part
  ├─ocivolume-root 252:0    0 29.5G  0 lvm   /
  └─ocivolume-oled 252:1    0   15G  0 lvm   /var/oled
sdb                  8:16   0  1.5T  0 disk
└─mpathd           252:2    0  1.5T  0 mpath
sdc                  8:32   0  1.5T  0 disk
└─mpathd           252:2    0  1.5T  0 mpath
sdd                  8:48   0  1.5T  0 disk
└─mpathd           252:2    0  1.5T  0 mpath
sde                  8:64   0  1.5T  0 disk
└─mpathd           252:2    0  1.5T  0 mpath
sdf                  8:80   0  1.5T  0 disk
└─mpathd           252:2    0  1.5T  0 mpath
sdg                  8:96   0  1.5T  0 disk
└─mpathf           252:3    0  1.5T  0 mpath
sdh                  8:112  0  1.5T  0 disk
└─mpathf           252:3    0  1.5T  0 mpath
sdi                  8:128  0  1.5T  0 disk
└─mpathf           252:3    0  1.5T  0 mpath
sdj                  8:144  0  1.5T  0 disk
└─mpathf           252:3    0  1.5T  0 mpath
sdk                  8:160  0  1.5T  0 disk
└─mpathf           252:3    0  1.5T  0 mpath
sdl                  8:176  0  1.5T  0 disk
└─mpathh           252:4    0  1.5T  0 mpath
sdm                  8:192  0  1.5T  0 disk
└─mpathh           252:4    0  1.5T  0 mpath
sdn                  8:208  0  1.5T  0 disk
└─mpathh           252:4    0  1.5T  0 mpath
sdo                  8:224  0  1.5T  0 disk
└─mpathh           252:4    0  1.5T  0 mpath
sdp                  8:240  0  1.5T  0 disk
└─mpathh           252:4    0  1.5T  0 mpath
sdq                 65:0    0  1.5T  0 disk
└─mpatha           252:5    0  1.5T  0 mpath
sdr                 65:16   0  1.5T  0 disk
└─mpatha           252:5    0  1.5T  0 mpath
sds                 65:32   0  1.5T  0 disk
└─mpatha           252:5    0  1.5T  0 mpath
sdt                 65:48   0  1.5T  0 disk
└─mpatha           252:5    0  1.5T  0 mpath
sdu                 65:64   0  1.5T  0 disk
└─mpatha           252:5    0  1.5T  0 mpath
sdv                 65:80   0  1.5T  0 disk
└─mpathb           252:6    0  1.5T  0 mpath
sdw                 65:96   0  1.5T  0 disk
└─mpathb           252:6    0  1.5T  0 mpath
sdx                 65:112  0  1.5T  0 disk
└─mpathb           252:6    0  1.5T  0 mpath
sdy                 65:128  0  1.5T  0 disk
└─mpathb           252:6    0  1.5T  0 mpath
sdz                 65:144  0  1.5T  0 disk
└─mpathb           252:6    0  1.5T  0 mpath
sdaa                65:160  0  1.5T  0 disk
└─mpathc           252:7    0  1.5T  0 mpath
sdab                65:176  0  1.5T  0 disk
└─mpathc           252:7    0  1.5T  0 mpath
sdac                65:192  0  1.5T  0 disk
└─mpathc           252:7    0  1.5T  0 mpath
sdad                65:208  0  1.5T  0 disk
└─mpathc           252:7    0  1.5T  0 mpath
sdae                65:224  0  1.5T  0 disk
└─mpathc           252:7    0  1.5T  0 mpath
sdaf                65:240  0  1.5T  0 disk
└─mpathe           252:8    0  1.5T  0 mpath
sdag                66:0    0  1.5T  0 disk
└─mpathe           252:8    0  1.5T  0 mpath
sdah                66:16   0  1.5T  0 disk
└─mpathe           252:8    0  1.5T  0 mpath
sdai                66:32   0  1.5T  0 disk
└─mpathe           252:8    0  1.5T  0 mpath
sdaj                66:48   0  1.5T  0 disk
└─mpathe           252:8    0  1.5T  0 mpath
sdak                66:64   0  1.5T  0 disk
└─mpathg           252:9    0  1.5T  0 mpath
sdal                66:80   0  1.5T  0 disk
└─mpathg           252:9    0  1.5T  0 mpath
sdam                66:96   0  1.5T  0 disk
└─mpathg           252:9    0  1.5T  0 mpath
sdan                66:112  0  1.5T  0 disk
└─mpathg           252:9    0  1.5T  0 mpath
sdao                66:128  0  1.5T  0 disk
└─mpathg           252:9    0  1.5T  0 mpath
sdap                66:144  0  1.5T  0 disk
└─mpathi           252:10   0  1.5T  0 mpath
sdaq                66:160  0  1.5T  0 disk
└─mpathi           252:10   0  1.5T  0 mpath
sdar                66:176  0  1.5T  0 disk
└─mpathi           252:10   0  1.5T  0 mpath
sdas                66:192  0  1.5T  0 disk
└─mpathi           252:10   0  1.5T  0 mpath
sdat                66:208  0  1.5T  0 disk
└─mpathi           252:10   0  1.5T  0 mpath
sdau                66:224  0  1.5T  0 disk
└─mpathj           252:11   0  1.5T  0 mpath
sdav                66:240  0  1.5T  0 disk
└─mpathj           252:11   0  1.5T  0 mpath
sdaw                67:0    0  1.5T  0 disk
└─mpathj           252:11   0  1.5T  0 mpath
sdax                67:16   0  1.5T  0 disk
└─mpathj           252:11   0  1.5T  0 mpath
sday                67:32   0  1.5T  0 disk
└─mpathj           252:11   0  1.5T  0 mpath

⚫︎ マルチパスの構成確認

・ マルチパスのステータス確認

[root@bm-e5 ~]# mpathconf
multipath is enabled
find_multipaths is yes
user_friendly_names is enabled
recheck_wwid is disabled
default property blacklist is disabled
enable_foreign is not set (no foreign multipath devices will be shown)
dm_multipath module is loaded
multipathd is running

・ mpath確認

[root@bm-e5 ~]# ls -l /dev/mapper/mpath*
  lrwxrwxrwx. 1 root root 7 Aug 28 09:46 /dev/mapper/mpatha -> ../dm-6
  lrwxrwxrwx. 1 root root 7 Aug 28 09:47 /dev/mapper/mpathb -> ../dm-9
  lrwxrwxrwx. 1 root root 7 Aug 28 09:46 /dev/mapper/mpathc -> ../dm-7
  lrwxrwxrwx. 1 root root 8 Aug 28 09:47 /dev/mapper/mpathd -> ../dm-10
  lrwxrwxrwx. 1 root root 7 Aug 28 09:47 /dev/mapper/mpathe -> ../dm-8
  lrwxrwxrwx. 1 root root 7 Aug 28 09:45 /dev/mapper/mpathf -> ../dm-2
  lrwxrwxrwx. 1 root root 7 Aug 28 09:45 /dev/mapper/mpathg -> ../dm-3
  lrwxrwxrwx. 1 root root 8 Aug 28 09:47 /dev/mapper/mpathh -> ../dm-11
  lrwxrwxrwx. 1 root root 7 Aug 28 09:46 /dev/mapper/mpathi -> ../dm-4
  lrwxrwxrwx. 1 root root 7 Aug 28 09:46 /dev/mapper/mpathj -> ../dm-5

・ マルチパス構成表示

[root@bm-e5 ~]# sudo multipath -ll
mpatha (360a796f115364dff97f73b4e0867d815) dm-5 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 31:0:0:2  sdq  65:0   active ready running
  |- 32:0:0:2  sdr  65:16  active ready running
  |- 33:0:0:2  sds  65:32  active ready running
  |- 34:0:0:2  sdt  65:48  active ready running
  `- 35:0:0:2  sdu  65:64  active ready running
mpathb (360428eb3d062454793b4d0ab778f749a) dm-6 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 36:0:0:3  sdv  65:80  active ready running
  |- 37:0:0:3  sdw  65:96  active ready running
  |- 38:0:0:3  sdx  65:112 active ready running
  |- 39:0:0:3  sdy  65:128 active ready running
  `- 40:0:0:3  sdz  65:144 active ready running
mpathc (360336d34e5b74c558e346fd67dd34f66) dm-7 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 41:0:0:4  sdaa 65:160 active ready running
  |- 42:0:0:4  sdab 65:176 active ready running
  |- 43:0:0:4  sdac 65:192 active ready running
  |- 44:0:0:4  sdad 65:208 active ready running
  `- 45:0:0:4  sdae 65:224 active ready running
mpathd (3602794d2ac9e47bc994d5c5d692548c0) dm-2 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 16:0:0:6  sdb  8:16   active ready running
  |- 17:0:0:6  sdc  8:32   active ready running
  |- 18:0:0:6  sdd  8:48   active ready running
  |- 19:0:0:6  sde  8:64   active ready running
  `- 20:0:0:6  sdf  8:80   active ready running
mpathe (360ad875a035b4dff803fec551cb9d51f) dm-8 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 46:0:0:5  sdaf 65:240 active ready running
  |- 47:0:0:5  sdag 66:0   active ready running
  |- 48:0:0:5  sdah 66:16  active ready running
  |- 49:0:0:5  sdai 66:32  active ready running
  `- 50:0:0:5  sdaj 66:48  active ready running
mpathf (3603c7ab7b0a94db5a9a0c2dd4e8d9e92) dm-3 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 21:0:0:7  sdg  8:96   active ready running
  |- 22:0:0:7  sdh  8:112  active ready running
  |- 23:0:0:7  sdi  8:128  active ready running
  |- 24:0:0:7  sdj  8:144  active ready running
  `- 25:0:0:7  sdk  8:160  active ready running
mpathg (36024de39adfe48289e7e52efc451f801) dm-9 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 51:0:0:8  sdak 66:64  active ready running
  |- 52:0:0:8  sdal 66:80  active ready running
  |- 53:0:0:8  sdam 66:96  active ready running
  |- 54:0:0:8  sdan 66:112 active ready running
  `- 55:0:0:8  sdao 66:128 active ready running
mpathh (360f946887743429fa1901706f2e37428) dm-4 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 26:0:0:10 sdl  8:176  active ready running
  |- 27:0:0:10 sdm  8:192  active ready running
  |- 28:0:0:10 sdn  8:208  active ready running
  |- 29:0:0:10 sdo  8:224  active ready running
  `- 30:0:0:10 sdp  8:240  active ready running
mpathi (3600c2e5bc6c142c389879f9588b54c49) dm-10 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 56:0:0:9  sdap 66:144 active ready running
  |- 57:0:0:9  sdaq 66:160 active ready running
  |- 58:0:0:9  sdar 66:176 active ready running
  |- 59:0:0:9  sdas 66:192 active ready running
  `- 60:0:0:9  sdat 66:208 active ready running
mpathj (3608c2251bcbe4c4e828c14c5f90885b0) dm-11 ORACLE,BlockVolume
size=1.5T features='4 queue_if_no_path retain_attached_hw_handler queue_mode bio' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
  |- 61:0:0:11 sdau 66:224 active ready running
  |- 62:0:0:11 sdav 66:240 active ready running
  |- 63:0:0:11 sdaw 67:0   active ready running
  |- 64:0:0:11 sdax 67:16  active ready running
  `- 65:0:0:11 sday 67:32  active ready running

・ マルチパス構成ファイル確認

[root@bm-e5 ~]# cat /etc/multipath.conf
defaults {
  user_friendly_names yes
  find_multipaths yes
  rr_weight uniform
  path_selector "queue-length 0"
  path_grouping_policy multibus
  polling_interval 30
  path_checker tur
  checker_timeout 300
  failback immediate
  verbosity 2
  rr_min_io 1
  rr_min_io_rq 1
  dev_loss_tmo 9000
  fast_io_fail_tmo off
  no_path_retry queue
  skip_kpartx no
  features "2 queue_mode bio"
}

・ multipath.conf 設定の例ファイル
DM-Multipathがサポートするストレージ・アレイの詳細とそのデフォルトの構成値を次のファイルで確認できます。

[root@bm-e5 ~]# cat /usr/share/doc/device-mapper-multipath/multipath.conf
# This is a basic configuration file with some examples, for device mapper
# multipath.
#
# For a complete list of the default configuration values, run either
# multipath -t
# or
# multipathd show config
#
# For a list of configuration options with descriptions, see the multipath.conf
# man page

## By default, devices with vendor = "IBM" and product = "S/390.*" are
## blacklisted. To enable mulitpathing on these devies, uncomment the
## following lines.
#blacklist_exceptions {
#	device {
#		vendor	"IBM"
#		product	"S/390.*"
#	}
#}

## Use user friendly names, instead of using WWIDs as names.
defaults {
	user_friendly_names yes
	find_multipaths yes
}
##
## Here is an example of how to configure some standard options.
##
#
#defaults {
#	udev_dir		/dev
#	polling_interval 	10
#	selector		"round-robin 0"
#	path_grouping_policy	multibus
#	prio			alua
#	path_checker		readsector0
#	rr_min_io		100
#	max_fds			8192
#	rr_weight		priorities
#	failback		immediate
#	no_path_retry		fail
#	user_friendly_names	yes
#}
##
## The wwid line in the following blacklist section is shown as an example
## of how to blacklist devices by wwid.  The 2 devnode lines are the
## compiled in default blacklist. If you want to blacklist entire types
## of devices, such as all scsi devices, you should use a devnode line.
## However, if you want to blacklist specific devices, you should use
## a wwid line.  Since there is no guarantee that a specific device will
## not change names on reboot (from /dev/sda to /dev/sdb for example)
## devnode lines are not recommended for blacklisting specific devices.
##
#blacklist {
#       wwid 26353900f02796769
#	devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
#	devnode "^hd[a-z]"
#}
#multipaths {
#	multipath {
#		wwid			3600508b4000156d700012000000b0000
#		alias			yellow
#		path_grouping_policy	multibus
#		path_checker		readsector0
#		path_selector		"round-robin 0"
#		failback		manual
#		rr_weight		priorities
#		no_path_retry		5
#	}
#	multipath {
#		wwid			1DEC_____321816758474
#		alias			red
#	}
#}
#devices {
#	device {
#		vendor			"COMPAQ  "
#		product			"HSV110 (C)COMPAQ"
#		path_grouping_policy	multibus
#		path_checker		readsector0
#		path_selector		"round-robin 0"
#		hardware_handler	"0"
#		failback		15
#		rr_weight		priorities
#		no_path_retry		queue
#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#	}
#}

■ ストライプ化論理ボリューム(LV)作成

アタッチした 10個の UHP ブロック・ボリュームを LVM (logical volume manager) でひとつのボリュームグループにまとめ、単一の論理ボリューム(LV)/dev/volgroup01/striped_logical_volume を作成します。

● 物理ボリューム(PV)確認

1) 物理ボリューム(PV)作成
・ pvs確認

[root@bm-e5 ~]# pvs -a
  PV                       VG        Fmt  Attr PSize  PFree
  /dev/oracleoci/oraclevdb                ---      0     0
  /dev/oracleoci/oraclevdc                ---      0     0
  /dev/oracleoci/oraclevdd                ---      0     0
  /dev/oracleoci/oraclevde                ---      0     0
  /dev/oracleoci/oraclevdf                ---      0     0
  /dev/oracleoci/oraclevdg                ---      0     0
  /dev/oracleoci/oraclevdh                ---      0     0
  /dev/oracleoci/oraclevdi                ---      0     0
  /dev/oracleoci/oraclevdj                ---      0     0
  /dev/oracleoci/oraclevdk                ---      0     0
  /dev/sda1                               ---      0     0
  /dev/sda2                               ---      0     0
  /dev/sda3                ocivolume lvm2 a--  44.50g    0

・ PV作成
-vオプションを指定してコマンドを実行し、詳細情報を取得します。

[root@bm-e5 ~]# pvcreate -v /dev/oracleoci/oraclevd[b-k]
  Wiping signatures on new PV /dev/oracleoci/oraclevdb.
  Wiping signatures on new PV /dev/oracleoci/oraclevdc.
  Wiping signatures on new PV /dev/oracleoci/oraclevdd.
  Wiping signatures on new PV /dev/oracleoci/oraclevde.
  Wiping signatures on new PV /dev/oracleoci/oraclevdf.
  Wiping signatures on new PV /dev/oracleoci/oraclevdg.
  Wiping signatures on new PV /dev/oracleoci/oraclevdh.
  Wiping signatures on new PV /dev/oracleoci/oraclevdi.
  Wiping signatures on new PV /dev/oracleoci/oraclevdj.
  Wiping signatures on new PV /dev/oracleoci/oraclevdk.
  Set up physical volume for "/dev/oracleoci/oraclevdb" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdb.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdb".
  Physical volume "/dev/oracleoci/oraclevdb" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdc" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdc.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdc".
  Physical volume "/dev/oracleoci/oraclevdc" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdd" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdd.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdd".
  Physical volume "/dev/oracleoci/oraclevdd" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevde" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevde.
  Writing physical volume data to disk "/dev/oracleoci/oraclevde".
  Physical volume "/dev/oracleoci/oraclevde" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdf" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdf.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdf".
  Physical volume "/dev/oracleoci/oraclevdf" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdg" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdg.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdg".
  Physical volume "/dev/oracleoci/oraclevdg" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdh" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdh.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdh".
  Physical volume "/dev/oracleoci/oraclevdh" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdi" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdi.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdi".
  Physical volume "/dev/oracleoci/oraclevdi" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdj" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdj.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdj".
  Physical volume "/dev/oracleoci/oraclevdj" successfully created.
  Set up physical volume for "/dev/oracleoci/oraclevdk" with 3145728000 available sectors.
  Zeroing start of device /dev/oracleoci/oraclevdk.
  Writing physical volume data to disk "/dev/oracleoci/oraclevdk".
  Physical volume "/dev/oracleoci/oraclevdk" successfully created.
  Not creating system devices file due to existing VGs.

2) pvs 確認

[root@bm-e5 ~]# pvs
  PV                       VG        Fmt  Attr PSize  PFree
  /dev/oracleoci/oraclevdb           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdc           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdd           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevde           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdf           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdg           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdh           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdi           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdj           lvm2 ---   1.46t 1.46t
  /dev/oracleoci/oraclevdk           lvm2 ---   1.46t 1.46t
  /dev/sda3                ocivolume lvm2 a--  44.50g    0

● ボリュームグループ(VG) 作成

1) ボリュームグループ volgroup01 を作成
新しく作成した物理ボリュームを使用してボリューム・グループ(VG)を作成します。

[root@bm-e5 ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  ocivolume   1   2   0 wz--n- 44.50g    0

[root@bm-e5 ~]# vgcreate -v volgroup01 /dev/oracleoci/oraclevd[b-k]
  Wiping signatures on new PV /dev/oracleoci/oraclevdb.
  Wiping signatures on new PV /dev/oracleoci/oraclevdc.
  Wiping signatures on new PV /dev/oracleoci/oraclevdd.
  Wiping signatures on new PV /dev/oracleoci/oraclevde.
  Wiping signatures on new PV /dev/oracleoci/oraclevdf.
  Wiping signatures on new PV /dev/oracleoci/oraclevdg.
  Wiping signatures on new PV /dev/oracleoci/oraclevdh.
  Wiping signatures on new PV /dev/oracleoci/oraclevdi.
  Wiping signatures on new PV /dev/oracleoci/oraclevdj.
  Wiping signatures on new PV /dev/oracleoci/oraclevdk.
  Not creating system devices file due to existing VGs.
  Adding physical volume '/dev/oracleoci/oraclevdb' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdc' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdd' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevde' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdf' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdg' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdh' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdi' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdj' to volume group 'volgroup01'
  Adding physical volume '/dev/oracleoci/oraclevdk' to volume group 'volgroup01'
  Creating volume group backup "/etc/lvm/backup/volgroup01" (seqno 1).
  Volume group "volgroup01" successfully created

2) VG作成確認
vgs コマンドを使用すると、作成したボリュームグループの属性を表示できます。

[root@bm-e5 ~]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  ocivolume    1   2   0 wz--n-  44.50g      0
  volgroup01  10   0   0 wz--n- <14.65t <14.65t

● ストライプ化論理ボリューム(LV)作成

1) 論理ボリューム(LV)作成
ストライプサイズが 4 キロバイトの 10 つのストライプがある、全てのボリューム・サイズを使用するリニア論理ボリューム(LV)を作成します。

[root@bm-e5 ~]# lvs
  LV   VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oled ocivolume -wi-ao---- 15.00g
  root ocivolume -wi-ao---- 29.50g

[root@bm-e5 ~]# lvcreate -v -i 10 -I 4 -l 100%FREE -n striped_logical_volume volgroup01
  Converted 100% of FREE (3839990) extents into 3839990 (with mimages 1 and stripes 10 for segtype striped).
  Creating logical volume striped_logical_volume
  Archiving volume group "volgroup01" metadata (seqno 1).
  Activating logical volume volgroup01/striped_logical_volume.
  activation/volume_list configuration setting not defined: Checking only host tags for volgroup01/striped_logical_volume.
  Creating volgroup01-striped_logical_volume
  Loading table for volgroup01-striped_logical_volume (252:12).
  Resuming volgroup01-striped_logical_volume (252:12).
  Wiping known signatures on logical volume volgroup01/striped_logical_volume.
  Initializing 4.00 KiB of logical volume volgroup01/striped_logical_volume with value 0.
  Logical volume "striped_logical_volume" created.
  Creating volume group backup "/etc/lvm/backup/volgroup01" (seqno 2).

2) LV作成確認
volgroup01 VG内に含まれるすべての論理ボリュームが表示されます。

[root@bm-e5 ~]# lvs
  LV                     VG         Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oled                   ocivolume  -wi-ao----  15.00g
  root                   ocivolume  -wi-ao----  29.50g
  striped_logical_volume volgroup01 -wi-a----- <14.65t

3) LV詳細表示
論理ボリュームの詳細な情報を表示

[root@bm-e5 ~]# lvdisplay /dev/volgroup01
  --- Logical volume ---
  LV Path                /dev/volgroup01/striped_logical_volume
  LV Name                striped_logical_volume
  VG Name                volgroup01
  LV UUID                ujbMI9-27Kn-DdTK-suNe-tJwl-Qgvc-DvaZXD
  LV Write Access        read/write
  LV Creation host, time bm-e5, 2024-08-28 11:16:58 +0000
  LV Status              available
  # open                 0
  LV Size                <14.65 TiB
  Current LE             3839990
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:12

4) LV一覧表示

[root@bm-e5 ~]# lvscan
  ACTIVE            '/dev/ocivolume/oled' [15.00 GiB] inherit
  ACTIVE            '/dev/ocivolume/root' [29.50 GiB] inherit
  ACTIVE            '/dev/volgroup01/striped_logical_volume' [<14.65 TiB] inherit

5) ブロックデバイス一覧表示

[root@bm-e5 ~]# lsblk
NAME                                  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
sda                                     8:0    0 46.6G  0 disk
├─sda1                                  8:1    0  100M  0 part  /boot/efi
├─sda2                                  8:2    0    2G  0 part  /boot
└─sda3                                  8:3    0 44.5G  0 part
  ├─ocivolume-root                    252:0    0 29.5G  0 lvm   /
  └─ocivolume-oled                    252:1    0   15G  0 lvm   /var/oled
sdb                                     8:16   0  1.5T  0 disk
└─mpathf                              252:2    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdc                                     8:32   0  1.5T  0 disk
└─mpathf                              252:2    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdd                                     8:48   0  1.5T  0 disk
└─mpathf                              252:2    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sde                                     8:64   0  1.5T  0 disk
└─mpathf                              252:2    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdf                                     8:80   0  1.5T  0 disk
└─mpathf                              252:2    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdg                                     8:96   0  1.5T  0 disk
└─mpathg                              252:3    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdh                                     8:112  0  1.5T  0 disk
└─mpathg                              252:3    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdi                                     8:128  0  1.5T  0 disk
└─mpathg                              252:3    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdj                                     8:144  0  1.5T  0 disk
└─mpathg                              252:3    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdk                                     8:160  0  1.5T  0 disk
└─mpathg                              252:3    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdl                                     8:176  0  1.5T  0 disk
└─mpathi                              252:4    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdm                                     8:192  0  1.5T  0 disk
└─mpathi                              252:4    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdn                                     8:208  0  1.5T  0 disk
└─mpathi                              252:4    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdo                                     8:224  0  1.5T  0 disk
└─mpathi                              252:4    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdp                                     8:240  0  1.5T  0 disk
└─mpathi                              252:4    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdq                                    65:0    0  1.5T  0 disk
└─mpathj                              252:5    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdr                                    65:16   0  1.5T  0 disk
└─mpathj                              252:5    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sds                                    65:32   0  1.5T  0 disk
└─mpathj                              252:5    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdt                                    65:48   0  1.5T  0 disk
└─mpathj                              252:5    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdu                                    65:64   0  1.5T  0 disk
└─mpathj                              252:5    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdv                                    65:80   0  1.5T  0 disk
└─mpatha                              252:6    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdw                                    65:96   0  1.5T  0 disk
└─mpatha                              252:6    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdx                                    65:112  0  1.5T  0 disk
└─mpatha                              252:6    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdy                                    65:128  0  1.5T  0 disk
└─mpatha                              252:6    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdz                                    65:144  0  1.5T  0 disk
└─mpatha                              252:6    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdaa                                   65:160  0  1.5T  0 disk
└─mpathc                              252:7    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdab                                   65:176  0  1.5T  0 disk
└─mpathc                              252:7    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdac                                   65:192  0  1.5T  0 disk
└─mpathc                              252:7    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdad                                   65:208  0  1.5T  0 disk
└─mpathc                              252:7    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdae                                   65:224  0  1.5T  0 disk
└─mpathc                              252:7    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdaf                                   65:240  0  1.5T  0 disk
└─mpathe                              252:8    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdag                                   66:0    0  1.5T  0 disk
└─mpathe                              252:8    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdah                                   66:16   0  1.5T  0 disk
└─mpathe                              252:8    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdai                                   66:32   0  1.5T  0 disk
└─mpathe                              252:8    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdaj                                   66:48   0  1.5T  0 disk
└─mpathe                              252:8    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdak                                   66:64   0  1.5T  0 disk
└─mpathb                              252:9    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdal                                   66:80   0  1.5T  0 disk
└─mpathb                              252:9    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdam                                   66:96   0  1.5T  0 disk
└─mpathb                              252:9    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdan                                   66:112  0  1.5T  0 disk
└─mpathb                              252:9    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdao                                   66:128  0  1.5T  0 disk
└─mpathb                              252:9    0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdap                                   66:144  0  1.5T  0 disk
└─mpathd                              252:10   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdaq                                   66:160  0  1.5T  0 disk
└─mpathd                              252:10   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdar                                   66:176  0  1.5T  0 disk
└─mpathd                              252:10   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdas                                   66:192  0  1.5T  0 disk
└─mpathd                              252:10   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdat                                   66:208  0  1.5T  0 disk
└─mpathd                              252:10   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdau                                   66:224  0  1.5T  0 disk
└─mpathh                              252:11   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdav                                   66:240  0  1.5T  0 disk
└─mpathh                              252:11   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdaw                                   67:0    0  1.5T  0 disk
└─mpathh                              252:11   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sdax                                   67:16   0  1.5T  0 disk
└─mpathh                              252:11   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm
sday                                   67:32   0  1.5T  0 disk
└─mpathh                              252:11   0  1.5T  0 mpath
  └─volgroup01-striped_logical_volume 252:12   0 14.6T  0 lvm

■ FIOコマンド使用してブロック・ボリューム・パフォーマンス・テスト

Linuxベース・インスタンスでブロック・ボリューム・パフォーマンス・テストを行うためのサンプルFIOコマンドを参照して FIOコマンドで IOPSとスループットのパフォーマンス・テストをします。

● FIO インストール

1) install fio
Oracle LinuxまたはCentOSシステムにFIOをインストールして構成するには、次のコマンドを実行します

[root@bm-e5 ~]# dnf install fio -y
Ksplice for Oracle Linux 9 (x86_64)                                                              10 MB/s | 992 kB     00:00
Oracle Linux 9 OCI Included Packages (x86_64)                                                   117 MB/s | 107 MB     00:00
Oracle Linux 9 BaseOS Latest (x86_64)                                                           133 MB/s |  33 MB     00:00
Oracle Linux 9 Application Stream Packages (x86_64)                                             110 MB/s |  39 MB     00:00
Oracle Linux 9 Addons (x86_64)                                                                  3.6 MB/s | 453 kB     00:00
Oracle Linux 9 UEK Release 7 (x86_64)                                                           147 MB/s |  41 MB     00:00
Dependencies resolved.
================================================================================================================================
 Package                         Architecture         Version                             Repository                       Size
================================================================================================================================
Installing:
 fio                             x86_64               3.35-1.el9                          ol9_appstream                   6.4 M
Installing dependencies:
 boost-iostreams                 x86_64               1.75.0-8.el9                        ol9_appstream                    38 k
 libnbd                          x86_64               1.18.1-3.el9                        ol9_appstream                   174 k
 librados2                       x86_64               2:16.2.4-5.0.3.el9                  ol9_appstream                   3.4 M
 librbd1                         x86_64               2:16.2.4-5.0.3.el9                  ol9_appstream                   3.0 M
 librdmacm                       x86_64               48.0-1.el9                          ol9_baseos_latest                75 k
Installing weak dependencies:
 fio-engine-http                 x86_64               3.35-1.el9                          ol9_appstream                    17 k
 fio-engine-libaio               x86_64               3.35-1.el9                          ol9_appstream                    14 k
 fio-engine-nbd                  x86_64               3.35-1.el9                          ol9_appstream                    13 k
 fio-engine-rados                x86_64               3.35-1.el9                          ol9_appstream                    15 k
 fio-engine-rbd                  x86_64               3.35-1.el9                          ol9_appstream                    15 k
 fio-engine-rdma                 x86_64               3.35-1.el9                          ol9_appstream                    19 k

Transaction Summary
================================================================================================================================
Install  12 Packages

Total download size: 13 M
Installed size: 32 M
Downloading Packages:
(1/12): librdmacm-48.0-1.el9.x86_64.rpm                                                         828 kB/s |  75 kB     00:00
(2/12): boost-iostreams-1.75.0-8.el9.x86_64.rpm                                                 343 kB/s |  38 kB     00:00
(3/12): fio-engine-http-3.35-1.el9.x86_64.rpm                                                   163 kB/s |  17 kB     00:00
(4/12): fio-engine-nbd-3.35-1.el9.x86_64.rpm                                                    162 kB/s |  13 kB     00:00
(5/12): fio-engine-libaio-3.35-1.el9.x86_64.rpm                                                  67 kB/s |  14 kB     00:00
(6/12): fio-engine-rados-3.35-1.el9.x86_64.rpm                                                  165 kB/s |  15 kB     00:00
(7/12): fio-engine-rdma-3.35-1.el9.x86_64.rpm                                                   100 kB/s |  19 kB     00:00
(8/12): libnbd-1.18.1-3.el9.x86_64.rpm                                                          1.7 MB/s | 174 kB     00:00
(9/12): librados2-16.2.4-5.0.3.el9.x86_64.rpm                                                    89 MB/s | 3.4 MB     00:00
(10/12): fio-engine-rbd-3.35-1.el9.x86_64.rpm                                                    40 kB/s |  15 kB     00:00
(11/12): fio-3.35-1.el9.x86_64.rpm                                                              8.8 MB/s | 6.4 MB     00:00
(12/12): librbd1-16.2.4-5.0.3.el9.x86_64.rpm                                                     69 MB/s | 3.0 MB     00:00
--------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            18 MB/s |  13 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                        1/1
  Installing       : librdmacm-48.0-1.el9.x86_64                                                                           1/12
  Installing       : libnbd-1.18.1-3.el9.x86_64                                                                            2/12
  Installing       : boost-iostreams-1.75.0-8.el9.x86_64                                                                   3/12
  Installing       : librados2-2:16.2.4-5.0.3.el9.x86_64                                                                   4/12
  Running scriptlet: librados2-2:16.2.4-5.0.3.el9.x86_64                                                                   4/12
  Installing       : librbd1-2:16.2.4-5.0.3.el9.x86_64                                                                     5/12
  Running scriptlet: librbd1-2:16.2.4-5.0.3.el9.x86_64                                                                     5/12
  Installing       : fio-engine-http-3.35-1.el9.x86_64                                                                     6/12
  Installing       : fio-engine-libaio-3.35-1.el9.x86_64                                                                   7/12
  Installing       : fio-engine-nbd-3.35-1.el9.x86_64                                                                      8/12
  Installing       : fio-engine-rados-3.35-1.el9.x86_64                                                                    9/12
  Installing       : fio-engine-rdma-3.35-1.el9.x86_64                                                                    10/12
  Installing       : fio-3.35-1.el9.x86_64                                                                                11/12
  Installing       : fio-engine-rbd-3.35-1.el9.x86_64                                                                     12/12
  Running scriptlet: fio-engine-rbd-3.35-1.el9.x86_64                                                                     12/12
  Verifying        : librdmacm-48.0-1.el9.x86_64                                                                           1/12
  Verifying        : boost-iostreams-1.75.0-8.el9.x86_64                                                                   2/12
  Verifying        : fio-3.35-1.el9.x86_64                                                                                 3/12
  Verifying        : fio-engine-http-3.35-1.el9.x86_64                                                                     4/12
  Verifying        : fio-engine-libaio-3.35-1.el9.x86_64                                                                   5/12
  Verifying        : fio-engine-nbd-3.35-1.el9.x86_64                                                                      6/12
  Verifying        : fio-engine-rados-3.35-1.el9.x86_64                                                                    7/12
  Verifying        : fio-engine-rbd-3.35-1.el9.x86_64                                                                      8/12
  Verifying        : fio-engine-rdma-3.35-1.el9.x86_64                                                                     9/12
  Verifying        : libnbd-1.18.1-3.el9.x86_64                                                                           10/12
  Verifying        : librados2-2:16.2.4-5.0.3.el9.x86_64                                                                  11/12
  Verifying        : librbd1-2:16.2.4-5.0.3.el9.x86_64                                                                    12/12

Installed:
  boost-iostreams-1.75.0-8.el9.x86_64        fio-3.35-1.el9.x86_64                    fio-engine-http-3.35-1.el9.x86_64
  fio-engine-libaio-3.35-1.el9.x86_64        fio-engine-nbd-3.35-1.el9.x86_64         fio-engine-rados-3.35-1.el9.x86_64
  fio-engine-rbd-3.35-1.el9.x86_64           fio-engine-rdma-3.35-1.el9.x86_64        libnbd-1.18.1-3.el9.x86_64
  librados2-2:16.2.4-5.0.3.el9.x86_64        librbd1-2:16.2.4-5.0.3.el9.x86_64        librdmacm-48.0-1.el9.x86_64

Complete!
  1. FIO インストール確認
[root@bm-e5 ~]# fio -h
fio-3.35
fio [options] [job options] <job file(s)>
  --debug=options	Enable debug logging. May be one/more of:
			process,file,io,mem,blktrace,verify,random,parse,
			diskutil,job,mutex,profile,time,net,rate,compress,
			steadystate,helperthread,zbd
  --parse-only		Parse options only, don't start any IO
  --merge-blktrace-only	Merge blktraces only, don't start any IO
  --output		Write output to file
  --bandwidth-log	Generate aggregate bandwidth logs
  --minimal		Minimal (terse) output
  --output-format=type	Output format (terse,json,json+,normal)
  --terse-version=type	Set terse version output format (default 3, or 2 or 4 or 5)
  --version		Print version info and exit
  --help		Print this page
  --cpuclock-test	Perform test/validation of CPU clock
  --crctest=[type]	Test speed of checksum functions
  --cmdhelp=cmd		Print command help, "all" for all of them
  --enghelp=engine	Print ioengine help, or list available ioengines
  --enghelp=engine,cmd	Print help for an ioengine cmd
  --showcmd		Turn a job file into command line options
  --eta=when		When ETA estimate should be printed
            		May be "always", "never" or "auto"
  --eta-newline=t	Force a new line for every 't' period passed
  --status-interval=t	Force full status dump every 't' period passed
  --readonly		Turn on safety read-only checks, preventing writes
  --section=name	Only run specified section in job file, multiple sections can be specified
  --alloc-size=kb	Set smalloc pool to this size in kb (def 16384)
  --warnings-fatal	Fio parser warnings are fatal
  --max-jobs=nr		Maximum number of threads/processes to support
  --server=args		Start a backend fio server
  --daemonize=pidfile	Background fio server, write pid to file
  --client=hostname	Talk to remote backend(s) fio server at hostname
  --remote-config=file	Tell fio server to load this local job file
  --idle-prof=option	Report cpu idleness on a system or percpu basis
			(option=system,percpu) or run unit work
			calibration only (option=calibrate)
  --inflate-log=log	Inflate and output compressed log
  --trigger-file=file	Execute trigger cmd when file exists
  --trigger-timeout=t	Execute trigger at this time
  --trigger=cmd		Set this command as local trigger
  --trigger-remote=cmd	Set this command as remote trigger
  --aux-path=path	Use this path for fio state generated files

Fio was written by Jens Axboe <axboe@kernel.dk>

● IOPS パフォーマンス・テスト

IOPSパフォーマンスをテストするには、次のFIOサンプル・コマンドを使用します。コマンドを直接実行することも、コマンドを使用してジョブ・ファイルを作成してからそのジョブ・ファイルを実行することもできます。

・参考: Sample FIO Commands for Block Volume Performance Tests on Linux-based Instances

FIO実行するときは--numjobs オプションを使用して、ストライプしているデバイス(/dev/sd?)の数に応じて並列度を上げて実行します。
今回50個のデバイス・ファイルがあるので、50以上の値で調整します。

・ Sequential Reads テスト

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

[root@bm-e5 ~]# fio --filename=/dev/volgroup01/striped_logical_volume --direct=1 --rw=read --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=80 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --readonly
iops-test-job: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=256
...
fio-3.35
Starting 80 processes
Jobs: 80 (f=80): [R(80)][2.5%][r=11.4GiB/s][r=2976k IOPS][eta 01m:57s]
Jobs: 80 (f=80): [R(80)][4.2%][r=11.4GiB/s][r=2978k IOPS][eta 01m:55s]
Jobs: 80 (f=80): [R(80)][5.8%][r=11.4GiB/s][r=2979k IOPS][eta 01m:53s]
Jobs: 80 (f=80): [R(80)][7.5%][r=11.4GiB/s][r=2978k IOPS][eta 01m:51s]
Jobs: 80 (f=80): [R(80)][9.2%][r=11.4GiB/s][r=2978k IOPS][eta 01m:49s]
Jobs: 80 (f=80): [R(80)][10.8%][r=11.4GiB/s][r=2977k IOPS][eta 01m:47s]
Jobs: 80 (f=80): [R(80)][12.5%][r=11.4GiB/s][r=2978k IOPS][eta 01m:45s]
Jobs: 80 (f=80): [R(80)][14.2%][r=11.4GiB/s][r=2978k IOPS][eta 01m:43s]
Jobs: 80 (f=80): [R(80)][15.8%][r=11.4GiB/s][r=2979k IOPS][eta 01m:41s]
Jobs: 80 (f=80): [R(80)][17.5%][r=11.4GiB/s][r=2978k IOPS][eta 01m:39s]
Jobs: 80 (f=80): [R(80)][19.2%][r=11.4GiB/s][r=2978k IOPS][eta 01m:37s]
Jobs: 80 (f=80): [R(80)][20.8%][r=11.4GiB/s][r=2978k IOPS][eta 01m:35s]
Jobs: 80 (f=80): [R(80)][22.5%][r=11.4GiB/s][r=2977k IOPS][eta 01m:33s]
Jobs: 80 (f=80): [R(80)][24.2%][r=11.4GiB/s][r=2979k IOPS][eta 01m:31s]
Jobs: 80 (f=80): [R(80)][25.8%][r=11.4GiB/s][r=2976k IOPS][eta 01m:29s]
Jobs: 80 (f=80): [R(80)][27.5%][r=11.4GiB/s][r=2978k IOPS][eta 01m:27s]
Jobs: 80 (f=80): [R(80)][29.2%][r=11.4GiB/s][r=2979k IOPS][eta 01m:25s]
Jobs: 80 (f=80): [R(80)][30.8%][r=11.4GiB/s][r=2978k IOPS][eta 01m:23s]
Jobs: 80 (f=80): [R(80)][32.5%][r=10.4GiB/s][r=2725k IOPS][eta 01m:21s]
Jobs: 80 (f=80): [R(80)][34.2%][r=11.4GiB/s][r=2977k IOPS][eta 01m:19s]
Jobs: 80 (f=80): [R(80)][35.8%][r=11.4GiB/s][r=2977k IOPS][eta 01m:17s]
Jobs: 80 (f=80): [R(80)][37.5%][r=11.4GiB/s][r=2977k IOPS][eta 01m:15s]
Jobs: 80 (f=80): [R(80)][39.2%][r=11.4GiB/s][r=2977k IOPS][eta 01m:13s]
Jobs: 80 (f=80): [R(80)][40.8%][r=11.4GiB/s][r=2978k IOPS][eta 01m:11s]
Jobs: 80 (f=80): [R(80)][42.5%][r=11.4GiB/s][r=2976k IOPS][eta 01m:09s]
Jobs: 80 (f=80): [R(80)][44.2%][r=11.4GiB/s][r=2977k IOPS][eta 01m:07s]
Jobs: 80 (f=80): [R(80)][45.8%][r=11.4GiB/s][r=2977k IOPS][eta 01m:05s]
Jobs: 80 (f=80): [R(80)][47.5%][r=11.4GiB/s][r=2978k IOPS][eta 01m:03s]
Jobs: 80 (f=80): [R(80)][49.2%][r=11.4GiB/s][r=2977k IOPS][eta 01m:01s]
Jobs: 80 (f=80): [R(80)][50.8%][r=11.4GiB/s][r=2976k IOPS][eta 00m:59s]
Jobs: 80 (f=80): [R(80)][52.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:57s]
Jobs: 80 (f=80): [R(80)][54.2%][r=11.4GiB/s][r=2977k IOPS][eta 00m:55s]
Jobs: 80 (f=80): [R(80)][55.8%][r=11.4GiB/s][r=2977k IOPS][eta 00m:53s]
Jobs: 80 (f=80): [R(80)][57.5%][r=11.4GiB/s][r=2978k IOPS][eta 00m:51s]
Jobs: 80 (f=80): [R(80)][59.2%][r=11.4GiB/s][r=2977k IOPS][eta 00m:49s]
Jobs: 80 (f=80): [R(80)][60.8%][r=10.4GiB/s][r=2728k IOPS][eta 00m:47s]
Jobs: 80 (f=80): [R(80)][62.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:45s]
Jobs: 80 (f=80): [R(80)][64.2%][r=9.96GiB/s][r=2612k IOPS][eta 00m:43s]
Jobs: 80 (f=80): [R(80)][65.8%][r=11.4GiB/s][r=2978k IOPS][eta 00m:41s]
Jobs: 80 (f=80): [R(80)][67.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:39s]
Jobs: 80 (f=80): [R(80)][69.2%][r=11.4GiB/s][r=2979k IOPS][eta 00m:37s]
Jobs: 80 (f=80): [R(80)][70.8%][r=11.4GiB/s][r=2978k IOPS][eta 00m:35s]
Jobs: 80 (f=80): [R(80)][72.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:33s]
Jobs: 80 (f=80): [R(80)][74.2%][r=8654MiB/s][r=2215k IOPS][eta 00m:31s]
Jobs: 80 (f=80): [R(80)][75.8%][r=11.4GiB/s][r=2976k IOPS][eta 00m:29s]
Jobs: 80 (f=80): [R(80)][77.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:27s]
Jobs: 80 (f=80): [R(80)][79.2%][r=11.4GiB/s][r=2977k IOPS][eta 00m:25s]
Jobs: 80 (f=80): [R(80)][80.8%][r=11.4GiB/s][r=2977k IOPS][eta 00m:23s]
Jobs: 80 (f=80): [R(80)][82.5%][r=11.4GiB/s][r=2976k IOPS][eta 00m:21s]
Jobs: 80 (f=80): [R(80)][84.2%][r=11.4GiB/s][r=2977k IOPS][eta 00m:19s]
Jobs: 80 (f=80): [R(80)][85.8%][r=11.4GiB/s][r=2977k IOPS][eta 00m:17s]
Jobs: 80 (f=80): [R(80)][87.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:15s]
Jobs: 80 (f=80): [R(80)][89.2%][r=11.4GiB/s][r=2977k IOPS][eta 00m:13s]
Jobs: 80 (f=80): [R(80)][90.8%][r=11.4GiB/s][r=2976k IOPS][eta 00m:11s]
Jobs: 80 (f=80): [R(80)][92.5%][r=11.4GiB/s][r=2977k IOPS][eta 00m:09s]
Jobs: 80 (f=80): [R(80)][94.2%][r=11.4GiB/s][r=2976k IOPS][eta 00m:07s]
Jobs: 80 (f=80): [R(80)][95.8%][r=11.4GiB/s][r=2978k IOPS][eta 00m:05s]
Jobs: 80 (f=80): [R(80)][97.5%][r=11.4GiB/s][r=2976k IOPS][eta 00m:03s]
Jobs: 80 (f=80): [R(80)][99.2%][r=11.4GiB/s][r=2978k IOPS][eta 00m:01s]
Jobs: 80 (f=80): [R(80)][100.0%][r=11.4GiB/s][r=2977k IOPS][eta 00m:00s]
iops-test-job: (groupid=0, jobs=80): err= 0: pid=35361: Wed Aug 28 11:27:37 2024
  read: IOPS=2959k, BW=11.3GiB/s (12.1GB/s)(1354GiB/120003msec)
    slat (usec): min=3, max=41688, avg=25.84, stdev=38.82
    clat (usec): min=528, max=152332, avg=6894.94, stdev=1059.75
     lat (usec): min=558, max=155752, avg=6920.79, stdev=1063.29
    clat percentiles (usec):
     |  1.00th=[ 5538],  5.00th=[ 5932], 10.00th=[ 6063], 20.00th=[ 6325],
     | 30.00th=[ 6456], 40.00th=[ 6652], 50.00th=[ 6783], 60.00th=[ 6915],
     | 70.00th=[ 7111], 80.00th=[ 7308], 90.00th=[ 7701], 95.00th=[ 8094],
     | 99.00th=[ 9634], 99.50th=[11338], 99.90th=[17433], 99.95th=[20841],
     | 99.99th=[30802]
   bw (  MiB/s): min= 7142, max=12326, per=100.00%, avg=11565.44, stdev= 8.08, samples=19120
   iops        : min=1828508, max=3155659, avg=2960746.62, stdev=2067.56, samples=19120
  lat (usec)   : 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=99.16%, 20=0.78%, 50=0.05%
  lat (msec)   : 100=0.01%, 250=0.01%
  cpu          : usr=2.08%, sys=81.42%, ctx=1259841, majf=0, minf=104877
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     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.0%, >=64=0.1%
     issued rwts: total=355069846,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=256

Run status group 0 (all jobs):
   READ: bw=11.3GiB/s (12.1GB/s), 11.3GiB/s-11.3GiB/s (12.1GB/s-12.1GB/s), io=1354GiB (1454GB), run=120003-120003msec

・ IOPS パフォーマンス・テスト結果

IOPS パフォーマンスは、次の iops 行を見ると、max=3155659 であることを確認できます。

iops行
iops        : min=1828508, max=3155659, avg=2960746.62, stdev=2067.56, samples=19120

● スループット・パフォーマンス・テスト

スループット・パフォーマンスをテストするには、次のFIOサンプル・コマンドを使用します。

・ Sequential Reads テスト

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

[root@bm-e5 ~]# fio --filename=/dev/volgroup01/striped_logical_volume --direct=1 --rw=read --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=80 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 --readonly
throughput-test-job: (g=0): rw=read, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=libaio, iodepth=64
...
fio-3.35
Starting 80 processes
Jobs: 80 (f=80): [R(80)][2.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:57s]
Jobs: 80 (f=80): [R(80)][4.2%][r=10.8GiB/s][r=177k IOPS][eta 01m:55s]
Jobs: 80 (f=80): [R(80)][5.8%][r=11.4GiB/s][r=186k IOPS][eta 01m:53s]
Jobs: 80 (f=80): [R(80)][7.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:51s]
Jobs: 80 (f=80): [R(80)][9.2%][r=11.4GiB/s][r=186k IOPS][eta 01m:49s]
Jobs: 80 (f=80): [R(80)][10.8%][r=11.4GiB/s][r=186k IOPS][eta 01m:47s]
Jobs: 80 (f=80): [R(80)][12.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:45s]
Jobs: 80 (f=80): [R(80)][14.2%][r=11.4GiB/s][r=186k IOPS][eta 01m:43s]
Jobs: 80 (f=80): [R(80)][15.8%][r=11.4GiB/s][r=186k IOPS][eta 01m:41s]
Jobs: 80 (f=80): [R(80)][17.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:39s]
Jobs: 80 (f=80): [R(80)][19.2%][r=11.4GiB/s][r=186k IOPS][eta 01m:37s]
Jobs: 80 (f=80): [R(80)][20.8%][r=11.4GiB/s][r=186k IOPS][eta 01m:35s]
Jobs: 80 (f=80): [R(80)][22.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:33s]
Jobs: 80 (f=80): [R(80)][24.2%][r=11.4GiB/s][r=186k IOPS][eta 01m:31s]
Jobs: 80 (f=80): [R(80)][25.8%][r=11.3GiB/s][r=186k IOPS][eta 01m:29s]
Jobs: 80 (f=80): [R(80)][27.5%][r=11.4GiB/s][r=186k IOPS][eta 01m:27s]
Jobs: 80 (f=80): [R(80)][29.2%][r=11.4GiB/s][r=186k IOPS][eta 01m:25s]
Jobs: 80 (f=80): [R(80)][30.8%][r=11.4GiB/s][r=186k IOPS][eta 01m:23s]
Jobs: 80 (f=80): [R(80)][31.7%][r=11.4GiB/s][r=186k IOPS][eta 01m:22s]
Jobs: 80 (f=80): [R(80)][33.3%][r=11.4GiB/s][r=186k IOPS][eta 01m:20s]
Jobs: 80 (f=80): [R(80)][35.0%][r=11.4GiB/s][r=186k IOPS][eta 01m:18s]
Jobs: 80 (f=80): [R(80)][36.7%][r=11.4GiB/s][r=186k IOPS][eta 01m:16s]
Jobs: 80 (f=80): [R(80)][38.3%][r=11.4GiB/s][r=186k IOPS][eta 01m:14s]
Jobs: 80 (f=80): [R(80)][40.0%][r=11.4GiB/s][r=186k IOPS][eta 01m:12s]
Jobs: 80 (f=80): [R(80)][41.7%][r=11.4GiB/s][r=186k IOPS][eta 01m:10s]
Jobs: 80 (f=80): [R(80)][43.3%][r=11.4GiB/s][r=186k IOPS][eta 01m:08s]
Jobs: 80 (f=80): [R(80)][45.0%][r=11.4GiB/s][r=186k IOPS][eta 01m:06s]
Jobs: 80 (f=80): [R(80)][46.7%][r=11.4GiB/s][r=186k IOPS][eta 01m:04s]
Jobs: 80 (f=80): [R(80)][48.3%][r=11.4GiB/s][r=186k IOPS][eta 01m:02s]
Jobs: 80 (f=80): [R(80)][50.0%][r=11.4GiB/s][r=186k IOPS][eta 01m:00s]
Jobs: 80 (f=80): [R(80)][51.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:58s]
Jobs: 80 (f=80): [R(80)][53.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:56s]
Jobs: 80 (f=80): [R(80)][55.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:54s]
Jobs: 80 (f=80): [R(80)][56.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:52s]
Jobs: 80 (f=80): [R(80)][58.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:50s]
Jobs: 80 (f=80): [R(80)][60.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:48s]
Jobs: 80 (f=80): [R(80)][61.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:46s]
Jobs: 80 (f=80): [R(80)][63.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:44s]
Jobs: 80 (f=80): [R(80)][65.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:42s]
Jobs: 80 (f=80): [R(80)][66.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:40s]
Jobs: 80 (f=80): [R(80)][68.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:38s]
Jobs: 80 (f=80): [R(80)][70.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:36s]
Jobs: 80 (f=80): [R(80)][71.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:34s]
Jobs: 80 (f=80): [R(80)][73.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:32s]
Jobs: 80 (f=80): [R(80)][75.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:30s]
Jobs: 80 (f=80): [R(80)][76.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:28s]
Jobs: 80 (f=80): [R(80)][78.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:26s]
Jobs: 80 (f=80): [R(80)][80.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:24s]
Jobs: 80 (f=80): [R(80)][81.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:22s]
Jobs: 80 (f=80): [R(80)][83.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:20s]
Jobs: 80 (f=80): [R(80)][85.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:18s]
Jobs: 80 (f=80): [R(80)][86.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:16s]
Jobs: 80 (f=80): [R(80)][88.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:14s]
Jobs: 80 (f=80): [R(80)][90.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:12s]
Jobs: 80 (f=80): [R(80)][91.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:10s]
Jobs: 80 (f=80): [R(80)][93.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:08s]
Jobs: 80 (f=80): [R(80)][95.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:06s]
Jobs: 80 (f=80): [R(80)][96.7%][r=11.4GiB/s][r=186k IOPS][eta 00m:04s]
Jobs: 80 (f=80): [R(80)][98.3%][r=11.4GiB/s][r=186k IOPS][eta 00m:02s]
Jobs: 80 (f=80): [R(80)][100.0%][r=11.4GiB/s][r=186k IOPS][eta 00m:00s]
throughput-test-job: (groupid=0, jobs=80): err= 0: pid=38439: Wed Aug 28 11:38:32 2024
  read: IOPS=186k, BW=11.3GiB/s (12.2GB/s)(1360GiB/120071msec)
    slat (usec): min=60, max=31114, avg=428.44, stdev=346.81
    clat (usec): min=302, max=176592, avg=27137.15, stdev=3495.37
     lat (usec): min=1159, max=176801, avg=27565.59, stdev=3530.91
    clat percentiles (usec):
     |  1.00th=[21627],  5.00th=[22938], 10.00th=[23725], 20.00th=[24511],
     | 30.00th=[25297], 40.00th=[26084], 50.00th=[26608], 60.00th=[27395],
     | 70.00th=[28181], 80.00th=[29230], 90.00th=[30802], 95.00th=[32637],
     | 99.00th=[38536], 99.50th=[41681], 99.90th=[53216], 99.95th=[61080],
     | 99.99th=[88605]
   bw (  MiB/s): min= 9867, max=12502, per=100.00%, avg=11615.89, stdev= 4.83, samples=19153
   iops        : min=157851, max=200036, avg=185843.21, stdev=77.18, samples=19153
  lat (usec)   : 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.08%, 50=99.77%
  lat (msec)   : 100=0.15%, 250=0.01%
  cpu          : usr=0.31%, sys=58.12%, ctx=5507414, majf=2, minf=810285
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     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=22288691,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=11.3GiB/s (12.2GB/s), 11.3GiB/s-11.3GiB/s (12.2GB/s-12.2GB/s), io=1360GiB (1461GB), run=120071-120071msec

・ スループット・パフォーマンス・テスト結果

スループット・パフォーマンスは、次の bw 行を見ると、max= 12502 (MiB/s) = 104.87 Gbit/s であることを確認できます。

bw行
bw (  MiB/s): min= 9867, max=12502, per=100.00%, avg=11615.89, stdev= 4.83, samples=19153

■ おまけ

● Disk初期化

[root@bm-e5 ~]# lvremove striped_logical_volume volgroup01
  Volume group "striped_logical_volume" not found
  Cannot process volume group striped_logical_volume
Do you really want to remove active logical volume volgroup01/striped_logical_volume? [y/n]: y
  Logical volume "striped_logical_volume" successfully removed.
[root@bm-e5 ~]#
[root@bm-e5 ~]# vgremove volgroup01
  Volume group "volgroup01" successfully removed
[root@bm-e5 ~]#
[root@bm-e5 ~]# pvremove /dev/oracleoci/oraclevd[b-f]
  Labels on physical volume "/dev/oracleoci/oraclevdb" successfully wiped.
  Labels on physical volume "/dev/oracleoci/oraclevdc" successfully wiped.
  Labels on physical volume "/dev/oracleoci/oraclevdd" successfully wiped.
  Labels on physical volume "/dev/oracleoci/oraclevde" successfully wiped.
  Labels on physical volume "/dev/oracleoci/oraclevdf" successfully wiped.

■ 参考

・ Oracle Cloud Infrastructureドキュメント
 - Oracle Cloud Infrastructure(OCI)ネットワーキング
 - Virtual Cloud Network
 - ブロック・ボリューム・パフォーマンス
 - シェイプのパフォーマンスの詳細
 - 複数ボリューム・アタッチメントのUltra High Performanceサポート
 - 超高パフォーマンス・ボリュームのためのアタッチメントの構成
 - Linuxベース・インスタンスでブロック・ボリューム・パフォーマンス・テストを行うためのサンプルFIOコマンド
 - OCI新機能ハイライト

・ Oracle Blog
 - AMD EPYCプロセッサ上のE5インスタンスでパフォーマンスを最大2倍向上
 - Shatter the Million IOPS Barrier in the Cloud with OCI Block Storage

・ 計算
 - ストレージ技術基礎
 - データのサイズ コンバーター
 - IOPS, MB/s, GB/day Converter
 - メビバイト/秒 (MiB/s - 毎秒), 帯域幅
 - MB/sとIOPSの換算の仕方と変換ツール。ランダムリード/ライトの指標の変換。

・ My Oracle Support (MOS)
 - How to Calculate the Number of IOPS and Throughput of a Database (Doc ID 2206831.1)

・ Google Cloud
 - Linux VM で永続ディスクのパフォーマンスをベンチマークする

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?