1 poin oleh GN⁺ 2024-10-31 | 1 komentar | Bagikan ke WhatsApp

Apa itu deduplikasi di OpenZFS?

  • Definisi deduplikasi: Di OpenZFS, sebelum data ditulis ke disk, sistem memeriksa apakah data tersebut sudah ada di disk. Jika sudah ada, sistem tidak melakukan penulisan baru dan hanya menambahkan referensi ke salinan yang sudah ada.
  • Tantangan deduplikasi: Sulit untuk memastikan apakah data sudah ada di disk dan mengetahui lokasinya. Ini memerlukan input/output (IO) tambahan, yang dapat menyebabkan penurunan performa.

Bagaimana deduplikasi bekerja?

  • Cara kerja: Saat deduplikasi diaktifkan, blok data disiapkan dan checksum dihitung. Sebelumnya, allocator metaslab akan mengalokasikan ruang, tetapi ketika deduplikasi aktif, checksum dicari terlebih dahulu di tabel deduplikasi.
  • Tabel deduplikasi: Disimpan dalam bentuk hash table yang menggunakan checksum sebagai kunci, dan lokasi disk serta jumlah referensi sebagai nilainya. Ini dianggap sebagai bagian dari metadata pool.

Masalah deduplikasi tradisional

  • Masalah tabel deduplikasi: Deduplikasi tradisional diimplementasikan menggunakan objek hash table disk OpenZFS. Ini adalah struktur yang kompleks dan tidak cocok untuk aplikasi seperti deduplikasi.
  • Penggunaan memori: Pembacaan tabel deduplikasi di-cache di ARC, sehingga jika RAM mencukupi, bagian pembacaan dari pembaruan tabel dapat dikurangi.
  • Masalah entri unik: Ruang yang dibutuhkan untuk melacak entri unik di tabel deduplikasi menjadi masalah. Blok dengan jumlah referensi 1 tetap memakan ruang di tabel deduplikasi, dan jika data yang sama tidak pernah ditulis lagi, biaya tersebut tidak bisa dipulihkan.

Bagaimana FastDedup menyelesaikan masalah ini?

  • Mengurangi daftar entri aktif: Untuk menurunkan penggunaan memori, jejak memori dari daftar entri aktif diperkecil. Tabel deduplikasi baru mengurangi bagian "nilai" dari entri menjadi 72 byte.
  • Log deduplikasi: Alih-alih daftar entri aktif, sistem menggunakan log untuk mencatat perubahan, lalu memutar ulang log saat pemulihan setelah crash. Log disimpan di memori agar pencarian tetap cepat.
  • Flushing log inkremental: Untuk mengelola ukuran log, sebagian log ditulis ke ZAP pada setiap transaksi. Saat ada tekanan memori, flushing log dipercepat.

Ringkasan GN⁺

  • Fitur baru OpenZFS, "FastDedup", dikembangkan untuk mengatasi masalah pada deduplikasi tradisional. Fitur ini mengurangi penggunaan memori dan memungkinkan pengelolaan data yang lebih efisien melalui log.
  • Deduplikasi hanya berguna untuk workload tertentu, dan untuk penggunaan umum masih bisa tidak efisien. Ini karena overhead pengelolaan tabel deduplikasi tetap besar.
  • Proyek lain dengan fitur serupa adalah deduplikasi di Btrfs, yang dapat menjadi alternatif pada file system lain.

1 komentar

 
GN⁺ 2024-10-31
Opini Hacker News
  • Tertarik oleh judulnya dan mengklik, meskipun tidak terlalu peduli dengan ZFS, tetapi akhirnya membaca hampir seluruh artikelnya. Penjelasannya sangat jelas, dan saya terutama menyukai tema CSS mobile-nya. Ringkasan singkat ada di bagian bawah artikel.

  • Selain pembahasan copy_file_range, akan menarik jika di file system bisa mencari file berukuran 1MB atau lebih yang memiliki hash sama, lalu secara selektif menerapkan deduplikasi.

  • Masalah deduplikasi tradisional adalah overhead-nya terlalu besar, sehingga sulit mendapatkan manfaat kecuali pada beban kerja tertentu. Saya pernah melihat penghematan deduplikasi/kompresi 3:1 untuk beban kerja VMWare pada array Pure dan Dell/EMC.

  • Efektivitas deduplikasi sangat dipengaruhi oleh ukuran blok yang di-hash. Semakin kecil bloknya, semakin besar kemungkinan menemukan blok yang cocok. Secara pribadi saya lebih menyukai ukuran blok 4KB.

  • Saya menginginkan deduplikasi "offline" atau deduplikasi "malas". Saat deduplikasi diaktifkan, semua operasi tulis dan pelepasan memerlukan lookup dan penulisan ke tabel deduplikasi. Saya ingin penulisan data bisa selesai dengan cepat.

  • Saya sangat menantikan deduplikasi cepat. Saya ingin menggunakan deduplikasi ZFS untuk data ArchiveBox. Sepertinya akan memungkinkan untuk mengarsipkan banyak URL dan membiarkan file system mengompresi semuanya.

  • Saya telah menggunakan deduplikasi ZFS pada arsip pribadi, dan saat ini berhasil mengurangi penggunaan ruang disk hingga 3 kali lipat. Dari sisi keandalan, ZFS bekerja sangat baik dan dapat mencegah kehilangan data.

  • Deduplikasi umum secara teori terdengar bagus, tetapi dalam praktiknya tidak berjalan baik. IPFS mencoba mendeduplikasi data dengan menggunakan potongan berukuran variabel, tetapi pada praktiknya tidak ada perbedaan dan hanya menambah kompleksitas.

  • Akan bagus jika hardware khusus pada disk controller ditingkatkan sehingga bisa mengekspos hash blok ke sistem untuk perhitungan seperti ECC.

  • Saya berharap API file system memiliki bentuk yang benar-benar berbeda. API file system di semua OS sudah mandek karena kompatibilitas.

  • Jika performa tulis itu penting, tidak perlu melakukan deduplikasi saat penulisan. Deduplikasi bisa dilakukan nanti, secara bersamaan, dan dengan prioritas rendah.