

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EC2 上設定您的工作負載，以預防未完成的寫入
<a name="configure-twp"></a>

[支援的執行個體類型 (含支援的磁碟區)](supported-block-sizes.md) 預設啟用預防未完成的寫入。您不需要設定任何其他設定來啟用預防未完成的寫入。

**注意**  
不支援預防未完成寫入的工作負載不會影響效能。您不需要對這些工作負載進行任何變更。  
支援預防未完成寫入但未設定為使用的工作負載，請繼續使用雙寫入緩衝區，而不會獲得任何效能優勢。

若要設定 MySQL 或 MariaDB 軟體堆疊以停用雙寫緩衝區，並使用預防未完成的寫入，請完成以下步驟：

1. 將磁碟區設定為搭配 BigAlloc 選項使用 ext4 檔案系統，並將叢集大小設定為 4 KiB、8 KiB 或 16 KiB。搭配使用 BigAlloc 與大小為 4 KiB、8 KiB 或 16 KiB 的叢集，可確保檔案系統分配檔案與各自邊界相符。

   ```
   $  mkfs.ext4 -O bigalloc -C {{4096|8192|16384}} {{device_name}}
   ```
**注意**  
對於 MySQL 和 MariaDB，您必須使用 `-C 16384` 來比對資料庫頁面大小。將分配精密度設定為頁面大小倍數以外的值，可能會導致分配與儲存裝置的預防未完成的寫入邊界不符。

   例如：

   ```
   $  mkfs.ext4 -O bigalloc -C 16384 /dev/nvme1n1
   ```

1. 將 InnoDB 設定為使用 `0_DIRECT` 排清方法並關閉 InnoDB 雙寫。使用您偏好的文字編輯器開啟 `/etc/my.cnf`，並更新 `innodb_flush_method` 和 `innodb_doublewrite` 參數，如下所示：

   ```
   innodb_flush_method=O_DIRECT
   innodb_doublewrite=0
   ```

**重要**  
如果您使用的是邏輯磁碟區管理工具 (LVM) 或其他儲存虛擬化層，請確定磁碟區的起始位移與 16 KiB 倍數相符。這與基礎 NVMe 儲存體相關，可用來說明儲存虛擬化層所使用的中繼資料標題和超級區塊。如果您新增 LVM 實體磁碟區的位移，可能會導致檔案系統分配與 NVMe 裝置的位移不相符，而這會使預防未完成的寫入失效。如需詳細資訊，請參閱 [Linux 手冊頁面](https://man7.org/linux/man-pages/man8/pvcreate.8.html)中的 `--dataalignmentoffset`。