-
Notifications
You must be signed in to change notification settings - Fork 0
/
btrfs.tex
137 lines (91 loc) · 6.63 KB
/
btrfs.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
\documentclass[12pt]{article}
\usepackage{sbc-template}
\usepackage{authblk}
\usepackage{graphicx,url}
%\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\sloppy
\title{Introduction to Brtfs}
\author[1]{Giovanni Crepaldi}
\author[2]{Lucas Zampieri}
\author[3]{Mauricio Scherer}
\affil[1]{[email protected]}
\affil[2]{[email protected]}
\affil[3]{[email protected]}
\address{Universidade do Vale do Rio dos Sinos (Unisinos) \\
Porto Alegre -- RS -- Brazil
\nextinstitute
Ciência da Computação -- Unisinos\\
Porto Alegre, BR.
\nextinstitute
Jogos Digitais -- Unisinos\\
Porto Alegre, BR.
}
\begin{document}
\maketitle
\section{Informações gerais}
Btrfs é um sistema de arquivos de cópia em gravação (COW) para Linux, com foco na tolerância de
falhas, reparo e administração fácil.
Desenvolvido em conjunto com várias empresas e licenciada pela GLP, além de ser opensource.
O sistema de arquivos Btrfs é estável, significa que não se projeta mudanças em sua estrutura, a não
ser que seja por razões muito fortes.
A base de código está em constante desenvolvimento, garantindo que ele permaneça estável, rápido
e cada vez melhor, permitindo que o sistema fique cada vez melhor a cada nova verão do Linux e por
esse motivo é sempre recomendável os usuários a executarem o Kernel mais moderno.
O sistema possui uma ampla gama de recursos, alguns dos recursos são, armazenamento de arquivos baseado em extensão, embalagens de arquivos pequenos com economia de espaço, alocação dinâmica de inode, reconhecimento de SSD (armazenamento em flash) e backup incremental eficiente.
\newpage
\section{Estrutura de sistema de arquivos}
O sistema de arquivos btrs é consistido por árvores encadeadas. Árvores são separadas por nodos, que são ordenados em uma árvore auto-balanceada, do tipo b-tree\cite{B-tree}. Nodos internos possuem referências a outros nodos internos do nível superior.
O sistema de arquivos btrfs não faz distinção de disco físico e lógico, sendo assim um endereço lógico pode referenciar um disco assim como N discos, de acordo com as configurações de RAID. Seus endereços lógicos antes de serem usados precisam ser convertidos para físicos, para isso existe um árvore chamada chunk-tree\cite{Btrfs-design}, Seu caminho reverso, isto é físico para lógico pode ser convertido utilizando outra árvore chamada dev-tre.
O btrfs utiliza um sistema de escrita chamado de cópia em gravação(COW), em que um mesmo recurso é compartilhado entre diversos processos, até que seja modificado. Oque isto quer dizer é que diversos processos possuem um ponteiro para o mesmo endereço de processo, e o compartilham, até que um deles requisite um modificação, então é feita uma cópia privada do recurso para aquele processo, assim não afetando o dado que é compartilhado com outros processos.
\newpage
\section{Snapshots}
Snapshot permite que seja feito um backup instantâneo do sistema com ele em execução. O sistema marca um ponto no disco e isola o restante anterior como somente leitura e a partir dali as mudanças são acrescentadas separadamente, dessa forma pode-se retornar a um estado anterior do sistema, sendo um processo mais simples e eficiente.
Para criar um snapshot dentro do sistema Btrfs usamos o seguinte comando:
\textit{btrfs subvolume snapshot /caminho/do/subvolume /caminho/do/snapshot}.
Com o comando acima um novo snapshot será criado em seu sistema com todos os arquivos originais da pasta que foi usada de base. Ele só será montado quando o usuário montar a pasta em seu sistema através do comando mount ou /etc/fstab.
Pode-se criar snapshot somente leitura utilizando o comando:
\textit{btrfs subvolume snapshot -r /caminho/do/subvolume /caminho/do/snapshot}.
Os dados jamais serão alterados, apenas excluídos pelo usuário, podendo ser utilizado como uma base de dados fixa, como uma referência de backup ou como uma base default para instalação de outros subvolumes em novas instalações de SO.
Algumas regras para criação de snapshots são:
- Não existe snapshots recursivo;
- Ter no máximo 12 snapshots por partição;
- Devem ser criados no mesmo volume e disco que os dados originais;
- Evitar snapshots de partições que possuam dependências entre si;
- evitar snapshots que precisem de propriedades especiais ou pontos de montagem especiais para funcionar.
Para deletarmos um snapshot utiliza-se o comando:
\textit{btrfs subvolume delete /caminho/do/subvolume}.
\newpage
\section{Vantagens e desvantagens}
O sistema de arquivos Btrfs tem diversas vantagens como por exemplo a alocação dinâmica de inode, que evita os limites Ext2 / 3 / 4 em números de inodes, são alocados dinamicamente conforme necessário o limite rígido é $2^{64}$ que são cerca de 18,4 quintilhões, empacotamento eficiente de arquivos pequenos que isto acaba sendo importante para descktops com dezenas de milhares de arquivos, compactação em LZO (que é muito rápida), integridade de dados em razão do processo de depuração em segundo plano para localizar e corrigir erros em arquivos com cópias redundantes. Pode também na maioria das vezes se auto-recuperar por falhas em algumas configurações por causa da natureza de cópia em gravação, lidar com arquivos SWAP e partições SWAP, suporta Criptografia com EncFS ou TrueCrypt, envia e recebe (salva diferenças entre instantâneos para um fluxo binário, entre outras. Por ser um sistema de arquivos com muitas vantagens, acaba sendo bem pesado e complexo utilizá-lo, o usuário precisa conhece-lo muito para poder utilizá-lo com máxima eficácia.
\newpage
\begin{thebibliography}{9}
\bibitem{Wikipedia}
Btrfs on wikipedia.
\\\texttt{https://pt.wikipedia.org/wiki/Btrfs}
\bibitem{linuxfoundation}
Linux Foundation - Introduction to btrfs.
\\\texttt{https://training.linuxfoundation.org/resources/\
webinars/introduction-to-btrfs/}
\bibitem{B-tree}
Rodeh, Ohad (2007). B-trees, shadowing, and clones (PDF).
\\\texttt{https://www.usenix.org/legacy/events/lsf07/tech/rodeh.pdf}
\bibitem{Btrfs-design}
Wiki Kernel. Btrfs design.
\\\texttt{https://btrfs.wiki.kernel.org/index.php/Btrfs_design}
\bibitem{UnixUniverse}
UnixUniverse.
\\\texttt{https://unixuniverse.com.br/linux}
\bibitem{linuxFoundation2}
Linux foundation.
\\\texttt{https://www.linuxfoundation.org/blog/2010/11/\
new-btrfs-free-tutorial-and-request-for-end-user-feedback-on-btrfs/}
\bibitem{DioLinux}
DioLinux
\\\texttt{https://plus.diolinux.com.br/t/discussao-btrfs-vs-ext4/9819/5}
\bibitem{Sobre Linux}
Sobre Linux
\\\texttt{https://sobrelinux.info/questions/773150/\
what-are-the-advantages-of-btrfs-for-end-users}
\end{thebibliography}
\end{document}