The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "Btrfs/pt-br"
(35 intermediate revisions by the same user not shown) | |||
Line 23: | Line 23: | ||
O Btrfs pode ser usado para gerenciar os discos físicos que ele usa e os discos físicos são adicionados a um volume Btrfs. Em seguida, o BTRFS pode criar subvolumes do volume no qual os arquivos podem ser armazenados. | O Btrfs pode ser usado para gerenciar os discos físicos que ele usa e os discos físicos são adicionados a um volume Btrfs. Em seguida, o BTRFS pode criar subvolumes do volume no qual os arquivos podem ser armazenados. | ||
Ao contrário dos sistemas de arquivos Linux tradicionais, os sistemas de arquivos btrfs alocarão armazenamento sob demanda do volume subjacente. | |||
No mundo btrfs, a palavra volume corresponde a um pool de armazenamento ([[ZFS]]) ou a um grupo de volumes (LVM). | |||
No mundo | |||
* '' devices '' - um ou vários volumes físicos subjacentes. | * '' devices '' - um ou vários volumes físicos subjacentes. | ||
Line 38: | Line 34: | ||
== Criando um Volume == | == Criando um Volume == | ||
Para criar um volume btrfs básico, você precisará de um disco vazio extra. Execute os seguintes passos: | |||
Para criar um volume | |||
{{console|body= | {{console|body= | ||
# ##i## mkfs.btrfs /dev/sdxy | # ##i## mkfs.btrfs /dev/sdxy | ||
btrfs-progs v4.17.1 | btrfs-progs v4.17.1 | ||
See http://btrfs.wiki.kernel.org for more information. | |||
Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. | Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. | ||
Line 82: | Line 76: | ||
}} | }} | ||
{{Important| | {{Important| Recomenda-se que nada seja armazenado diretamente neste diretório raiz do volume de nível superior (ID 5).}} | ||
== | == Criando Subvolumes == | ||
Btrfs | Btrfs tem um conceito de subvolumes. Subvolume é uma árvore de arquivos POSIX montável independentemente (mas não um dispositivo de bloco). Existem vários esquemas básicos para layout de subvolumes (incluindo instantâneos), bem como suas misturas. | ||
Vamos criar filhos do subvolume de nível superior (ID 5). Nós teremos: | |||
* {{c|@data}} - | * {{c|@data}} - servirá como montável {{c|/data}} | ||
* {{c|.snapshots}} - | * {{c|.snapshots}} - aqui os instantâneos serão armazenados | ||
{{console|body= | {{console|body= | ||
Line 101: | Line 95: | ||
}} | }} | ||
== | == O Subvolume Padrão == | ||
{{Note| | {{Note| Alterar o subvolume padrão com {{c|btrfs subvolume default}} tornará o nível superior do sistema de arquivos acessível somente quando as opções de montagem {{c|subvol}} ou {{c|subvolid}} forem especificadas}} | ||
Quando o dispositivo de bloco btrfs é montado sem especificar um subvolume, o padrão é usado. Para verificar o subvolume padrão, execute: | |||
{{console|body= | {{console|body= | ||
# ##i## btrfs subvolume get-default /mnt/btrfs-top-level | # ##i## btrfs subvolume get-default /mnt/btrfs-top-level | ||
Line 111: | Line 105: | ||
}} | }} | ||
Por conveniência, vamos tornar o subvolume {{c|@data}} como o padrão. É bom verificar primeiro o ID do subvolume. Ou {{c|btrfs subvolume list}} ou {{c|btrfs subvolume show}} pode ser usado para isso | |||
{{console|body= | {{console|body= | ||
Line 119: | Line 113: | ||
}} | }} | ||
Agora você pode tornar este subvolume como padrão: | |||
{{console|body= | {{console|body= | ||
# ##i## btrfs subvolume set-default 256 /mnt/btrfs-top-level | # ##i## btrfs subvolume set-default 256 /mnt/btrfs-top-level | ||
Line 126: | Line 120: | ||
}} | }} | ||
Neste ponto, você pode parar de trabalhar no subvolume de nível superior (ID 5) e, em vez disso, montar diretamente o subvolume {{c|@data}}. | |||
{{console|body= | {{console|body= | ||
Line 135: | Line 129: | ||
}} | }} | ||
== | == Subvolumes Aninhados == | ||
{{Note| | {{Note| Subvolumes aninhados não farão parte de instantâneos criados a partir de seu subvolume pai. Portanto, um motivo típico é excluir certas partes do sistema de arquivos de serem instantâneos.}} | ||
Vamos criar um subvolume aninhado separado para {{c|/data/independent}}. | |||
{{console|body= | {{console|body= | ||
Line 147: | Line 141: | ||
}} | }} | ||
Normalmente você vai querer "dividir" áreas que são "completas" e/ou "consistentes" em si mesmas. Exemplos para esse particionamento mais refinado podem ser {{c|/var/log}}, {{c|/var/www}} ou {{c|/var/lib/postgresql}}. | |||
== /etc/fstab == | == /etc/fstab == | ||
Para montar automaticamente o subvolume {{c|@data}} após a reinicialização, você precisa modificar {{c|/etc/fstab}} | |||
{{file|name=/etc/fstab|desc=fstab for btrfs|body= | {{file|name=/etc/fstab|desc=fstab for btrfs|body= | ||
Line 157: | Line 151: | ||
}} | }} | ||
{{Warning| | {{Warning| De acordo com [https://btrfs.readthedocs.io/en/latest/Administration.html#mount-options btrfs docs] a maioria das opções de montagem se aplicam a todo o sistema de arquivos e somente as opções no primeiro subvolume montado terão efeito. Isso significa que (por exemplo) você não pode definir por subvolume {{c|nodatacow}}, {{c|nodatasum}} ou {{c|compress}}.}} | ||
Agora vamos verificar se essas alterações estavam corretas: | |||
{{console|body= | {{console|body= | ||
# ##i## cd / | # ##i## cd / | ||
Line 168: | Line 162: | ||
}} | }} | ||
Você percebeu que, embora tenhamos montado nosso subvolume {{c|@data}}, o subvolume aninhado {{c|@data/independent}} também está presente? | |||
== Snapshots == | == Instantâneos (Snapshots) == | ||
Com a finalidade de verificar este recurso interessante do btrfs, vamos preencher nosso sistema de arquivos com alguns dados de exemplo primeiro | |||
{{console|body= | {{console|body= | ||
Line 179: | Line 173: | ||
}} | }} | ||
Como você provavelmente se lembra no nível superior (ao lado do subvolume {{c|@data}}) você também criou o subvolume {{c|.snapshots}}. Você pode montá-lo agora para criar alguns instantâneos: | |||
{{console|body= | {{console|body= | ||
# ##i## mkdir /mnt/snapshots | # ##i## mkdir /mnt/snapshots | ||
Line 185: | Line 179: | ||
}} | }} | ||
Um instantâneo é um subvolume como qualquer outro, com determinado conteúdo inicial. Por padrão, os instantâneos são criados para leitura e gravação. As modificações de arquivo em um instantâneo não afetam os arquivos no subvolume original. Vamos criar um instantâneo de leitura e gravação para {{c|/data}} e instantâneo somente leitura para {{c|/data/independent}} | |||
{{console|body= | {{console|body= | ||
Line 194: | Line 188: | ||
}} | }} | ||
Mais uma vez, os subvolumes aninhados não farão parte dos instantâneos criados a partir de seu subvolume pai. Portanto, você não deve se surpreender ao comparar o conteúdo do {{c|/data}} com o conteúdo do {{c|/mnt/snapshots}} | |||
{{console|body= | {{console|body= | ||
Line 210: | Line 204: | ||
}} | }} | ||
Neste ponto, você pode estar interessado em [https://btrfs.readthedocs.io/en/latest/Send-receive.html Enviar e Receber recursos do btrfs]. | |||
{{Note| | {{Note| De acordo com [https://btrfs.readthedocs.io/en/latest/Subvolumes.html btrfs docs] um instantâneo não é um backup: instantâneos funcionam usando o comportamento de cópia na gravação do BTRFS. Um instantâneo e o original do qual foi tirado inicialmente compartilham todos os mesmos blocos de dados. Se esses dados forem danificados de alguma forma (raios cósmicos, setor de disco defeituoso, acidente com dd no disco), o instantâneo e o original serão danificados ao mesmo tempo.}} | ||
== Wrap up == | == Embrulhar (Wrap up) == | ||
{{Important| | {{Important| Recomenda-se executar {{c|btrfs scrub}} de vez em quando. Por exemplo: Mensalmente.}} | ||
Scrub | Scrub é a funcionalidade de verificação e reparo online que verifica a integridade dos dados e metadados, supondo que a estrutura da árvore esteja correta. Você pode executá-lo em um sistema de arquivos montado; ele é executado como um processo em segundo plano durante a operação normal. | ||
Para iniciar um scrub (Em segundo plano) no sistema de arquivos que contém {{c|/data}} execute: | |||
{{console|body= | {{console|body= | ||
Line 227: | Line 221: | ||
}} | }} | ||
Para verificar o estado de uma depuração em execução: | |||
{{console|body= | {{console|body= | ||
Line 243: | Line 237: | ||
}} | }} | ||
Agora você deve estar no ponto em que pode começar a usar o btrfs para uma variedade de tarefas. Embora haja muito mais sobre o btrfs do que o abordado nesta breve introdução, agora você deve ter uma boa compreensão dos conceitos fundamentais nos quais o btrfs se baseia. | |||
Agora você deve estar no ponto em que pode começar a usar o | |||
[[Category:Btrfs]] | |||
[[Category: | |||
[[Category:Filesystems]] | [[Category:Filesystems]] | ||
[[Category:HOWTO]] | [[Category:HOWTO]] | ||
[[Category:Official Documentation]] | [[Category:Official Documentation]] | ||
Latest revision as of 20:42, October 14, 2022
Btrfs é um sistema de arquivos baseado no princípio copy-on-write (COW), inicialmente projetado na Oracle Corporation para uso em Linux. O desenvolvimento do btrfs começou em 2007 e, desde agosto de 2014, o formato em disco do sistema de arquivos foi marcado como estável.
O projeto Funtoo Linux recomenda o btrfs como um sistema de arquivos de última geração, especialmente para uso em produção.
O Btrfs destina-se a solucionar a falta de pool, instantâneos, somas de verificação e abrangência de vários dispositivos integral nos sistemas de arquivos Linux.
É fácil de configurar e usar o btrfs. Nesta introdução simples, vamos configurar o btrfs no Funtoo Linux usando um kernel debian-sources
ou debian-sources-lts
existente, como o que vem pré-construído para você com o Funtoo Linux, e também usaremos nosso pool de armazenamento btrfs para armazenar dados que não fazem parte da própria instalação do Funtoo Linux. O Funtoo Linux inicializará a partir de um sistema de arquivos não-btrfs e, como parte do processo de inicialização, inicializará nosso armazenamento btrfs e o montará no local de nossa escolha.
Instalação
Habilitar o suporte btrfs é tão simples quanto habilitar o mix-in btrfs e executar uma atualização completa:
root # epro mix-in +btrfs root # emerge -uDN @world
Btrfs agora está pronto para uso.
Conceitos do Btrfs
O Btrfs pode ser usado para gerenciar os discos físicos que ele usa e os discos físicos são adicionados a um volume Btrfs. Em seguida, o BTRFS pode criar subvolumes do volume no qual os arquivos podem ser armazenados.
Ao contrário dos sistemas de arquivos Linux tradicionais, os sistemas de arquivos btrfs alocarão armazenamento sob demanda do volume subjacente.
No mundo btrfs, a palavra volume corresponde a um pool de armazenamento (ZFS) ou a um grupo de volumes (LVM).
- devices - um ou vários volumes físicos subjacentes.
- volume - um grande conjunto de armazenamentos composto por todo o espaço dos dispositivos e pode suportar diferentes níveis de redundância.
- subvolumes - é isso que é montado e você armazena arquivos.
- snapshots - uma cópia somente leitura de um subvolume em um determinado momento e / ou a cópia de leitura e gravação de um subvolume em tempo de execução (também conhecido como clone).
Criando um Volume
Para criar um volume btrfs básico, você precisará de um disco vazio extra. Execute os seguintes passos:
root # mkfs.btrfs /dev/sdxy btrfs-progs v4.17.1 See http://btrfs.wiki.kernel.org for more information. Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. Performing full device TRIM /dev/sdj (223.57GiB) ... Label: (null) UUID: d6bcba6e-8fd5-41fc-9bb4-79628c5c928c Node size: 16384 Sector size: 4096 Filesystem size: 223.57GiB Block group profiles: Data: single 8.00MiB Metadata: single 8.00MiB System: single 4.00MiB SSD detected: yes Incompat features: extref, skinny-metadata Number of devices: 1 Devices: ID SIZE PATH 1 223.57GiB /dev/sdxy
/dev/sdxy
deve ser um disco não utilizado. Pode ser necessário usar o seguinte comando se este disco contiver dados pré-existentes:
root # mkfs.btrfs -f /dev/sdxy
Agora você pode montar o volume criado como qualquer outro sistema de arquivos linux.
root # mkdir /mnt/btrfs-top-level root # mount /dev/sdxy /mnt/btrfs-top-level root # mount ... /dev/sdxy on /mnt/btrfs-top-level type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
Recomenda-se que nada seja armazenado diretamente neste diretório raiz do volume de nível superior (ID 5).
Criando Subvolumes
Btrfs tem um conceito de subvolumes. Subvolume é uma árvore de arquivos POSIX montável independentemente (mas não um dispositivo de bloco). Existem vários esquemas básicos para layout de subvolumes (incluindo instantâneos), bem como suas misturas.
Vamos criar filhos do subvolume de nível superior (ID 5). Nós teremos:
@data
- servirá como montável/data
.snapshots
- aqui os instantâneos serão armazenados
root # cd /mnt/btrfs-top-level root # btrfs subvolume create @data root # btrfs subvolume create .snapshots root # btrfs subvolume list /mnt/btrfs-top-level ID 256 gen 322338 top level 5 path @data ID 257 gen 322275 top level 5 path .snapshots
O Subvolume Padrão
Alterar o subvolume padrão combtrfs subvolume default
tornará o nível superior do sistema de arquivos acessível somente quando as opções de montagemsubvol
ousubvolid
forem especificadas
Quando o dispositivo de bloco btrfs é montado sem especificar um subvolume, o padrão é usado. Para verificar o subvolume padrão, execute:
root # btrfs subvolume get-default /mnt/btrfs-top-level ID 5 (FS_TREE)
Por conveniência, vamos tornar o subvolume @data
como o padrão. É bom verificar primeiro o ID do subvolume. Ou btrfs subvolume list
ou btrfs subvolume show
pode ser usado para isso
root # btrfs subvolume show /mnt/btrfs-top-level/@data ... Subvolume ID: 256
Agora você pode tornar este subvolume como padrão:
root # btrfs subvolume set-default 256 /mnt/btrfs-top-level root # btrfs subvolume get-default /mnt/btrfs-top-level ID 256 gen 322336 top level 5 path @data
Neste ponto, você pode parar de trabalhar no subvolume de nível superior (ID 5) e, em vez disso, montar diretamente o subvolume @data
.
root # cd /mnt root # umount /mnt/btrfs-top-level root # mkdir /data root # mount /dev/sdxy /data
Subvolumes Aninhados
Subvolumes aninhados não farão parte de instantâneos criados a partir de seu subvolume pai. Portanto, um motivo típico é excluir certas partes do sistema de arquivos de serem instantâneos.
Vamos criar um subvolume aninhado separado para /data/independent
.
root # btrfs subvolume create /data/independent root # btrfs subvolume list /data ID 258 gen 161 top level 256 path independent
Normalmente você vai querer "dividir" áreas que são "completas" e/ou "consistentes" em si mesmas. Exemplos para esse particionamento mais refinado podem ser /var/log
, /var/www
ou /var/lib/postgresql
.
/etc/fstab
Para montar automaticamente o subvolume @data
após a reinicialização, você precisa modificar /etc/fstab
/etc/fstab
- fstab for btrfs/dev/sdxy /data btrfs subvolid=256,defaults 0 0
De acordo com btrfs docs a maioria das opções de montagem se aplicam a todo o sistema de arquivos e somente as opções no primeiro subvolume montado terão efeito. Isso significa que (por exemplo) você não pode definir por subvolumenodatacow
,nodatasum
oucompress
.
Agora vamos verificar se essas alterações estavam corretas:
root # cd / root # umount /data root # mount /data root # ls /data independent
Você percebeu que, embora tenhamos montado nosso subvolume @data
, o subvolume aninhado @data/independent
também está presente?
Instantâneos (Snapshots)
Com a finalidade de verificar este recurso interessante do btrfs, vamos preencher nosso sistema de arquivos com alguns dados de exemplo primeiro
root # echo 'btrfs' > /data/foo.txt root # echo 'fun' > /data/independent/bar.txt
Como você provavelmente se lembra no nível superior (ao lado do subvolume @data
) você também criou o subvolume .snapshots
. Você pode montá-lo agora para criar alguns instantâneos:
root # mkdir /mnt/snapshots root # mount /dev/sdxy /mnt/snapshots -o subvolid=257
Um instantâneo é um subvolume como qualquer outro, com determinado conteúdo inicial. Por padrão, os instantâneos são criados para leitura e gravação. As modificações de arquivo em um instantâneo não afetam os arquivos no subvolume original. Vamos criar um instantâneo de leitura e gravação para /data
e instantâneo somente leitura para /data/independent
root # btrfs subvolume snapshot /data /mnt/snapshots/data_$(date -u -Iseconds) Create a snapshot of '/data' in '/mnt/snapshots/data_2022-08-30T22:04:57+00:00' root # btrfs subvolume snapshot -r /data/independent /mnt/snapshots/independent_$(date -u -Iseconds) Create a readonly snapshot of '/data/independent' in '/mnt/snapshots/independent_2022-08-30T22:05:29+00:00'
Mais uma vez, os subvolumes aninhados não farão parte dos instantâneos criados a partir de seu subvolume pai. Portanto, você não deve se surpreender ao comparar o conteúdo do /data
com o conteúdo do /mnt/snapshots
root # tree /data /data ├── foo.txt └── independent └── bar.txt root # tree /mnt/snapshots /mnt/snapshots ├── data_2022-08-30T22:04:57+00:00 │ └── foo.txt └── independent_2022-08-30T22:05:29+00:00 └── bar.txt
Neste ponto, você pode estar interessado em Enviar e Receber recursos do btrfs.
De acordo com btrfs docs um instantâneo não é um backup: instantâneos funcionam usando o comportamento de cópia na gravação do BTRFS. Um instantâneo e o original do qual foi tirado inicialmente compartilham todos os mesmos blocos de dados. Se esses dados forem danificados de alguma forma (raios cósmicos, setor de disco defeituoso, acidente com dd no disco), o instantâneo e o original serão danificados ao mesmo tempo.
Embrulhar (Wrap up)
Recomenda-se executar btrfs scrub
de vez em quando. Por exemplo: Mensalmente.
Scrub é a funcionalidade de verificação e reparo online que verifica a integridade dos dados e metadados, supondo que a estrutura da árvore esteja correta. Você pode executá-lo em um sistema de arquivos montado; ele é executado como um processo em segundo plano durante a operação normal.
Para iniciar um scrub (Em segundo plano) no sistema de arquivos que contém /data
execute:
root # btrfs scrub start /data scrub started on /data, fsid 40f8b94f-07ee-4f7e-beb1-8e686abc246d (pid=5525)
Para verificar o estado de uma depuração em execução:
root # btrfs scrub status /data UUID: 40f8b94f-07ee-4f7e-beb1-8e686abc246d Scrub started: Tue Aug 30 00:38:54 2022 Status: running Duration: 0:00:15 Time left: 0:00:34 ETA: Tue Aug 30 00:39:44 2022 Total to scrub: 149.06GiB Bytes scrubbed: 44.79GiB (30.04%) Rate: 2.99GiB/s Error summary: no errors found
Agora você deve estar no ponto em que pode começar a usar o btrfs para uma variedade de tarefas. Embora haja muito mais sobre o btrfs do que o abordado nesta breve introdução, agora você deve ter uma boa compreensão dos conceitos fundamentais nos quais o btrfs se baseia.