Компанія Cisco запропонувала файлову систему PuzzleFS для ядра Linux

Компанія Cisco запропонувала нову файлову систему PuzzleFS, реалізовану у вигляді модуля для ядра Linux, написаного мовою Rust. ФС розрахована на використання для розміщення ізольованих контейнерів та продовжує розвиток ідей, запропонованих у ФС Atomfs. Реалізація поки що знаходиться на стадії прототипу, підтримує складання з гілкою ядра Linux rust-next і відкрита під ліцензіями Apache 2.0 та MIT.

Проект націлений на обхід обмежень, що виникають під час використання образів контейнерів у форматі OCI (Open Container Initiative). PuzzleFS вирішує такі завдання як ефективне зберігання даних, що дублюються, можливість прямого монтування, повторюване складання образів і безпечна робота з пам'яттю.

Для дедуплікації даних, що повторюються в різних контейнерах, задіяний алгоритм FastCDC (Fast Content-Defined Chunking), що працює через поділ даних на фрагменти довільного розміру та ведення індексу з хешами оброблених фрагментів. Повторювані фрагменти зберігаються один раз і спільно індексуються всім шарів ФС, тобто. дедуплікація може охоплювати різні точки монтування (новий шар ФС може бути запущений на основі існуючого і використовувати наявні в ньому фрагменти даних при дедуплікації).

Складання образів контейнерів, що повторюється, досягається через визначення канонічного подання формату образів контейнерів. Пряме монтування (direct-mount) дозволяє монтувати образ контейнера у форматі OCI з глобального спільно використовуваного сховища без його попереднього розпакування та використовуючи як ідентифікатор хеш вмісту з маніфесту контейнера. Для верифікації цілісності даних за умов застосування загального сховища може застосовуватися механізм fs-verity, який при зверненні до файлів перевіряє відповідність зазначених у бінарному індексі хешів з фактичним вмістом.

Мова Rust обрана як поєднує високу продуктивність результуючого коду з можливостями безпечної роботи з пам'яттю, що дозволяє знизити ризик появи вразливостей, викликаних такими проблемами як звернення до області пам'яті після її звільнення та вихід за межі буфера. Застосування Rust для модуля ядра також дозволило спільно використовувати код у ядрі та компонентах, що працюють у просторі користувача, для створення єдиної захищеної реалізації.

Серед інших цілей проекту: дуже швидке складання та монтування образів, можливість використання необов'язкової проміжної стадії для перетворення (canonicalization) образів, необов'язковість повних проходів по дереву ФС у стилі mtree при використанні багатошарової структури, накладення змін у стилі casync та проста в реалізації архітектура.

Джерело: opennet.ru

Додати коментар або відгук