すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:永続メモリの使用モードを設定する

最終更新日:Oct 23, 2024

Elastic Compute Service (ECS) インスタンスの永続メモリは、インスタンスタイプに基づいてメモリまたはローカルディスクとして使用できます。 このトピックでは、永続メモリをローカルディスクとして構成する方法について説明します。 このトピックでは、次の問題を解決する方法についても説明します。ローカルディスクとして永続メモリを使用できるecs.re7pまたはecs.i4p永続メモリ最適化インスタンスは、Low-Level Persistence Library (LLPL) を使用してメモリプールを割り当てることができませんでした。

前提条件

永続メモリは、次のインスタンスタイプとイメージバージョンに適しています。

  • インスタンスタイプ

    • 永続メモリをメモリとして使用できるインスタンスファミリー: ecs.re6p-redis

      重要

      インスタンスのメモリとして永続メモリを使用する場合、次の状況が発生します。

      • インスタンスを購入した直後に永続メモリを使用でき、永続メモリを初期化する必要はありません。

      • メモリとして使用される永続メモリはデータの永続性を提供せず、インスタンスが停止または再起動されると、永続メモリに格納されたデータは失われます。

    • 永続メモリをローカルディスクとして使用できるインスタンスファミリー: ecs.re6pおよびecs.i4p

      重要

      インスタンスのローカルディスクとして永続メモリを使用する場合、次の状況が発生します。

      • インスタンスの購入後、永続メモリを初期化できます。 詳細については、このトピックの「ローカルディスクとしての永続メモリの構成」をご参照ください。

      • ローカルディスクとして使用される永続メモリは、データの永続性を提供しますが、データ損失を引き起こす可能性があります。 事前にデータをバックアップすることを推奨します。 ローカルディスクの詳細については、「ローカルディスク」をご参照ください。

  • 画像バージョン

    • Alibaba Cloud Linux 2

    • CentOS 7.6以降

    • Ubuntuの18.04と20.04

背景情報

永続メモリは、通常のメモリと比較してアクセス待ち時間が長くなりますが、費用対効果が高く、ローカルストレージとしての使用に適しています。 永続メモリに保存されたデータは、インスタンスの停止または再起動時に保持されます。 永続メモリは、メモリまたはローカルディスクとして使用できます。

  • 永続メモリをメモリとして使用する場合、高速ストレージアクセスを必要としない非ホットデータなど、一部のデータを通常のメモリから永続メモリに移動できます。 永続メモリは、GiBあたりの低価格で大容量を提供し、メモリのGiBあたりの総所有コスト (TCO) を削減するのに役立ちます。

  • 永続メモリがローカルディスクとして使用される場合、それは超高I/Oパフォーマンスと170ナノ秒という低い読み取り /書き込みレイテンシを提供します。 一貫した応答時間が必要なコアアプリケーションデータベースには、永続メモリを使用できます。 不揮発性メモリエクスプレス (NVMe) SSDを永続的なメモリベースのローカルディスクに置き換えると、より高いIOPS、より高い帯域幅、およびより低いレイテンシを提供し、パフォーマンスのボトルネックを解決できます。

重要

永続メモリに格納されるデータの信頼性は、永続メモリデバイスとこれらのデバイスが接続されている物理サーバーの信頼性に依存します。 これは、単一障害点 (SPOF) のリスクを増大させる。 アプリケーションデータの信頼性を確保するために、アプリケーション層でデータの冗長性を実装し、長期的なデータストレージにクラウドディスクを使用することを推奨します。

永続メモリをローカルディスクとして構成する

この例では、次の設定を持つインスタンスが使用されます。

  • インスタンスタイプ:ecs.re6p.2xlarge

  • イメージ:Alibaba Cloud Linux 2.1903 LTS 64 ビット

  1. 作成したインスタンスにログインします。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 永続メモリの管理に使用するユーティリティをインストールし、すべての名前空間とラベルを削除します。

    sudo yum install -y ndctl daxctl
    sudo ndctl disable-namespace all && sudo ndctl destroy-namespace all #Delete all namespaces.
    sudo ndctl disable-region all && sudo ndctl zero-labels all && sudo ndctl enable-region all #Delete all labels.
  3. 永続メモリのサイズを確認します。

    ndctl list -R

    次の図は、コマンド出力のサンプルを示しています。sizeパラメーターは、永続メモリのサイズを示します。

    查询持久内存大小

  4. 使用モードをfsdaxに設定します。

    sudo ndctl create-namespace --reconfig=namespace0.0 -m fsdax --size={region-size} --force
    説明

    {region-size} 変数を前の手順で取得したサイズ値に置き換えます。

    11.png

  5. 永続メモリ (/dev/pmem) デバイスをフォーマットしてマウントします。

    sudo mkfs -t ext4 /dev/pmem0 && \
    sudo mkdir /mnt/sdb && \
    sudo mount -o dax,noatime /dev/pmem0 /mnt/sdb
  6. マウントされている /dev/pmemデバイスを表示します。

    df -h

    pmem-as-ssd

    /dev/pmemデバイスをマウントした後、ディスクパフォーマンステストツールを使用してデバイスのパフォーマンスをテストできます。

    i4pインスタンスまたはre6pインスタンスのローカルディスクのパフォーマンスをテストする方法については、「i4pインスタンスのローカルディスクのパフォーマンスのテスト」をご参照ください。

    次の表に、ローカルNVMe SSD、拡張SSD (ESSD) 、および永続メモリベースのローカルディスクのパフォーマンス比較を示します。

    説明

    次の表のパフォーマンスデータは参考用です。 テスト結果のデータが優先されます。

    メトリック

    128-GiB永続メモリ

    1,788-GiB NVMe SSD

    800-GiB ESSDのパフォーマンスレベル1 (PL1)

    読み取り帯域幅

    8ギガバイト/秒10ギガバイト/秒

    2ギガバイト/秒3ギガバイト/秒

    0.2 GB/sから0.3ギガバイト/秒

    読み取り/書き込み帯域幅

    8ギガバイト/秒10ギガバイト/秒

    1ギガバイト/秒から2ギガバイト/秒

    0.2 GB/sから0.3ギガバイト/秒

    書き込み帯域幅

    2ギガバイト/秒3ギガバイト/秒

    1ギガバイト/秒から2ギガバイト/秒

    0.2 GB/sから0.3ギガバイト/秒

    読み取り IOPS

    1,000,000

    500,000

    30,000に20,000

    読み取り/書き込み IOPS

    1,000,000

    300,000

    30,000に20,000

    書き込み IOPS

    1,000,000

    300,000

    30,000に20,000

    読み取り遅延

    300ナノ秒から400ナノ秒

    100,000 ナノ秒

    250,000 ナノ秒

    書き込み遅延

    300ナノ秒から400ナノ秒

    20,000 ナノ秒

    150,000 ナノ秒

インスタンスがLLPLを使用してメモリプールの割り当てに失敗した問題を解決する

問題の説明

ローカルディスクとして永続メモリを使用できるecs.re7pまたはecs.i4pインスタンスは、LLPLを使用してメモリプールを割り当てることができませんでした。 ヒープの作成に失敗しました。 次の図に示すように、unsafe shutdown count **を読み取ることができませんエラーメッセージが返されます。问题现象

原因

デフォルトでは、LLPLソースコードでunsafe shutdown detectionが有効になっています。 しかしながら、仮想化不揮発性メモリ (NVM) は、安全でないシャットダウン検出をサポートしない。 詳細は、「llpl」をご参照ください。

解決策

LLPLソースコードで安全でないシャットダウン検出を無効にするには、次の手順を実行します。

  1. LLPLソースコードのsrc/main/cpp/com_intel_pmem_llpl_AnyHeap.cppファイルに次のコードを追加します。

    intsds_write_value=0;
    pmemobj_ctl_set(NULL,"sds.at_create",&sds_write_value)

    次の図は、上記のコードがファイルに追加されていることを示しています。

    AnyHeap

  2. インスタンスにログインします。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  3. 次のコマンドを実行して、LLPLを使用してテストケースを実行します。

    mvn clean && mvn test -Dtest.heap.path=/mnt/sdb

    "ヒープの作成に失敗した場合。 unsafe shutdown count **" エラーメッセージが返されません。メモリプールの割り当てに進むことができます。