
Recentemente, pesquisei sistemas de arquivos avançados (Btrfs, ZFS) em busca de redundância e disponibilidade de dados e me interessei pela funcionalidade adicional que eles fornecem, especialmente seus recursos de "autocorreção" contra corrupção de dados.
No entanto, acho que preciso dar um passo atrás e tentar entender se esse benefício supera suas desvantagens (bugs do Btrfs e problemas não resolvidos e disponibilidade do ZFS e impacto no desempenho) para uso doméstico geral/SMB, em comparação com um mdadm-Raid1 + convencional. Solução Ext4. Um backup espelhado está disponível de qualquer maneira.
Vamos supor que eu tenha alguns servidores de arquivos usados para fins de arquivamento e que tenham recursos limitados, mas memória ECC e uma fonte de energia estável.
- Qual é a probabilidade de eu encontrar corrupção de dados real, tornando os arquivos ilegíveis? Como?
- O Ext4 ou o gerenciador de arquivos do sistema já pode detectar erros de dados em operações de copiar/mover, deixando-me pelo menos ciente de um problema?
- O que acontece se uma das unidades madame-Raid1 contiver dados diferentes devido a uma unidade ter setores defeituosos? Ainda poderei recuperar o arquivo correto ou o array não conseguirá decidir qual arquivo é o correto e o perderá completamente?
Responder1
Sim, um sistema de arquivos com soma de verificação funcional é uma coisa muito boa. Contudo, a verdadeira motivação não se encontra no mítico "bitrot" que, emborafazacontecer, é muito raro. Em vez disso, a principal vantagem é que tal sistema de arquivos fornece esoma de verificação de dados ponta a ponta, protegendo você ativamente contra comportamento errôneo do disco, como gravações mal direcionadas e corrupção de dados relacionados à falha e/ou mau comportamento do cache DRAM privado do próprio disco devido a problemas na fonte de alimentação.
Eu experimentei esse problema em primeira mão, quando um array Linux RAID 1 estragou devido a um problema na fonte de alimentação. O cache de um disco começou a corromper os dados e o ECC embutido nos próprios setores do disco não detectou nada, simplesmente porque os dados gravadosjá estavam corrompidose o ECC foi calculado com base nos próprios dados corrompidos.
Graças ao seu diário de verificação, que detectou algo estranho e suspendeu o sistema de arquivos, o XFS limitou os danos; no entanto, alguns arquivos/diretórios foram irremediavelmente corrompidos. Como esta era uma máquina de backup que não enfrentava pressão imediata de inatividade, reconstruí-a com ZFS. Quando o problema ocorreu novamente, durante a primeira limpeza, o ZFS corrigiu o bloco afetado lendo as cópias boas dos outros discos. Resultado: sem perda de dados e sem tempo de inatividade. Estas são duas boas razões para usar um sistema de arquivos com soma de verificação.
Vale a pena notar que a soma de verificação de dados é tão valiosa que um mapeador de dispositivo tem como objetivo fornecê-la (emulando as especificações T-10 DIF/DIX), chamadointegridade dm, foi desenvolvido justamente para estender esta proteção aos dispositivos de bloco clássicos (especialmente os redundantes como RAID1/5/6). Pela virtude doProjeto Stratis, ele será integrado a uma CLI/API de gerenciamento abrangente.
No entanto, você afirma que qualquer vantagem potencial trazida por esse sistema de arquivos deve ser comparada à desvantagem que eles herdam. O principal problema do ZFS é que ele não está incluído no kernel padrão, mas por outro lado é muito rápido e estável. Por outro lado, o BTRFS, embora principal,tem muitas questões importantese problema de desempenho (a sugestão comum para bancos de dados ou VMs é desabilitar o CoW que, por sua vez, desativou a soma de verificação - o que, francamente, não é uma resposta aceitável). Em vez de usar o BTRFS, eu usaria o XFS e esperaria o melhor, ou usaria dispositivos protegidos com integridade dm.
Responder2
Eu tinha um disco rígido da Seagate que começava a falhar nas somas de verificação sempre que eu executava o zfs scrub. Ele falhou depois de algumas semanas. ZFS e Btrfs possuem somas de verificação para dados e metadados. ext4 possui apenas somas de verificação de metadados.
Somente erros de CRC e erros de soma de verificação de metadados. A corrupção de dados pode acontecer.
Se tiver setores defeituosos não é problema. O disco inteiro irá "falhar", mas você tem o outro disco que está "bem". O problema é quando os dados têm CRC correto, mas estão corrompidos. Isso pode acontecer aleatoriamente devido a discos grandes.
Responder3
Tenho usado o ZFS em produção, tanto para servidores quanto para NAS de escritório doméstico, tanto em Linux quanto em FreeBSD, há mais de 6 anos. Eu descobri que ele é estável, rápido, confiável e vi pessoalmente detectar e (quando capaz) corrigir erros que um simples md
dispositivo ou ext4
sistema de arquivos não seria capaz de fazer.
No entanto, acho que preciso dar um passo atrás e tentar entender se esse benefício supera suas desvantagens (bugs e problemas não resolvidos do Btrfs e disponibilidade do ZFS e impacto no desempenho)
Em relação ao licenciamento, o ZFS é de código aberto, apenas lançado sob a licença CDDL, que não élegalmentecompatível com a licença GPLv2 sob a qual o kernel do Linux é lançado.Detalhes aqui. Isso não significa que esteja em um estado de "limbo de licenciamento por um tempo" nem significa que haja qualquertécnicoincompatibilidade. Significa simplesmente que a fonte principal do kernel Linux não possui os módulos e eles devem ser recuperados de algum lugar comohttps://zfsonlinux.org.Observe que algumas distros, como o debian, incluem ZFS em sua distribuiçãoA instalação do ZFS no Debian/Ubuntu normalmente pode ser feita com um único apt
comando.
Quanto ao desempenho, com RAM suficiente, o desempenho do ZFS para mim está próximo do ext4 até ultrapassar o ext4, dependendo da memória, do espaço disponível no pool e da compressibilidade dos dados. A maior desvantagem do ZFS, na minha opinião, é o uso de memória: se você tiver menos de 16 GiB de RAM para um servidor de produção, convém evitar o ZFS. Essa é uma regra prática excessivamente simplificada; há muitas informações online sobre os requisitos de memória para ZFS. Eu pessoalmente executo um pool de 10 TB e um pool de 800 GB junto com alguns pools de backup em um sistema Linux de escritório doméstico com 32 GB de RAM e o desempenho é ótimo. Este servidortambémexecuta LXC e tem vários serviços em execução.
Os recursos do ZFS vão muito além dos recursos de soma de verificação de dados e autocorreção; seus instantâneos poderosos são muito melhores que os instantâneos LVM e sua compactação lz4 embutida pode realmente melhorar o desempenho, reduzindo as gravações em disco. Pessoalmente, consigo uma economia de 1,55x no pool de 10 TB (armazenando 9,76 GiB de dados em apenas 6,3 GiB de espaço em disco)
Na minha experiência, o desempenho do ZFS diminui quando o pool atinge 75% ou 80% de uso. Contanto que você permaneça abaixo desse ponto, o desempenho deverá ser mais que suficiente para uso doméstico geral/SMB.
Nos casos em que vi o ZFS detectar e corrigir dados defeituosos, a causa raiz não estava clara, mas provavelmente era um bloco de disco defeituoso. Também tenho memória ECC e uso um UPS, por isso não acredito que os dados tenham sido corrompidos na RAM. Na verdade, você precisa de RAM ECC para obter os benefícios das somas de verificação do ZFS. No entanto, tenho visto alguns (~10-15) casos de blocos que falharam nas somas de verificação nos últimos 6 anos.Uma grande vantagem do ZFS sobre um MD RAID é que o ZFS sabe quais arquivos são afetados por um erro de soma de verificação. Portanto, nos casos em que um pool de backup sem redundância apresentava um erro de soma de verificação, o ZFS me informou oexatoarquivos que foram afetados, permitindo-me substituir esses arquivos.
Apesar da licença que o ZFS utiliza não ser compatível com o kernel Linux, a instalação dos módulos é muito fácil (pelo menos no Debian) e, uma vez familiarizado com o conjunto de ferramentas, o gerenciamento é simples. Apesar de muitas pessoas citarem o medo da perda total de dados com o ZFS na Internet, tenhonuncaperdi todos os dados desde a mudança para o ZFS, e a combinação de instantâneos do ZFS e somas de verificação/redundância de dados me salvou pessoalmente de sofrer perda de dados várias vezes. É uma vitória clara e pessoalmente nunca voltarei a um md
array.
Responder4
Posso acrescentar que o ZFS é incrivelmente robusto, principalmente graças às suas origens (foi desenvolvido pela Sun Microsystems em 2001). A versão de código aberto atualmente disponível é um fork de uma das últimas versões de código aberto lançadas pela Sun Microsystems há cerca de 10 anos, que foi desenvolvida pela comunidade de código aberto depois que a Oracle fechou o código-fonte ZFS após adquirir a Sun Microsystems.
A própria Oracle ainda mantém uma versão de código fechado do ZFS que é usada em seus sistemas de armazenamento corporativo.
No entanto, o ZFS tem uma curva de aprendizado, pois é bastante poderoso e há muitas coisas que podem ser ajustadas. Além disso, é um dos poucos sistemas de arquivos de armazenamento em que trabalhei onde a manutenção é realmente fácil. Tive um caso em que um pool precisava ser migrado de uma configuração RAID5 para RAID6 (ou, mais corretamente, de RAID-Z1 para RAID-Z2). Normalmente, uma operação como essa significaria copiar todos os dados, reconfigurar o RAID e copiar os dados de volta. No ZFS, você anexa o armazenamento secundário e copia o pool com um comando, reconfigura o array como desejar e copie o pool de volta com outro comando.
Existem algumas dicas:
- Para obter qualquer benefício do ZFS, você precisará permitir que o ZFS cuide dos discos sozinho. Portanto, o seu controlador de unidade precisa suportar JBOD, para que o ZFS veja os discos diretamente. Todas as configurações RAID são tratadas no ZFS, pois ele usa os dados de paridade para limpeza e outras tarefas, não pode ser ocultado por um controlador RAID.
- Como outros afirmaram, a memória ECC éfortemente recomendado. O ZFS não exige isso, mas espera totalmente que qualquer coisa gravada na RAM seja imutável e não seja corrompida. Portanto, se você executá-lo em um sistema com RAM não-ECC e sua memória ficar ruim, o ZFS pode realmente corromper seus dados enquanto está limpando o array (esfregar significa que o ZFS lê os dados do pool, calcula o que deveria ter lido na paridade informações salvas em outras unidades e corrige quaisquer erros encontrados).
- Embora o ZFS seja excelente na prevenção da perda de dados, seu RAID-Z1 ainda sofre dos mesmos problemas que o RAID5, também conhecido como. que grandes matrizes de unidades grandes (1 TB +) podem falhar completamente após uma falha de disco único ao reconstruir a matriz se a taxa URE das unidades for muito alta, pois apenas ler todos os dados da paridade do restante das unidades durante a reconstrução matematicamente quase garante um erro de leitura irrecuperável devido ao tamanho das unidades. Execute RAID6 / RAID-Z2 se você não for um especialista em sistemas operacionais de armazenamento e souber o que está fazendo.
Para iniciantes e ambientes domésticos geralmente recomendo o FreeNAS, é muito bem conservado e simples de configurar, o que é bom para iniciantes.