Amazon Web Services ブログ

低コストの Windows ファイルシステムで高スループットを実現



Windows ファイルストレージのワークロードをテストまたは Amazon FSx for Windows ファイルサーバー (Amazon FSx) に移行した後に、お客様からは「素晴らしい!」との声をよくいただきます。この言葉は、低コストのハードディスクドライブ (HDD) ファイルシステムに向けられたものです。今年の初めに、当社は、低コストのストレージオプションが利用可能になることを「新規 – Amazon FSx for Windows ファイルサーバーの低コスト HDD ストレージオプション」で発表しました。これにより、お客様は、Amazon FSxでファイルシステムを作成する際に、HDD またはソリッドステートドライブ (SSD) ストレージのいずれかを選択することができます。HDD ストレージオプションは、ホームディレクトリ、部門の共有、コンテンツ管理システムなど、幅広いワークロード向けに設計されています。この投稿では、HDD ファイルシステムがファイルベースのアプリケーションに高いパフォーマンスを提供する方法を紹介します。合成 (シミュレートされたアクティビティ) ストレージテストに一般的に使用される Microsoft ストレージパフォーマンスツールである DiskSpd を使用して、さまざまな読み取りおよび書き込み操作で Amazon FSx for Windows ファイルサーバーのコンポーネントをテストします。低コストの Amazon FSx for Windows ファイルサーバーから高いスループットを実現できることを示すことができ、「素晴らしい!」の声を聞くことができれば幸いです。

Amazon FSx は、業界標準のサーバーメッセージブロック (SMB) プロトコル経由でアクセスできる、信頼性の高いスケーラブルなフルマネージドファイルストレージを提供しています。Microsoft Windows Server 上に構築され、データの重複排除、エンドユーザーファイルの復元、Microsoft Active Directory (AD) 統合などの幅広い管理機能を提供します。シングル AZ およびマルチ AZ 配置オプション、フルマネージド型のバックアップ、および保管中と転送中のデータの暗号化を提供します。Amazon FSx ファイルストレージは、Windows、Linux、および MacOS コンピューティングインスタンスならびに AWS またはオンプレミスで実行されているデバイスからアクセスできます。

今週、当社では、ストレージキャパシティーの増加とファイルシステムのスループットキャパシティーの変更のサポートを開始しました。これにより、データのニーズの増大に応じて、ファイルシステムのストレージキャパシティーを動的に増やすことができます。スループットキャパシティーを変更する新しい機能を使用すると、周期的なワークロードまたはワンタイムバーストのスループットキャパシティーを動的に調整できます。これは、時間が重要な要素となる移行に一般的なものです。これらの新機能の詳細については、AWS ニュースブログAmazon FSx for Windows ファイルサーバー – ストレージサイズおよびスループットキャパシティーのスケーリングをご覧ください。

高スループットのコンポーネント

Amazon FSx でファイルシステムを作成する場合、いくつかの決定が必要です。デプロイタイプ (マルチ AZ またはシングル AZ)、ストレージタイプ (SSD または HDD)、ストレージキャパシティー (SSD の場合は 32〜65,536 GiB、HDD の場合は 2,000〜65,536 GiB)、およびスループットキャパシティー (8、16、 32、64、128、256、512、1024、または 2048 MB/秒) を選択する必要があります。スループットキャパシティーは、ファイルシステムの全体的な達成可能なパフォーマンスとスループットに最も貢献する属性です。ただし、ファイルシステムの全体的なスループットに大きな影響を与える 3 つのリソースコンポーネントがあります。ネットワークスループット、インメモリキャッシュ、ディスクスループットです。これらのコンポーネントを次の図に示します (図 1)。

図 1 – Amazon FSx for Windows ファイルサーバーのパフォーマンスコンポーネント

図 1 – Amazon FSx for Windows ファイルサーバーのパフォーマンスコンポーネント

Amazon FSx ユーザーガイドパフォーマンスのセクションには、考えられるすべてのスループットキャパシティーに対するディスク、インメモリキャッシュ、IOPS、およびネットワークスループットを示す包括的な表があります。次の表 (表 1) は、その表のサブセットであり、スループットとキャッシュ情報を示しています。

ファイルシステムのスループットキャパシティー (MB/秒) ネットワーク
スループット (MB/秒)
キャッシュメモリ
(GB)
ディスクスループット
(MB/秒)
ベースライン 変数 ベースライン バースト
8 8 最大 600 0.5 8 最大 260
16 16 最大 600 1 16 最大 260
32 32 最大 600 2 32 最大 260
64 64 最大 600 4 64 最大 350
128 150 最大 1250 8 128 最大 600
256 300 最大 1250 16 256 最大 600
512 600 最大 1250 32 512
1024 1500 64 1024
2048 3125 128 2048

表 1 – Amazon FSx for Windows ファイルサーバーのパフォーマンス

ファイルシステムのスループットキャパシティーを選択すると、そのファイルシステムで使用できるベースラインディスクスループットを実際に選択していることになります。これは通常、ファイルシステムの最も遅いパフォーマンスのコンポーネントです。バーストディスクスループット、インメモリキャッシュ、およびファイルシステムのベースラインと可変ネットワークパフォーマンスにより、ベースラインディスクスループットよりも大幅に高いスループットレートで動作することができます。これにより、ファイルシステムを作成する際に実際に選択したスループットよりもはるかに高いスループットを利用できます。

Amazon FSx ファイルシステムが、どのようにベースラインスループットレベルを超えるパフォーマンスを提供するかをご紹介します。

テスト方法

最初に、Amazon FSx を使用して次の属性でファイルシステムを作成します。

  • マルチ AZ 配置タイプ
  • HDD ストレージタイプ
  • 5120 GiB ストレージキャパシティー
  • 32 MB/秒 スループットキャパシティー

ファイルシステムは、既存の AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) に結合しています。

次に、最新の Windows Server 2019 Amazon マシンイメージ (AMI) を使用して、1 つの m5n.8xlarge Amazon EC2 インスタンスを起動します。 EC2 のパフォーマンスが制限要因にならないように、ネットワークのパフォーマンスが変化しないこのインスタンスタイプを意図的に選択しました。Amazon EC2 からファイルシステムまで一貫したネットワークパフォーマンスが必要です。

次のスクリプトは、最新バージョンの DiskSpd をインストールするユーザーデータスクリプトの例です。

<powershell>

# install DiskSpd (windows)
$path = "C:\Tools\DiskSpd-2.0.21a"
$url = "https://gallery.technet.microsoft.com/DiskSpd-A-Robust-Storage-6ef84e62/file/199535/2/DiskSpd-2.0.21a.zip"
$destination = "C:\Tools\DiskSpd-2.0.21a.zip"
$download = New-Object -Typename System.Net.WebClient
New-Item -Type Directory -Path $path
$download.DownloadFile($url,$destination)
$extract = New-Object -ComObject Shell.Application
$files = $extract.Namespace($destination).Items()
$extract.NameSpace($path).CopyHere($files)

</powershell>

3 番目に、インスタンスから 8 GiB ファイルを作成し、DiskSpd を使用してファイルに 15 分間継続的に書き込みます。以下は、DiskSpd 書き込みスクリプトの例です。-Sr オプションを使用してクライアントのローカルキャッシュをバイパスし、1 つのスレッドのみを使用し、1 MB のブロックサイズを使用します。

$random = $(Get-Random)
fsutil file createnew \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat 8589934592
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d900 -s1M -w100 -t1 -o32 -b1M -Sr -L \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat

テスト中に、タスクマネージャーを開き、EC2 インスタンスからの送信ネットワークトラフィックを監視します。場合によっては、書き込みテストで 400 MB/秒 のピークバーストスループットが複数回達成され、ピーク間のバーストスループットは 287.5 MB/秒 になります。このパターンは、テスト全体を通して非常に一貫しています。次のタスクマネージャーのスクリーンショット (図 2) を参照してください。

図 2 – 書き込みテストのバーストスループットを示す EC2 クライアントネットワークスループット

図 2 – 書き込みテストのバーストスループットを示す EC2 クライアントネットワークスループット

ファイルシステムは 15 分間のテストよりもはるかに長くバーストできるため、ファイルシステムのすべての「バースタビリティ」またはバーストキャパシティーを消費するように、書き込みテストの期間を長くします。スループットの低下を確認したら、バーストキャパシティーが使い果たされていることを確認し、次のテスト、つまりベースラインスループット書き込みテストの準備のためにテストを終了します。

4 番目に、ファイルシステムのバーストキャパシティーが消費されたので、同じ DiskSpd スクリプトを再度実行して、ファイルシステムのベースライン書き込みスループットをテストします。

次のタスクマネージャーのスクリーンショット (図 3) は、EC2 インスタンスからの送信ネットワークトラフィックを示しています。書き込みベースラインテスト中に、インスタンスがファイルシステムへの 32 MB/秒 のスループットの書き込みを達成していることがわかります。

図 3 – 書き込みテストのベースラインスループットを示す EC2 クライアントネットワークスループット

図 3 – 書き込みテストのベースラインスループットを示す EC2 クライアントネットワークスループット

5 番目に、次のテストを開始する前に、バーストクレジットが補充されるまでしばらく待ちます。ファイルシステムのネットワークパフォーマンスのみをテストしたいので、インメモリキャッシュに完全に常駐できる 2 GB のファイルを作成します。15 分間継続的にファイルからの読み取りを行う DiskSpd コマンドを実行します。このコマンドは、他のコマンドと同様に、-Sr オプションを使用して EC2 インスタンスのローカルキャッシュをバイパスします。つまり、すべての IO リクエストは、ディスクからではなく、ファイルシステムのインメモリキャッシュからネットワーク経由で送信されます。以下は、DiskSpd スクリプトの例です。

$random = $(Get-Random)
fsutil file createnew \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat 2000000000
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d900 -s1M -r100 -t1 -o32 -b1M -Sr -L \\amznfsxovuaxsaw.example.com\share\${env:computername}-$random.dat

素晴らしい!

もう一度、タスクマネージャーを開き、EC2 インスタンスが FSx for Windows ファイルサーバーから読み取りを行うときに、その送信ネットワークトラフィックを監視します。ファイルシステムからの読み取り中、一貫した 5.0 Gbps または 625 MB/秒 の受信スループットを確認しました (図 4)。

図 4 – インメモリキャッシュの読み取りスループットを示す EC2 クライアントネットワークスループット

図 4 – インメモリキャッシュの読み取りスループットを示す EC2 クライアントネットワークスループット

一部のワークロードは、キャッシュ用に指定されたメモリよりもはるかに大きい場合があり得ることに気づきました。しかし、ワークロードのアクティブなワーキングセット部分は、このインメモリキャッシュとこれらのファイルシステムの高い可変ネットワークスループットを利用できるはずです。

DiskSpd のような合成テストツールは、実際の IO パターンを模倣するように設定されている場合に役立ちますが、実際のワークロードをファイルシステムに対して実行することほど優れているものはありません。お客様と話すときは、ファイルシステムに対して実際のワークロードをテストすることの重要性を常に強調します。繰り返しますが、テストが重要です! 最終テストとして、NASA が管理する地球科学データセットのコレクションをダウンロードします。これは AWS の Registry of Open Data on AWS の一部として利用可能です。このデータセット内には、GIMMS AVHRR Global NDVI ファイルの逆のカートグラフィック変換があります。このデータセットのサブセット (1980 年代、1990 年代、2000 年代、および 2010 年代の約 757 .n07-V13g ファイル)を圧縮して解凍し、合計で 13.1 GB にしました。WinRAR と 4 つのスレッドを並行して使用して、Amazon FSx ファイルシステム内でデータセットを 2.29 GB に圧縮します。この圧縮が完了するまでに 99 秒かかりました。タスクマネージャーのスクリーンショット (図 5) は、237.5 MB/秒 の圧縮駆動中の読み取りスループットを示しています。

図 5 – 圧縮テスト中の EC2 クライアントネットワークの読み取りスループット

図 5 – 圧縮テスト中の EC2 クライアントネットワークの読み取りスループット

最後のテストは、圧縮ファイルを Amazon FSx ファイルシステムの新しいフォルダに解凍することです。図 6 は、同じ解凍操作中のタスクマネージャーのスクリーンショットで、書き込みスループットは 187.5 MB/秒 に達しています。解凍が完了するまでに 73 秒かかりました。

図 6 – 解凍テスト中の EC2 クライアントネットワーク書き込みバーストスループット

図 6 – 解凍テスト中の EC2 クライアントネットワーク書き込みバーストスループット

テストの結果

これらの読み取りと書き込みのテスト中、ファイルシステムは、32 MB/秒 の FSx for Windows ファイルサーバーの記録されたスループットキャパシティーを達成し、これを超えることもありました。次の表は、テストの結果をまとめたものです (表 2)。

テスト スループット
DiskSpd

ベースライン書き込み: 32 MB/秒 (ディスクに保持)

ピークバースト書き込み: 400 MB/秒 (ディスクに保持)

一貫性のあるバースト書き込み: 287.5 MB/秒 (ディスクに保持)

インメモリキャッシュの読み取り: 625 MB/秒

圧縮 バースト読み取り: 237.5 MB/秒
解凍 バースト書き込み: 187.5 MB/秒 (ディスクに保持)

表 2 – DiskSpd および 圧縮/解凍のテストの結果

私のファイルシステムは米国西部 (オレゴン) リージョンにあり、マルチ AZ、HDD 5120 GiB、32 MB/秒の Amazon FSx ファイルシステムです。インメモリキャッシュの読み取りテストでは 625 MB/秒、書き込みテストでは 400 MB/秒のピークバースト、ベースライン書き込みテストでは一貫して 32 MB/秒を達成できます。このファイルサーバーの実行時間は 2 時間で、費用はわずか 0.742 USD で、月額では 270.72 USD となります (バックアップを除く)。この料金には、以下が含まれます。

  • 高性能で可用性の高いフルマネージド型の Windows ファイルストレージ
  • 2 つのアベイラビリティーゾーン間の完全なフェイルオーバー機能
  • 高い耐久性があることによる各アベイラビリティーゾーン内でのデータのレプリケーション
  • 保存中および転送中のデータの暗号化
  • データ重複排除、シャドウコピー (スナップショット)
  • PCI DSS、ISO (9001、27001、27017、27018)、SOC (1、2、3)、GDPR などの複数のコンプライアンスプログラムへの準拠
  • HIPAA 対応のファイルシステム

最後の考察

通常、ファイルベースのワークロードは、データセット全体のわずかな部分を占めており、特定の時点でアクティブに使用されます。これらのワークロードは、Amazon FSx for Windows ファイルサーバーのインメモリキャッシュと高い可変ネットワークスループットの恩恵を受けます。それは、基盤となるストレージへのトリップをこれらが削減するためです。また、通常、これらのワークロードは急上昇し、短期間に高レベルのスループットを駆動しますが、長期間にわたって低レベルのスループットを駆動します。このようなタイプのワークロードは、Amazon FSx のバーストモデルに最適です。ワークロードの一貫性が高い場合は、ニーズに合わせたスループットキャパシティーを選択してください。ただし、必要に応じてバーストスループットを利用できることに注意してください。最近では、いつ標準を超えるスループットレベルを使用する可能性のある出来事が発生するかは知る由もありません。

Windows アプリケーションは実際にどのくらいのスループットを必要としているのでしょうか? ほとんどの Windows ワークロードは、共有ファイルシステムからの持続的なスループットをほとんど必要としないことに驚くでしょう。これこそが Amazon FSx が優れた選択肢である理由です。プロビジョニングしたスループットが得られ、必要なときにはさらに多くのスループットを得ることができます。結果が示すように、低コストの HDD ファイルシステムでも、これらのファイルシステムの記録されたベースラインスループット (キャッシュに基づくネットワークレベルとバーストレベルを記録します) を超える高レベルのスループットを達成できます。

Amazon FSx for Windows ファイルサーバーの HDD ファイルシステムの詳細については、Amazon FSx for Windows ファイルサーバーのサイトユーザーガイドをご覧ください。

このブログ記事をお読みいただき、ありがとうございました。ご質問やコメントは、コメント欄にご記載いただければ幸いです。