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
