ZFS

Mengonfigurasi Cache ZFS untuk IO Kecepatan Tinggi

Mengonfigurasi Cache ZFS untuk IO Kecepatan Tinggi

Mengonfigurasi Cache di kumpulan ZFS Anda

Jika Anda telah membaca posting kami sebelumnya tentang dasar-dasar ZFS, Anda sekarang tahu bahwa ini adalah sistem file yang kuat. Ia melakukan checksum pada setiap blok data yang ditulis pada disk dan metadata penting, seperti checksum itu sendiri, ditulis di beberapa tempat berbeda. ZFS mungkin kehilangan data Anda, tetapi dijamin tidak akan pernah mengembalikan data yang salah, seolah-olah itu adalah data yang benar.

Sebagian besar redundansi untuk kumpulan ZFS berasal dari VDEV yang mendasarinya. Hal yang sama berlaku untuk kinerja kolam penyimpanan. Performa baca dan tulis dapat meningkat pesat dengan penambahan SSD berkecepatan tinggi atau perangkat NVMe. Jika Anda telah menggunakan disk hibrida di mana SSD dan disk berputar dibundel sebagai satu perangkat keras, maka Anda tahu seberapa buruk mekanisme caching tingkat perangkat keras. ZFS tidak seperti ini, karena berbagai faktor, yang akan kita jelajahi di sini.

Ada dua cache berbeda yang dapat digunakan oleh kumpulan:

  1. ZFS Intent Log, atau ZIL, untuk menyangga operasi MENULIS.
  2. ARC dan L2ARC yang dimaksudkan untuk operasi BACA.

Penulisan Sinkron vs Asinkron

ZFS, seperti kebanyakan sistem file lainnya, mencoba mempertahankan buffer operasi tulis di memori dan kemudian menulisnya ke disk alih-alih langsung menulisnya ke disk. Ini dikenal sebagai asinkron tulis dan memberikan peningkatan kinerja yang layak untuk aplikasi yang toleran terhadap kesalahan atau di mana kehilangan data tidak menyebabkan banyak kerusakan. OS hanya menyimpan data dalam memori dan memberi tahu aplikasi, yang meminta penulisan, bahwa penulisan telah selesai. Ini adalah perilaku default dari banyak sistem operasi, bahkan ketika menjalankan ZFS.

Namun, faktanya tetap bahwa jika terjadi kegagalan sistem atau kehilangan daya, semua penulisan buffer di memori utama akan hilang. Jadi aplikasi yang menginginkan konsistensi atas kinerja dapat membuka file di sinkronis mode dan kemudian data hanya dianggap ditulis setelah benar-benar ada di disk. Sebagian besar database, dan aplikasi seperti NFS, selalu mengandalkan penulisan sinkron.

Anda dapat mengatur bendera: sinkron = selalu untuk membuat penulisan sinkron menjadi perilaku default untuk setiap kumpulan data yang diberikan.

$zfs set sync=selalu mypool/dataset1

Tentu saja, Anda mungkin ingin memiliki kinerja yang baik terlepas dari apakah file berada dalam mode sinkron atau tidak. Di situlah ZIL muncul.


ZFS Intent Log (ZIL) dan perangkat SLOG

Log Intent ZFS mengacu pada bagian dari kumpulan penyimpanan Anda yang digunakan ZFS untuk menyimpan data baru atau yang dimodifikasi terlebih dahulu, sebelum menyebarkannya ke seluruh kumpulan penyimpanan utama, menghapus semua VDEV.

Secara default, sejumlah kecil penyimpanan selalu diukir dari kumpulan untuk bertindak seperti ZIL, bahkan ketika Anda hanya menggunakan sekelompok disk berputar untuk penyimpanan Anda. Namun, Anda dapat melakukan lebih baik jika Anda memiliki NVMe kecil atau jenis SSD lainnya yang Anda inginkan.

Penyimpanan kecil dan cepat dapat digunakan sebagai Log Intent Terpisah (atau SLOG), di mana data yang baru tiba akan disimpan sementara sebelum dibuang ke penyimpanan utama kolam yang lebih besar. Untuk menambahkan perangkat slog, jalankan perintah:

$zpool tambahkan log tangki ada3

Dimana tangki adalah nama kolam Anda, catatan adalah kata kunci yang memberi tahu ZFS untuk merawat perangkat ada3 sebagai perangkat SLOG. Node perangkat SSD Anda mungkin belum tentu ada3, gunakan nama simpul yang benar.

Sekarang Anda dapat memeriksa perangkat di kolam Anda seperti yang ditunjukkan di bawah ini:

Anda mungkin masih khawatir bahwa data dalam memori non-volatile akan gagal, jika SSD gagal. Dalam hal ini, Anda dapat menggunakan beberapa SSD yang saling mencerminkan satu sama lain atau dalam konfigurasi RAIDZ apa pun.

$zpool tambahkan cermin log tangki ada3 ada4

Untuk sebagian besar kasus penggunaan, penyimpanan flash kecil 16GB hingga 64GB yang sangat cepat dan tahan lama adalah kandidat yang paling cocok untuk perangkat SLOG.


Cache Pengganti Adaptif (ARC) dan L2ARC

Saat mencoba men-cache operasi baca, tujuan kami berubah. Alih-alih memastikan bahwa kami mendapatkan kinerja yang baik, serta transaksi yang andal, kini motif ZFS bergeser ke memprediksi masa depan. Ini berarti, menyimpan informasi yang akan dibutuhkan aplikasi dalam waktu dekat, sementara membuang informasi yang paling dibutuhkan sebelumnya.

Untuk melakukan ini, bagian dari memori utama digunakan untuk menyimpan data yang baru saja digunakan atau data yang paling sering diakses. Dari situlah istilah Adaptive Replacement Cache (ARC) berasal. Selain membaca caching tradisional, di mana hanya objek yang paling baru digunakan yang di-cache, ARC juga memperhatikan seberapa sering data telah diakses.

L2ARC, atau Level 2 ARC, adalah perpanjangan dari ARC. Jika Anda memiliki perangkat penyimpanan khusus untuk bertindak sebagai L2ARC Anda, itu akan menyimpan semua data yang tidak terlalu penting untuk tetap berada di ARC tetapi pada saat yang sama data tersebut cukup berguna untuk mendapatkan tempat di memori yang lebih lambat. Perangkat NVMe.

Untuk menambahkan perangkat sebagai L2ARC ke kumpulan ZFS Anda, jalankan perintah:

$zpool tambahkan cache tangki ada3

Dimana tangki adalah nama kolam Anda dan ada3 adalah nama node perangkat untuk penyimpanan L2ARC Anda.


Ringkasan

Untuk mempersingkat cerita, sistem operasi sering menyangga operasi tulis di memori utama, jika file dibuka dalam mode asinkron. Ini tidak menjadi bingung dengan cache tulis ZFS yang sebenarnya, ZIL.

ZIL, secara default, adalah bagian dari kumpulan penyimpanan non-volatil tempat data disimpan untuk penyimpanan sementara sebelum disebarkan dengan benar ke seluruh VDEV. Jika Anda menggunakan SSD sebagai perangkat ZIL khusus, ini dikenal sebagai SLOG. Seperti VDEV lainnya, SLOG bisa dalam konfigurasi mirror atau raidz.

Baca cache, disimpan di memori utama, dikenal sebagai ARC. Namun, karena ukuran RAM yang terbatas, Anda selalu dapat menambahkan SSD sebagai L2ARC, di mana hal-hal yang tidak dapat masuk ke dalam RAM akan di-cache.

10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...