Π Π΅Π»ΠΈΠ· OpenZFS 2.4.0, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ZFS для Linux ΠΈ FreeBSD

ПослС 11 мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenZFS 2.4.0, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ZFS для Linux ΠΈ FreeBSD. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ Β«ZFS on LinuxΒ» ΠΈ Ρ€Π°Π½Π΅Π΅ ограничивался Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ модуля для ядра Linux, Π½ΠΎ послС слияния с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· FreeBSD Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π½Π°Π½ основной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ OpenZFS ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½.

Π Π°Π±ΠΎΡ‚Π° OpenZFS ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° с ядрами Linux c 4.18 ΠΏΠΎ 6.18 ΠΈ всСми Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ FreeBSD, начиная с 13.3. Код распространяСтся ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL. OpenZFS ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ FreeBSD ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав дистрибутивов Debian, Ubuntu, Gentoo, NixOS ΠΈ ALT Linux. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй Π² блиТайшСС врСмя Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для основных дистрибутивов Linux, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Debian, Ubuntu, Fedora, RHEL/CentOS.

OpenZFS прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ZFS, связанных ΠΊΠ°ΠΊ с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ‚Π°ΠΊ ΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Ρ‚ΠΎΠΌΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ΠΈ ZPL (ZFS POSIX Layer). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ZFS Π² качСствС бэкСнда для кластСрной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Lustre. Наработки OpenZFS основаны Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ZFS, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenSolaris ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ исправлСниями ΠΎΡ‚ сообщСства Illumos. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся ΠΏΡ€ΠΈ участии сотрудников ЛивСрморской Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ с ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎΠΌ энСргСтики БША.

Код распространяСтся ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL, которая нСсовмСстима с GPLv2, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ OpenZFS Π² состав основной Π²Π΅Ρ‚ΠΊΠΈ ядра Linux, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ смСшиваниС ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ лицСнзиями GPLv2 ΠΈ CDDL нСдопустимо. Для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠΉ нСсовмСстимости Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ для Linux Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ модуля, поставляСмого ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ядра. Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ OpenZFS оцСниваСтся ΠΊΠ°ΠΊ сопоставимая с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π€Π‘ для Linux.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания ΠΊΠ²ΠΎΡ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π³Ρ€ΡƒΠΏΠΏ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… вСрсиях ΠΊΠ²ΠΎΡ‚Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Ссли для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠ²ΠΎΡ‚Π° Π½Π΅ Π±Ρ‹Π»Π° установлСна.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π° Ρ€Π΅ΠΆΠΈΠΌΠ° прямого Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (O_DIRECT, Direct I/O) Π½Π° использованиС лСгковСсного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π΅ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (Uncached I/O) для запросов, Π½Π΅ Π²Ρ‹Ρ€Π°Π²Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ страницы памяти, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² Direct I/O.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ограничСния скорости ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ размСщСния Π±Π»ΠΎΠΊΠΎΠ², ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ vdev (Virtual Device) Π·Π° счёт агрСгирования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ использования для Π½ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Ρ… свободных областСй вмСсто помСщСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² ΠΌΠ΅Π»ΠΊΠΈΠ΅ свободныС области.
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π·Π° счёт использования инструкций AVX2 Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° AES-GCM. Π’ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… тСстах ускорСниС достигаСт 80%.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ZIL-Π±Π»ΠΎΠΊΠΎΠ² (ZFS Intent Log) Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… vdev ΠΈΠ»ΠΈ Π½Π° ΠΎΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ устройствС SLOG, Π½ΠΎ ΠΈ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… vdev. Если Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ vdev связан с Тёстким диском, Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ vdev c SSD-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° SSD, Π° связанныС с Π½ΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈ ZIL Π½Π° Тёсткий диск ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ лишниС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ выставлСниС свойства special_small_blocks для Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² (ZVOL), Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π»ΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ vdev, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° SSD-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ пСрСзаписи Β«zfs rewrite -PΒ», ΠΏΠΎ возмоТности ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ логичСскоС врСмя создания, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ, просто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Π΅ Π² ΠΏΡƒΠ» ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ², Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  • Для ΠΊΠΎΠΌΠ°Π½Π΄ Β«zpool trimΒ», Β«zpool scrubΒ» ΠΈ Β«zpool initializeΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опция Β«-aΒ» (β€”all), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сразу для всСх ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΠ»ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«zpool scrub -S -EΒ» для выполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ