АтомарныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Fedora Linux Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ пСрСвСсти Π½Π° Π€Π‘ Π‘omposefs

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Fedora Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ пСрСвСсти Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ обновляСмыС Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ дистрибутива ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Composefs. Π’ случаС утвСрТдСния прСдлоТСния ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠΌ FESCo (Fedora Engineering Steering Committee), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΌ Π·Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ дистрибутива Fedora, Composefs Π½Π°Ρ‡Π½Ρ‘Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² сборках Fedora Silverblue (GNOME), Fedora Kinoite (KDE), Fedora CoreOS, Fedora IoT, Fedora Sway Atomic ΠΈ Fedora Budgie Atomic.

ИзмСнСниС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½Ρ‹Ρ… сборках ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π», Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² дальнСйшСм Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ для систСмного Ρ€Π°Π·Π΄Π΅Π»Π° срСдства Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ цСлостности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π Π°Π·Π΄Π΅Π»Ρ‹ /etc ΠΈ /var ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ записи.

БСйчас Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π° /usr Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» монтируСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΌ запись, Π° внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ запрСщаСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€Π°Π² доступа («chattr +i /»). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности осущСствляСтся Π½Π° этапС обновлСния Ρ€Π°Π·Π΄Π΅Π»Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ поврСТдСния ΠΈ измСнСния, внСсённыС Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π±Π΅Π· инициирования ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всСх Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «ostree fsck».

Ѐайловая систСма Composefs Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ надстройки Π½Π°Π΄ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² ядрС Π€Π‘ OverlayFS ΠΈ EROFS, ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для эффСктивного совмСстного хранСния содСрТимого Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… дисковых ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ EROFS (Extendable Read-Only File System) ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ трСбованиям Composefs начиная с вСрсии ядра Linux 5.15, Π° OverlayFS — начиная с ядра 6.5. Composefs Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ многослойныС Π€Π‘, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π€Π‘ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… Π€Π‘ Linux, Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π² качСствС Π½ΠΈΠΆΠ½Π΅Π³ΠΎ слоя.

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

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

Для экономии дисковой памяти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² Composefs Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ указываСтся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ индСкс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТатся всС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€Π°Π²Π° доступа ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свСдСния. Π˜Π½Π΄Π΅ΠΊΡΡ‹ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Π€Π‘ ΠΈ хранится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ EROFS (Π² loopback-Ρ€Π΅ΠΆΠΈΠΌΠ΅ монтируСтся ΠΎΠ±Ρ€Π°Π· EROFS, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅). НСпосрСдствСнно Ρ„Π°ΠΉΠ»Ρ‹ всСх ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² хранятся Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π€Π‘ (ext4, xfs, btrfs) ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° rusted.overlay.redirect, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ OverlayFS Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ Ρ…ΡΡˆΡƒ содСрТимого.

Для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ содСрТимого ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ всСго ΠΎΠ±Ρ€Π°Π·Π° Π² условиях ΠΎΠ±Ρ‰Π΅Π³ΠΎ хранСния примСняСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ fs-verity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ провСряСт соотвСтствиС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ индСксС Ρ…ΡΡˆΠ΅ΠΉ с фактичСским содСрТимым — Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ внСсёт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ» Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ поврСдятся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сбоя, Ρ‚ΠΎ подобная свСрка выявит расхоТдСниС.

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