Amazon EC2 でのワークロードを Torn Write Prevention 用に設定する - Amazon Elastic Compute Cloud

Amazon EC2 でのワークロードを Torn Write Prevention 用に設定する

Torn Write Prevention は、サポートされているボリュームを持つサポートされているインスタンスタイプでは、デフォルトで有効になっています。ボリュームやインスタンスで Torn Write Prevention を有効にするために、追加の設定を有効にする必要はありません。

注記

Torn Write Prevention をサポートしていないワークロードでは、パフォーマンスに影響はありません。これらのワークロードでは何も変更する必要はありません。

Torn Write Prevention はサポートしているが、使用するように設定されていないワークロードは、引き続き二重書き込みバッファを使用するため、パフォーマンス上のメリットはありません。

MySQL または MariaDB ソフトウェアスタックを設定して二重書き込みバッファを無効にし、Torn Write Prevention を使用するには、次の手順を実行します。

  1. BigAlloc オプションで ext4 ファイルシステムを使用するようにボリュームを設定し、クラスターサイズを 4 KiB、8 KiB、または 16 KiB に設定します。クラスターサイズが 4 KiB、8 KiB、または 16 KiB の BigAlloc を使用すると、ファイルシステムがそれぞれの境界に合わせてファイルを割り当てることができます。

    $ mkfs.ext4 -O bigalloc -C 4096|8192|16384 device_name
    注記

    MySQL と MariaDB の場合は、データベースのページサイズに合わせて -C 16384 を使用する必要があります。割り当ての粒度をページサイズの倍数以外の値に設定すると、ストレージデバイスの Torn Write Prevention の境界と割り当てが一致しなくなる可能性があります。

    例:

    $ mkfs.ext4 -O bigalloc -C 16384 /dev/nvme1n1
  2. 0_DIRECT フラッシュ方式を使用するように InnoDB を設定し、InnoDB の二重書き込みをオフにします。任意のテキストエディタを使用して /etc/my.cnf を開き、以下のように innodb_flush_method および innodb_doublewrite パラメータを更新します。

    innodb_flush_method=O_DIRECT innodb_doublewrite=0
重要

Logical Volume Manager (LVM) またはその他のストレージ仮想化レイヤーを使用している場合は、ボリュームの開始オフセットが 16 KiB の倍数になるように調整してください。これは、ストレージ仮想化レイヤーで使用されるメタデータヘッダーとスーパーブロックを考慮して、基盤となる NVMe ストレージを基準としています。LVM 物理ボリュームにオフセットを追加すると、ファイルシステムの割り当てと NVMe デバイスのオフセットがずれて、Torn Write Prevention が無効になる可能性があります。詳細については、「Linux 手動ページ」の「--dataalignmentoffset」を参照してください。