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 / ubuntu / Perguntas / 1497625
Accepted
xerostomus
xerostomus
Asked: 2023-12-20 21:20:50 +0800 CST2023-12-20 21:20:50 +0800 CST 2023-12-20 21:20:50 +0800 CST

Como o ZFS lida com cópias redundantes de um arquivo?

  • 772

Tenho diretórios com backups incrementais antigos e eles estão cheios de cópias redundantes de vários arquivos. Meu plano era usar o ZFS que lida com somas de verificação de arquivos e evita redundância.

Portanto, uma situação modelo:

cd /poolname/zalohy
zfs list -p poolname
NAME        USED         AVAIL     REFER  MOUNTPOINT
poolname  995328  374734901248     98304  /poolname

for i in {0..10}; do echo {1..99999} >file$i.txt; done # I create eleven identical files of the size 588888 bytes.

zfs list -p poolname
NAME         USED         AVAIL     REFER  MOUNTPOINT
poolname  5677056  374730219520     98304  /poolname

374734901248 - 374730219520 = 4 681 728, i.e. cca 5MB.

Eu esperava que 11 arquivos idênticos (com a mesma soma de verificação) ocupassem um pouco mais de 588.888 bytes, ou seja, dez vezes menos.

Onde está o problema. Como lidar com essa redundância? Existe um sistema de arquivos melhor que o ZFS para essa finalidade?

Muito obrigado pela ajuda.

backup
  • 2 2 respostas
  • 69 Views

2 respostas

  • Voted
  1. Best Answer
    Artur Meinild
    2023-12-20T22:29:25+08:002023-12-20T22:29:25+08:00

    Em geral

    Isso requer que seu pool ZFS (ou sistema de arquivos) tenha sido configurado com a Deduplicação habilitada.

    Da documentação do OpenZFS :

    Desduplicação

    A desduplicação é o processo de remoção de dados redundantes no nível do bloco, reduzindo a quantidade total de dados armazenados. Se um sistema de arquivos tiver a propriedade de eliminação de duplicação habilitada, os blocos de dados duplicados serão removidos de forma síncrona. O resultado é que apenas dados exclusivos são armazenados e componentes comuns são compartilhados entre arquivos.

    A desduplicação de dados é uma operação que consome muitos recursos. Geralmente, é recomendado que você tenha pelo menos 1,25 GiB de RAM por 1 TiB de armazenamento ao ativar a desduplicação. O cálculo do requisito exato depende muito do tipo de dados armazenados no pool.

    Habilitar a desduplicação em um sistema projetado incorretamente pode resultar em problemas de desempenho (E/S lenta e operações administrativas). Isso pode levar a problemas na importação de um pool devido ao esgotamento da memória. A desduplicação pode consumir energia de processamento (CPU) e memória significativas, bem como gerar E/S de disco adicional.

    Antes de criar um pool com desduplicação habilitada, certifique-se de ter planejado seus requisitos de hardware adequadamente e implementado práticas de recuperação apropriadas, como backups regulares. Considere usar a propriedade de compactação como uma alternativa que consome menos recursos.

    A desduplicação está desabilitada por padrão porque, como mencionado acima, ela pode consumir muito CPU e memória.

    Tal como acontece com todas as propriedades do ZFS, a deduppropriedade pode ser definida no nível do pool ZFS ou do conjunto de dados (sistema de arquivos) e ser herdada pelos sistemas de arquivos subjacentes.

    Antes de ativar dedup, você deve considerar o seguinte:

    • Certifique-se de que seus dados realmente se beneficiarão da desduplicação
    • Certifique-se de que seu sistema tenha CPU e memória suficientes para suportar o recurso

    Para verificar se o seu pool será beneficiado dedup, você pode executar (onde tankestá o nome do pool) :

    sudo zdb -S tank
    

    O -Ssimula dedupestatísticas e só pode ser usado em todo o pool. A saída será uma DDT (tabela de desduplicação) simulada e termina com algumas estatísticas como:

    dedup = 1.20, compress = 1.28, copies = 1.03, dedup * compress / copies = 1.50
    

    Como regra geral, se a dedupproporção estimada for superior a 2, a desduplicação poderá ser uma opção para economizar espaço. No exemplo acima, como a dedupproporção é 1,2, provavelmente não vale a pena.

    Para verificar a deduppropriedade de um pool, digite:

    zfs get dedup tank
    

    E para definir a desduplicação para o pool, digite:

    sudo zfs set dedup=on tank
    

    E para configurá-lo apenas para um conjunto de dados ( tank/home), digite:

    sudo zfs set dedup=on tank/home
    

    Depois dedupde habilitado em um pool existente, somente os dados recém-criados serão desduplicados.

    Conforme mencionado na documentação, pode ser uma opção melhor definir a compression=lz4propriedade em seu pool ( lz4a compactação tem pouco ou nenhum impacto no desempenho na maioria dos sistemas) .

    Para sua situação

    Para sua situação específica, eu criaria um conjunto de dados específico (sistema de arquivos) apenas para backup e ativaria a desduplicação apenas neste conjunto de dados.

    Por exemplo, se você criar o conjunto de dados ZFS poolname/backup:

    sudo zfs create poolname/backup
    

    E então defina:

    sudo zfs set dedup=on poolname/backup
    

    Desta forma, você pode testar se funciona da maneira esperada. E se tiver problemas, você sempre pode transferir seu backup para um conjunto de dados ZFS normal sem deduphabilitação (mas talvez com compactação).

    Observação: não é possível desabilitar a desduplicação em um pool ou conjunto de dados depois de habilitada. Nesse caso, só é possível fazer backup dos dados, destruir o conjunto de dados e mover os dados para outro conjunto de dados sem desduplicação. É por isso que eu nunca recomendaria habilitar a desduplicação em um Zpool inteiro.

    • 2
  2. HankB
    2023-12-22T05:52:27+08:002023-12-22T05:52:27+08:00

    Outro usuário útil no Mastodon acabou de postar um link para o hardlinkcomando ( https://manpages.debian.org/unstable/util-linux/hardlink.1.en.html ) O que parece ser uma solução melhor para o seu problema do que o programa que eu escreveu (mencionado em um comentário à resposta mais longa e definitiva WRT ZFS.)

    No Ubuntu 22.04, hardlinké instalado por padrão (como parte do util-linuxpacote) e, no seu caso, o comando padrão a ser executado seria (se o diretório /poolname/zalohycontiver os dados de backup):

    hardlink /poolname/zalohy
    

    Consulte a hardlink página de manual para obter mais informações.

    • 1

relate perguntas

Sidebar

Stats

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

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

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