ZFS

Mengkonfigurasi ZFS Cache untuk IO Berkelajuan Tinggi

Mengkonfigurasi ZFS Cache untuk IO Berkelajuan Tinggi

Mengkonfigurasi Cache di kolam ZFS anda

Sekiranya anda pernah melalui catatan sebelumnya mengenai asas-asas ZFS, anda tahu sekarang bahawa ini adalah sistem fail yang mantap. Ia melakukan checksum pada setiap blok data yang ditulis pada disk dan metadata penting, seperti checkums itu sendiri, ditulis di beberapa tempat yang berbeza. ZFS mungkin kehilangan data anda, tetapi dijamin tidak akan memberikan anda kembali data yang salah, seolah-olah itu adalah data yang betul.

Sebilangan besar redundansi kumpulan ZFS berasal dari VDEV yang mendasari. Perkara yang sama berlaku untuk prestasi kolam simpanan. Prestasi membaca dan menulis dapat meningkat dengan baik dengan penambahan SSD berkelajuan tinggi atau peranti NVMe. Sekiranya anda telah menggunakan cakera hibrid di mana SSD dan cakera berputar digabungkan sebagai satu perkakasan, maka anda tahu betapa buruknya mekanisme caching tahap perkakasan. ZFS tidak seperti ini, kerana pelbagai faktor, yang akan kita terokai di sini.

Terdapat dua cache berbeza yang dapat digunakan oleh kolam:

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

Penulisan Segerak vs Asinkron

ZFS, seperti kebanyakan sistem fail lain, cuba mengekalkan penyangga operasi tulis dalam memori dan kemudian menuliskannya ke cakera dan bukannya langsung menulisnya ke cakera. Ini dikenali sebagai tidak segerak tulis dan ia memberikan keuntungan prestasi yang baik untuk aplikasi yang bertoleransi kesalahan atau di mana kehilangan data tidak banyak merosakkan. OS hanya menyimpan data dalam memori dan memberitahu aplikasi, siapa yang meminta penulisan, bahawa penulisan selesai. Ini adalah tingkah laku lalai dari banyak sistem operasi, walaupun semasa menjalankan ZFS.

Namun, hakikatnya tetap berlaku bahawa sekiranya berlaku kegagalan sistem atau kehilangan kuasa, semua penulisan yang disimpan dalam memori utama akan hilang. Oleh itu, aplikasi yang memerlukan konsistensi berbanding prestasi dapat membuka fail masuk segerak mod dan kemudian data hanya dianggap ditulis sebaik sahaja ia berada di cakera. Sebilangan besar pangkalan data, dan aplikasi seperti NFS, bergantung pada penulisan segerak sepanjang masa.

Anda boleh menetapkan bendera: segerak = selalu untuk menjadikan sinkronis menulis tingkah laku lalai untuk set data tertentu.

$ zfs set sync = selalu mypool / set data1

Sudah tentu, anda mungkin mempunyai prestasi yang baik tanpa mengira fail dalam mod segerak atau tidak. Di situlah ZIL masuk ke dalam gambar.


ZFS Intent Log (ZIL) dan peranti SLOG

ZFS Intent Log merujuk kepada bahagian kolam simpanan anda yang ZFS gunakan untuk menyimpan data baru atau diubah terlebih dahulu, sebelum menyebarkannya ke seluruh kumpulan penyimpanan utama, melintasi semua VDEV.

Secara lalai, sebilangan kecil simpanan selalu diukir dari kolam untuk bertindak seperti ZIL, walaupun anda hanya menggunakan sekumpulan cakera berputar untuk simpanan anda. Walau bagaimanapun, anda boleh melakukannya dengan lebih baik sekiranya anda mempunyai NVMe kecil atau jenis SSD lain yang boleh anda gunakan.

Penyimpanan kecil dan cepat dapat digunakan sebagai Log Intent Terpisah (atau SLOG), di mana data yang baru tiba akan disimpan sementara sebelum dialirkan ke penyimpanan utama kolam yang lebih besar. Untuk menambah peranti slogan, jalankan arahan:

$ zpool tambah tangki log ada3

Di mana tangki adalah nama kolam anda, balak adalah kata kunci yang memberitahu ZFS untuk merawat peranti tersebut ada3 sebagai peranti SLOG. Nod peranti SSD anda tidak semestinya ada3, gunakan nama nod yang betul.

Sekarang anda boleh memeriksa peranti di kolam anda seperti yang ditunjukkan di bawah:

Anda mungkin masih bimbang bahawa data dalam memori yang tidak mudah berubah akan gagal, sekiranya SSD gagal. Dalam kes itu, anda boleh menggunakan beberapa SSD yang saling mencerminkan atau dalam konfigurasi RAIDZ.

$ zpool tambah tangki log cermin ada3 ada4

Untuk kebanyakan kes penggunaan, storan kilat 16GB hingga 64GB yang sangat pantas dan tahan lama adalah calon yang paling sesuai untuk peranti SLOG.


Adaptive Replacement Cache (ARC) dan L2ARC

Semasa cuba menyembunyikan operasi baca, objektif kami berubah. Daripada memastikan bahawa kita mendapat prestasi yang baik, serta transaksi yang boleh dipercayai, kini motif ZFS beralih ke meramalkan masa depan. Ini bermaksud, menyimpan maklumat yang diperlukan oleh aplikasi dalam masa terdekat, sementara membuang aplikasi yang diperlukan paling jauh dalam masa yang akan datang.

Untuk melakukan ini, sebahagian daripada memori utama digunakan untuk cache data yang digunakan baru-baru ini atau data diakses paling kerap. Dari sinilah istilah Adaptive Replacement Cache (ARC) berasal. Selain cache baca tradisional, di mana hanya objek yang paling baru digunakan cache, ARC juga memperhatikan seberapa sering data diakses.

L2ARC, atau ARC Tahap 2, adalah lanjutan kepada ARC. Sekiranya anda mempunyai peranti penyimpanan khusus untuk bertindak sebagai L2ARC anda, ia akan menyimpan semua data yang tidak terlalu penting untuk tinggal di ARC tetapi pada masa yang sama data tersebut cukup berguna untuk mendapat tempat di tempat yang lebih lambat daripada memori Peranti NVMe.

Untuk menambahkan peranti sebagai L2ARC ke kolam ZFS anda, jalankan arahan:

$ zpool tambah tangki cache ada3

Di mana tangki adalah nama kolam anda dan ada3 adalah nama nod peranti untuk simpanan L2ARC anda.


Ringkasan

Untuk memendekkan cerita pendek, sistem operasi sering menyekat operasi menulis dalam memori utama, jika fail dibuka dalam mod tidak segerak. Ini tidak boleh dikelirukan dengan cache tulis ZFS, ZIL.

ZIL, secara lalai, adalah bahagian simpanan kolam yang tidak stabil di mana data digunakan untuk penyimpanan sementara sebelum disebarkan dengan betul ke seluruh VDEV. Sekiranya anda menggunakan SSD sebagai peranti ZIL khusus, ia dikenali sebagai SLOG. Seperti VDEV mana pun, SLOG boleh mengikut konfigurasi mirror atau raidz.

Cache yang dibaca, disimpan dalam memori utama, dikenali sebagai ARC. Namun, kerana saiz RAM yang terhad, anda selalu dapat menambahkan SSD sebagai L2ARC, di mana perkara yang tidak dapat dimasukkan ke dalam RAM disimpan di cache.

Port Sumber Terbuka Mesin Permainan Komersial
Rekreasi enjin permainan sumber terbuka dan bebas platform boleh digunakan untuk bermain lama dan juga beberapa tajuk permainan yang baru-baru ini. Ar...
Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...