Pencegahan tumpang tindih - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pencegahan tumpang tindih

Pencegahan penulisan robek adalah fitur penyimpanan blok yang dirancang AWS untuk meningkatkan kinerja beban kerja database relasional intensif I/O Anda dan mengurangi latensi tanpa berdampak negatif pada ketahanan data. Basis data relasional yang menggunakan InnoDB atau XtraDB sebagai mesin basis data, seperti MySQL dan MariaDB, akan mendapat manfaat dari pencegahan penulisan yang rusak.

Biasanya, basis data relasional yang menggunakan halaman yang lebih besar dari daya gagal atomisitas perangkat penyimpanan menggunakan mekanisme pencatatan data untuk melindungi dari tumpang tindih. MariaDB dan MySQL menggunakan file buffer doublewrite untuk mencatat data sebelum menulisnya ke tabel data. Jika terjadi penulisan yang tidak lengkap atau sobek, sebagai akibat dari kerusakan sistem operasi atau kehilangan daya selama transaksi penulisan, basis data dapat memulihkan data dari buffer penulisan ganda. Overhead I/O tambahan yang terkait dengan penulisan ke buffer penulisan ganda berdampak pada performa basis data dan latensi aplikasi, dan mengurangi jumlah transaksi yang dapat diproses per detik. Untuk informasi selengkapnya tentang buffer doublewrite, lihat dokumentasi MariaDB dan MySQL.

Dengan pencegahan penulisan robek, data ditulis ke penyimpanan dalam transaksi all-or-nothingtulis, yang menghilangkan kebutuhan untuk menggunakan buffer doublewrite. Hal ini mencegah data parsial, atau tumpang tindih, ditulis ke penyimpanan jika terjadi crash sistem operasi atau kehilangan daya selama transaksi tulis. Jumlah transaksi yang diproses per detik dapat ditingkatkan hingga 30 persen, dan latensi penulisan dapat dikurangi hingga 50 persen, tanpa mengorbankan ketahanan beban kerja Anda.

Harga

Tidak ada biaya tambahan untuk menggunakan pencegahan tumpang tindih.

Ukuran blok yang didukung dan perataan batas blok

Pencegahan tumpang tindih mendukung operasi penulisan untuk blok data 4 KiB, 8 KiB, dan 16 KiB. Alamat blok logis awal blok data (LBA) harus disejajarkan dengan ukuran batas blok masing-masing yaitu 4 KiB, 8 KiB, atau 16 KiB. Misalnya, untuk operasi penulisan 16 KiB, LBA awal blok data harus disejajarkan dengan ukuran batas blok 16 KiB.

Tabel berikut menunjukkan dukungan di seluruh tipe penyimpanan dan instans.

  4 KiB blok 8 KiB blok 16 KiB blok
Volume penyimpanan instans Semua volume penyimpanan instans NVMe dilampirkan ke instans i-family generasi saat ini. Instans i4i, iM4GN, dan IS4gen didukung oleh Nitro SSD. AWS
Volume Amazon EBS Semua volume Amazon EBS yang dilampirkan ke instans yang dibangun di Sistem AWS Nitro.

Untuk mengonfirmasi apakah instans dan volume Anda mendukung pencegahan tumpang tindih, lakukan kueri untuk memeriksa apakah instans mendukung pencegahan penulisan sobek dan detail lainnya, seperti ukuran blok dan batas yang didukung. Untuk informasi selengkapnya, lihat Periksa dukungan dan konfigurasi pencegahan tumpang tindih.

Persyaratan

Agar pencegahan tumpang tindih berfungsi dengan baik, operasi I/O harus memenuhi persyaratan ukuran, keselarasan, dan batas, sebagaimana ditentukan dalam bidang NTWPU, NTWGU, NTWBU. Anda harus mengonfigurasi sistem operasi untuk memastikan bahwa subsistem penyimpanan tertentu (sistem file, LVM, RAID, dll.) tidak memodifikasi properti I/O pada tumpukan penyimpanan, termasuk penggabungan blok, pemisahan, atau relokasi alamat blok, sebelum dikirimkan ke perangkat.

Pencegahan tumpang tinding telah diuji dengan konfigurasi berikut:

  • Tipe instans dan tipe penyimpanan yang mendukung ukuran blok yang diperlukan.

  • Amazon Linux 2 dengan kernel versi 5.10 atau yang lebih baru.

  • ext4 dengan bigalloc diaktifkan dan ukuran klaster 16 KiB, serta utilitas ext4 terbaru (e2fsprogs 1.46.5 atau yang lebih baru).

  • mode akses file O_DIRECT untuk melakukan bypass cache buffer kernel Linux.

catatan

Anda tidak perlu menonaktifkan penggabungan I/O untuk beban kerja MySQL dan MariaDB.

Periksa dukungan dan konfigurasi pencegahan tumpang tindih

Untuk mengonfirmasi apakah instans dan volume Anda mendukung pencegahan tumpang tindih, dan untuk melihat data spesifik vendor ruang nama NVMe yang berisi informasi pencegahan tumpang tindih, gunakan perintah berikut ini.

$ sudo nvme id-ns -v device_name
catatan

Perintah ini mengembalikan informasi khusus vendor dalam heksa dengan interpretasi ASCII. Anda mungkin perlu membuat alat yang mirip dengan ebsnvme-id, ke dalam aplikasi Anda yang dapat membaca dan mengurai output.

Misalnya, perintah berikut mengembalikan data spesifik vendor ruang nama NVMe yang berisi informasi pencegahan tumpang tindih untuk file /dev/nvme1n1.

$ sudo nvme id-ns -v /dev/nvme1n1

Jika instans dan volume Anda mendukung pencegahan penulisan yang robek, ini mengembalikan informasi pencegahan penulisan AWS robek berikut dalam data spesifik vendor namespace NVMe.

catatan

Byte pada tabel berikut ini mewakili offset dalam byte dari awal data spesifik vendor ruang nama NVMe.

Byte Deskripsi
0:31 Nama titik pemasangan lampiran perangkat, misalnya /dev/xvda. Anda memberikan ini selama permintaan lampiran volume dan dapat digunakan oleh instans Amazon EC2 untuk membuat symlink ke perangkat blok NVMe (nvmeXn1).
32:63 ID volume. Misalnya, vol01234567890abcdef. Bidang ini dapat digunakan untuk memetakan perangkat NVMe ke volume yang terlampir.
64:255 Terpesan untuk digunakan di masa mendatang.
256:257 Ukuran Unit Pencegahan Tumpang Tindih Namespace (NTWPU). Bidang ini menunjukkan ukuran spesifik ruang nama dari operasi penulisan yang dijamin akan ditulis secara atomik ke NVM selama terjadi kegagalan daya atau kondisi kesalahan. Bidang ini ditentukan dalam blok logis yang direpresentasikan dalam nilai berbasis nol.
258:259 Ukuran Perincian Pencegahan Tumpang Tindih Namespace (NTWPG). Bidang ini menunjukkan kenaikan ukuran spesifik namespace di bawah NTWPU operasi tulis yang dijamin akan ditulis secara atomik ke NVM selama kegagalan daya atau kondisi kesalahan. Artinya, ukuran harus NTWPG * n <= NTWPU, yaitu n adalah bilangan bulat positif. Operasi tulis offset LBA juga harus diselaraskan dengan bidang ini. Bidang ini ditentukan dalam blok logis yang direpresentasikan dalam nilai berbasis nol.
260:263 Ukuran Batas Pencegahan Tumpang Tindih Namespace (NTWPB). Bidang ini menunjukkan ukuran batas atom untuk namespace ini untuk nilai NTWPU. Menulis ke namespace ini yang melintasi batas atom tidak dijamin akan ditulis secara atomik ke NVM selama kondisi kegagalan daya atau kesalahan. Nilai 0h menunjukkan bahwa tidak ada batas atomis untuk kegagalan daya atau kondisi kesalahan. Semua nilai lainnya menentukan ukuran dalam hal blok logis menggunakan pengodean yang sama dengan bidang NTWPU.

Konfigurasikan tumpukan perangkat lunak Anda untuk pencegahan tumpang tindih

Pencegahan tumpang tindih diaktifkan secara default pada tipe instans yang didukung dengan volume yang didukung. Anda tidak perlu mengaktifkan pengaturan tambahan apa pun untuk mengaktifkan volume atau instans Anda untuk pencegahan tumpang tindih.

catatan

Tidak ada dampak performa pada beban kerja yang tidak mendukung pencegahan tumpang tindih. Anda tidak perlu melakukan perubahan apa pun untuk beban kerja ini.

Beban kerja yang mendukung pencegahan tumpang tindih, tetapi tidak dikonfigurasi untuk menggunakannya, terus menggunakan buffer penulisan ganda dan tidak menerima manfaat performa apa pun.

Untuk mengonfigurasi tumpukan perangkat lunak MySQL atau MariaDB Anda guna menonaktifkan buffer penulisan ganda dan menggunakan pencegahan tumpang tindih, selesaikan langkah-langkah berikut:

  1. Konfigurasikan volume Anda untuk menggunakan sistem file ext4 dengan BigAlloc opsi dan atur ukuran cluster ke 4 KiB, 8 KiB, atau 16 KiB. Menggunakan BigAlloc dengan ukuran cluster 4 KiB, 8 KiB, atau 16 KiB memastikan bahwa sistem file mengalokasikan file yang sejajar dengan batas masing-masing.

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

    Untuk MySQL dan MariaDB, Anda harus menggunakan -C 16384 untuk mencocokkan ukuran halaman basis data. Mengatur perincian alokasi ke nilai selain kelipatan ukuran halaman dapat mengakibatkan alokasi yang mungkin tidak cocok dengan batasan pencegahan tumpang tindih pada perangkat penyimpanan.

    Misalnya:

    $ mkfs.ext4 -O bigalloc -C 16384 /dev/nvme1n1
  2. Konfigurasikan InnoDB untuk menggunakan metode flush 0_DIRECT dan matikan doublewrite InnoDB. Gunakan editor teks pilihan Anda untuk membuka /etc/my.cnf, dan perbarui parameter innodb_flush_method dan innodb_doublewrite sebagai berikut:

    innodb_flush_method=O_DIRECT innodb_doublewrite=0
penting

Jika Anda menggunakan Logical Volume Manager (LVM) atau lapisan virtualisasi penyimpanan lainnya, pastikan offset awal volume disejajarkan pada kelipatan 16 KiB. Hal ini relatif terhadap penyimpanan NVMe yang mendasarinya untuk memperhitungkan header metadata dan superblock yang digunakan oleh lapisan virtualisasi penyimpanan. Jika Anda menambahkan offset ke volume fisik LVM, hal ini dapat menyebabkan ketidakselarasan antara alokasi sistem file dan offset perangkat NVMe, yang akan membatalkan pencegahan penulisan robek. Untuk informasi selengkapnya, lihat --dataalignmentoffset di halaman manual Linux.