メモリ基本講座【番外編】「NVMe GEN4 SSD 7450」のパフォーマンスを評価してみた【第2回】
本ブログは、2部構成でMicron社の最新SSDである「NVMe Gen4 SSD 7450」のSSD単体とRAID5、RAID10の構成でパフォーマンスの違いがどのくらいあるかについて確認します。そのうえで、評価結果についてセキララにお伝えしたいと思います。なおRAIDはmdadmで構築し、構築方法も含めて説明します。
前回(第1回目)は、「NVMe Gen4 SSD 7450」のSSD単体評価結果についてお伝えしました。
今回(第2回目)はRAID5、RAID10をmdadmで構築し、構築方法と評価結果も含めてお伝えします。
7450はどのようなSSDか?単体評価結果は?を知りたい方は
メモリ基本講座【番外編】「NVMe GEN4 SSD 7450」のパフォーマンスを評価してみた【第1回】をご確認ください。
目次
RAIDの選択肢
NVMeでRAIDを構築する場合、ハードウェアRAIDとソフトウェアRAIDの二つの選択肢があります。SATAの場合はハードウェアRAIDがメインとなりますが、NVMeの場合はソフトウェアRAIDを選択することが多いです。
なぜならハードウェアRAIDだとパフォーマンスが遅くなるという現実があるからです。
ここだけの話、ピーク時の単体のランダムアクセスで約1/3~1/4、シーケンシャルアクセスで約1/10の差が出ている評価結果もあります。
ハードウェアで耐障害性を高めたいというのは一般的によく聞く話ですが、パフォーマンスとのトレードオフをどこまで考えるか?がNVMeではポイントになってくると思います。
今回は残念ながら弊社にハードウェアRAIDカードがないことや弊社のお客様はほとんどソフトウェアRAIDで構築しているという理由から、ソフトウェアRAIDで検証をしました。
RAIDの種類
今回の検証ではRAID5とRAID10で比較をしてみました。RAID5とRAID10の違いは、ドライブの必要本数、パフォーマンス、安全性の違いがあります。今回の評価ではデータセンター等で採用されることが多い、RAID5とRAID10を比較してみます。
表1. RAID5とRAID10の比較
RAID5 | RAID10 | |
ドライブ数 |
計3台 内訳
|
計4台 内訳
|
パフォーマンス |
|
|
安全性 |
|
|
7450のRAID評価環境
評価対象SSD
7450PRO:3.8TB
選定理由は、社内の検証機で4本確保できるのが3.8TBだったからです。本当は単体評価で一番性能が良かった7.6TBが良かったのですが、3本しかありませんでした。(残念…)
評価するサーバ
弊社で所有している検証機サーバで評価しました。
表2. サーバスペック
サーバ | Supermicro AS-2024US-TRT |
---|---|
CPU | AMD EPYC 7302 3.0GHz 16 Core |
メモリ | DDR4-3200 128GB |
OS | Ubuntu 20.04 |
図1. AS-2024-US-TRT
出典:SUPERMICRO A+ Server 2024US-TRT (Complete System Only)
パフォーマンス測定ツール
今回のSSDのパフォーマンス測定では、fio-3.16を使用しました。
図2. fioのバージョン
ソフトウェアRAIDの構築方法
今回はmdadmを使用してソフトウェアRAIDを構築しました。
図3. mdadmのバージョン
SSDの確認
nvme listコマンドを実行して、RAIDを構築するSSDの確認を行います。
今回はMicron 7450PRO 3.8TBを4台使用します。
図4. SSDの確認
RAID10の構築
mdadmの以下のコマンドを実行し、RAIDを構築します。
mdamd --create /dev/md0 --level=raid10 --raid-device=4 --verbose /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
表3. mdadmオプション
オプション | 内容 |
---|---|
--create | RAIDアレイの新規作成 |
--level | RAIDのレベルを指定 (今回はRAID10) |
--raid-device | RAIDアレイ内のアクティブなドライブの数 |
--verbose | コマンド実行時に表示される情報を増やす |
RAID5の場合は、--level=raid5 にする必要があります。
RAIDの構築状況を確認
以下のコマンドでRAIDの構築状況を確認することができます。
cat /proc/mdstat
図5. RAIDの構築状態
さらに詳細情報を確認したい場合は、以下のコマンドで確認することができます。
mdadm --detail /dev/md0
図6. RAID構築の詳細情報
フォーマット
ドライブを使用可能にするため、フォーマットを実施します。今回はext4でフォーマットします。
mkfs -t ext4 /dev/md0
図7. ドライブのフォーマット
RAID10の確認
lsblk コマンドを実行して、RAID10が構成されているか確認をします。
図8. RAID10の確認
RAIDのマウント
構築したRAIDをマウントし、使用可能な状態にします。
mkdir /mnt/raid10
mouth /dev/md0 /mnt/raid10
図9. マウント
RAID5、RAID10をfioで測定してみる
fioのコマンドオプション
今回は単体評価と同じ条件で測定しました。そのため、今回もQD1にしています。
表4. fio測定条件
アクセス方法 | ランダムリード、ランダムライト |
---|---|
ブロックサイズ | 4KB |
QD | 1 |
測定時間 | 12,000ms |
図10. fioのコマンド
fioのコマンド実行
以下のコマンドを実行し、fioでパフォーマンス測定をします。
fio xxxx.fio --output xxxx.csv --output-format=terse --status-interval=1
xxxx.fio は図10で表示したコマンドが記載されたファイルになります。
fioのコマンドオプションについては、詳しい説明は割愛させていただきますが、今回は1秒ごとにパフォーマンス値をプロットしています。また、測定結果はcsvファイルに出力されるため、結果をまとめるのに非常に便利です。
パフォーマンス結果
3.8TBの単体評価、RAID5、RAID10の評価結果を比較します。
当たり前のことですが、単体評価に比べてRAID5、RAID10はパフォーマンスダウンが見られます。
ただし、ランダムリードについては、大幅ダウンはみられません。ランダムライトは、RAID5はやはりパリティの影響で約75%の大幅ダウンがみられました。RAID10は約30%ダウンになります。やはり、ライトパフォーマンスを重視する場合は、RAID10が最適ということが分かりました。
今回はQD1で実力値を見ていますが、QDを最適値にするとさらにパフォーマンスが良くなります。
そのため、今回の結果はあくまで参考値として見てください。
まとめ
今回はRAIDの構築方法、RAID5、RAID10のパフォーマンス測定結果をお伝えしました。「RAID10はパフォーマンスと耐障害性は良いがコストがかかる」という懸念点もあります。どのRAID構成を選択するか、パフォーマンス、耐障害性、コストの兼ね合いがあり、なかなか難しいです。しかし、弊社のお客様でも最近はRAID5からRAID10を検討、採用されるお客様も増えてきているのも事実です。
このブログで、NVMeに少しでも興味をもっていただけたら、とてもうれしく思います。
また、CPUごとにNVMeのパフォーマンスが違うのか?という面白い観点でのブログ記事もあります。
興味ある方はぜひご参照ください。