Aggiornamento del file system del cluster LizardFS 3.13.0-rc2

Dopo un anno di pausa nello sviluppo ripreso lavorando su un nuovo ramo di un file system distribuito tollerante agli errori LucertolaF 3.13 и pubblicato secondo candidato al rilascio. Recentemente verificato cambio di proprietà della società che sviluppa LizardFS, è stata adottata una nuova gestione e gli sviluppatori sono stati sostituiti. Negli ultimi due anni il progetto è stato ritirato dalla comunità e non gli ha prestato sufficiente attenzione, ma il nuovo team intende rilanciare il precedente rapporto con la comunità e stabilire una stretta interazione con essa. Il codice del progetto è scritto nei linguaggi C e C++ e distribuito da sotto licenza GPLv3.

lucertola è un file system cluster distribuito, che consente di distribuire i dati su diversi server, ma fornisce l'accesso ad essi sotto forma di un'unica grande partizione, con cui si lavora in modo simile alle tradizionali partizioni del disco. Una partizione montata con LizardFS supporta attributi di file POSIX, ACL, blocchi, socket, pipe, file di dispositivo, collegamenti simbolici e reali. Il sistema non presenta un singolo punto di guasto; tutti i componenti sono ridondanti. È supportata la parallelizzazione delle operazioni sui dati (più client possono accedere simultaneamente ai file).

Per garantire la tolleranza agli errori, i dati vengono divisi in repliche, che vengono distribuite su diversi nodi con ridondanza (più copie vengono posizionate su nodi diversi); se i nodi o le unità si guastano, il sistema continua a funzionare senza perdita di informazioni e ridistribuisce automaticamente i dati tenendo conto dei restanti nodi. Per espandere lo storage è sufficiente connettere ad esso nuovi nodi senza interrompere i lavori per la manutenzione (il sistema stesso replica parte dei dati su nuovi server e bilancia lo storage tenendo conto dei nuovi server). Puoi fare lo stesso per ridurre le dimensioni del cluster: puoi semplicemente disabilitare le apparecchiature obsolete che verranno rimosse dal sistema.

Dati e metadati vengono archiviati separatamente. Per il funzionamento si consiglia di installare due server di metadati funzionanti in modalità master-slave e almeno due server di archiviazione dati (chunkserver). Inoltre, per eseguire il backup dei metadati, è possibile utilizzare i server di registro per archiviare informazioni sulle modifiche ai metadati e consentire di ripristinare il funzionamento in caso di danni a tutti i server di metadati esistenti. Ogni file è diviso in blocchi (chunk), di dimensioni fino a 64 MB. I blocchi vengono distribuiti tra i server di archiviazione in base alla modalità di replica selezionata: standard (determinazione esplicita del numero di copie da posizionare su diversi nodi, anche in relazione alle singole directory - per dati importanti il ​​numero di copie può essere aumentato e per riduzione dei dati non importanti), XOR (RAID5 ) e EC (RAID6).

Lo spazio di archiviazione può raggiungere dimensioni pari a petabyte. Gli ambiti di applicazione includono l'archiviazione, lo storage di immagini di macchine virtuali, dati multimediali, backup, l'utilizzo come DRC (Disaster Recovery Center) e come storage in cluster di elaborazione ad alte prestazioni. LizardFS fornisce una velocità di lettura molto elevata per file di qualsiasi dimensione e, durante la scrittura, mostra buone prestazioni durante la scrittura di interi file di grandi e medie dimensioni, quando non vi sono modifiche costanti, lavoro intenso con file aperti e operazioni una tantum con un mucchio di piccoli file.

Aggiornamento del file system del cluster LizardFS 3.13.0-rc2

Tra le caratteristiche di FS si può anche notare la presenza del supporto per le istantanee, che riflettono lo stato dei file in un determinato momento, e un'implementazione integrata del "cestino" (i file non vengono eliminati immediatamente e sono disponibili per recupero per qualche tempo). L'accesso a una partizione può essere limitato dall'indirizzo IP o dalla password (simile a NFS). Esistono meccanismi di gestione delle quote e della qualità del servizio che consentono di limitare le dimensioni e la larghezza di banda per determinate categorie di utenti. È possibile creare strutture di storage distribuite geograficamente, i cui segmenti si trovano in diversi data center.

Il progetto LizardFS nasce nel 2013 come fork MooseFSe differisce principalmente per la presenza di una modalità di replica basata sui codici di correzione degli errori Reed-Solomon (analoghi a raidzN), supporto ACL esteso, presenza di un client per la piattaforma Windows, ottimizzazioni aggiuntive (ad esempio, quando si combina un client e un server di archiviazione, i blocchi, se possibile, vengono inviati con il nodo corrente e i metadati vengono memorizzati nella cache in memoria), un sistema di configurazione più flessibile, supporto per la lettura anticipata dei dati, quote di directory e rielaborazione interna.

Il rilascio di LizardFS 3.13.0 è previsto per la fine di dicembre. La principale innovazione di LizardFS 3.13 è l'uso di un algoritmo di consenso per garantire la tolleranza agli errori (cambio di server master in caso di guasto) Raft (utilizza la nostra implementazione di uRaft, precedentemente utilizzata in prodotti commerciali). L'utilizzo di uRaft semplifica la configurazione e riduce i ritardi di ripristino in caso di errore, ma richiede almeno tre nodi funzionanti, uno dei quali viene utilizzato per il quorum.

Altre modifiche: un nuovo client basato sul sottosistema FUSE3, che risolve i problemi con la correzione degli errori, il plugin nfs-ganesha è stato riscritto in linguaggio C. L'aggiornamento 3.13.0-rc2 corregge diversi bug critici che rendevano inutilizzabili le precedenti versioni di test del ramo 3.13 (le correzioni per il ramo 3.12 non sono ancora state pubblicate e l'aggiornamento da 3.12 a 3.13 porta ancora alla completa perdita di dati).

Nel 2020 il lavoro si concentrerà sullo sviluppo
agama, un nuovo kernel LizardFS completamente riscritto che, secondo gli sviluppatori, fornirà un triplo aumento delle prestazioni rispetto al ramo 3.12. Agama passerà a un'architettura guidata dagli eventi, basata su input/output asincrono ASIO, funzionano principalmente nello spazio utente (per ridurre la dipendenza dai meccanismi di caching del kernel). Inoltre, verranno offerti un nuovo sottosistema di debug e un analizzatore dell'attività di rete con supporto per l'ottimizzazione automatica delle prestazioni.

Il client LizardFS aggiungerà il supporto completo per le operazioni di scrittura con controllo delle versioni, che migliorerà l'affidabilità del ripristino di emergenza, risolverà i problemi che sorgono quando client diversi condividono l'accesso agli stessi dati e consentirà miglioramenti significativi delle prestazioni. Il client verrà trasferito al proprio sottosistema di rete che opera nello spazio utente. Il primo prototipo funzionante di LizardFS basato su Agama dovrebbe essere pronto nel secondo trimestre del 2020. Allo stesso tempo, promettono di implementare strumenti per integrare LizardFS con la piattaforma Kubernetes.

Fonte: opennet.ru

Aggiungi un commento