Keluaran ZFS pada Linux 0.8.0, pelaksanaan ZFS untuk kernel Linux

Selepas hampir dua tahun pembangunan dibentangkan melepaskan ZFS pada Linux 0.8.0, pelaksanaan sistem fail ZFS yang dibungkus sebagai modul untuk kernel Linux. Modul ini telah diuji dengan kernel Linux dari 2.6.32 hingga 5.1. Pakej pemasangan sedia akan datang tidak lama lagi akan disediakan untuk pengedaran Linux utama termasuk Debian, Ubuntu, Fedora, RHEL/CentOS. Modul ZFS pada Linux telah pun disertakan dalam pengedaran Debian, Ubuntu, Gentoo, Sabayon Linux dan ALT Linux.

Sebagai sebahagian daripada ZFS pada Linux, pelaksanaan komponen ZFS yang berkaitan dengan kedua-dua pengendalian sistem fail dan fungsi pengurus volum telah disediakan. Khususnya, komponen berikut dilaksanakan: SPA (Pengumpuk Kolam Storan), DMU (Unit Pengurusan Data), ZVOL (Volume Ditiru ZFS) dan ZPL (Lapisan ZFS POSIX). Selain itu, projek ini menyediakan keupayaan untuk menggunakan ZFS sebagai backend untuk sistem fail kluster Lustre. Kerja projek adalah berdasarkan kod ZFS asal yang diimport daripada projek OpenSolaris dan dipertingkatkan dengan penambahbaikan dan pembetulan daripada komuniti Illumos. Projek ini sedang dibangunkan dengan penyertaan pekerja Makmal Kebangsaan Livermore di bawah kontrak dengan Jabatan Tenaga AS.

Kod ini diedarkan di bawah lesen CDDL percuma, yang tidak serasi dengan GPLv2, yang tidak membenarkan ZFS pada Linux disepadukan ke dalam cabang utama kernel Linux, kerana pencampuran kod di bawah lesen GPLv2 dan CDDL tidak dibenarkan. Untuk memintas ketidakserasian lesen ini, telah diputuskan untuk mengedarkan keseluruhan produk di bawah lesen CDDL sebagai modul boleh dimuat secara berasingan, yang dibekalkan secara berasingan daripada teras. Kestabilan pangkalan kod ZFS pada Linux dinilai sebagai setanding dengan sistem fail lain untuk Linux.

Perubahan utama:

  • Menambah sokongan terbina dalam untuk penyulitan data yang disimpan pada tahap sistem fail dan sekatan. Algoritma penyulitan lalai ialah aes-256-ccm. Perintah "zfs load-key" telah dicadangkan untuk memuatkan kunci penyulitan;
  • Melaksanakan keupayaan untuk memindahkan data yang disulitkan apabila melaksanakan perintah 'zfs send' dan 'zfs receive'. Apabila menentukan pilihan "-w", data yang telah disulitkan dalam kumpulan dipindahkan ke kumpulan lain sebagaimana adanya, tanpa penyahsulitan perantaraan. Dengan penyalinan sedemikian, data kekal dilindungi oleh kunci penghantar, yang membolehkan penggunaan mod ini untuk sandaran kepada sistem yang tidak boleh dipercayai (sekiranya penerima bertolak ansur, penyerang tidak akan dapat mengakses data tanpa kunci);
  • Sokongan tambahan untuk mengalih keluar pemacu utama daripada kolam storan, disambungkan secara individu dan sebagai sebahagian daripada cermin. Pembuangan dijalankan dengan arahan "zpool remove". Proses pemadaman menyalin data daripada pemacu yang dikecualikan kepada pemacu utama yang tinggal dalam kumpulan;
  • Menambahkan arahan "zpool checkpoint" untuk menyimpan keadaan semasa kolam dengan keupayaan untuk melancarkan semula perubahan selanjutnya kepada titik masa yang disimpan (gambaran keseluruhan kolam dibuat). Ciri ini boleh berguna dalam proses melaksanakan kerja pentadbiran kompleks yang berpotensi berbahaya, yang dalam keadaan biasa membawa kepada perubahan yang tidak dapat dipulihkan (contohnya, mengaktifkan bendera untuk fungsi ZFS baharu atau mengosongkan data);
  • Perintah "zpool trim" telah ditambahkan untuk memaklumkan pemacu yang digunakan dalam kumpulan tentang sektor yang tidak lagi digunakan. Penggunaan operasi TRIM memungkinkan untuk meningkatkan kecekapan SSD dan mencegah kemerosotan prestasinya. Sifat "autotrim" baharu telah dicadangkan untuk membolehkan proses latar belakang berterusan menghantar arahan TRIM;
  • Menambahkan arahan "zpool initialize" untuk memulakan semua ruang cakera yang tidak diperuntukkan, yang membolehkannya sedia serta-merta untuk digunakan, tanpa penurunan prestasi pada akses pertama (contohnya, apabila mengehos storan maya seperti VMware VMDK);
  • Menambah sokongan untuk perakaunan dan kuota peringkat projek, sebagai tambahan kepada kuota peringkat pengguna dan kumpulan yang tersedia sebelum ini. Pada dasarnya, projek ialah ruang berasingan objek yang dikaitkan dengan pengecam berasingan (ID projek). Pengikatan ditakrifkan melalui operasi 'chattr -p' atau melalui pewarisan atribut. Untuk pengurusan projek, arahan "projek zfs" dan "ruang projek zfs" dibentangkan, yang membolehkan anda mengurus penciptaan projek dan menetapkan had ruang cakera untuknya;
  • Menambah keupayaan untuk mencipta skrip Lua untuk mengautomasikan pelbagai kerja dengan ZFS. Skrip dijalankan dalam persekitaran terpencil khas menggunakan arahan "zpool program";
  • Perpustakaan baharu dilaksanakan pyzfs, yang menyediakan API yang stabil untuk mentadbir ZFS daripada aplikasi Python. Perpustakaan ialah pembalut di sekeliling libzfs_core dan menyediakan set fungsi yang sama, tetapi menggunakan jenis Python yang lebih dekat;
  • Utiliti arcstat, arcsummary dan dbufstat telah dibuat serasi dengan Python 3. Utiliti arcstat.py, arc_summary.py dan dbufstat.py telah dinamakan semula kepada versi tanpa sambungan ".py";
  • Sokongan tambahan untuk antara muka kernel Linux Direct IO (O_DIRECT), yang membolehkan mengakses data tanpa menimbal dan memintas cache;
  • Pengoptimuman prestasi diperkenalkan:
    • Kerja arahan "scrub" dan "resilver" telah dipercepatkan kerana pemisahan kepada dua fasa (fasa berasingan telah diperuntukkan untuk mengimbas metadata dan menentukan lokasi blok dengan data pada cakera, yang membolehkan pengesahan lanjut menggunakan data berjujukan membaca);
    • Menambah sokongan untuk kelas Peruntukan,
      membenarkan SSD yang agak kecil dikumpulkan dan digunakan untuk menyimpan hanya jenis tertentu blok yang biasa digunakan, seperti metadata, data DDT dan blok fail kecil;

    • Peningkatan prestasi arahan pentadbir seperti
      "senarai zfs" dan "zfs get", dengan menyimpan metadata yang diperlukan untuk operasinya;

    • Menambah sokongan untuk penyelarasan operasi peruntukan blok dengan menjalankan proses pengalokasi berasingan untuk setiap kumpulan metaslab. Pada sistem konvensional, terdapat peningkatan prestasi sebanyak 5-10%, tetapi pada yang besar (8 128 GB SSD, 24 teras NUMA, 256 GB RAM), peningkatan dalam operasi peruntukan blok boleh mencapai 25%;
    • Menambahkan kemungkinan pelaksanaan tertunda perintah "resilver" (membina semula pengedaran data dengan mengambil kira perubahan dalam konfigurasi pemacu) - jika yang sebelumnya belum selesai apabila memulakan operasi baru, maka pengendali baru akan mula melaksanakan hanya selepas akhir yang sebelumnya;
    • Pengoptimuman telah ditambahkan pada ZIL (ZFS Intent Log) untuk membolehkan membuat dan memproses blok dengan kehadiran blok yang masih diproses oleh storan;
    • Mengurangkan masa pendaftaran untuk partition (zvol) dalam sistem. Apabila kolam mengandungi sejumlah besar partition, ia kini tersedia serta-merta selepas melakukan "import zpool";
    • Menambah sokongan untuk pengiraan dipercepatkan perkakasan bagi cincang SHA256 dan operasi penyulitan AES-GSM menggunakan cip Intel QAT (Teknologi Bantuan Cepat). Menambah sokongan untuk pecutan perkakasan cipset Intel C62x dan CPU Atom C3000.

Sumber: opennet.ru

Tambah komen