BetrFS: Um sistema de arquivos com otimização de B-trees

BetrFS: Um sistema de arquivos com otimização de B-trees

BetrFS: Um sistema de arquivos com otimização de B-trees

 Após publicar a matéria sobre o sistema de arquivos GEFS estar sendo portado para os OpenBSD, eu me senti inspirado em escrever este artigo sobre o sistema de arquivos BetrFS (já que o Bε trees serviu de base para a criação do GEFS).

 Bε-tree File System, ou BetrFS é um sistema de arquivos Linux que utiliza BƐ-trees ao invés do tradicional B-tree como sua estrutura de dados para a otimização de escrita. O BetrFS foi baseado na implementação do fractal tree da empresa Tokutek Inc. Apesar de ainda ser um projeto em desenvolvimento (ultima versão lançada foi a v0.6 em Fevereiro de 2022 mas a realmente verificada é a 0.4.1 de Janeiro de 2021), o BetrFS já apresenta grandes resultados em seus objetivos Como podem ser conferidas nas tabelas abaixo:


Benchmarks do BetrFS


 A equipe do projeto conseguiu atingir seus objetivos ao adotar recursos como Write-Optimized Indexes (também conhecido como WOIs que podem acelerar as operações do sistema de arquivos); Upserts; folhas maiores (Large leaves (2-4 MB); Blind Writes (essencial para o ganho de desempenho por tratar escritar mais rápidas do que as leituras e quando possível, evita leitura em favor da escrita); Lexicographic ordering on disk que ordena dados e metadados para leituras e buscas sequenciais.

 Mas como todo sistema de arquivos, o BetrFS também possui seu prós e contras (o que cabe a cada um de nós avaliar quando deve ser adotados). O pró do BetrFS está em trabalhar com escrita sequencial de arquivos menores, scan (como o comando grep) e buscas no sistema de arquivos (como o comando find). Por outro lado, o seu contra está em trabalhar com arquivos grandes de quase todas as formas (I/O sequencial de arquivos grandes, exclusão de arquivos grandes e renomear arquivos grandes); nesta parte ainda há trabalhos a serem feitos.

Conclusão


 Ainda há muito trabalho a ser feito, mas o BetrFS já está sendo cotado como um sistema de arquivos que pode ser utilizado no mundo real. Quando em uso, o BetrFs segue uma pilha no seguinte padrão:


VFS -> BetrFS * -> B^e Tree * -> ext4


BetrFS utilizado como pilha de sistema de arquivos
BetrFS utilizado como pilha de sistema de arquivos

 O que me leva a pensar se no futuro a equipe de desenvolvimento do Ext4 não abandone o B-tree e passe a adotar o Bε-tree como arvore padrão (lembrando que não necessariamente um sistema de arquivos está preso a um modelo de estrutura de arvore. O Ext4 sobre sofre de certas limitações em seu design já que ele é baseado no sistema de arquivos do sistema operacional Minix mas pode ser que não na parte de tree). Isso poderia lhe dar uma sobrevida já que o Ext4 está sendo abandonado até mesmo no Android como filesystem padrão. E porque não também no Btrfs? Seria uma ideia interessante quando o Bε-tree evoluir mais.


Agradecimento

 A meu aluno Júlio Cezar que revisou o texto e descobriu que o link o BetrFS não estava acessível.


Site oficial do BetrFS

Mais sobre o Btrfs


Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (31) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (33) comp (1) compressores (7) container (8) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (2) desenvolvimento (97) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (22) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (21) Funtoo Linux (13) games (94) garbage collector (1) gerenciadores de pacotes (4) glaucus (7) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (12) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (38) kde (1) kernel (141) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (172) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (6) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (1) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (44) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (2) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (67) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (13) segurança digital (25) servidor web (2) servidores (3) shell (9) shell script (8) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (8) terminal (89) terminal de comandos (19) toca do tux (1) toybox (27) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (3) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)