AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 790743
Accepted
Max Power
Max Power
Asked: 2025-02-08 05:43:56 +0800 CST2025-02-08 05:43:56 +0800 CST 2025-02-08 05:43:56 +0800 CST

O BTRFS "dup" usa uma partição ou duas?

  • 772

btrfs.readthedocs.io descreve o perfil "dup" como duplicação de dados em um único "dispositivo". A descrição, em vários locais naquele site, não esclarece se eles querem dizer uma unidade física com duas partições espelhadas ou uma partição com a duplicação oculta dentro.

Algumas descrições de "dup" sugerem que se trata de um raid1 especial ajustado para funcionar em um único dispositivo com duas partições, mas outras fontes parecem pensar que ele adiciona duplicação dentro de uma única partição. (É claro que o uso real do disco será o mesmo de qualquer maneira.) Parece-me que "dup" pode ser compatível com uma única partição, mas sem duplicação real, ou duas partições podem forçar um desempenho não ideal.

Isto é para HDD giratório usado para backup, não para acesso primário ("dup", protegendo contra bitrot. Outras cópias fora do local com hashes e somas de verificação). Estou ciente de que muitos SDD podem desduplicar internamente.

Alguém sabe o comportamento do perfil "dup" com certeza? Não sou habilidoso o suficiente em ler C para vasculhar os arquivos de origem do kernel.

btrfs
  • 1 1 respostas
  • 21 Views

1 respostas

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2025-02-08T19:43:25+08:002025-02-08T19:43:25+08:00

    Resumo

    O uso pretendido do DUP é uma partição com a duplicação oculta dentro dela.


    Resposta completa

    O Btrfs não se importa se você fornece partição(ões) ou disco(s) inteiro(s), cada um deles é um dispositivo.

    O perfil DUP foi projetado para ser usado em um único dispositivo. Você pode adicionar outro dispositivo e manter o perfil como DUP (e já que o 4.5.1 mkfs.btrfspermitirá que você crie DUP em vários dispositivos desde o início), mas esse uso é subótimo: se você quiser redundância em vários dispositivos, prefira RAID1 ou superior; então o btrfs alocará cópias redundantes para dispositivos diferentes. Com o DUP não há tal requisito, cópias redundantes podem ser alocadas para um dispositivo. Observe que esse comportamento torna o DUP utilizável em um único dispositivo em primeiro lugar.

    O DUP em um único dispositivo tentará armazenar cada pedaço de dados (e/ou metadados) em dois locais físicos do dispositivo, esse é seu principal propósito. No caso de vários dispositivos, as duas cópias podem acabar em dispositivos diferentes ou podem acabar em um dispositivo. Independentemente disso, haverá "duplicação real", a menos que o dispositivo que recebeu as duas cópias decida desduplicá-las internamente (você parece estar ciente desse problema).

    Usar DUP em dois dispositivos faz sentido quando os dispositivos são de tamanhos diferentes e, portanto, o RAID1 neles faria com que uma parte significativa do dispositivo maior não estivesse disponível para você.

    Em qualquer caso, todo o gerenciamento realizado pelo btrfs será interno ao btrfs. O btrfs por si só não criará nenhuma nova partição(ões) que você possa ver fdisk -lou algo assim.

    Em geral, há pouco sentido em usar duas ou mais partições do mesmo disco como dispositivos usados ​​por um único btrfs (single filesystem). Poucas situações em que isso faz algum sentido:

    • Se houver uma partição em algum lugar no meio de um disco e você realmente não puder movê-la por algum motivo, então você pode querer usar o resto do disco como um único sistema de arquivos criando btrfs em duas partições (uma antes e uma depois da partição não movida). Se você quiser duplicação, então DUP aqui fará sentido.
    • Se o seu disco for um HDD giratório, você pode querer criar duas partições e usar o perfil RAID1 do btrfs, apenas para proteger preventivamente seus dados de head crash . O ponto é que se houver um head crash que não mate o disco imediatamente, ele possivelmente afetará apenas uma partição, pelo menos inicialmente. O RAID1 garante que haja uma cópia dos dados na outra partição. Com o DUP em todo o disco (não importa se literalmente em todo o disco ou em uma partição que ocupe o máximo possível do disco) ou com o DUP nas duas partições, haveria um risco de que mesmo um único head crash pudesse destruir imediatamente duas cópias (ou seja, todas as cópias) de alguns dados. Então o DUP aqui meio que derrotaria o propósito de ter as duas partições. Observe que este é um cenário bastante teórico, porque na prática, após o crash inicial, inúmeras partículas finas da área danificada podem pousar em outras áreas e causar mais head crashes, causando rapidamente perda significativa de dados e tornando a unidade inútil. Ainda assim, se um perfil for melhor que o outro neste caso, então o RAID1 é melhor que o DUP, e não o contrário.

    Provavelmente haverá penalidades de desempenho, então, a menos que você tenha um bom motivo (como um dos acima), todo o espaço de qualquer disco que você queira dar a um btrfs deve ser dado a ele como um dispositivo. O btrfs em vários dispositivos faz mais sentido quando cada dispositivo está fisicamente em um disco separado.


    Validação

    Eu também não consigo ler o código-fonte. Baseio minhas alegações nas seguintes observações:

    1. O fato de que antes da versão 4.5.1 mkfs.btrfssó permitia que você usasse o DUP com um único dispositivo, e ainda assim você podia fazê-lo funcionar com vários dispositivos adicionando dispositivo(s) depois mkfs.btrfs, é uma forte pista de que o DUP foi projetado para ser usado com um único dispositivo, mas não quebra as coisas quando usado com vários dispositivos. Eu encontrei esse fato em man 8 mkfs.btrfsdistribuído com btrfs-progs v6.2.

    2. Criei um arquivo regular esparso do tamanho de 1 GiB, criei um btrfs nele com mkfs.btrfs -m dup -d single …, montei sem compressão e enviei dados aleatórios para um arquivo dentro do sistema de arquivos ( dd if=/dev/urandom …) até que "não sobrasse espaço". Consegui armazenar 904 MiB de dados e o arquivo que contém o sistema de arquivos perdeu sua escassez em cerca de 904 MiB. Isso é esperado.

      Então comecei do zero e fiz isso com -d dup. Desta vez consegui armazenar 452 MiB, mas o arquivo que contém o sistema de arquivos perdeu sua escassez em cerca de 904 MiB, então o dobro. Isso indica que há "duplicação real" no caso de DUP em um único dispositivo.

    3. Similarmente, criei um arquivo regular esparso do tamanho de 1 GiB e outro arquivo regular esparso do tamanho de 400 MiB, criei um btrfs neles com mkfs.btrfs -m dup -d single …, montei sem compressão (precisei usar losetupduas vezes manualmente) e enviei dados aleatórios para um arquivo dentro do sistema de arquivos até que "não sobrasse espaço". Consegui armazenar 1263 MiB de dados. Os arquivos que continham o sistema de arquivos perderam sua escassez (agregada) como esperado.

      Em comparação com o caso acima de um único dispositivo -d single, o dispositivo adicional de 400 MiB me deu cerca de 359 MiB de espaço extra no sistema de arquivos.

      Então comecei do zero e fiz isso com -d dup. Dessa vez consegui armazenar 631 MiB. Os arquivos que continham o sistema de arquivos perderam sua escassez (agregada) em cerca de duas vezes mais.

      Em comparação com o caso acima de um único dispositivo -d dup, o dispositivo adicional de 400 MiB me deu cerca de 179 MiB de espaço extra no sistema de arquivos.

      Isso não só mostra que o DUP funciona em vários dispositivos, mas também que ele funciona como em um único dispositivo. Quero dizer, cópias redundantes podem ser alocadas para um dispositivo. No meu caso, alguns pedaços de dados tiveram que ser alocados para o dispositivo maior duas vezes, pois não há outra maneira de armazenar duas cópias de 631 MiB dentro de 1 GiB + 400 MiB.

      Para comparação: mkfs.btrfs -m raid1 -d raid1em dois dispositivos (novamente 1 GiB + 400 MiB) me permitiu armazenar apenas 319 MiB. Ao contrário do DUP, o RAID1 força a alocação de cópias redundantes para dispositivos diferentes, então meu dispositivo de 400 MiB limitou a capacidade de todo o sistema de arquivos.

    Meu ambiente de teste foi o Debian 12, kernel 6.1.0, btrfs-progs v6.2.

    • 2

relate perguntas

  • Como ativar a compactação btrfs zstd

  • instantâneos incrementais btrfs: encontre UUID nos dados enviados

  • sincronização incremental de instantâneo btrfs: inicialização com rsync

  • Como criptografar os dados apenas uma vez pelo RAID no nível do sistema de arquivos?

  • Como definir um nível de compactação zstd não padrão na desfragmentação do sistema de arquivos btrfs?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve