ОбновлСниС OpenZFS 2.1.14 ΠΈ 2.2.2 с устранСниСм ошибки, приводящСй ΠΊ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ выпуски ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenZFS 2.1.14 ΠΈ 2.2.2, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ZFS для Linux ΠΈ FreeBSD. Π’ обновлСниях устранСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ согласованности кэша dnode, приводящая ΠΊ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π²ΡˆΠΈΡ… пустыС области, ΠΏΡ€ΠΈ ΠΈΡ… ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² вСрсии 2.2.1, Π½ΠΎ исправлСниС оказалось нСэффСктивно. Ошибка Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΈ Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсённых Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ «cp» Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ coreutils 9.x. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² Red Hat Enterprise Linux ΠΈ дистрибутивах Π½Π° Π΅Π³ΠΎ основС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ проявляСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² RHEL 9 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ coreutils 8.x с ΠΈΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ «cp».

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся ΠΏΡ€ΠΈ использовании ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ копирования Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пустыС области Π² Ρ„Π°ΠΉΠ»Π°Ρ…. ΠŸΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π€Π‘ ΠΏΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°, Ссли опСрация Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ сразу послС измСнСния ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² dirty-кэшС ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π° Π½Π° диск.

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с пустыми областями Π² Ρ„Π°ΠΉΠ»Π°Ρ…, OpenZFS, начиная с выпуска 0.6.2, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ SEEK_HOLE ΠΈ SEEK_DATA, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ с диска. РаспознаваниС пустых областСй ΠΈ сохранСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½ΠΈΡ… производится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС сброса Π½Π° диск всСх ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² кэшС Π΄Π°Π½Π½Ρ‹Ρ…, связанных с Ρ„Π°ΠΉΠ»ΠΎΠΌ. Для инициирования сброса Π² OpenZFS имССтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, которая ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ присутствиС Π² кэшС нСсохранённых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ сброс ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° диск, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для использования SEEK_HOLE ΠΈ SEEK_DATA.

К соТалСнию ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° оказалась Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ стСчСнии ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π² Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ состоянии сброса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΎΡΡŒ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ ΠΈ Π½Π° дискС Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ старая информация ΠΎ содСрТимом Ρ„Π°ΠΉΠ»Π°, Ссли запрос ΠΏΠΎΠΏΠ°Π΄Π°Π» Π² нСбольшоС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя опСрациями сброса Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· кэша. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ пустых областСй, Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ части Π΄Π°Π½Π½Ρ‹Ρ…, посчитав ΠΈΡ… пустыми, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ с Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎ этого ΠΌΠΎΠ³Π»Π° внСсти Π² пустыС области измСнСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ «cp» ΠΌΠΎΠ³Π»ΠΎ привСсти ΠΊ созданию ΠΊΠΎΠΏΠΈΠΈ, содСрТащСй пустыС области Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

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

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