1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. メモリ基本講座【番外編】「NVMe GEN4 SSD 7450」のパフォーマンスを評価してみた【第2回】

TECHブログ

メモリ基本講座【番外編】「NVMe GEN4 SSD 7450」のパフォーマンスを評価してみた【第2回】

メモリ基本講座【番外編】「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台

内訳

  • パリティ:1台
  • ストライピング:2台

計4台

内訳

  • ストライピング:2台
  • ミラーリング:2台
パフォーマンス
  • データ書き込み時に同時にパリティを更新する必要があるため書き込みパフォーマンスが落ちる
  • 書き込み性能はRAID0より半分程度
  • RAID5より性能は良い
安全性
  • ミラーリングせず、2台のドライブへデータを分散記録している
  • 2台壊れると運用不能になり、データ回復ができない
  • ストライピングしたすべてのドライブに対してミラーリングするため安全性が高い
  • 同じデータを持つドライブが2台ずつ存在するため、1台故障しても運用、復旧が可能

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

パフォーマンス測定ツール

今回の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のパフォーマンスが違うのか?という面白い観点でのブログ記事もあります。
興味ある方はぜひご参照ください。

 

NVMe SSDに関するお問い合わせはこちらへ

このブログのシリーズ

関連ブログ