Rilis ZFS di Linux 0.8.0, implementasi ZFS untuk kernel Linux

Setelah hampir dua tahun pembangunan disajikan melepaskan ZFS di Linux 0.8.0, implementasi sistem file ZFS yang dikemas sebagai modul untuk kernel Linux. Modul telah diuji dengan kernel Linux dari 2.6.32 hingga 5.1. Paket instalasi siap segera hadir akan disiapkan untuk distribusi Linux utama termasuk Debian, Ubuntu, Fedora, RHEL/CentOS. Modul ZFS pada Linux sudah termasuk dalam distribusi Debian, Ubuntu, Gentoo, Sabayon Linux dan ALT Linux.

Sebagai bagian dari ZFS di Linux, implementasi komponen ZFS yang terkait dengan pengoperasian sistem file dan fungsi pengelola volume telah disiapkan. Secara khusus, komponen berikut diimplementasikan: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) dan ZPL (ZFS POSIX Layer). Selain itu, proyek ini menyediakan kemampuan untuk menggunakan ZFS sebagai backend untuk sistem file cluster Luster. Pekerjaan proyek didasarkan pada kode ZFS asli yang diimpor dari proyek OpenSolaris dan ditingkatkan dengan peningkatan dan perbaikan dari komunitas Illumos. Proyek ini sedang dikembangkan dengan partisipasi karyawan Laboratorium Nasional Livermore di bawah kontrak dengan Departemen Energi AS.

Kode didistribusikan di bawah lisensi CDDL gratis, yang tidak kompatibel dengan GPLv2, yang tidak mengizinkan ZFS di Linux untuk diintegrasikan ke dalam cabang utama kernel Linux, karena pencampuran kode di bawah lisensi GPLv2 dan CDDL tidak diperbolehkan. Untuk menghindari ketidakcocokan lisensi ini, diputuskan untuk mendistribusikan seluruh produk di bawah lisensi CDDL sebagai modul yang dapat dimuat secara terpisah, yang disediakan secara terpisah dari inti. Stabilitas ZFS pada basis kode Linux dinilai sebanding dengan sistem file lain untuk Linux.

Perubahan besar:

  • Menambahkan dukungan bawaan untuk enkripsi data yang disimpan pada tingkat sistem file dan partisi. Algoritme enkripsi default adalah aes-256-ccm. Perintah "zfs load-key" telah diusulkan untuk memuat kunci enkripsi;
  • Menerapkan kemampuan untuk mentransfer data terenkripsi saat menjalankan perintah 'zfs send' dan 'zfs accept'. Saat menentukan opsi "-w", data yang sudah dienkripsi di kumpulan dipindahkan ke kumpulan lain apa adanya, tanpa dekripsi perantara. Dengan penyalinan seperti itu, data tetap dilindungi oleh kunci pengirim, yang memungkinkan penggunaan mode ini untuk mencadangkan ke sistem yang tidak dapat dipercaya (jika penerima disusupi, penyerang tidak akan dapat mengakses data tanpa kunci);
  • Menambahkan dukungan untuk menghapus drive utama dari kumpulan penyimpanan, yang terhubung baik secara individu maupun sebagai bagian dari cermin. Penghapusan dilakukan dengan perintah "zpool remove". Proses penghapusan menyalin data dari drive yang dikecualikan ke drive utama yang tersisa di kumpulan;
  • Menambahkan perintah "zpool checkpoint" untuk menyimpan keadaan kumpulan saat ini dengan kemampuan untuk memutar kembali perubahan lebih lanjut ke titik waktu yang disimpan (snapshot seluruh kumpulan dibuat). Fitur ini dapat berguna dalam proses melakukan pekerjaan administrasi rumit yang berpotensi berbahaya, yang dalam kondisi normal menyebabkan perubahan yang tidak dapat diubah (misalnya, mengaktifkan tanda untuk fungsionalitas ZFS baru atau menghapus data);
  • Perintah "zpool trim" telah ditambahkan untuk memberi tahu drive yang digunakan di kumpulan tentang sektor yang tidak lagi digunakan. Penggunaan operasi TRIM memungkinkan untuk meningkatkan efisiensi SSD dan mencegah penurunan kinerjanya. Properti "autotrim" baru telah diusulkan untuk mengaktifkan proses latar belakang yang terus-menerus dalam mentransmisikan perintah TRIM;
  • Menambahkan perintah "zpool initialize" untuk menginisialisasi semua ruang disk yang tidak terisi, yang memungkinkannya siap digunakan secara instan, tanpa penurunan kinerja pada akses pertama (misalnya, saat menghosting penyimpanan virtual seperti VMware VMDK);
  • Menambahkan dukungan untuk akuntansi dan kuota tingkat proyek, selain kuota tingkat pengguna dan grup yang tersedia sebelumnya. Intinya, proyek adalah ruang terpisah dari objek yang terkait dengan pengidentifikasi terpisah (ID proyek). Pengikatan ditentukan melalui operasi 'chattr -p' atau melalui pewarisan atribut. Untuk manajemen proyek, perintah "zfs project" dan "zfs projectspace" disajikan, yang memungkinkan Anda mengelola pembuatan proyek dan menetapkan batas ruang disk untuknya;
  • Menambahkan kemampuan untuk membuat skrip Lua untuk mengotomatiskan berbagai pekerjaan dengan ZFS. Skrip dijalankan di lingkungan khusus yang terisolasi menggunakan perintah "zpool program";
  • Perpustakaan baru diimplementasikan pyzfs, yang menyediakan API stabil untuk mengelola ZFS dari aplikasi Python. Pustaka adalah pembungkus di sekitar libzfs_core dan menyediakan serangkaian fungsi yang identik, tetapi menggunakan tipe Python yang lebih mirip;
  • Utilitas arcstat, arcsummary, dan dbufstat telah dibuat kompatibel dengan Python 3. Utilitas arcstat.py, arc_summary.py, dan dbufstat.py telah diganti namanya menjadi versi tanpa ekstensi ".py";
  • Menambahkan dukungan untuk antarmuka kernel Linux Direct IO (O_DIRECT), yang memungkinkan akses data tanpa buffering dan melewati cache;
  • Pengoptimalan kinerja diperkenalkan:
    • Pekerjaan perintah "scrub" dan "resilver" telah dipercepat karena pemisahan menjadi dua fase (fase terpisah telah dialokasikan untuk memindai metadata dan menentukan lokasi blok dengan data pada disk, yang memungkinkan verifikasi lebih lanjut menggunakan data berurutan membaca);
    • Menambahkan dukungan untuk kelas Alokasi,
      memungkinkan SSD yang relatif kecil untuk dikumpulkan dan digunakan untuk menyimpan hanya beberapa jenis blok yang umum digunakan, seperti metadata, data DDT, dan blok file kecil;

    • Peningkatan kinerja perintah admin seperti
      "zfs list" dan "zfs get", dengan meng-cache metadata yang diperlukan untuk operasinya;

    • Menambahkan dukungan untuk paralelisasi operasi alokasi blok dengan menjalankan proses pengalokasi terpisah untuk setiap grup metaslab. Pada sistem konvensional, ada peningkatan kinerja 5-10%, tetapi pada sistem besar (8 SSD 128 GB, NUMA 24 inti, RAM 256 GB), peningkatan operasi alokasi blok bisa mencapai 25%;
    • Menambahkan kemungkinan penundaan eksekusi perintah "resilver" (membangun kembali distribusi data dengan mempertimbangkan perubahan dalam konfigurasi drive) - jika yang sebelumnya belum selesai saat memulai operasi baru, penangan baru akan mulai mengeksekusi hanya setelah akhir yang sebelumnya;
    • Pengoptimalan telah ditambahkan ke ZIL (ZFS Intent Log) untuk memungkinkan pembuatan dan pemrosesan blok di hadapan blok yang masih diproses oleh penyimpanan;
    • Mengurangi waktu pendaftaran untuk partisi (zvol) dalam sistem. Ketika kumpulan berisi sejumlah besar partisi, mereka sekarang tersedia segera setelah melakukan "impor zpool";
    • Menambahkan dukungan untuk perhitungan hash SHA256 yang dipercepat perangkat keras dan operasi enkripsi AES-GSM menggunakan chip Intel QAT (Quick Assist Technology). Menambahkan dukungan untuk akselerasi perangkat keras chipset Intel C62x dan CPU Atom C3000.

Sumber: opennet.ru

Tambah komentar