Π’ ядро Linux 6.2 Π²ΠΎΠΉΠ΄ΡƒΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ RAID5/6 Π² Btrfs

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ядро Linux 6.2 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Btrfs, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ исправлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ «write hole» Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ RAID 5/6. Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сводится ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ссли ΠΊΡ€Π°Ρ… случился Π²ΠΎ врСмя записи, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠ· устройств RAID записался ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π° Π² ΠΊΠ°ΠΊΠΎΠΌ запись Π½Π΅ Π±Ρ‹Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π’ случаС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ восстановлСния RAID Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… нСдозаписанным Π±Π»ΠΎΠΊΠ°ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ состояниС Π±Π»ΠΎΠΊΠΎΠ² RAID рассинхронизиорвано. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Π»ΡŽΠ±Ρ‹Ρ… массивах RAID1/5/6, Π³Π΄Π΅ Π½Π΅ принято ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ€ для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ эффСктом.

Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ RAID, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ RAID1 Π² btrfs, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ использованиСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм Π² ΠΎΠ±Π΅ΠΈΡ… копиях, ΠΏΡ€ΠΈ нСсовпадСнии Π΄Π°Π½Π½Ρ‹Π΅ просто Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ срабатываСт Ссли ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ устройство Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ вмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°.

Однако Π² случаС RAID5/6 файловая систСма Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы для Π±Π»ΠΎΠΊΠΎΠ² чётности: Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠ² провСряСтся Ρ‚Π΅ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ всС снабТСны ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммой, Π° Π±Π»ΠΎΠΊ чётности ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…. Однако Π² случаС частичной записи этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ситуациях ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ этом случаС, ΠΏΡ€ΠΈ восстановлСнии массива Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ, попавшиС ΠΏΠΎΠ΄ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΡƒΡŽ запись, окаТутся восстановлСны Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π’ случаС btrfs эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°, Ссли производимая запись ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ мСньшС страйпа. ΠŸΡ€ΠΈ этом файловая систСма Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ чтСния-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ-записи (read-modify-write, RMW). Если ΠΏΡ€ΠΈ этом попадутся Π±Π»ΠΎΠΊΠΈ с Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΠΎΠΉ записью, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС опСрация RMW ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹, нСвзирая Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ внСсли измСнСния, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опСрация RMW провСряСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Π° ΠΏΡ€ΠΈ нСобходимости восстановлСния Π΄Π°Π½Π½Ρ‹Ρ… выполняСт ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм послС записи. К соТалСнию, Π² ситуации с записью Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ страйпа (RMW) это Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам Π½Π° вычислСниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ. Для RAID6 такая Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠΊΠ° Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π° Π² RAID6 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ запись Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ Π½Π° сразу 2 устройствах, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ вСроятно.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию RAID5/6 ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сводится ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Btrfs ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ хранСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ RAID1 (Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ) ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ RAID1C3 (3 ΠΊΠΎΠΏΠΈΠΈ) для ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π° для Π΄Π°Π½Π½Ρ‹Ρ… RAID5 ΠΈΠ»ΠΈ RAID6. ΠŸΡ€ΠΈ этом обСспСчиваСтся надёТная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ отсутствиС «write hole» с ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивноС использованиС мСста, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ для RAID5/6, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π° поврСТдСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ исправлСны.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для SSD Π² Btrfs Π² ядрС 6.2 Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ асинхронноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «discard» (ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ° освобоТдённых Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ физичСски). Достоинством этого Ρ€Π΅ΠΆΠΈΠΌΠ° являСтся высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·-Π·Π° эффСктивной Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ «discard» Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π€Π‘ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ Π² случаС с синхронным «discard» ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ освобоТдСния Π±Π»ΠΎΠΊΠΎΠ², Π° SSD ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π±ΠΎΠ»Π΅Π΅ Π½Π΅ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° fstrim, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС доступныС Π±Π»ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒΡΡ Π² Π€Π‘ Π±Π΅Π· нСобходимости Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сканирования ΠΈ Π±Π΅Π· замСдлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

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