След година пауза в разработката работата по новата версия на отказоустойчивата разпределена файловата система и вторият кандидат за релиз. Наскоро смена на собствениците на компанията, разработваща LizardFS, новото ръководство встъпи в длъжност и разработчиците бяха сменени. Последните две години проектът се дистанцира от общността и не й отделяше нужното внимание, но новият екип има намерение да възстанови предишните отношения с общността и да установи тясно взаимодействие с нея. Кодът на проекта е написан на C и C++ и е лицензирана под GPLv3.
LizardFS е разпределена клъстерна файловата система, която позволява разпределяне на данните на различни сървъри, но предоставя достъп до тях под формата на единен голям дял, работата с който се извършва по аналогия с традиционните дискови дялове. В монтирания дял с LizardFS се поддържат POSIX атрибути на файловете, ACL, блокирания, сокети, канали, устройства, символични и твърди линкове. Системата няма единична точка на провал, всички компоненти са резервирани. Поддържа се паралелизация на операциите с данни (няколко клиенти могат едновременно да достъпват файлове).
За да се осигури отказоустойчивост, данните се разделят на реплики, които се разпределят на различни възли с резервиране (на различни възли се разполагат няколко копия) — в случай на повреда на възли или носители, системата продължава да работи без загуба на информация и автоматично преразпределя данните с оглед на останалите възли. За разширяване на хранилището е достатъчно да се свържат нови възли без прекъсване на обслужването (системата сама репликира част от данните на новите сървъри и балансира хранилището, като взема предвид новите сървъри). По същия начин може да се постъпи и за намаляване на размера на клъстера — просто трябва да се изключи остарялото оборудване от състава.
Данните и метаданните се съхраняват отделно. За работа се препоръчва да се инсталират два сървъра за метаданни, които работят в режим master-slave, както и поне два сървъра за съхранение на данни (chunkserver). Допълнително за резервиране на метаданни могат да се използват лог-сървъри, които съхраняват информация за промените в метаданните и позволяват възстановяване на работата в случай на повреда на всички налични сървъри за метаданни. Всеки файл се разбива на блокове (chunk) с размер до 64 МБ. Блоковете се разпределят по сървърите за съхранение в зависимост от избрания режим на репликация: стандартен (яко определяне на броя копия за разпределение на различни възли, включително привързване към отделни каталози — за важни данни броят копия може да се увеличи, а за незначителни да се намали), XOR (RAID5) и EC (RAID6).
Съхранението може да мащабира до петабайтни размери. Между областите на приложение се споменават архиви, съхранение на образи на виртуални машини, мултимедийни данни, резервни копия, използване като DRC (Център за възстановяване след бедствия) и като съхранение в клъстери с високопроизводителни изчисления. LizardFS осигурява много висока скорост на четене на файлове с всякакъв размер, а при запис показва добра производителност при запис на цели големи и средни файлове, когато няма постоянна модификация, интензивна работа с отворени файлове и единични операции с куп малки файлове.
Сред особеностите на ФС също така може да се отбележи наличието на поддръжка на снимки (snapshots), отразяващи състоянието на файловете в определен момент, и вградена реализация на „кораба“ (файловете не се изтриват веднага и за известно време са достъпни за възстановяване). Достъпът до раздела може да бъде ограничен по IP-адрес или парола (по аналогия с NFS). Има механизми за квоти и управление на качеството на услугите, позволяващи ограничаване на размера и пропускната способност за някои категории потребители. Възможно е създаването на териториално разпределени хранилища, сегменти от които са разположени в различни дата центрове.
Проектът LizardFS беше основан през 2013 година като форк , и се различава главно с наличието на режим на репликация на база кодове за корекция на грешки Рийд—Соломон (аналога на raidzN), разширена поддръжка на ACL, наличието на клиент за платформа Windows, допълнителни оптимизации (например, при съвместяване на клиента и сървъра за съхранение, блоковете по възможност се предоставят от текущия възел, а метаданните се кешират в паметта), по-гъвкава система за настройка, поддръжка на предварително четене на данни, квоти за директории и вътрешни преработки.
Пускането на LizardFS 3.13.0 е планирано за края на декември. Основната новост на LizardFS 3.13 е използването на алгоритъм за постигане на консенсус за осигуряване на отказоустойчивост (преключване на майстор-сървъри в случай на неуспех). (използва се собствена реализация на 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
