ZFS 101 — Memahami penyimpanan dan kinerja ZFS

ZFS 101 — Memahami penyimpanan dan kinerja ZFSZFS 101 — Memahami penyimpanan dan kinerja ZFS

ZFS 101 — Memahami penyimpanan dan kinerja ZFS

 

ZFS 101 — Memahami penyimpanan dan kinerja ZFSZFS 101 — Memahami penyimpanan dan kinerja ZFS

ZFS 101 — Memahami penyimpanan dan kinerja ZFS

Ketika kita semua memasuki bulan ketiga dari pandemi COVID-19 dan mencari proyek-proyek baru untuk membuat kita tetap terlibat (baca: waras), dapatkah kami menarik minat Anda untuk mempelajari dasar-dasar penyimpanan komputer? Diam-diam musim semi ini, kita sudah membahas beberapa dasar-dasar yang diperlukan seperti cara menguji kecepatan disk Anda dan apa sih RAID itu. Dalam cerita kedua, kami bahkan berjanji akan menindaklanjuti penjelajahan kinerja berbagai topologi multi-disk di ZFS, sistem file generasi berikutnya yang pernah Anda dengar karena kemunculannya di mana-mana dari Apple hingga Ubuntu.

Nah, hari ini adalah hari untuk mengeksplorasi, pembaca ZFS-penasaran. Ketahuilah di muka bahwa dalam kata-kata pengembang OpenZFS Matt Ahrens, “ini sangat rumit.”

Tetapi sebelum kita sampai pada angka — dan mereka datang, saya janji! —Untuk semua cara Anda dapat membentuk ZFS senilai delapan disk, kita perlu membicarakan tentang bagaimana ZFS menyimpan data Anda pada disk di tempat pertama.
Zpool, vdevs, dan perangkat

Untuk benar-benar memahami ZFS, Anda perlu memperhatikan struktur sebenarnya. ZFS menggabungkan manajemen volume tradisional dan lapisan sistem file, dan menggunakan mekanisme transaksional copy-on-write — keduanya berarti sistem ini sangat berbeda secara struktural dari sistem file konvensional dan array RAID. Set pertama blok bangunan utama untuk dipahami adalah zpools, vdevs, dan perangkat.
zpool

Zpool adalah struktur ZFS paling atas. Zpool berisi satu atau lebih vdev, yang masing-masing berisi satu atau lebih perangkat. Zpool adalah unit mandiri — satu komputer fisik mungkin memiliki dua atau lebih zpool terpisah di dalamnya, tetapi masing-masing sepenuhnya independen dari yang lain. Zpools tidak dapat berbagi vdevs satu sama lain.

Redundansi ZFS ada pada level vdev, bukan level zpool. Sama sekali tidak ada redundansi pada level zpool — jika

vdev penyimpanan atau vdev KHUSUS hilang, seluruh zpool hilang bersama itu.

Zpool modern dapat selamat dari hilangnya CACHE atau LOG ​​vdev — meskipun mereka mungkin kehilangan sejumlah kecil data kotor, jika mereka kehilangan LOG vdev selama pemadaman listrik atau kerusakan sistem.

Ini adalah kesalahpahaman umum bahwa “strip” ZFS menulis di seberang kolam — tetapi ini tidak akurat. Zpool bukanlah RAID0 yang tampak lucu — ini adalah JBOD yang tampak lucu, dengan mekanisme distribusi yang kompleks yang dapat berubah.

Sebagian besar, penulisan didistribusikan di seluruh vdev yang tersedia sesuai dengan ruang kosong yang tersedia, sehingga semua vdev secara teoritis akan penuh pada saat yang sama. Dalam versi ZFS yang lebih baru, pemanfaatan vdev juga dapat diperhitungkan — jika satu vdev secara signifikan lebih sibuk daripada yang lain (mis: karena beban baca), ia dapat dilewati untuk sementara waktu untuk menulis walaupun memiliki rasio ruang kosong tertinggi tersedia.

Mekanisme kesadaran pemanfaatan yang dibangun ke dalam metode distribusi tulis ZFS modern dapat mengurangi latensi dan meningkatkan throughput selama periode beban yang luar biasa tinggi — tetapi tidak boleh keliru jika carte blanche mencampur disk berkarat lambat dan SSD cepat mau tak mau di kolam yang sama. Kolam yang tidak cocok seperti itu umumnya masih akan bekerja seolah-olah itu seluruhnya terdiri dari perangkat paling lambat yang ada.
vdev

Setiap zpool terdiri dari satu atau lebih vdevs (kependekan dari perangkat virtual). Setiap vdev, pada gilirannya, terdiri dari satu atau lebih perangkat nyata. Sebagian besar vdev digunakan untuk penyimpanan biasa, tetapi beberapa kelas dukungan khusus vdev juga ada — termasuk CACHE, LOG, dan SPECIAL. Masing-masing tipe vdev ini dapat menawarkan satu dari lima topologi — perangkat tunggal, RAIDz1, RAIDz2, RAIDz3, atau mirror.

RAIDz1, RAIDz2, dan RAIDz3 adalah varietas khusus dari apa yang disebut oleh greybeards penyimpanan “RAID

parsial diagonal.” Angka 1, 2, dan 3 merujuk pada berapa banyak blok paritas yang dialokasikan untuk setiap strip data. Daripada memiliki seluruh disk yang didedikasikan untuk paritas, RAIDz vdevs mendistribusikan paritas tersebut secara merata di seluruh disk. Array RAIDz dapat kehilangan banyak disk karena memiliki blok paritas; jika kehilangan yang lain, itu gagal, dan membawa turun zpool dengannya.

Mirror vdevs persis seperti apa suaranya — dalam mirror vdev, setiap blok disimpan pada setiap perangkat di vdev. Meskipun mirror dua-lebar adalah yang paling umum, mirror vdev dapat berisi jumlah perangkat yang sewenang-wenang — tiga arah adalah umum dalam pengaturan yang lebih besar untuk kinerja pembacaan yang lebih tinggi dan ketahanan terhadap kesalahan. Mirror vdev dapat bertahan dari kegagalan, selama setidaknya satu perangkat di vdev tetap sehat.

Vdev perangkat tunggal juga seperti apa suaranya — dan itu pada dasarnya berbahaya. Satu perangkat vdev tidak

dapat selamat dari kegagalan apa pun — dan jika sedang digunakan sebagai penyimpanan atau vdev KHUSUS, kegagalannya akan menghancurkan seluruh zpool. Berhati-hatilah di sini.

CACHE, LOG, dan SPECIAL vdevs dapat dibuat menggunakan salah satu dari topologi di atas — tetapi ingat, hilangnya SPECIAL vdev berarti hilangnya kumpulan, sehingga topologi yang berlebihan sangat dianjurkan.

Baca Juga: