Pärast rohkem kui aasta kestnud arendust on avaldatud projekti OpenZFS 2.3.0 väljaanne, mis arendab ZFS failisüsteemi rakendust Linuxi ja FreeBSD jaoks. Projekt on tuntud kui "ZFS Linuxis" ja varem piirdus see ainult Linuxi tuumamooduli arendamisega, kuid pärast FreeBSD koodi sulandumist tunnustati seda OpenZFS peamise rakendusena ja ümbernimetati.
OpenZFS töö on testitud Linuxi tuumadega vahemikus 4.18 kuni 6.12 ja kõigi FreeBSD harudega alates 13.3. Kood levitatakse vabandava litsentsi CDDL all. OpenZFS-i kasutatakse juba FreeBSD-s ja see kuulub Debian, Ubuntu, Gentoo, NixOS ja ALT Linuxi distributsioonide hulka. Uue versiooni paketid valmistatakse peagi ette peamiste Linuxi distributsioonide jaoks, sealhulgas Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS pakub ZFS komponentide rakendust, mis on seotud nii failisüsteemi toimimise kui ka mahuhalduriga. Rakendatud on järgmised komponendid: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ja ZPL (ZFS POSIX Layer). Projekt võimaldab samuti kasutada ZFS-i klastri failisüsteemi Lustre tagaplaanina. OpenZFS-i arendustööd põhinevad algsel ZFS-i koodil, mille on importinud OpenSolaris projekt ja mida on laiendatud Illumose kogukonna muudatuste ja tõrketeatega. Projekti arendavad Livermore'i riikliku laboratooriumi töötajad USA energiaameti lepingu alusel.
Kood levitatakse vabandava litsentsi CDDL all, mis ei ole ühilduv GPLv2-ga, mis ei võimalda OpenZFS-i integreerimist Linuxi tuuma põhiharu, kuna GPLv2 ja CDDL litsentside koodi segamine on vastuvõetamatu. Litsentsi ühilduvuse kõrvaldamiseks otsustati levitada Linuxi tooteid täielikult CDDL litsentsi all eraldi allalaaditava moodulina, mis on tarnitud eraldi tuumast. OpenZFS-i koodibaasi stabiilsust hinnatakse sarnaseks teiste Linuxi failisüsteemidega.
Peamised muudatused:
- On rakendatud võimalus lisada olemasolevasse RAIDZ massiivi uusi kettaid ilma töö katkestamata ja ilma uue salvestusseadmese rühma loomise vajaduseta. Ülejõudsete andmete ümberjaotamine seoses uute ketastega toimub automaatselt. Ketta olemasolevale rühmale lisamiseks võib kasutada käsku „zpool attach POOL raidzP-N NEW_DEVICE”, ja taustprotsessi laiendamise ajaloo jälgimiseks - „zpool status”.
- Oluliselt on kiirendatud andmeblokkide deduplicitatsiooni operatsioonide täitmist. Optimeerimised hõlmavad muu hulgas deduplicitatsiooni tabeli formaate, seega tuleb olemasolevates basseinides pakutud optimeerimiste rakendamiseks lubada valik «fast_dedup», mille järel luuakse uued deduplicitatsiooni tabelid, mida kasutatakse koos vanade tabelitega.
- Lisatud vahetu sisendi/väljundi režiim (Direct IO), mis võimaldab lugemise ja kirjutamise operatsioone läbi viia ARC (Adaptive Replacement Cache) puhverdamisest kõrvalehoidmisega. See režiim parandab efektiivsust olukordades, kus puhverdamine võib täiendavate mälus kopeerimise operatsioonide tõttu tulemuslikkust negatiivselt mõjutada, näiteks NVMe seadmete kasutamise korral.
- Enamikesse käskudesse (zfs list|get|mount|version, zpool status|list|get|version) on lisatud valik «-j» JSON formaadis väljundi jaoks.
- Failide ja kataloogide nimede maksimaalne suurus on suurendatud 255-lt 1023 märgini (uus suurus on valitud 255 4- baitiste sümbolite paigutuse baasil).
- Toimusid jõudluse optimeerimised, mis puudutavad erinevaid koodibaasi osi.
- Kerneli moodulisse on lisatud valikud:
- dmu_ddt_copies
- raidz_expand_max_copy_bytes
- raidz_expand_max_reflow_bytes
- raidz_io_aggregate_rows
- spa_cpus_per_allocator
- spa_num_allocators
- zap_shrink_enabled
- zfetch_max_idistance
- zfs_active_allocator
- zfs_arc_shrinker_seeks
- zfs_dedup_log_flush_entries_min
- .zfs_dedup_log_flush_flow_rate_txgs
- zfs_dedup_log_flush_min_time_ms
- zfs_dedup_log_flush_passes_max
- zfs_dedup_log_mem_max
- zfs_dedup_log_mem_max_percent
- zfs_dedup_log_txg_max
- zfs_dio_enabled
- zfs_dio_write_verify_events_per_second
- zfs_resilver_defer_percent
- zfs_scrub_after_expand
- zfs_snapshot_no_setuid
- zfs_vdev_direct_write_verify
- zio_taskq_write_tpq
Allikas: opennet.ru
