След едногодишно затишие в разработката работата по новата версия на отказоустойчивата разпределена файлова система и втората кандидатка за релизите. Скоро смяна на собствениците на компанията, развиваща LizardFS, беше приета нова ръководство и разработчиците бяха сменени. Последните две години проектът се отдалечи от общността и не й се отделяше достатъчно внимание, но новият екип е решен да възвърне предишните отношения с общността и да установи тясно взаимодействие с нея. Кодът на проекта е написан на езиците C и C++ и под лиценз GPLv3.
LizardFS е разпределена клъстерна файлова система, която позволява разпределянето на данни между различни сървъри, като предоставя достъп до тях под формата на единен голям дял, работа с който се извършва по аналогия с традиционните дискозни дялове. В монтирания дял с LizardFS се поддържат POSIX атрибути на файловете, ACL, блокировки, сокети, канали, устройствени файлове, символични и твърди линкове. Системата няма единична точка на отказ, всички компоненти са резервирани. Поддържа се паралелизация на операциите с данни (няколко клиента могат да достъпват файловете едновременно).
За осигуряване на отказоустойчивост, данните се разпределят на реплики, които са разположени на различни възли с резервиране (на различни възли се съхраняват няколко копия) — в случай на неизправност на възлите или съхранителите, системата продължава да работи без загуба на информация и автоматично преразпределя данните в зависимост от останалите възли. За разширяване на хранилището е достатъчно да се свържат нови възли без спиране на работата за обслужване (системата сама репликира част от данните на новите сървъри и балансира хранилището с оглед на новите сървъри). Аналогично може да се постъпи и за намаляване на размера на клъстера — просто може да се изключи остарялото оборудване.
Данните и метаданните се съхраняват отделно. За работа се препоръчва да се инсталират два сървъра за метаданни, работещи в режим master-slave, както и поне два сървъра за съхранение на данни (chunkserver). Допълнително, за резервиране на метаданните могат да се използват лог-сървъри, които съхраняват информация за промените в метаданните и позволяват възстановяване на работата в случай на повреждане на всички налични сървъри за метаданни. Всеки файл се разрязва на блокове (chunk) с размер до 64 МБ. Блоковете се разпределят по сървърите за съхранение в съответствие с избрания режим на репликация: стандартен (изрично определяне на броя копия за разположение на различни възли, включително в зависимост от отделни директории — за важни данни броят на копията може да се увеличи, а за незначителни да се намали), XOR (RAID5) и EC (RAID6).
Съхранилището може да се мащабира до петабайтни размери. Споменават се области на приложение като архивиране, съхранение на образи на виртуални машини, мултимедийни данни, резервни копия, използване като DRC (Център за възстановяване след бедствия) и като хранилище в кластери за високопроизводителни изчисления. LizardFS осигурява много висока скорост на четене на файлове с всякакъв размер, а при запис показва добра производителност при записване на цели големи и средни файлове, когато няма постоянни модификации, интензивна работа с отворени файлове и единични операции с множество малки файлове.
Сред особеностите на ФС също така може да се отбележи наличието на поддръжка на моментни снимки, отразяващи състоянието на файловете в определено време, и вградена реализация на "кошница" (файловете не се изтриват веднага и за известно време са налични за възстановяване). Достъпът до дяла може да бъде ограничен по IP адрес или парола (по аналогия с NFS). Налице са механизми за квоти и управление на качеството на услугата, позволяващи ограничаване на размера и пропускната способност за някои категории потребители. Възможно е създаването на географски разпределени хранилища, сегментите на които са разположени в различни датацентрове.
Проектът LizardFS е основан през 2013 година като форк , и се различава, главно, с наличието на режим на репликация на база кодове за корекция на грешки на Рид—Соломон (аналог raidzN), разширена поддръжка на ACL, наличието на клиент за Windows, допълнителни оптимизации (например, при комбиниране на клиента и сървъра за съхранение, блоковете се предоставят от текущия възел, а метаданните се кешират в паметта), по-гъвкава система за настройка, поддръжка на предвиждащо четене на данни, квоти за директории и вътрешни подобрения.
Планираното издание на LizardFS 3.13.0 ще се състои в края на декември. Основната новост в LizardFS 3.13 е използването на алгоритъм за постигане на консенсус за осигуряване на устойчивост при откази (превключване на master-сървъри в случай на сбой) (използва се собствена реализация на uRaft, която преди това е била използвана в търговски продукти). Използването на uRaft опростява настройката и намалява забавянията при възстановяване след сбой, но изисква наличие на поне три работещи възела, един от които се използва за кворума.
От другите промени: нов клиент на база FUSE3 подсистема, решение на проблеми с корекцията на грешки, плъгинът nfs-ganesha е пренаписан на C. В ъпдейт 3.13.0-rc2 са коригирани няколко критични грешки, които правеха предишните тестови версии на клон 3.13 неподходящи за употреба (корекциите за клон 3.12 все още не са публикувани, а ъпдейтът от 3.12 до 3.13 все още води до пълна загуба на данни).
През 2020 година работата ще бъде съсредоточена върху разработката на
, ново напълно пренаписано ядро на LizardFS, което, според разработчиците, ще осигури трикратно увеличение на производителността в сравнение с клона 3.12. В Agama ще се осъществи преминаване към събитийно-ориентирана архитектура (event driven), асинхронен вход/изход на база , работа предимно в пространството на потребителя (за намаляване на зависимостта от кеширащите механизми на ядрото). Допълнително ще бъдат предложени нова отладъчна подсистема и анализатор на мрежовата активност с поддръжка на автонастройка на производителността.
В клиента LizardFS ще бъде добавена пълна поддръжка на версиониране на операции за запис, което ще подобри надеждността при възстановяване след неуспех, ще реши проблемите, свързани с едновременния достъп на различни клиенти до одни и същи данни и ще позволи значително увеличение на производителността. Клиентът ще бъде предаден на собствена мрежова подсистема, работеща в пространството на потребителя. Първият работен прототип на LizardFS на база Agama е планиран да бъде подготвен през второто тримесечие на 2020 година. В същото време се очаква реализирането на средства за интеграция на LizardFS с платформата Kubernetes.
Източник: opennet.ru
