

# Amazon EC2 でのワークロードを Torn Write Prevention 用に設定する
<a name="configure-twp"></a>

Torn Write Prevention は[サポートされているボリュームを持つサポートされているインスタンスタイプ](supported-block-sizes.md)ではデフォルトで有効になっています。ボリュームやインスタンスで 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
   ```

1. `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 手動ページ](https://man7.org/linux/man-pages/man8/pvcreate.8.html)」の「`--dataalignmentoffset`」を参照してください。