mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-25 18:40:19 -04:00
2188 lines
94 KiB
Text
2188 lines
94 KiB
Text
====================================
|
|
SnapRAID Backup para Arrays de Disco
|
|
====================================
|
|
|
|
|
|
1 SINOPSE (SYNOPSIS)
|
|
====================
|
|
|
|
snapraid [-c, --conf CONFIG]
|
|
[-f, --filter PATTERN] [-d, --filter-disk NAME]
|
|
[-m, --filter-missing] [-e, --filter-error]
|
|
[-a, --audit-only] [-h, --pre-hash] [-i, --import DIR]
|
|
[-p, --plan PERC|bad|new|full]
|
|
[-o, --older-than DAYS] [-l, --log FILE]
|
|
[-s, --spin-down-on-error] [-w, --bw-limit RATE]
|
|
[-t, --tail]
|
|
[-Z, --force-zero] [-E, --force-empty]
|
|
[-U, --force-uuid] [-D, --force-device]
|
|
[-N, --force-nocopy] [-F, --force-full]
|
|
[-R, --force-realloc] [-W, --force-realloc-tail]
|
|
[-S, --start BLKSTART] [-B, --count BLKCOUNT]
|
|
[-L, --error-limit NUMBER]
|
|
[-A, --stats]
|
|
[-v, --verbose] [-q, --quiet]
|
|
status|smart|probe|up|down|diff|sync|scrub|fix|check
|
|
|list|dup|pool|devices|touch|rehash|locate
|
|
|
|
snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]
|
|
|
|
|
|
2 DESCRIçãO (DESCRIPTION)
|
|
=========================
|
|
|
|
SnapRAID é um programa de backup projetado para arrays de disco,
|
|
armazenando informações de paridade para recuperação de dados no
|
|
caso de até seis falhas de disco.
|
|
|
|
Destinado principalmente a centros de mídia domésticos com arquivos
|
|
grandes e que mudam com pouca frequência, o SnapRAID oferece vários recursos:
|
|
|
|
* Você pode utilizar discos já preenchidos com arquivos sem a
|
|
necessidade de reformatá-los, acessando-os normalmente.
|
|
* Todos os seus dados são submetidos a hash para garantir a integridade
|
|
dos dados e prevenir corrupção silenciosa.
|
|
* Quando o número de discos com falha excede a contagem de paridade,
|
|
a perda de dados é confinada aos discos afetados; os dados em
|
|
outros discos permanecem acessíveis.
|
|
* Se você acidentalmente excluir arquivos em um disco, a recuperação é
|
|
possível.
|
|
* Os discos podem ter tamanhos diferentes.
|
|
* Você pode adicionar discos a qualquer momento.
|
|
* O SnapRAID não prende seus dados; você pode parar de usá-lo
|
|
a qualquer momento sem reformatar ou mover dados.
|
|
* Para acessar um arquivo, apenas um único disco precisa girar (spin),
|
|
economizando energia e reduzindo o ruído.
|
|
|
|
Para mais informações, visite o site oficial do SnapRAID:
|
|
|
|
https://www.snapraid.it/
|
|
|
|
|
|
3 LIMITAçõES (LIMITATIONS)
|
|
==========================
|
|
|
|
O SnapRAID é um híbrido entre um RAID e um programa de backup, com o objetivo de combinar
|
|
os melhores benefícios de ambos. No entanto, possui algumas limitações que deve
|
|
considerar antes de o utilizar.
|
|
|
|
A principal limitação é que, se um disco falhar, apenas poderá recuperar dados até ao
|
|
estado da última operação de sincronização (`sync`). Quaisquer dados adicionados ou modificações feitas
|
|
desde a última sincronização que estejam localizados no disco com falha serão perdidos.
|
|
|
|
Consequentemente, o SnapRAID é adequado principalmente para dados que raramente mudam.
|
|
|
|
Para dados que já existiam na última sincronização, a fiabilidade da recuperação depende
|
|
de a opção `snapshot` ser ou não utilizada:
|
|
|
|
* Com suporte a instantâneos (disponível em Btrfs, ZFS, Bcachefs e NTFS),
|
|
o SnapRAID pode manter automaticamente uma referência congelada
|
|
independente de cada sistema de arquivos de dados suportado.
|
|
Isso garante que, mesmo que modifique ou exclua arquivos no seu sistema de arquivos ativo
|
|
durante ou após uma sincronização, o processo de recuperação permanece consistente e confiável.
|
|
|
|
* Sem suporte a instantâneos, excluir ou alterar arquivos após um `sync`
|
|
pode impedir a recuperação total de outros discos com falha. Isso ocorre
|
|
porque a paridade já não corresponde aos arquivos modificados, mesmo que
|
|
esses arquivos não estejam no disco com falha. Por outro lado, arquivos adicionados recentemente
|
|
não impedem a recuperação de arquivos já existentes.
|
|
|
|
Outras limitações do SnapRAID são:
|
|
|
|
* Com o SnapRAID, você ainda tem sistemas de arquivos separados para cada disco.
|
|
Com o RAID, você obtém um único sistema de arquivos grande.
|
|
* O SnapRAID não faz striping de dados.
|
|
Com o RAID, você obtém um aumento de velocidade com striping.
|
|
* O SnapRAID não suporta recuperação em tempo real.
|
|
Com o RAID, você não precisa parar de trabalhar quando um disco falha.
|
|
* O SnapRAID pode recuperar dados apenas de um número limitado de falhas de disco.
|
|
Com um backup, você pode recuperar de uma falha completa
|
|
de todo o array de discos.
|
|
* Apenas nomes de arquivos, carimbos de data/hora, symlinks e hardlinks
|
|
são salvos. Permissões, propriedade e atributos estendidos não são salvos.
|
|
|
|
|
|
4 PRIMEIROS PASSOS (GETTING STARTED)
|
|
====================================
|
|
|
|
Para usar o SnapRAID, você precisa primeiro selecionar um disco em seu array
|
|
de discos para dedicar às informações de `parity` (paridade). Com um
|
|
disco para paridade, você poderá recuperar de uma única falha de disco,
|
|
semelhante ao RAID5.
|
|
|
|
Se você quiser recuperar de mais falhas de disco, semelhante ao RAID6,
|
|
você deve reservar discos adicionais para paridade. Cada disco de paridade
|
|
adicional permite a recuperação de mais uma falha de disco.
|
|
|
|
Como discos de paridade, você deve escolher os maiores discos do array,
|
|
pois a informação de paridade pode crescer até o tamanho do maior
|
|
disco de dados no array.
|
|
|
|
Esses discos serão dedicados a armazenar os arquivos de `parity`.
|
|
Você não deve armazenar seus dados neles.
|
|
|
|
Em seguida, você deve definir os discos de `data` (dados) que deseja proteger
|
|
com o SnapRAID. A proteção é mais eficaz se esses discos
|
|
contiverem dados que raramente mudam. Por esse motivo, é melhor
|
|
NÃO incluir o disco C:\ do Windows ou os diretórios /home, /var e /tmp
|
|
do Unix.
|
|
|
|
A lista de arquivos é salva nos arquivos de `content` (conteúdo), geralmente
|
|
armazenados nos discos de dados, paridade ou boot.
|
|
Este arquivo contém os detalhes do seu backup, incluindo todos os
|
|
checksums para verificar sua integridade.
|
|
O arquivo de `content` é armazenado em várias cópias, e cada cópia deve
|
|
estar em um disco diferente para garantir que, mesmo em caso de múltiplas
|
|
falhas de disco, pelo menos uma cópia esteja disponível.
|
|
|
|
Por exemplo, suponha que você esteja interessado em apenas um nível de
|
|
proteção de paridade, e seus discos estejam localizados em:
|
|
|
|
/mnt/diskp <- disco selecionado para paridade
|
|
/mnt/disk1 <- primeiro disco a proteger
|
|
/mnt/disk2 <- segundo disco a proteger
|
|
/mnt/disk3 <- terceiro disco a proteger
|
|
|
|
Você deve criar o arquivo de configuração /etc/snapraid.conf com
|
|
as seguintes opções:
|
|
|
|
parity /mnt/diskp/snapraid.parity
|
|
content /var/snapraid/snapraid.content
|
|
content /mnt/disk1/snapraid.content
|
|
content /mnt/disk2/snapraid.content
|
|
data d1 /mnt/disk1/
|
|
data d2 /mnt/disk2/
|
|
data d3 /mnt/disk3/
|
|
|
|
Se você estiver no Windows, deve usar o formato de caminho do Windows, com
|
|
letras de unidade e barras invertidas em vez de barras.
|
|
|
|
parity E:\snapraid.parity
|
|
content C:\snapraid\snapraid.content
|
|
content F:\array\snapraid.content
|
|
content G:\array\snapraid.content
|
|
data d1 F:\array\
|
|
data d2 G:\array\
|
|
data d3 H:\array\
|
|
|
|
Se você tiver muitos discos e ficar sem letras de unidade, pode montar
|
|
discos diretamente em subpastas. Consulte:
|
|
|
|
https://www.google.com/search?q=Windows+mount+point
|
|
|
|
Neste ponto, você está pronto para executar o comando `sync` para construir
|
|
as informações de paridade.
|
|
|
|
snapraid sync
|
|
|
|
Este processo pode levar várias horas na primeira vez, dependendo do
|
|
tamanho dos dados já presentes nos discos. Se os discos estiverem vazios,
|
|
o processo é imediato.
|
|
|
|
Você pode pará-lo a qualquer momento pressionando Ctrl+C e, na próxima
|
|
execução, ele será retomado de onde foi interrompido.
|
|
|
|
Quando este comando for concluído, seus dados estarão SEGUROS.
|
|
|
|
Agora você pode começar a usar seu array como quiser e periodicamente
|
|
atualizar as informações de paridade executando o comando `sync`.
|
|
|
|
4.1 Scrubbing (Scrubbing)
|
|
-------------------------
|
|
|
|
Para verificar periodicamente os dados e a paridade em busca de erros,
|
|
você pode executar o comando `scrub`.
|
|
|
|
snapraid scrub
|
|
|
|
Este comando compara os dados em seu array com o hash calculado
|
|
durante o comando `sync` para verificar a integridade.
|
|
|
|
Cada execução do comando verifica aproximadamente 8% do array, excluindo
|
|
dados já examinados nos 10 dias anteriores.
|
|
Você pode usar a opção -p, --plan para especificar uma quantidade diferente
|
|
e a opção -o, --older-than para especificar uma idade diferente em dias.
|
|
Por exemplo, para verificar 5% do array em busca de blocos com mais de
|
|
20 dias, use:
|
|
|
|
snapraid -p 5 -o 20 scrub
|
|
|
|
Se erros silenciosos ou de entrada/saída forem encontrados durante o processo,
|
|
os blocos correspondentes serão marcados como ruins no arquivo de `content`
|
|
e listados no comando `status`.
|
|
|
|
snapraid status
|
|
|
|
Para corrigi-los, você pode usar o comando `fix`, filtrando por blocos
|
|
ruins com a opção -e, --filter-error:
|
|
|
|
snapraid -e fix
|
|
|
|
Na próxima execução de `scrub`, os erros desaparecerão do relatório de `status`
|
|
se estiverem realmente corrigidos. Para torná-lo mais rápido, você pode usar
|
|
-p bad para examinar apenas blocos marcados como ruins.
|
|
|
|
snapraid -p bad scrub
|
|
|
|
Executar `scrub` em um array não sincronizado pode relatar erros causados por
|
|
arquivos removidos ou modificados. Esses erros são relatados na saída de `scrub`,
|
|
mas os blocos relacionados não são marcados como ruins.
|
|
|
|
4.2 Pooling (Pooling)
|
|
---------------------
|
|
|
|
Nota: O recurso de pooling descrito abaixo foi substituído pela ferramenta
|
|
mergerfs, que agora é a opção recomendada para usuários Linux na comunidade
|
|
SnapRAID. Mergerfs oferece uma maneira mais flexível e eficiente de agrupar
|
|
várias unidades em um único ponto de montagem unificado, permitindo acesso
|
|
perfeito a arquivos em todo o seu array sem depender de links simbólicos.
|
|
Ele se integra bem ao SnapRAID para proteção de paridade e é comumente usado
|
|
em configurações como OpenMediaVault (OMV) ou configurações NAS personalizadas.
|
|
|
|
Para ter todos os arquivos em seu array mostrados na mesma árvore de
|
|
diretórios, você pode habilitar o recurso de `pooling`. Ele cria uma
|
|
visualização virtual somente leitura de todos os arquivos em seu array
|
|
usando links simbólicos.
|
|
|
|
Você pode configurar o diretório de `pooling` no arquivo de configuração com:
|
|
|
|
pool /pool
|
|
|
|
ou, se você estiver no Windows, com:
|
|
|
|
pool C:\pool
|
|
|
|
e, em seguida, executar o comando `pool` para criar ou atualizar a
|
|
visualização virtual.
|
|
|
|
snapraid pool
|
|
|
|
Se você estiver usando uma plataforma Unix e quiser compartilhar este
|
|
diretório pela rede com máquinas Windows ou Unix, você deve adicionar
|
|
as seguintes opções ao seu /etc/samba/smb.conf:
|
|
|
|
# Na seção global de smb.conf
|
|
unix extensions = no
|
|
|
|
# Na seção de compartilhamento de smb.conf
|
|
[pool]
|
|
comment = Pool
|
|
path = /pool
|
|
read only = yes
|
|
guest ok = yes
|
|
wide links = yes
|
|
follow symlinks = yes
|
|
|
|
No Windows, compartilhar links simbólicos por uma rede requer que os
|
|
clientes os resolvam remotamente. Para habilitar isso, além de
|
|
compartilhar o diretório do pool, você também deve compartilhar todos
|
|
os discos de forma independente, usando os nomes de disco definidos no
|
|
arquivo de configuração como pontos de compartilhamento. Você também
|
|
deve especificar na opção `share` do arquivo de configuração o caminho
|
|
UNC do Windows que os clientes remotos precisam usar para acessar
|
|
esses discos compartilhados.
|
|
|
|
Por exemplo, operando a partir de um servidor chamado `darkstar`, você
|
|
pode usar as opções:
|
|
|
|
data d1 F:\array\
|
|
data d2 G:\array\
|
|
data d3 H:\array\
|
|
pool C:\pool
|
|
share \\darkstar
|
|
|
|
e compartilhar os seguintes diretórios pela rede:
|
|
|
|
\\darkstar\pool -> C:\pool
|
|
\\darkstar\d1 -> F:\array
|
|
\\darkstar\d2 -> G:\array
|
|
\\darkstar\d3 -> H:\array
|
|
|
|
para permitir que clientes remotos acessem todos os arquivos em \\darkstar\pool.
|
|
|
|
Você também pode precisar configurar clientes remotos para habilitar
|
|
o acesso a symlinks remotos com o comando:
|
|
|
|
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
|
|
|
|
4.3 Desexcluir (Undeleting)
|
|
---------------------------
|
|
|
|
O SnapRAID funciona mais como um programa de backup do que como um sistema
|
|
RAID, e pode ser usado para restaurar ou desexcluir arquivos para seu
|
|
estado anterior usando a opção -f, --filter:
|
|
|
|
snapraid fix -f FILE
|
|
|
|
ou para um diretório:
|
|
|
|
snapraid fix -f DIR/
|
|
|
|
Você também pode usá-lo para recuperar apenas arquivos excluídos
|
|
acidentalmente dentro de um diretório usando a opção -m, --filter-missing,
|
|
que restaura apenas arquivos ausentes, deixando todos os outros intocados.
|
|
|
|
snapraid fix -m -f DIR/
|
|
|
|
Ou para recuperar todos os arquivos excluídos em todas as unidades com:
|
|
|
|
snapraid fix -m
|
|
|
|
4.4 Recuperação (Recovering)
|
|
----------------------------
|
|
|
|
O pior aconteceu e você perdeu um ou mais discos!
|
|
|
|
NÃO ENTRE EM PÂNICO! Você será capaz de recuperá-los!
|
|
|
|
A primeira coisa que você deve fazer é evitar mais alterações em seu array
|
|
de discos. Desabilite quaisquer conexões remotas a ele e quaisquer
|
|
processos agendados, incluindo qualquer sincronização noturna ou scrub
|
|
agendado do SnapRAID.
|
|
|
|
Em seguida, prossiga com as seguintes etapas.
|
|
|
|
---- 4.4.1 PASSO 1 -> Reconfigurar ----
|
|
Você precisa de algum espaço para recuperar, idealmente em discos sobressalentes
|
|
adicionais, mas um disco USB externo ou um disco remoto será suficiente.
|
|
|
|
Modifique o arquivo de configuração do SnapRAID para fazer com que a opção
|
|
`data` ou `parity` do disco com falha aponte para um local com espaço
|
|
vazio suficiente para recuperar os arquivos.
|
|
|
|
Por exemplo, se o disco `d1` falhou, mude de:
|
|
|
|
data d1 /mnt/disk1/
|
|
|
|
para:
|
|
|
|
data d1 /mnt/new_spare_disk/
|
|
|
|
Se o disco a ser recuperado for um disco de paridade, atualize a opção
|
|
`parity` apropriada.
|
|
Se você tiver vários discos com falha, atualize todas as opções de
|
|
configuração deles.
|
|
|
|
---- 4.4.2 PASSO 2 -> Corrigir ----
|
|
Execute o comando fix, armazenando o log em um arquivo externo com:
|
|
|
|
snapraid -d NAME -l fix.log fix
|
|
|
|
Onde NAME é o nome do disco, como `d1` em nosso exemplo anterior.
|
|
Se o disco a ser recuperado for um disco de paridade, use os nomes
|
|
`parity`, `2-parity`, etc.
|
|
Se você tiver vários discos com falha, use várias opções -d para
|
|
especificar todos eles.
|
|
|
|
Este comando levará muito tempo.
|
|
|
|
Certifique-se de ter alguns gigabytes livres para armazenar o arquivo fix.log.
|
|
Execute-o a partir de um disco com espaço livre suficiente.
|
|
|
|
Agora você recuperou tudo o que é recuperável. Se alguns arquivos estiverem
|
|
parcialmente ou totalmente irrecuperáveis, eles serão renomeados
|
|
adicionando a extensão `.unrecoverable`.
|
|
|
|
Você pode encontrar uma lista detalhada de todos os blocos irrecuperáveis
|
|
no arquivo fix.log, verificando todas as linhas que começam com `unrecoverable:`.
|
|
|
|
Se você não estiver satisfeito com a recuperação, pode tentar novamente
|
|
quantas vezes quiser.
|
|
|
|
Por exemplo, se você removeu arquivos do array após o último
|
|
`sync`, isso pode resultar em alguns arquivos não sendo recuperados.
|
|
Neste caso, você pode tentar novamente o `fix` usando a opção -i, --import,
|
|
especificando onde esses arquivos estão agora para incluí-los novamente
|
|
no processo de recuperação.
|
|
|
|
Se você estiver satisfeito com a recuperação, pode prosseguir,
|
|
mas observe que, após a sincronização, você não pode mais tentar
|
|
o comando `fix` novamente!
|
|
|
|
---- 4.4.3 PASSO 3 -> Checar ----
|
|
Como uma verificação cautelosa, você pode agora executar um comando
|
|
`check` para garantir que tudo esteja correto no disco recuperado.
|
|
|
|
snapraid -d NAME -a check
|
|
|
|
Onde NAME é o nome do disco, como `d1` em nosso exemplo anterior.
|
|
|
|
As opções -d e -a dizem ao SnapRAID para verificar apenas o disco
|
|
especificado e ignorar todos os dados de paridade.
|
|
|
|
Este comando levará muito tempo, mas se você não for excessivamente
|
|
cauteloso, pode pulá-lo.
|
|
|
|
---- 4.4.4 PASSO 4 -> Sincronizar ----
|
|
Execute o comando `sync` para ressincronizar o array com o novo disco.
|
|
|
|
snapraid sync
|
|
|
|
Se tudo for recuperado, este comando é imediato.
|
|
|
|
|
|
5 COMANDOS (COMMANDS)
|
|
=====================
|
|
|
|
O SnapRAID fornece alguns comandos simples que lhe permitem:
|
|
|
|
* Imprimir o estado do array -> `status`
|
|
* Controlar os discos -> `smart`, `probe`, `up`, `down`
|
|
* Criar um ponto de backup/recuperação -> `sync`
|
|
* Verificar periodicamente os dados -> `scrub`
|
|
* Restaurar o último ponto de backup/recuperação -> `fix`.
|
|
|
|
Os comandos devem ser escritos em letras minúsculas.
|
|
|
|
5.1 status
|
|
----------
|
|
|
|
Imprime um resumo do estado do array de discos.
|
|
|
|
Inclui informações sobre a fragmentação da paridade, a idade
|
|
dos blocos sem verificação e todos os erros silenciosos registrados
|
|
encontrados durante o scrubbing.
|
|
|
|
As informações apresentadas referem-se à última vez que você
|
|
executou `sync`. Modificações posteriores não são levadas em conta.
|
|
|
|
Se blocos ruins foram detectados, seus números de bloco são listados.
|
|
Para corrigi-los, você pode usar o comando `fix -e`.
|
|
|
|
Também mostra um gráfico que representa a última vez que cada bloco
|
|
foi examinado (scrubbed) ou sincronizado (synced). Blocos examinados
|
|
são mostrados com `*`, blocos sincronizados, mas ainda não examinados,
|
|
com `o`.
|
|
|
|
Nada é modificado.
|
|
|
|
5.2 smart
|
|
---------
|
|
|
|
Imprime um relatório SMART de todos os discos no sistema.
|
|
|
|
Inclui uma estimativa da probabilidade de falha no próximo
|
|
ano, permitindo que você planeje substituições de manutenção de
|
|
discos que mostrem atributos suspeitos.
|
|
|
|
Esta estimativa de probabilidade é obtida correlacionando os atributos
|
|
SMART dos discos com os dados do Backblaze disponíveis em:
|
|
|
|
https://www.backblaze.com/hard-drive-test-data.html
|
|
|
|
Se o SMART relatar que um disco está falhando, `FAIL` ou `PREFAIL` é
|
|
impresso para esse disco, e o SnapRAID retorna com um erro.
|
|
Neste caso, a substituição imediata do disco é altamente recomendada.
|
|
|
|
Outras possíveis strings de status são:
|
|
logfail - No passado, alguns atributos estavam abaixo do
|
|
limite.
|
|
logerr - O log de erros do dispositivo contém erros.
|
|
selferr - O log de autoteste do dispositivo contém erros.
|
|
|
|
Se a opção -v, --verbose for especificada, uma análise estatística
|
|
mais profunda é fornecida. Esta análise pode ajudá-lo a decidir
|
|
se você precisa de mais ou menos paridade.
|
|
|
|
Este comando usa a ferramenta `smartctl` e é equivalente a executar
|
|
`smartctl -a` em todos os dispositivos.
|
|
|
|
Se seus dispositivos não forem detectados automaticamente corretamente,
|
|
você pode especificar um comando personalizado usando a opção
|
|
`smartctl` no arquivo de configuração.
|
|
|
|
Nada é modificado.
|
|
|
|
5.3 probe
|
|
---------
|
|
|
|
Imprime o estado de ENERGIA de todos os discos no sistema.
|
|
|
|
`Standby` significa que o disco não está girando. `Active` significa
|
|
que o disco está girando.
|
|
|
|
Este comando usa a ferramenta `smartctl` e é equivalente a executar
|
|
`smartctl -n standby -i` em todos os dispositivos.
|
|
|
|
Se seus dispositivos não forem detectados automaticamente corretamente,
|
|
você pode especificar um comando personalizado usando a opção
|
|
`smartctl` no arquivo de configuração.
|
|
|
|
Nada é modificado.
|
|
|
|
5.4 up
|
|
------
|
|
|
|
Liga (spins up) todos os discos do array.
|
|
|
|
Você pode ligar apenas discos específicos usando a opção -d, --filter-disk.
|
|
|
|
Ligar todos os discos ao mesmo tempo requer muita energia.
|
|
Certifique-se de que sua fonte de alimentação pode suportar isso.
|
|
|
|
Nada é modificado.
|
|
|
|
5.5 down
|
|
--------
|
|
|
|
Desliga (spins down) todos os discos do array.
|
|
|
|
Este comando usa a ferramenta `smartctl` e é equivalente a executar
|
|
`smartctl -s standby,now` em todos os dispositivos.
|
|
|
|
Você pode desligar apenas discos específicos usando a opção -d, --filter-disk.
|
|
|
|
Para desligar automaticamente em caso de erro, você pode usar a opção
|
|
-s, --spin-down-on-error com qualquer outro comando, o que é
|
|
equivalente a executar `down` manualmente quando ocorre um erro.
|
|
|
|
Nada é modificado.
|
|
|
|
5.6 diff
|
|
--------
|
|
|
|
Lista todos os arquivos modificados desde o último `sync` que precisam ter
|
|
seus dados de paridade recalculados.
|
|
|
|
Este comando não verifica os dados do arquivo, mas apenas o carimbo de
|
|
data/hora, tamanho e inode do arquivo.
|
|
|
|
Após listar todos os arquivos alterados, um resumo das alterações é
|
|
apresentado, agrupado por:
|
|
equal - Arquivos inalterados de antes.
|
|
added - Arquivos adicionados que não estavam presentes antes.
|
|
removed - Arquivos removidos.
|
|
updated - Arquivos com tamanho ou carimbo de data/hora diferente,
|
|
o que significa que foram modificados.
|
|
moved - Arquivos movidos ou renomeados no mesmo disco, mantendo
|
|
o mesmo inode. Eles são identificados por terem o mesmo inode,
|
|
tamanho e carimbo de data/hora, mas um caminho diferente. O nome
|
|
do arquivo também pode ser diferente.
|
|
copied - Arquivos copiados no mesmo disco ou em um disco
|
|
diferente onde o arquivo original ainda existe.
|
|
Eles são identificados por terem o mesmo nome, tamanho e
|
|
carimbo de data/hora.
|
|
Se o carimbo de data/hora de subsegundos for zero, o caminho
|
|
completo deve corresponder para ser identificado, não apenas
|
|
o nome.
|
|
relocated - Arquivos movidos para um diretório ou disco diferente onde
|
|
o arquivo original desapareceu e o inode não é mantido.
|
|
Eles são identificados por terem o mesmo nome, tamanho e carimbo
|
|
de data/hora. Se o carimbo de data/hora de subsegundos for zero, o
|
|
caminho completo deve corresponder para ser identificado. Ao
|
|
contrário dos arquivos 'moved', os arquivos relocados exigem que
|
|
o nome do arquivo permaneça o mesmo.
|
|
restored - Arquivos com um inode diferente, mas com diretório,
|
|
nome, tamanho e carimbo de data/hora correspondentes.
|
|
Geralmente são arquivos restaurados após serem excluídos.
|
|
|
|
Se um `sync` for necessário, o código de retorno do processo é 2,
|
|
em vez do padrão 0. O código de retorno 1 é usado para uma condição
|
|
de erro genérica.
|
|
|
|
Nada é modificado.
|
|
|
|
5.7 sync
|
|
--------
|
|
|
|
Atualiza as informações de paridade. Todos os arquivos modificados
|
|
no array de discos são lidos, e os dados de paridade correspondentes
|
|
são atualizados.
|
|
|
|
Você pode parar este processo a qualquer momento pressionando Ctrl+C,
|
|
sem perder o trabalho já feito.
|
|
Na próxima execução, o processo `sync` será retomado de onde
|
|
foi interrompido.
|
|
|
|
Se erros silenciosos ou de entrada/saída forem encontrados durante o processo,
|
|
os blocos correspondentes são marcados como ruins.
|
|
|
|
Os arquivos são identificados por caminho e/ou inode e verificados por
|
|
tamanho e carimbo de data/hora.
|
|
Se o tamanho ou carimbo de data/hora do arquivo for diferente, a paridade
|
|
dos dados é recalculada para todo o arquivo.
|
|
Se o arquivo for movido ou renomeado no mesmo disco, mantendo o
|
|
mesmo inode, a paridade não é recalculada.
|
|
Se o arquivo for movido para outro disco, a paridade é recalculada,
|
|
mas as informações de hash calculadas anteriormente são mantidas.
|
|
|
|
Os arquivos `content` e `parity` são modificados se necessário.
|
|
Os arquivos no array NÃO são modificados.
|
|
|
|
5.8 scrub
|
|
---------
|
|
|
|
Examina (scrubs) o array, verificando se há erros silenciosos ou de
|
|
entrada/saída nos discos de dados e paridade.
|
|
|
|
Cada invocação verifica aproximadamente 8% do array, excluindo
|
|
dados já examinados nos últimos 10 dias.
|
|
Isso significa que examinar (scrubbing) uma vez por semana garante
|
|
que cada bit de dados seja verificado pelo menos uma vez a cada
|
|
três meses.
|
|
|
|
Você pode definir um plano de scrub ou quantidade diferente usando a opção
|
|
-p, --plan, que aceita:
|
|
bad - Examina blocos marcados como ruins.
|
|
new - Examina blocos recém-sincronizados ainda não examinados.
|
|
full - Examina tudo.
|
|
0-100 - Examina a porcentagem especificada de blocos.
|
|
|
|
Se você especificar um valor percentual, também pode usar a opção
|
|
-o, --older-than para definir a idade mínima do bloco.
|
|
Os blocos mais antigos são examinados primeiro, garantindo uma
|
|
verificação ideal.
|
|
Se você quiser examinar apenas os blocos recém-sincronizados ainda
|
|
não examinados, use a opção `-p new`.
|
|
|
|
Para obter detalhes do status do scrub, use o comando `status`.
|
|
|
|
Para qualquer erro silencioso ou de entrada/saída encontrado, os blocos
|
|
correspondentes são marcados como ruins no arquivo de `content`.
|
|
Esses blocos ruins são listados em `status` e podem ser corrigidos com
|
|
`fix -e`.
|
|
Após a correção, no próximo scrub, eles serão verificados novamente e,
|
|
se considerados corrigidos, a marcação de ruim será removida.
|
|
Para examinar apenas os blocos ruins, você pode usar o comando
|
|
`scrub -p bad`.
|
|
|
|
É recomendado executar `scrub` apenas em um array sincronizado para
|
|
evitar erros relatados causados por dados não sincronizados. Esses erros
|
|
são reconhecidos como não sendo erros silenciosos, e os blocos não são
|
|
marcados como ruins, mas tais erros são relatados na saída do comando.
|
|
|
|
O arquivo `content` é modificado para atualizar o tempo da última verificação
|
|
para cada bloco e para marcar blocos ruins.
|
|
Os arquivos `parity` NÃO são modificados.
|
|
Os arquivos no array NÃO são modificados.
|
|
|
|
5.9 fix
|
|
-------
|
|
|
|
Corrige todos os arquivos e os dados de paridade.
|
|
|
|
Todos os arquivos e dados de paridade são comparados com o estado salvo no
|
|
último `sync`. Se for encontrada uma diferença, esta é revertida para o estado armazenado.
|
|
|
|
AVISO!
|
|
O comando `fix` não diferencia erros de modificações intencionais.
|
|
Reverte incondicionalmente o estado do arquivo para o do último `sync`.
|
|
|
|
Se nenhuma outra opção for especificada, todo o array é processado.
|
|
Use as opções de filtro para selecionar um subconjunto de arquivos ou
|
|
discos para operar.
|
|
|
|
Para corrigir apenas os blocos marcados como ruins durante `sync` e `scrub`,
|
|
use a opção -e, --filter-error.
|
|
Ao contrário de outras opções de filtro, esta aplica correções apenas a
|
|
arquivos que não foram alterados desde o último `sync`.
|
|
|
|
O SnapRAID renomeia todos os arquivos que não podem ser corrigidos adicionando
|
|
a extensão `.unrecoverable`.
|
|
|
|
Antes de corrigir, todo o array é escaneado para encontrar quaisquer
|
|
arquivos movidos desde a última operação de `sync`.
|
|
Esses arquivos são identificados por seu carimbo de data/hora, ignorando
|
|
seu nome e diretório, e são usados no processo de recuperação, se
|
|
necessário.
|
|
Se você moveu alguns deles para fora do array, pode usar a opção
|
|
-i, --import para especificar diretórios adicionais para escanear.
|
|
|
|
Os arquivos são identificados apenas por caminho, não por inode.
|
|
|
|
O arquivo `content` NÃO é modificado.
|
|
Os arquivos `parity` são modificados se necessário.
|
|
Os arquivos no array são modificados se necessário.
|
|
|
|
5.10 check
|
|
----------
|
|
|
|
Verifica todos os arquivos e os dados de paridade.
|
|
|
|
Funciona como `fix`, mas apenas simula uma recuperação e nenhuma alteração
|
|
é escrita no array.
|
|
|
|
Este comando é destinado principalmente a verificações manuais,
|
|
como após um processo de recuperação ou em outras condições especiais.
|
|
Para verificações periódicas e agendadas, use `scrub`.
|
|
|
|
Se você usar a opção -a, --audit-only, apenas os dados do arquivo
|
|
são verificados, e os dados de paridade são ignorados para uma
|
|
execução mais rápida.
|
|
|
|
Os arquivos são identificados apenas por caminho, não por inode.
|
|
|
|
Nada é modificado.
|
|
|
|
5.11 list
|
|
---------
|
|
|
|
Lista todos os arquivos contidos no array no momento da
|
|
última `sync`.
|
|
|
|
Com -v ou --verbose, o tempo sub-segundo também é mostrado.
|
|
|
|
Nada é modificado.
|
|
|
|
5.12 dup
|
|
--------
|
|
|
|
Lista todos os arquivos duplicados. Dois arquivos são considerados
|
|
iguais se seus hashes corresponderem. Os dados do arquivo não são lidos;
|
|
apenas os hashes pré-calculados são usados.
|
|
|
|
Nada é modificado.
|
|
|
|
5.13 pool
|
|
---------
|
|
|
|
Cria ou atualiza uma visualização virtual de todos
|
|
os arquivos em seu array de discos no diretório `pooling`.
|
|
|
|
Os arquivos não são copiados, mas ligados usando
|
|
links simbólicos.
|
|
|
|
Ao atualizar, todos os links simbólicos existentes e subdiretórios
|
|
vazios são excluídos e substituídos pela nova
|
|
visualização do array. Quaisquer outros arquivos regulares são
|
|
deixados no lugar.
|
|
|
|
Nada é modificado fora do diretório do pool.
|
|
|
|
5.14 devices
|
|
------------
|
|
|
|
Imprime os dispositivos de baixo nível usados pelo array.
|
|
|
|
Este comando exibe as associações de dispositivos no array
|
|
e destina-se principalmente como uma interface de script.
|
|
|
|
As duas primeiras colunas são o ID do dispositivo de baixo nível e o
|
|
caminho. As próximas duas colunas são o ID do dispositivo de alto nível
|
|
e o caminho. A última coluna é o nome do disco no array.
|
|
|
|
Na maioria dos casos, você tem um dispositivo de baixo nível para cada disco
|
|
no array, mas em algumas configurações mais complexas, você pode ter
|
|
vários dispositivos de baixo nível usados por um único disco no array.
|
|
|
|
Nada é modificado.
|
|
|
|
5.15 touch
|
|
----------
|
|
|
|
Define um carimbo de data/hora sub-segundo arbitrário para todos os arquivos
|
|
que o têm definido como zero.
|
|
|
|
Isso melhora a capacidade do SnapRAID de reconhecer arquivos movidos
|
|
e copiados, pois torna o carimbo de data/hora quase único,
|
|
reduzindo possíveis duplicatas.
|
|
|
|
Mais especificamente, se o carimbo de data/hora sub-segundo não for zero,
|
|
um arquivo movido ou copiado é identificado como tal se corresponder
|
|
ao nome, tamanho e carimbo de data/hora. Se o carimbo de data/hora
|
|
sub-segundo for zero, ele é considerado uma cópia apenas se o caminho
|
|
completo, tamanho e carimbo de data/hora corresponderem.
|
|
|
|
O carimbo de data/hora de precisão de segundo não é modificado,
|
|
portanto, todas as datas e horas de seus arquivos serão preservadas.
|
|
|
|
5.16 rehash
|
|
-----------
|
|
|
|
Agenda um novo hash de todo o array.
|
|
|
|
Este comando altera o tipo de hash usado, tipicamente ao atualizar
|
|
de um sistema de 32 bits para um de 64 bits, para alternar do
|
|
MurmurHash3 para o mais rápido SpookyHash.
|
|
|
|
Se você já estiver usando o hash ideal, este comando
|
|
não faz nada e informa que nenhuma ação é necessária.
|
|
|
|
O novo hash não é executado imediatamente, mas ocorre
|
|
progressivamente durante `sync` e `scrub`.
|
|
|
|
Você pode verificar o estado do novo hash usando `status`.
|
|
|
|
Durante o novo hash, o SnapRAID mantém a funcionalidade total,
|
|
com a única exceção de que `dup` não pode detectar arquivos duplicados
|
|
usando um hash diferente.
|
|
|
|
5.17 locate
|
|
-----------
|
|
|
|
Localiza arquivos armazenados nos discos de paridade. Para cada arquivo
|
|
correspondente, imprime sua localização dentro do arquivo de paridade e o
|
|
número de fragmentos que ocupa.
|
|
|
|
Você pode usar a opção -t, --tail para restringir a operação aos arquivos
|
|
que ocupam a parte final especificada da paridade.
|
|
|
|
Se desejar realocar esses arquivos, você poderá usar a opção
|
|
-W, --force-realloc-tail.
|
|
Esteja ciente de que tais arquivos não estarão protegidos pela paridade durante
|
|
o processo de realocação.
|
|
|
|
|
|
6 OPçõES (OPTIONS)
|
|
==================
|
|
|
|
SnapRAID fornece as seguintes opções:
|
|
|
|
-c, --conf CONFIG
|
|
Seleciona o arquivo de configuração a ser usado. Se não for especificado,
|
|
no Unix, ele usa o arquivo `/usr/local/etc/snapraid.conf` se existir,
|
|
caso contrário, `/etc/snapraid.conf`.
|
|
No Windows, ele usa o arquivo `snapraid.conf` no mesmo
|
|
diretório que `snapraid.exe`.
|
|
|
|
-f, --filter PATTERN
|
|
Filtra os arquivos a serem processados em `check` e `fix`.
|
|
Apenas os arquivos que correspondem ao padrão especificado são processados.
|
|
Esta opção pode ser usada várias vezes.
|
|
Consulte a seção PATTERN para obter mais detalhes sobre
|
|
especificações de padrão.
|
|
No Unix, certifique-se de que os caracteres globbing sejam citados, se usados.
|
|
Esta opção pode ser usada apenas com `check` e `fix`.
|
|
Não pode ser usada com `sync` e `scrub`, pois eles sempre
|
|
processam o array inteiro.
|
|
|
|
-d, --filter-disk NAME
|
|
Filtra os discos a serem processados em `check`, `fix`, `up` e `down`.
|
|
Você deve especificar um nome de disco conforme definido no
|
|
arquivo de configuração.
|
|
Você também pode especificar discos de paridade com os nomes: `parity`,
|
|
`2-parity`, `3-parity`, etc., para limitar as operações a um
|
|
disco de paridade específico.
|
|
Se você combinar múltiplas opções --filter, --filter-disk e --filter-missing,
|
|
apenas os arquivos que correspondem a todos os filtros são selecionados.
|
|
Esta opção pode ser usada várias vezes.
|
|
Esta opção pode ser usada apenas com `check`, `fix`, `up` e `down`.
|
|
Não pode ser usada com `sync` e `scrub`, pois eles sempre
|
|
processam o array inteiro.
|
|
|
|
-m, --filter-missing
|
|
Filtra os arquivos a serem processados em `check` e `fix`.
|
|
Apenas os arquivos ausentes ou excluídos do array são processados.
|
|
Quando usado com `fix`, isso age como um comando `undelete` (desexcluir).
|
|
Se você combinar múltiplas opções --filter, --filter-disk e --filter-missing,
|
|
apenas os arquivos que correspondem a todos os filtros são selecionados.
|
|
Esta opção pode ser usada apenas com `check` e `fix`.
|
|
Não pode ser usada com `sync` e `scrub`, pois eles sempre
|
|
processam o array inteiro.
|
|
|
|
-e, --filter-error
|
|
Processa os arquivos com erros em `check` e `fix`.
|
|
Processa apenas arquivos que têm blocos marcados com erros silenciosos
|
|
ou de entrada/saída durante `sync` e `scrub`, conforme listado em `status`.
|
|
Esta opção pode ser usada apenas com `check` e `fix`.
|
|
|
|
-p, --plan PERC|bad|new|full
|
|
Seleciona o plano de scrub. Se PERC for um valor numérico de 0 a 100,
|
|
ele é interpretado como a porcentagem de blocos a serem examinados.
|
|
Em vez de uma porcentagem, você pode especificar um plano:
|
|
`bad` examina blocos ruins, `new` examina blocos ainda não examinados,
|
|
e `full` examina tudo.
|
|
Esta opção pode ser usada apenas com `scrub`.
|
|
|
|
-o, --older-than DAYS
|
|
Seleciona a parte mais antiga do array a ser processada em `scrub`.
|
|
DAYS é a idade mínima em dias para um bloco ser examinado;
|
|
o padrão é 10.
|
|
Os blocos marcados como ruins são sempre examinados,
|
|
independentemente desta opção.
|
|
Esta opção pode ser usada apenas com `scrub`.
|
|
|
|
-a, --audit-only
|
|
Em `check`, verifica o hash dos arquivos sem
|
|
verificar os dados de paridade.
|
|
Se você estiver interessado apenas em verificar os dados do arquivo,
|
|
esta opção pode acelerar significativamente o processo de verificação.
|
|
Esta opção pode ser usada apenas com `check`.
|
|
|
|
-h, --pre-hash
|
|
Em `sync`, executa uma fase de hash prexcluir de todos os novos dados
|
|
para verificação adicional antes do cálculo da paridade.
|
|
Normalmente, em `sync`, nenhum hash prexcluir é feito, e os novos
|
|
dados são hashados logo antes do cálculo da paridade, quando são lidos
|
|
pela primeira vez.
|
|
Este processo ocorre quando o sistema está sob
|
|
carga pesada, com todos os discos girando e uma CPU ocupada.
|
|
Esta é uma condição extrema para a máquina, e se ela tiver um
|
|
problema de hardware latente, erros silenciosos podem passar
|
|
despercebidos porque os dados ainda não foram hashados.
|
|
Para evitar esse risco, você pode habilitar o modo `pre-hash` para
|
|
ter todos os dados lidos duas vezes para garantir sua integridade.
|
|
Esta opção também verifica arquivos movidos dentro do array
|
|
para garantir que a operação de movimentação foi bem-sucedida e,
|
|
se necessário, permite que você execute uma operação fix antes de prosseguir.
|
|
Esta opção pode ser usada apenas com `sync`.
|
|
|
|
-i, --import DIR
|
|
Importa do diretório especificado quaisquer arquivos excluídos
|
|
do array após a última `sync`.
|
|
Se você ainda tiver esses arquivos, eles podem ser usados por `check`
|
|
e `fix` para melhorar o processo de recuperação.
|
|
Os arquivos são lidos, incluindo em subdiretórios, e são
|
|
identificados independentemente de seu nome.
|
|
Esta opção pode ser usada apenas com `check` e `fix`.
|
|
|
|
-s, --spin-down-on-error
|
|
Em qualquer erro, desliga (spins down) todos os discos gerenciados
|
|
antes de sair com um código de status diferente de zero. Isso
|
|
impede que as unidades permaneçam ativas e girando após uma
|
|
operação abortada, ajudando a evitar acúmulo desnecessário de
|
|
calor e consumo de energia. Use esta opção para garantir que os
|
|
discos sejam interrompidos com segurança, mesmo quando um comando falhar.
|
|
|
|
-w, --bw-limit RATE
|
|
Aplica um limite de largura de banda global para todos os discos. A
|
|
RATE é o número de bytes por segundo. Você pode especificar um
|
|
multiplicador como K, M ou G (por exemplo, --bw-limit 1G).
|
|
|
|
-t, --tail SIZE
|
|
Limita a listagem de arquivos àqueles que não usam mais do que o
|
|
tamanho final especificado dos discos de paridade.
|
|
Você pode usar multiplicadores como K, M, G ou T (ex: --tail 1G).
|
|
Esta opção só é válida quando usada em conjunto com o comando
|
|
`locate`.
|
|
|
|
-A, --stats
|
|
Habilita uma visualização de status estendida que mostra informações
|
|
adicionais. A tela exibe dois gráficos:
|
|
O primeiro gráfico mostra o número de stripes em buffer para cada
|
|
disco, juntamente com o caminho do arquivo que está sendo
|
|
acessado atualmente nesse disco. Tipicamente, o disco mais lento não
|
|
terá buffer disponível, o que determina a largura de banda máxima
|
|
alcançável.
|
|
O segundo gráfico mostra a porcentagem de tempo gasto esperando
|
|
nos últimos 100 segundos. Espera-se que o disco mais lento
|
|
cause a maior parte do tempo de espera, enquanto outros discos
|
|
devem ter pouco ou nenhum tempo de espera porque podem usar seus
|
|
stripes em buffer.
|
|
Este gráfico também mostra o tempo gasto esperando por cálculos
|
|
de hash e cálculos RAID.
|
|
Todos os cálculos são executados em paralelo com as operações de disco.
|
|
Portanto, enquanto houver tempo de espera mensurável para
|
|
pelo menos um disco, isso indica que a CPU é rápida o suficiente
|
|
para acompanhar a carga de trabalho.
|
|
|
|
-Z, --force-zero
|
|
Força a operação insegura de sincronizar um arquivo com tamanho zero
|
|
que era anteriormente não zero.
|
|
Se o SnapRAID detectar tal condição, ele para de prosseguir
|
|
a menos que você especifique esta opção.
|
|
Isso permite que você detecte facilmente quando, após uma falha
|
|
do sistema, alguns arquivos acessados foram truncados.
|
|
Esta é uma condição possível no Linux com os sistemas de arquivos
|
|
ext3/ext4.
|
|
Esta opção pode ser usada apenas com `sync`.
|
|
|
|
-E, --force-empty
|
|
Força a operação insegura de sincronizar um disco com todos
|
|
os arquivos originais ausentes.
|
|
Se o SnapRAID detectar que todos os arquivos originalmente presentes
|
|
no disco estão ausentes ou foram reescritos, ele para de prosseguir
|
|
a menos que você especifique esta opção.
|
|
Isso permite que você detecte facilmente quando um sistema de
|
|
arquivos de dados não está montado.
|
|
Esta opção pode ser usada apenas com `sync`.
|
|
|
|
-U, --force-uuid
|
|
Força a operação insegura de sincronizar, verificar e corrigir
|
|
com discos que tiveram seus UUIDs alterados.
|
|
Se o SnapRAID detectar que alguns discos tiveram seus UUIDs alterados,
|
|
ele para de prosseguir a menos que você especifique esta opção.
|
|
Isso permite que você detecte quando seus discos estão montados
|
|
nos pontos de montagem errados.
|
|
No entanto, é permitido ter uma única mudança de UUID com
|
|
paridade única e mais com paridade múltipla, porque este é
|
|
o caso normal ao substituir discos após uma recuperação.
|
|
Esta opção pode ser usada apenas com `sync`, `check` ou
|
|
`fix`.
|
|
|
|
-D, --force-device
|
|
Força a operação insegura de corrigir com discos inacessíveis
|
|
ou com discos no mesmo dispositivo físico.
|
|
Por exemplo, se você perdeu dois discos de dados e tem um disco
|
|
sobressalente para recuperar apenas o primeiro, você pode ignorar
|
|
o segundo disco inacessível.
|
|
Ou, se você quiser recuperar um disco no espaço livre restante
|
|
em um disco já usado, compartilhando o mesmo dispositivo físico.
|
|
Esta opção pode ser usada apenas com `fix`.
|
|
|
|
-N, --force-nocopy
|
|
Em `sync`, `check` e `fix`, desabilita a heurística de detecção
|
|
de cópia. Sem esta opção, o SnapRAID assume que arquivos com os
|
|
mesmos atributos, como nome, tamanho e carimbo de data/hora,
|
|
são cópias com os mesmos dados.
|
|
Isso permite a identificação de arquivos copiados ou movidos de um
|
|
disco para outro e reutiliza as informações de hash já calculadas
|
|
para detectar erros silenciosos ou para recuperar arquivos ausentes.
|
|
Em alguns casos raros, esse comportamento pode resultar em falsos
|
|
positivos ou em um processo lento devido a muitas verificações de hash,
|
|
e esta opção permite que você resolva tais problemas.
|
|
Esta opção pode ser usada apenas com `sync`, `check` e `fix`.
|
|
|
|
-F, --force-full
|
|
Em `sync`, força um recálculo completo da paridade.
|
|
Esta opção pode ser usada quando você adiciona um novo nível de
|
|
paridade ou se você reverteu para um arquivo de conteúdo antigo
|
|
usando dados de paridade mais recentes.
|
|
Em vez de recriar a paridade do zero, isso permite
|
|
que você reutilize os hashes presentes no arquivo de conteúdo para
|
|
validar dados e manter a proteção de dados durante o processo
|
|
`sync` usando os dados de paridade existentes.
|
|
Esta opção pode ser usada apenas com `sync`.
|
|
|
|
-R, --force-realloc
|
|
Em `sync`, força uma realocação completa de arquivos e reconstrução
|
|
da paridade.
|
|
Esta opção pode ser usada para realocar completamente todos os
|
|
arquivos, removendo a fragmentação, enquanto reutiliza os hashes
|
|
presentes no arquivo de conteúdo para validar dados.
|
|
Esta opção pode ser usada apenas com `sync`.
|
|
ATENÇÃO! Esta opção é apenas para especialistas e é altamente
|
|
recomendado não usá-la.
|
|
Você NÃO tem proteção de dados durante a operação `sync`.
|
|
|
|
-W, --force-realloc-tail SIZE
|
|
Funciona como -R, --force-realloc, mas limitado à parte final
|
|
especificada (últimos SIZE bytes) de cada arquivo de paridade.
|
|
Força a realocação (movimentação) de quaisquer fragmentos/blocos de arquivos
|
|
atualmente armazenados nessa seção final, permitindo que sejam colocados
|
|
em qualquer lugar no(s) arquivo(s) de paridade onde houver espaço livre
|
|
disponível (incluindo espaços vazios existentes).
|
|
O objetivo principal desta opção é diminuir o tamanho em disco
|
|
do arquivo de paridade.
|
|
Se a realocação limpar com sucesso toda a seção final (nenhum bloco
|
|
permanecer usando-a), o arquivo de paridade será truncado,
|
|
recuperando o espaço final não utilizado.
|
|
Você pode usar multiplicadores como K, M, G ou T (ex:
|
|
--force-realloc-tail 1G).
|
|
Você pode usar locate -t, --tail para saber antecipadamente os
|
|
arquivos afetados.
|
|
ATENÇÃO! Esta opção é apenas para especialistas e é altamente
|
|
recomendado não usá-la.
|
|
Você NÃO tem proteção de dados durante a operação `sync` para os
|
|
arquivos afetados.
|
|
|
|
-l, --log FILE
|
|
Escreve um log detalhado para o arquivo especificado.
|
|
Se esta opção não for especificada, erros inesperados são
|
|
impressos na tela, resultando potencialmente em saída excessiva
|
|
em caso de muitos erros. Quando -l, --log é especificado, apenas
|
|
erros fatais que fazem o SnapRAID parar são impressos
|
|
na tela.
|
|
Se o caminho começar com `>>`, o arquivo é aberto
|
|
no modo de anexação. Ocorrências de `%D` e `%T` no nome são
|
|
substituídas pela data e hora no formato YYYYMMDD e
|
|
HHMMSS. Em arquivos em lote do Windows, você deve duplicar
|
|
o caractere `%`, por exemplo, resultado-%%D.log. Para usar `>>`, você deve
|
|
colocar o nome entre aspas, por exemplo, `">>resultado.log"`.
|
|
Para enviar o log para a saída padrão ou erro padrão,
|
|
você pode usar `">&1"` e `">&2"`, respectivamente.
|
|
Consulte o arquivo snapraid_log.txt ou a página man para descrições
|
|
de tags de log.
|
|
|
|
-L, --error-limit NUMBER
|
|
Define um novo limite de erro antes de interromper a execução.
|
|
Por padrão, o SnapRAID para se encontrar mais de 100
|
|
erros de entrada/saída, indicando que um disco provavelmente está
|
|
falhando.
|
|
Esta opção afeta `sync` e `scrub`, que têm permissão
|
|
para continuar após o primeiro conjunto de erros de disco para tentar
|
|
completar suas operações.
|
|
No entanto, `check` e `fix` sempre param no primeiro erro.
|
|
|
|
-S, --start BLKSTART
|
|
Começa o processamento a partir do número de bloco
|
|
especificado. Isso pode ser útil para tentar verificar
|
|
ou corrigir blocos específicos em caso de um disco danificado.
|
|
Esta opção é principalmente para recuperação manual avançada
|
|
e é suportada apenas por `check` e `fix`.
|
|
|
|
-B, --count BLKCOUNT
|
|
Processa apenas o número especificado de blocos.
|
|
Esta opção é principalmente para recuperação manual avançada
|
|
e é suportada apenas por `check` e `fix`.
|
|
|
|
-C, --gen-conf CONTENT
|
|
Gera um arquivo de configuração dummy a partir de um arquivo
|
|
de conteúdo existente.
|
|
O arquivo de configuração é escrito na saída padrão
|
|
e não sobrescreve um existente.
|
|
Este arquivo de configuração também contém as informações
|
|
necessárias para reconstruir os pontos de montagem do disco,
|
|
caso você perca todo o sistema.
|
|
|
|
-v, --verbose
|
|
Imprime mais informações na tela.
|
|
Se especificado uma vez, ele imprime arquivos excluídos
|
|
e estatísticas adicionais.
|
|
Esta opção não tem efeito nos arquivos de log.
|
|
|
|
-q, --quiet
|
|
Imprime menos informações na tela.
|
|
Se especificado uma vez, remove a barra de progresso; duas vezes,
|
|
as operações em execução; três vezes, as mensagens de informação;
|
|
quatro vezes, as mensagens de status.
|
|
Erros fatais são sempre impressos na tela.
|
|
Esta opção não tem efeito nos arquivos de log.
|
|
|
|
-H, --help
|
|
Imprime uma tela de ajuda curta.
|
|
|
|
-V, --version
|
|
Imprime a versão do programa.
|
|
|
|
|
|
7 CONFIGURAçãO (CONFIGURATION)
|
|
==============================
|
|
|
|
SnapRAID requer um arquivo de configuração para saber onde seu array
|
|
de discos está localizado e onde armazenar as informações de paridade.
|
|
|
|
No Unix, ele usa o arquivo `/usr/local/etc/snapraid.conf` se existir,
|
|
caso contrário, `/etc/snapraid.conf`.
|
|
No Windows, ele usa o arquivo `snapraid.conf` no mesmo
|
|
diretório que `snapraid.exe`.
|
|
|
|
Deve conter as seguintes opções (sensível a maiúsculas/minúsculas):
|
|
|
|
7.1 parity FILE [,FILE] ...
|
|
---------------------------
|
|
|
|
Define os arquivos a serem usados para armazenar as informações de paridade.
|
|
A paridade permite proteção contra uma única falha de disco,
|
|
semelhante ao RAID5.
|
|
|
|
Você pode especificar vários arquivos, que devem estar em discos diferentes.
|
|
Quando um arquivo não pode mais crescer, o próximo é usado.
|
|
O espaço total disponível deve ser pelo menos tão grande quanto o maior
|
|
disco de dados no array.
|
|
|
|
Você pode adicionar arquivos de paridade adicionais mais tarde, mas você
|
|
não pode reordenar ou removê-los.
|
|
|
|
Manter os discos de paridade reservados para paridade garante que
|
|
eles não se fragmentem, melhorando o desempenho.
|
|
|
|
No Windows, 256 MB são deixados sem uso em cada disco para evitar o
|
|
aviso sobre discos cheios.
|
|
|
|
Esta opção é obrigatória e pode ser usada apenas uma vez.
|
|
|
|
7.2 (2,3,4,5,6)-parity FILE [,FILE] ...
|
|
---------------------------------------
|
|
|
|
Define os arquivos a serem usados para armazenar informações de paridade extra.
|
|
|
|
Para cada nível de paridade especificado, um nível adicional de proteção
|
|
é habilitado:
|
|
|
|
* 2-parity habilita paridade dupla RAID6.
|
|
* 3-parity habilita paridade tripla.
|
|
* 4-parity habilita paridade quádrupla (quatro).
|
|
* 5-parity habilita paridade penta (cinco).
|
|
* 6-parity habilita paridade hexa (seis).
|
|
|
|
Cada nível de paridade requer a presença de todos os níveis de paridade
|
|
anteriores.
|
|
|
|
As mesmas considerações que para a opção `parity` se aplicam.
|
|
|
|
Estas opções são opcionais e podem ser usadas apenas uma vez.
|
|
|
|
7.3 z-parity FILE [,FILE] ...
|
|
-----------------------------
|
|
|
|
Define um arquivo e formato alternativo para armazenar paridade tripla.
|
|
|
|
Esta opção é uma alternativa a `3-parity`, destinada principalmente a
|
|
CPUs de baixo custo como ARM ou AMD Phenom, Athlon e Opteron que não
|
|
suportam o conjunto de instruções SSSE3. Nesses casos, ela fornece
|
|
melhor desempenho.
|
|
|
|
Este formato é semelhante, mas mais rápido do que o usado pelo ZFS RAIDZ3.
|
|
Assim como o ZFS, ele não funciona além da paridade tripla.
|
|
|
|
Ao usar `3-parity`, você será avisado se for recomendado usar
|
|
o formato `z-parity` para melhoria de desempenho.
|
|
|
|
É possível converter de um formato para outro ajustando
|
|
o arquivo de configuração com o z-parity ou 3-parity desejado
|
|
e usando `fix` para recriá-lo.
|
|
|
|
7.4 content FILE
|
|
----------------
|
|
|
|
Define o arquivo a ser usado para armazenar a lista e os checksums de todos
|
|
os arquivos presentes em seu array de discos.
|
|
|
|
Pode ser colocado em um disco usado para dados, paridade ou
|
|
qualquer outro disco disponível.
|
|
Se você usar um disco de dados, este arquivo é automaticamente excluído
|
|
do processo `sync`.
|
|
|
|
Esta opção é obrigatória e pode ser usada várias vezes para salvar
|
|
múltiplas cópias do mesmo arquivo.
|
|
|
|
Você deve armazenar pelo menos uma cópia para cada disco de paridade usado
|
|
mais um. Usar cópias adicionais não prejudica.
|
|
|
|
7.5 data NAME DIR
|
|
-----------------
|
|
|
|
Define o nome e o ponto de montagem dos discos de dados no
|
|
array. NAME é usado para identificar o disco e deve
|
|
ser único. DIR é o ponto de montagem do disco no
|
|
sistema de arquivos.
|
|
|
|
Você pode alterar o ponto de montagem conforme necessário, desde que
|
|
mantenha o NAME fixo.
|
|
|
|
No entanto, o caminho configurado deve apontar consistentemente para os
|
|
mesmos dados subjacentes. Se o caminho contiver links simbólicos,
|
|
seus destinos devem permanecer estáveis. A alteração desses links simbólicos
|
|
para alternar o diretório de dados em tempo real não é suportada.
|
|
|
|
Você deve usar uma opção para cada disco de dados no array.
|
|
|
|
Você pode renomear um disco mais tarde alterando o NAME diretamente
|
|
no arquivo de configuração e, em seguida, executando um comando `sync`.
|
|
No caso de renomeação, a associação é feita usando o UUID
|
|
armazenado dos discos.
|
|
|
|
7.6 extra NAME DIR
|
|
------------------
|
|
|
|
Define o nome e o ponto de montagem de discos adicionais para
|
|
monitorar com os comandos `smart` e `probe`.
|
|
|
|
Isso é útil para monitorar discos que não fazem parte do array,
|
|
mas que são necessários para o funcionamento do sistema, como o
|
|
disco de inicialização.
|
|
|
|
Observe que tais discos não são afetados pelos comandos `up` e `down`
|
|
porque se espera que estejam sempre girando.
|
|
|
|
7.7 snapshot
|
|
------------
|
|
|
|
Ativa o uso de instantâneos (snapshots) do sistema de arquivos para os comandos `sync`, `scrub`,
|
|
`check` e `fix`.
|
|
|
|
Quando ativado, o SnapRAID cria um instantâneo de somente leitura de cada
|
|
sistema de arquivos de dados suportado no início de um 'sync'. Isso fornece uma visão
|
|
estável de cada sistema de arquivos, evitando que modificações posteriores alterem os
|
|
dados utilizados para o cálculo da paridade.
|
|
|
|
Isso melhora significativamente a recuperação: se um arquivo for excluído do sistema de arquivos ativo,
|
|
ele permanece preservado no instantâneo. Isso evita que a paridade fique "corrompida"
|
|
para esse bloco, garantindo que ainda pode recuperar os dados com sucesso
|
|
se outro disco falhar.
|
|
|
|
Esta opção aplica-se exclusivamente a discos de dados formatados com os sistemas de
|
|
arquivos Btrfs, Bcachefs ou ZFS em Linux e NTFS em Windows.
|
|
Discos de paridade, ou discos de dados que utilizem outros sistemas de arquivos, usarão sempre
|
|
a versão ativa do sistema de arquivos.
|
|
|
|
A criação e exclusão de instantâneos requerem privilégios administrativos.
|
|
Garanta que o SnapRAID é executado com as permissões necessárias (ex: sudo) quando
|
|
esta opção estiver ativada.
|
|
|
|
Consulte a seção SNAPSHOTS para uma explicação detalhada do ciclo de vida
|
|
dos instantâneos.
|
|
|
|
7.8 nohidden
|
|
------------
|
|
|
|
Exclui todos os arquivos e diretórios ocultos.
|
|
No Unix, arquivos ocultos são aqueles que começam com `.`.
|
|
No Windows, são aqueles com o atributo oculto.
|
|
|
|
7.9 exclude/include PATTERN
|
|
---------------------------
|
|
|
|
Define os padrões de arquivo ou diretório a serem excluídos ou incluídos
|
|
no processo de sincronização.
|
|
Todos os padrões são processados na ordem especificada.
|
|
|
|
Se o primeiro padrão que corresponde for um `exclude`, o arquivo
|
|
é excluído. Se for um `include`, o arquivo é incluído.
|
|
Se nenhum padrão corresponder, o arquivo é excluído se o último padrão
|
|
especificado for um `include`, ou incluído se o último padrão
|
|
especificado for um `exclude`.
|
|
|
|
Observe que a filtragem ocorre hierarquicamente durante o percurso
|
|
dos diretórios. Se um diretório corresponder a uma regra `exclude`,
|
|
todo o diretório será ignorado (podado) e nenhuma regra `include` para
|
|
arquivos ou subdiretórios dentro dele será avaliada.
|
|
|
|
Consulte a seção PATTERN para obter mais detalhes sobre
|
|
especificações de padrão.
|
|
|
|
Esta opção pode ser usada várias vezes.
|
|
|
|
7.10 blocksize SIZE_IN_KIBIBYTES
|
|
--------------------------------
|
|
|
|
Define o tamanho básico do bloco em kibibytes para a paridade.
|
|
Um kibibyte é 1024 bytes.
|
|
|
|
O `blocksize` padrão é 256, o que deve funcionar para a maioria dos casos.
|
|
|
|
ATENÇÃO! Esta opção é apenas para especialistas e é altamente
|
|
recomendado não alterar este valor. Para alterar este valor no
|
|
futuro, você precisará recriar toda a paridade!
|
|
|
|
Uma razão para usar um `blocksize` diferente é se você tiver muitos arquivos
|
|
pequenos, na ordem de milhões.
|
|
|
|
Para cada arquivo, mesmo que apenas alguns bytes, um bloco inteiro de
|
|
paridade é alocado, e com muitos arquivos, isso pode resultar em
|
|
espaço de paridade não utilizado significativo.
|
|
Quando você preenche completamente o disco de paridade, você não está
|
|
autorizado a adicionar mais arquivos aos discos de dados.
|
|
No entanto, a paridade desperdiçada não se acumula em todos os discos de dados.
|
|
O espaço desperdiçado resultante de um grande número de arquivos em um disco
|
|
de dados limita apenas a quantidade de dados nesse disco de dados,
|
|
não em outros.
|
|
|
|
Como uma aproximação, você pode assumir que metade do tamanho do bloco é
|
|
desperdiçada para cada arquivo. Por exemplo, com 100.000 arquivos e um
|
|
tamanho de bloco de 256 KiB, você desperdiçará 12,8 GB de paridade, o
|
|
que pode resultar em 12,8 GB a menos de espaço disponível no disco de dados.
|
|
|
|
Você pode verificar a quantidade de espaço desperdiçado em cada disco usando `status`.
|
|
Esta é a quantidade de espaço que você deve deixar livre nos discos
|
|
de dados ou usar para arquivos não incluídos no array.
|
|
Se este valor for negativo, significa que você está perto de encher
|
|
a paridade e representa o espaço que você ainda pode desperdiçar.
|
|
|
|
Para evitar esse problema, você pode usar uma partição maior para paridade.
|
|
Por exemplo, se a partição de paridade for 12,8 GB maior que os discos de dados,
|
|
você tem espaço extra suficiente para lidar com até 100.000
|
|
arquivos em cada disco de dados sem qualquer espaço desperdiçado.
|
|
|
|
Um truque para obter uma partição de paridade maior no Linux é formatá-la
|
|
com o comando:
|
|
|
|
mkfs.ext4 -m 0 -T largefile4 DEVICE
|
|
|
|
Isso resulta em cerca de 1,5% de espaço extra, aproximadamente 60 GB para
|
|
um disco de 4 TB, o que permite cerca de 460.000 arquivos em cada disco
|
|
de dados sem qualquer espaço desperdiçado.
|
|
|
|
7.11 hashsize SIZE_IN_BYTES
|
|
---------------------------
|
|
|
|
Define o tamanho do hash em bytes para os blocos salvos.
|
|
|
|
O `hashsize` padrão é 16 bytes (128 bits), o que deve funcionar
|
|
para a maioria dos casos.
|
|
|
|
ATENÇÃO! Esta opção é apenas para especialistas e é altamente
|
|
recomendado não alterar este valor. Para alterar este valor no
|
|
futuro, você precisará recriar toda a paridade!
|
|
|
|
Uma razão para usar um `hashsize` diferente é se o seu sistema tiver
|
|
memória limitada. Como regra geral, o SnapRAID tipicamente requer
|
|
1 GiB de RAM para cada 16 TB de dados no array.
|
|
|
|
Especificamente, para armazenar os hashes dos dados, o SnapRAID requer
|
|
aproximadamente TS*(1+HS)/BS bytes de RAM,
|
|
onde TS é o tamanho total em bytes do seu array de discos, BS é o
|
|
tamanho do bloco em bytes, e HS é o tamanho do hash em bytes.
|
|
|
|
Por exemplo, com 8 discos de 4 TB, um tamanho de bloco de 256 KiB
|
|
(1 KiB = 1024 bytes), e um tamanho de hash de 16, você obtém:
|
|
|
|
RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB
|
|
|
|
Mudando para um tamanho de hash de 8, você obtém:
|
|
|
|
RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB
|
|
|
|
Mudando para um tamanho de bloco de 512, você obtém:
|
|
|
|
RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0.96 GiB
|
|
|
|
Mudando para um tamanho de hash de 8 e um tamanho de bloco de 512, você obtém:
|
|
|
|
RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0.51 GiB
|
|
|
|
7.12 autosave SIZE_IN_GIGABYTES
|
|
-------------------------------
|
|
|
|
Salva automaticamente o estado ao sincronizar ou examinar após a
|
|
quantidade especificada de GB processados.
|
|
Esta opção é útil para evitar reiniciar longos comandos `sync`
|
|
do zero se interrompidos por uma falha de máquina ou qualquer outro evento.
|
|
|
|
7.13 temp_limit TEMPERATURE_CELSIUS
|
|
-----------------------------------
|
|
|
|
Define a temperatura máxima permitida do disco em Celsius. Quando especificado,
|
|
o SnapRAID verifica periodicamente a temperatura de todos os discos usando a
|
|
ferramenta smartctl. As temperaturas atuais dos discos são exibidas enquanto
|
|
o SnapRAID está operando. Se algum disco exceder este limite, todas as
|
|
operações param, e os discos são desligados (colocados em standby) pela
|
|
duração definida pela opção `temp_sleep`. Após o período de espera, as
|
|
operações são retomadas, potencialmente pausando novamente se o limite de
|
|
temperatura for atingido mais uma vez.
|
|
|
|
Durante a operação, o SnapRAID também analisa a curva de aquecimento de
|
|
cada disco e estima a temperatura estável de longo prazo que eles
|
|
devem atingir se a atividade continuar. A estimativa é realizada apenas
|
|
depois que a temperatura do disco tiver subido quatro vezes, garantindo
|
|
que pontos de dados suficientes estejam disponíveis para estabelecer uma
|
|
tendência confiável.
|
|
Esta temperatura estável prevista é mostrada entre parênteses ao lado
|
|
do valor atual e ajuda a avaliar se o resfriamento do sistema é
|
|
adequado. Esta temperatura estimada é apenas para fins informativos
|
|
e não tem efeito no comportamento do SnapRAID. As ações do programa
|
|
são baseadas exclusivamente nas temperaturas reais medidas dos discos.
|
|
|
|
Para realizar esta análise, o SnapRAID precisa de uma referência para a
|
|
temperatura do sistema. Ele tenta primeiro lê-la dos sensores de hardware
|
|
disponíveis. Se nenhum sensor do sistema puder ser acessado, ele usa
|
|
a temperatura mais baixa do disco medida no início da execução como
|
|
referência de fallback.
|
|
|
|
Normalmente, o SnapRAID mostra apenas a temperatura do disco mais quente.
|
|
Para exibir a temperatura de todos os discos, use a opção -A ou --stats.
|
|
|
|
7.14 temp_sleep TIME_IN_MINUTES
|
|
-------------------------------
|
|
|
|
Define o tempo de espera (standby time), em minutos, quando o limite de
|
|
temperatura é atingido. Durante este período, os discos permanecem
|
|
desligados. O padrão é 5 minutos.
|
|
|
|
7.15 pool DIR
|
|
-------------
|
|
|
|
Define o diretório de pooling onde a visualização virtual do array
|
|
de discos é criada usando o comando `pool`.
|
|
|
|
O diretório já deve existir.
|
|
|
|
7.16 share UNC_DIR
|
|
------------------
|
|
|
|
Define o caminho UNC do Windows necessário para acessar os discos remotamente.
|
|
|
|
Se esta opção for especificada, os links simbólicos criados no diretório
|
|
do pool usam este caminho UNC para acessar os discos.
|
|
Sem esta opção, os links simbólicos gerados usam apenas caminhos locais,
|
|
o que não permite compartilhar o diretório do pool pela rede.
|
|
|
|
Os links simbólicos são formados usando o caminho UNC especificado,
|
|
adicionando o nome do disco conforme especificado na opção `data`,
|
|
e finalmente adicionando o diretório e nome do arquivo.
|
|
|
|
Esta opção é necessária apenas para Windows.
|
|
|
|
7.17 smartctl DISK/PARITY OPTIONS...
|
|
------------------------------------
|
|
|
|
Define opções smartctl personalizadas para obter os atributos SMART para
|
|
cada disco. Isso pode ser necessário para controladores RAID e alguns
|
|
discos USB que não podem ser detectados automaticamente. O placeholder
|
|
%s é substituído pelo nome do dispositivo, mas é opcional para dispositivos
|
|
fixos como controladores RAID.
|
|
|
|
DISK é o mesmo nome de disco especificado na opção `data`.
|
|
PARITY é um dos nomes de paridade: `parity`, `2-parity`, `3-parity`,
|
|
`4-parity`, `5-parity`, `6-parity` ou `z-parity`.
|
|
|
|
Nas OPTIONS especificadas, a string `%s` é substituída pelo
|
|
nome do dispositivo. Para controladores RAID, o dispositivo é
|
|
provavelmente fixo, e você pode não precisar usar `%s`.
|
|
|
|
Você também pode especificar uma string personalizada de opções de informação
|
|
usando a tag `[info: ...]` para substituir a opção padrão `-a`.
|
|
|
|
Consulte a documentação do smartmontools para possíveis opções:
|
|
|
|
https://www.smartmontools.org/wiki/Supported_RAID-Controllers
|
|
https://www.smartmontools.org/wiki/Supported_USB-Devices
|
|
|
|
Por exemplo:
|
|
|
|
smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
smartctl parity -d sat %s
|
|
|
|
7.18 smartignore DISK/PARITY ATTR [ATTR...]
|
|
-------------------------------------------
|
|
|
|
Ignora o atributo SMART especificado ao calcular a probabilidade
|
|
de falha do disco. Esta opção é útil se um disco relatar valores
|
|
incomuns ou enganosos para um atributo específico.
|
|
|
|
DISK é o mesmo nome de disco especificado na opção `data`.
|
|
PARITY é um dos nomes de paridade: `parity`, `2-parity`, `3-parity`,
|
|
`4-parity`, `5-parity`, `6-parity` ou `z-parity`.
|
|
O valor especial * pode ser usado para ignorar o atributo em todos os discos.
|
|
|
|
Múltiplos atributos podem ser especificados separados por espaços.
|
|
Cada atributo pode ser especificado como um número de 1 a 255, ou como um
|
|
nome insensível a maiúsculas/minúsculas (por exemplo, `Current_Pending_Sector`).
|
|
|
|
Por exemplo, para ignorar os atributos `Current Pending Sector Count` e
|
|
`Reallocated Sectors Count` em todos os discos pelo seu número ou nome:
|
|
|
|
smartignore * 197 5
|
|
smartignore * Current_Pending_Sector Reallocated_Sector_Ct
|
|
|
|
Para ignorá-los apenas no primeiro disco de paridade:
|
|
|
|
smartignore parity 197 5
|
|
|
|
7.19 Exemplos
|
|
-------------
|
|
|
|
Um exemplo de uma configuração típica para Unix é:
|
|
|
|
parity /mnt/diskp/snapraid.parity
|
|
content /mnt/diskp/snapraid.content
|
|
content /var/snapraid/snapraid.content
|
|
data d1 /mnt/disk1/
|
|
data d2 /mnt/disk2/
|
|
data d3 /mnt/disk3/
|
|
exclude /lost+found/
|
|
exclude /tmp/
|
|
smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
smartctl d2 -d usbjmicron %s
|
|
smartctl parity -d areca,1/1 /dev/sg0
|
|
smartctl 2-parity -d areca,2/1 /dev/sg0
|
|
|
|
Um exemplo de uma configuração típica para Windows é:
|
|
|
|
parity E:\snapraid.parity
|
|
content E:\snapraid.content
|
|
content C:\snapraid\snapraid.content
|
|
data d1 G:\array\
|
|
data d2 H:\array\
|
|
data d3 I:\array\
|
|
exclude Thumbs.db
|
|
exclude \$RECYCLE.BIN
|
|
exclude \System Volume Information
|
|
smartctl d1 [info: -H -i -c -A] -d sat %s
|
|
smartctl d2 -d usbjmicron %s
|
|
smartctl parity -d areca,1/1 /dev/arcmsr0
|
|
smartctl 2-parity -d areca,2/1 /dev/arcmsr0
|
|
|
|
|
|
8 INSTANTâNEOS (SNAPSHOTS)
|
|
==========================
|
|
|
|
Se a opção de instantâneo estiver ativada na configuração, o SnapRAID
|
|
utiliza instantâneos do sistema de arquivos para manter estáveis os dados lidos
|
|
durante uma operação, mesmo quando arquivos nos sistemas de arquivos ativos
|
|
são posteriormente modificados ou excluídos.
|
|
|
|
A gestão de instantâneos é completamente automática e transparente.
|
|
Pode continuar a utilizar o SnapRAID exatamente como antes, com a
|
|
proteção adicional fornecida por instantâneos geridos inteiramente em
|
|
segundo plano.
|
|
|
|
Isso proporciona dois benefícios principais:
|
|
|
|
Consistência - Arquivos modificados no sistema de arquivos ativo durante um sync ou scrub de
|
|
longa duração não causarão divergências de paridade ou operações abortadas,
|
|
porque cada sistema de arquivos com instantâneo permanece inalterado durante
|
|
toda a operação.
|
|
Recuperação - Se um arquivo for atualizado ou excluído do sistema de arquivos ativo,
|
|
ele permanece preservado no instantâneo. Se ocorrer uma falha de disco
|
|
antes de o próximo sync ser executado, o SnapRAID utiliza os dados preservados
|
|
no instantâneo para reconstruir o disco com falha.
|
|
|
|
Em caso de falha de um disco durante um processo de sync ativo,
|
|
o SnapRAID também é capaz de ler automaticamente tanto do instantâneo
|
|
da computação de paridade anterior quanto da atual.
|
|
Isso maximiza a probabilidade de uma recuperação completa ao
|
|
fornecer acesso aos blocos de dados exatos necessários para resolver
|
|
as equações de paridade, mesmo que esses blocos tenham sido modificados
|
|
ou excluídos entre os syncs.
|
|
|
|
Sem instantâneos, um arquivo atualizado ou excluído num disco saudável
|
|
resulta na falta de blocos de dados que podem ser necessários para
|
|
reparar outros discos com falha.
|
|
|
|
Os instantâneos são criados apenas para discos de dados e apenas se o sistema de arquivos
|
|
subjacente suportar esta funcionalidade. Os discos de paridade usam sempre
|
|
o sistema de arquivos ativo.
|
|
|
|
Atualmente, isso é suportado em Btrfs, Bcachefs e ZFS em Linux
|
|
e em NTFS em Windows.
|
|
|
|
Pode misturar discos de dados com sistemas de arquivos diferentes. Apenas aqueles que
|
|
suportam instantâneos os utilizarão, enquanto os outros discos continuarão
|
|
a operar diretamente no sistema de arquivos ativo.
|
|
|
|
A criação e exclusão de instantâneos requerem privilégios administrativos.
|
|
Garanta que o SnapRAID é executado com as permissões necessárias (ex: sudo)
|
|
quando os instantâneos estão ativados.
|
|
|
|
8.1 Comportamento dos Comandos com Instantâneos
|
|
-----------------------------------------------
|
|
|
|
Os comandos `sync` e `scrub` utilizam instantâneos para discos de dados cujos
|
|
sistemas de arquivos os suportam. Num disco com instantâneo, o comando vê
|
|
uma imagem estável do sistema de arquivos não afetada por alterações simultâneas no
|
|
sistema de arquivos ativo.
|
|
Durante um `sync`, um novo instantâneo é criado independentemente para cada
|
|
sistema de arquivos de dados suportado. Esses instantâneos fornecem coletivamente os
|
|
dados utilizados para o cálculo da paridade.
|
|
Em contraste, o comando `scrub` utiliza o último instantâneo, aquele
|
|
criado durante o sync mais recente, para manter um ponto de referência confiável
|
|
que corresponda à paridade existente.
|
|
|
|
Para os comandos `check` e `fix`, o uso do último instantâneo
|
|
depende de discos específicos serem ou não alvo da operação utilizando a opção
|
|
-d, --filter-disk.
|
|
|
|
Um disco explicitamente selecionado via -d (o "alvo" da operação)
|
|
usa sempre o sistema de arquivos ativo. Para `fix`, isso permite restaurar
|
|
dados para a substituição do disco ativo. Para `check`, permite simular
|
|
a operação `fix` sob as mesmas condições.
|
|
|
|
Todos os outros discos de dados (os discos de "referência") serão acessados através dos
|
|
seus instantâneos. Isso garante que, mesmo que esteja modificando arquivos
|
|
nos seus discos saudáveis enquanto uma recuperação está em curso, o SnapRAID
|
|
tem uma referência estável e congelada para resolver as equações de paridade.
|
|
|
|
Se nenhuma opção -d for fornecida, o SnapRAID assume que a operação se aplica
|
|
a todo o array, neste caso, `check` e `fix` usarão os sistemas
|
|
de arquivos ativos exclusivamente.
|
|
|
|
Todos os outros comandos operam exclusivamente no sistema de arquivos ativo.
|
|
|
|
|
|
9 CICLO DE VIDA DOS INSTANTâNEOS (SNAPSHOTS LIFECYCLE)
|
|
======================================================
|
|
|
|
O SnapRAID gerencia três instantâneos específicos, `stable` (estável), `pending` (pendente) e `scan` (verificação),
|
|
dentro de um diretório oculto na raiz de cada subvolume de dados.
|
|
Em Btrfs, Bcachefs e NTFS é utilizado o diretório `.snapraid/`,
|
|
em ZFS o padrão `.zfs/snapshot/`.
|
|
|
|
O instantâneo `stable` representa o estado do último
|
|
`sync` concluído com sucesso, contendo os dados exatos utilizados para
|
|
computar a paridade atual. Serve como a principal fonte de dados
|
|
para os comandos `scrub`, `check` e `fix`.
|
|
|
|
O instantâneo `scan` é uma imagem temporária criada ao início
|
|
de um `sync` para fornecer um estado congelado para a verificação e a computação da paridade.
|
|
Após a verificação e salvamento do novo estado de conteúdo, ele substitui o instantâneo
|
|
`pending` anterior.
|
|
|
|
O instantâneo `pending` é a imagem usada por um `sync` interrompido.
|
|
Após a conclusão bem-sucedida da operação, o instantâneo `stable` anterior
|
|
é excluído, e o instantâneo `pending` é promovido para
|
|
tomar o seu lugar como a nova referência estável.
|
|
|
|
Se um `sync` for interrompido, o instantâneo `pending` é preservado.
|
|
Os comandos subsequentes `scrub`, `check` e `fix` utilizarão este
|
|
instantâneo pendente, pois ele corresponde ao estado do sistema de arquivos registrado no
|
|
arquivo .content, mesmo que a paridade esteja apenas parcialmente sincronizada.
|
|
|
|
No caso de uma interrupção do `sync`, os comandos `check` e `fix`
|
|
também leem do instantâneo `stable` para recuperar blocos de dados
|
|
de arquivos que foram atualizados ou excluídos durante o sync.
|
|
Isso é possível porque o arquivo .content retém metadados para
|
|
todos os arquivos modificados ou excluídos ao longo do processo de sync.
|
|
Esta informação histórica só é limpa quando um sync termina
|
|
com sucesso e a versão final do arquivo .content é salva.
|
|
|
|
Se um `sync` for reiniciado após uma interrupção, o instantâneo pending existente
|
|
é excluído e um novo é criado para
|
|
capturar o estado atual do sistema de arquivos ativo.
|
|
No entanto, se um `sync` for interrompido, evite modificar, excluir,
|
|
substituir ou mover arquivos até que um `sync` subsequente seja concluído
|
|
com sucesso. A paridade ainda pode conter blocos calculados a partir do
|
|
instantâneo usado pelo sync interrompido. Um sync posterior pode substituir
|
|
esse instantâneo, tornando as versões intermediárias dos arquivos indisponíveis
|
|
para recuperação.
|
|
|
|
9.1 Cópias de segurança externas com instantâneos do sistema de ficheiros (External backups with filesystem snapshots)
|
|
----------------------------------------------------------------------------------------------------------------------
|
|
|
|
Quando os instantâneos do sistema de ficheiros estão ativados, o SnapRAID
|
|
acede ou cria instantâneos na raiz de cada subvolume, volume ou conjunto
|
|
de dados (dataset).
|
|
|
|
Uma forma simples de evitar qualquer interferência com ferramentas externas
|
|
é apontar a configuração `data` para um subdiretório normal dentro do
|
|
subvolume ou volume (por exemplo, `/mnt/subvol/data` em vez de `/mnt/subvol`).
|
|
O SnapRAID cria sempre o diretório de instantâneos na raiz do subvolume
|
|
(por exemplo, `/mnt/subvol/.snapraid/`), deixando o subdiretório de dados
|
|
limpo, de modo que os instantâneos permaneçam fora e invisíveis para as
|
|
ferramentas de cópia de segurança que operam dentro dele.
|
|
|
|
Caso contrário, se o diretório `data` configurado for ele próprio a raiz
|
|
do subvolume ou do volume, o SnapRAID cria um diretório `.snapraid/`
|
|
diretamente dentro dele (em Btrfs, Bcachefs e NTFS). Embora o SnapRAID
|
|
exclua automaticamente esse diretório das suas próprias verificações,
|
|
ferramentas externas de cópia de segurança ou de sincronização irão
|
|
encontrá-lo. Se não for excluído, podem atravessar os instantâneos ou
|
|
ligações de diretório e copiar toda a árvore de dados congelada, duplicando
|
|
dados e esgotando o armazenamento de backup. Configure sempre as
|
|
ferramentas de cópia de segurança externas para excluir o diretório
|
|
`.snapraid/`.
|
|
|
|
No ZFS, os instantâneos são expostos através do diretório virtual padrão
|
|
`.zfs/snapshot/` em vez de `.snapraid/`. Por predefinição (`snapdir=hidden`),
|
|
o ZFS oculta esse diretório das listagens, de modo que ferramentas externas
|
|
de cópia de segurança não o percorrem. Se tiver ativado `snapdir=visible`,
|
|
certifique-se de que as suas ferramentas de cópia de segurança excluem o
|
|
diretório `.zfs/`.
|
|
|
|
|
|
10 PADRãO (PATTERN)
|
|
===================
|
|
|
|
Os padrões fornecem uma maneira flexível de filtrar arquivos para inclusão ou
|
|
exclusão. Ao usar caracteres de globbing, você pode definir regras que
|
|
correspondam a nomes de arquivos específicos ou estruturas de diretórios inteiras sem
|
|
listar cada caminho manualmente.
|
|
|
|
O ponto de interrogação `?` corresponde a qualquer caractere único, exceto o
|
|
separador de diretórios. Isso o torna útil para corresponder nomes de arquivos com
|
|
caracteres variáveis, mantendo o padrão confinado a um único nível de diretório.
|
|
|
|
O asterisco simples `*` corresponde a qualquer sequência de caracteres, mas, como o
|
|
ponto de interrogação, nunca cruza as fronteiras do diretório. Ele para na
|
|
barra invertida, tornando-o adequado para correspondência dentro de um único
|
|
componente de caminho. Este é o comportamento padrão de curinga familiar do
|
|
globbing de shell.
|
|
|
|
O curinga de asterisco duplo `**` corresponde através de separadores de
|
|
diretório apenas quando for adjacente a um separador de diretório (precedido
|
|
ou seguido por uma barra). Nessa forma, ele corresponde a zero ou mais
|
|
caracteres através de níveis de diretório. Por exemplo, `foo/**/bar`
|
|
corresponde a `foo/bar`, `foo/a/bar` e `foo/a/b/bar`; `**/build` corresponde a
|
|
`build` e `foo/bar/build`; e `src/**.js` corresponde a `src/main.js` e
|
|
`src/ui/components/main.js`.
|
|
A forma avulsa `/**/` não é aceita como um padrão completo.
|
|
|
|
Quando `**` não for adjacente a uma barra, ele se comporta como `*` e não
|
|
corresponde a separadores de diretório. Por exemplo, `**.jpg` corresponde a
|
|
`photo.jpg` no diretório atual, mas não corresponde a `dir/photo.jpg`. Use
|
|
`**/*.jpg` para essa finalidade.
|
|
|
|
Classes de caracteres usando colchetes `[]` correspondem a um único caractere de um
|
|
conjunto ou intervalo especificado. Como os outros padrões de caractere único, elas
|
|
não correspondem a separadores de diretório. As classes suportam intervalos e negação usando
|
|
um ponto de exclamação.
|
|
|
|
A distinção fundamental a ser lembrada é que `*`, `?` e classes de caracteres
|
|
respeitam os limites do diretório e correspondem apenas dentro de um único
|
|
componente de caminho, enquanto `**` só pode corresponder através de separadores
|
|
de diretório quando for adjacente a uma barra.
|
|
|
|
Existem quatro tipos diferentes de padrões:
|
|
|
|
FILE
|
|
Seleciona qualquer arquivo chamado FILE.
|
|
Este padrão se aplica apenas a arquivos, não a diretórios.
|
|
|
|
DIR/
|
|
Seleciona qualquer diretório chamado DIR e tudo o que estiver dentro dele.
|
|
Este padrão se aplica apenas a diretórios, não a arquivos.
|
|
|
|
/PATH/FILE
|
|
Seleciona o caminho exato do arquivo especificado. Este padrão se aplica
|
|
apenas a arquivos, não a diretórios.
|
|
|
|
/PATH/DIR/
|
|
Seleciona o caminho exato do diretório especificado e tudo o que estiver
|
|
dentro dele. Este padrão se aplica apenas a diretórios, não a arquivos.
|
|
|
|
Quando você especifica um caminho absoluto começando com /, ele é aplicado
|
|
no diretório raiz do array, não no diretório raiz do sistema de arquivos local.
|
|
|
|
No Windows, você pode usar a barra invertida \ em vez da barra.
|
|
Diretórios do sistema Windows, junctions, pontos de montagem e outros
|
|
diretórios especiais do Windows são tratados como arquivos, o que significa
|
|
que para excluí-los, você deve usar uma regra de arquivo, não uma de diretório.
|
|
|
|
Se o nome do arquivo contiver um caractere `*`, `?`, `[`,
|
|
ou `]`, você deve escapá-lo para evitar que seja interpretado como um
|
|
caractere globbing. No Unix, o caractere de escape é `\`; no Windows, é `^`.
|
|
Quando o padrão está na linha de comando, você deve duplicar o caractere
|
|
de escape para evitar que seja interpretado pelo shell de comando.
|
|
|
|
No arquivo de configuração, você pode usar diferentes estratégias para filtrar
|
|
os arquivos a serem processados.
|
|
A abordagem mais simples é usar apenas regras `exclude` para remover todos os
|
|
arquivos e diretórios que você não deseja processar. Por exemplo:
|
|
|
|
# Exclui qualquer arquivo chamado `*.unrecoverable`
|
|
exclude *.unrecoverable
|
|
# Exclui o diretório raiz `/lost+found`
|
|
exclude /lost+found/
|
|
# Exclui qualquer subdiretório chamado `tmp`
|
|
exclude tmp/
|
|
|
|
A abordagem oposta é definir apenas os arquivos que você deseja processar,
|
|
usando apenas regras `include`. Por exemplo:
|
|
|
|
# Inclui apenas alguns diretórios
|
|
include /movies/
|
|
include /musics/
|
|
include /pictures/
|
|
|
|
A abordagem final é misturar regras `exclude` e `include`. Neste caso,
|
|
a ordem das regras é importante. As regras anteriores têm
|
|
precedência sobre as posteriores.
|
|
Para simplificar, você pode listar todas as regras `exclude` primeiro e
|
|
depois todas as regras `include`. Por exemplo:
|
|
|
|
# Exclui qualquer arquivo chamado `*.unrecoverable`
|
|
exclude *.unrecoverable
|
|
# Exclui qualquer subdiretório chamado `tmp`
|
|
exclude tmp/
|
|
# Inclui apenas alguns diretórios
|
|
include /movies/
|
|
include /musics/
|
|
include /pictures/
|
|
|
|
Observe que a exclusão de um diretório (usando DIR/ ou /CAMINHO/DIR/)
|
|
impede que o SnapRAID entre e examine esse diretório. Consequentemente,
|
|
não é possível reincluir um arquivo ou subdiretório localizado dentro
|
|
de um diretório pai excluído, porque o verificador nunca entra nele.
|
|
|
|
Por exemplo, a seguinte configuração NÃO incluirá `file.dat` porque
|
|
`/keep/` é podado antes que `file.dat` possa ser examinado:
|
|
|
|
# NÃO funciona: /keep/ é ignorado completamente
|
|
include /keep/file.dat
|
|
exclude /keep/
|
|
|
|
Para excluir arquivos dentro de um diretório mantendo arquivos específicos,
|
|
aplique o padrão aos arquivos dentro do diretório em vez de excluir o
|
|
próprio diretório:
|
|
|
|
# Funciona: /keep/ é percorrido, mas os outros arquivos nele são excluídos
|
|
include /keep/file.dat
|
|
exclude /keep/*
|
|
|
|
Na linha de comando, usando a opção -f, você pode usar apenas padrões `include`.
|
|
Por exemplo:
|
|
|
|
# Verifica apenas os arquivos .mp3.
|
|
# No Unix, use aspas para evitar a expansão globbing pelo shell.
|
|
snapraid -f "*.mp3" check
|
|
|
|
No Unix, ao usar caracteres globbing na linha de comando, você deve
|
|
colocá-los entre aspas para evitar que o shell os expanda.
|
|
|
|
|
|
11 IGNORAR ARQUIVOS (IGNORE FILE)
|
|
=================================
|
|
|
|
Além das regras globais no arquivo de configuração, você pode colocar
|
|
arquivos `.snapraidignore` em qualquer diretório dentro do array para definir
|
|
regras de exclusão descentralizadas.
|
|
|
|
As regras definidas em `.snapraidignore` são aplicadas após as regras no
|
|
arquivo de configuração. Isso significa que elas têm uma prioridade maior e
|
|
podem ser usadas para excluir arquivos que foram anteriormente incluídos pela
|
|
configuração global. Efetivamente, se uma regra local corresponder, o arquivo
|
|
é excluído independentemente das configurações globais de inclusão.
|
|
|
|
A lógica de padrões no `.snapraidignore` espelha a configuração global, mas
|
|
ancora os padrões ao diretório onde o arquivo está localizado:
|
|
|
|
FILE
|
|
Seleciona qualquer arquivo chamado FILE neste diretório ou abaixo.
|
|
Isso segue as mesmas regras de globbing do padrão global.
|
|
|
|
DIR/
|
|
Seleciona qualquer diretório chamado DIR e tudo dentro dele,
|
|
residente neste diretório ou abaixo.
|
|
|
|
/PATH/FILE
|
|
Seleciona o arquivo exato especificado relativo à localização
|
|
do arquivo `.snapraidignore`.
|
|
|
|
/PATH/DIR/
|
|
Seleciona o diretório exato especificado e tudo dentro dele,
|
|
relativo à localização do arquivo `.snapraidignore`.
|
|
|
|
Ao contrário da configuração global, os arquivos `.snapraidignore` suportam
|
|
apenas regras de exclusão; você não pode usar padrões `include` ou negação (!).
|
|
|
|
Por exemplo, se você tiver um `.snapraidignore` em `/mnt/disk1/projects/`:
|
|
|
|
# Exclui APENAS /mnt/disk1/projects/output.bin
|
|
/output.bin
|
|
# Exclui qualquer diretório chamado `build` dentro de projects/
|
|
build/
|
|
# Exclui qualquer arquivo .tmp dentro de projects/ ou suas subpastas
|
|
*.tmp
|
|
|
|
|
|
12 CONTEúDO (CONTENT)
|
|
=====================
|
|
|
|
SnapRAID armazena a lista e os checksums de seus arquivos no arquivo content.
|
|
|
|
É um arquivo binário que lista todos os arquivos presentes em seu array
|
|
de discos, juntamente com todos os checksums para verificar sua integridade.
|
|
|
|
O arquivo content é lido e escrito pelos comandos `sync`, `scrub`,
|
|
`touch` e `rehash`. É lido pelos comandos `status`, `diff`, `check`,
|
|
`fix`, `list`, `dup`, `locate` e `pool`, e é completamente ignorado
|
|
pelos comandos `smart`, `probe`, `up`, `down` e `devices`.
|
|
|
|
|
|
13 PARIDADE (PARITY)
|
|
====================
|
|
|
|
SnapRAID armazena as informações de paridade do seu array nos arquivos parity.
|
|
|
|
Estes são arquivos binários contendo a paridade calculada de todos os
|
|
blocos definidos no arquivo `content`.
|
|
|
|
Estes arquivos são lidos e escritos pelos comandos `sync` e `fix` e
|
|
apenas lidos pelos comandos `scrub` e `check`.
|
|
|
|
|
|
14 CODIFICAçãO (ENCODING)
|
|
=========================
|
|
|
|
SnapRAID no Unix ignora qualquer codificação. Ele lê e armazena os
|
|
nomes de arquivo com a mesma codificação usada pelo sistema de arquivos.
|
|
|
|
No Windows, todos os nomes lidos do sistema de arquivos são convertidos
|
|
e processados no formato UTF-8.
|
|
|
|
Para que os nomes de arquivo sejam impressos corretamente, você deve
|
|
definir o console do Windows para o modo UTF-8 com o comando `chcp 65001`
|
|
e usar uma fonte TrueType como `Lucida Console` como fonte do console.
|
|
Isso afeta apenas os nomes de arquivo impressos; se você
|
|
redirecionar a saída do console para um arquivo, o arquivo resultante
|
|
estará sempre no formato UTF-8.
|
|
|
|
|
|
15 CóDIGO DE SAíDA (EXIT CODE)
|
|
==============================
|
|
|
|
O SnapRAID termina com os seguintes códigos de erro:
|
|
|
|
0 - Tudo OK.
|
|
1 - O comando encontrou alguns erros.
|
|
2 - O comando `diff` determinou que tudo está OK, mas é necessário um `sync`.
|
|
3 - Um comando de dispositivo de disco (`probe`, `smart`, `devices`, `up`,
|
|
`down`) foi concluído, mas pelo menos um sistema de arquivos está operando
|
|
em modo degradado com dispositivo(s) ausente(s).
|
|
|
|
|
|
16 PROBLEMAS CONHECIDOS (KNOWN ISSUES)
|
|
======================================
|
|
|
|
16.1 Limites do sistema de arquivos
|
|
-----------------------------------
|
|
|
|
O SnapRAID não cruza limites de sistema de arquivos, pontos de montagem ou
|
|
subvolumes ao verificar um disco de dados. Quando tal limite é detectado,
|
|
o SnapRAID relata um AVISO e não verifica além dele.
|
|
|
|
Arquivos localizados além desses limites não são incluídos no disco de
|
|
dados e devem ser configurados separadamente se precisarem ser protegidos.
|
|
|
|
16.2 Pontos de montagem com instantâneos do sistema de arquivos
|
|
---------------------------------------------------------------
|
|
|
|
Quando os instantâneos do sistema de arquivos estão ativados, pontos de
|
|
montagem aninhados e montagens bind dentro de um disco de dados não são
|
|
suportados.
|
|
|
|
Os pontos de montagem fazem parte do namespace de montagem do sistema ativo
|
|
e não são preservados em instantâneos do sistema de arquivos. Consequentemente,
|
|
ao verificar um instantâneo, um diretório oculto por um ponto de montagem no
|
|
sistema de arquivos ativo pode se tornar visível.
|
|
|
|
Não coloque pontos de montagem aninhados ou montagens bind dentro de discos
|
|
de dados quando os instantâneos do sistema de arquivos estiverem ativados.
|
|
|
|
16.3 Múltiplas configurações com instantâneos do sistema de arquivos
|
|
--------------------------------------------------------------------
|
|
|
|
O suporte a instantâneos não pode ser compartilhado com segurança por
|
|
múltiplas configurações independentes do SnapRAID que usem o mesmo
|
|
namespace de instantâneos do sistema de arquivos.
|
|
|
|
No Btrfs e Bcachefs, apenas uma configuração do SnapRAID com suporte a
|
|
instantâneos ativado pode usar diretórios de dados dentro do mesmo
|
|
subvolume. No ZFS, a mesma restrição se aplica a um dataset, e no NTFS
|
|
a um volume.
|
|
|
|
Múltiplas configurações que compartilham o mesmo namespace de instantâneos
|
|
usam os mesmos instantâneos `stable`, `pending` e `scan`. A execução de uma
|
|
configuração pode, portanto, substituir ou excluir instantâneos de
|
|
recuperação necessários para outra.
|
|
|
|
16.4 Modificações de arquivo no local sem alteração de data/hora
|
|
----------------------------------------------------------------
|
|
|
|
O SnapRAID detecta modificações em arquivos comparando tamanhos de arquivo e
|
|
carimbos de data/hora de modificação (mtime).
|
|
|
|
Se um aplicativo modificar um arquivo no local sem alterar seu tamanho nem
|
|
atualizar seu carimbo de data/hora de modificação, o "diff" e o "sync" não
|
|
detectarão que o arquivo foi alterado e sua paridade não será atualizada.
|
|
|
|
Para garantir que o SnapRAID reconheça essas alterações, atualize o carimbo
|
|
de data/hora de modificação do arquivo (por exemplo, com o utilitário "touch").
|
|
Caso contrário, a diferença só será detectada como uma incompatibilidade de
|
|
hash durante um "scrub" ou "check" subsequente.
|
|
|
|
16.5 Correspondência de maiúsculas/minúsculas não-ASCII no Windows
|
|
------------------------------------------------------------------
|
|
|
|
O SnapRAID utiliza codificação UTF-8 padrão e previsível em todas as plataformas,
|
|
limitando a correspondência insensível a maiúsculas e minúsculas a caracteres
|
|
ASCII.
|
|
|
|
Os sistemas de arquivos do Windows sofrem com o design legado de forçar a
|
|
insensibilidade a maiúsculas e minúsculas em nomes de arquivo Unicode por meio
|
|
de tabelas de conversão arbitrárias e dependentes do sistema. Consequentemente,
|
|
o Windows oculta a realidade do sistema de arquivos ao tratar sequências de bytes
|
|
Unicode completamente diferentes como se fossem o mesmo arquivo.
|
|
|
|
Por exemplo, `À.txt` e `à.txt` são nomes Unicode distintos, mas o Windows os
|
|
trata ilogicamente como idênticos, enquanto o SnapRAID preserva sua verdadeira
|
|
distinção.
|
|
|
|
Essa limitação é causada pelo tratamento inconsistente de nomes de arquivo
|
|
Unicode pelo Windows e por sua insistência no uso de aliases sem diferenciação de
|
|
maiúsculas/minúsculas. Para evitar discrepâncias decorrentes da conversão do
|
|
Windows, sempre especifique a combinação exata de maiúsculas e minúsculas para
|
|
caracteres não-ASCII em caminhos de configuração e filtros.
|
|
|
|
16.6 Recuperação com fix parcial
|
|
--------------------------------
|
|
|
|
Quando o `fix` é restrito usando `-S, --start` ou `-B, --count`,
|
|
o SnapRAID opera apenas nos blocos selecionados e não realiza a
|
|
finalização em nível de arquivo nem a quarentena.
|
|
|
|
Se a recuperação produzir dados de melhor esforço (best-effort) que não
|
|
possam ser comprovados como representativos do conteúdo atual, esses
|
|
blocos ainda poderão ser gravados com o nome de arquivo normal. A incerteza
|
|
associada a esses blocos recuperados não persiste após o término do comando.
|
|
|
|
Como consequência, um `fix` posterior tratará esses blocos legíveis como
|
|
dados de arquivo válidos e não tentará recuperá-los novamente. Isso pode
|
|
fazer com que uma recuperação posterior relate sucesso, deixando dados
|
|
incompletos ou obsoletos no arquivo.
|
|
|
|
As opções `-S` e `-B` destinam-se apenas à recuperação manual avançada,
|
|
normalmente após a falha de um `fix` normal. Se um `fix` parcial relatar
|
|
dados irrecuperáveis, remova ou renomeie os arquivos afetados antes de tentar
|
|
outra recuperação, ou verifique manualmente seu conteúdo.
|
|
|
|
16.7 Links físicos no NTFS e caminhos excluídos
|
|
-----------------------------------------------
|
|
|
|
No NTFS, as entradas de diretório armazenam em cache o tamanho do arquivo
|
|
e os registros de data/hora de forma independente para cada link físico.
|
|
Quando um arquivo é modificado por meio de um link, as entradas de diretório
|
|
de outros links que apontam para o mesmo arquivo podem reter metadados
|
|
obsoletos até que sejam acessadas.
|
|
|
|
O SnapRAID detecta e normaliza automaticamente essa condição sempre que
|
|
pelo menos dois links físicos para o mesmo arquivo são encontrados durante
|
|
uma verificação. No entanto, se apenas um link físico for verificado
|
|
enquanto os outros forem excluídos por filtros ou residirem fora do caminho
|
|
do disco de dados, o SnapRAID não conseguirá detectar a colisão de inodes e
|
|
dependerá dos metadados em cache do único link visível.
|
|
|
|
Consequentemente, modificações feitas por meio de um link físico excluído
|
|
ou externo podem passar despercebidas pelo SnapRAID até que os metadados do
|
|
link incluído sejam atualizados pelo sistema operacional (como quando o
|
|
arquivo é acessado ou aberto por meio desse caminho).
|
|
|
|
Para evitar essa limitação, evite modificar arquivos protegidos por meio
|
|
de links físicos excluídos do SnapRAID, ou certifique-se de que todos os
|
|
links físicos de um arquivo sejam incluídos na verificação para que o
|
|
SnapRAID possa normalizá-los.
|
|
|
|
16.8 Recuperação após uma sincronização de multiparidade interrompida
|
|
---------------------------------------------------------------------
|
|
|
|
Em uma matriz com múltiplos discos de paridade, um `sync` interrompido
|
|
pode deixar os níveis de paridade temporariamente fora de sincronia entre
|
|
si. Por exemplo, a paridade 1 já pode conter dados recém-atualizados,
|
|
enquanto a paridade 2 ainda contém os dados antigos.
|
|
|
|
Durante `check` ou `fix`, o SnapRAID testa diferentes combinações de
|
|
paridade e valida os dados reconstruídos em relação aos hashes de bloco
|
|
conhecidos (cobrindo o bloco completo, normalmente 256 KiB).
|
|
|
|
Se o SnapRAID tentar uma reconstrução usando uma combinação inconsistente
|
|
de paridade antiga e nova, as equações lineares de RAID produzirão dados
|
|
incorretos. Para que essa combinação inválida seja aceita por engano,
|
|
as equações teriam que reconstruir acidentalmente pelo menos um bloco
|
|
completo de 256 KiB de maneira tão perfeita que seu hash corresponda,
|
|
enquanto outros blocos não sincronizados na mesma faixa são reconstruídos
|
|
com dados incorretos.
|
|
|
|
Esse cenário não depende de uma colisão de hash; em vez disso, as próprias
|
|
equações de paridade mista teriam que gerar coincidentemente o conteúdo
|
|
exato do bloco de 256 KiB original. Embora seja matematicamente concebível
|
|
com dados especialmente preparados ou altamente repetitivos, é
|
|
praticamente impossível com dados reais.
|
|
|
|
Se todos os discos estiverem íntegros, concluir o `sync` interrompido
|
|
antes de fazer novas alterações remove essa ambiguidade. Se um disco tiver
|
|
falhado e a recuperação for necessária, evite modificar os discos de dados
|
|
antes de executar `check` ou `fix`.
|
|
|
|
16.9 Nomes reservados de arquivos e diretórios
|
|
----------------------------------------------
|
|
|
|
O SnapRAID reserva alguns nomes de arquivos, diretórios e snapshots para
|
|
suas operações internas. Não use esses nomes para dados do usuário:
|
|
|
|
.snapraidignore - Arquivo local de regras de exclusão.
|
|
.snapraid - Diretório contêiner de snapshots.
|
|
snapraid-* - Nomes de snapshots ZFS gerenciados pelo SnapRAID.
|
|
*.unrecoverable - Arquivos danificados colocados em quarentena durante
|
|
a recuperação.
|
|
CONTENT.tmp - Arquivo temporário para atualizações do content.
|
|
CONTENT.lock - Arquivo de bloqueio do content.
|
|
PARITY.spaceholder - Arquivo temporário de reserva de espaço durante a
|
|
alocação de paridade no Windows.
|
|
|
|
O uso desses nomes para dados não relacionados pode fazer com que arquivos ou
|
|
snapshots sejam ignorados, interpretados incorretamente como metadados,
|
|
sobrescritos, renomeados ou excluídos.
|
|
|
|
No Windows, todas as variações de maiúsculas e minúsculas também são reservadas,
|
|
mesmo em diretórios NTFS configurados para diferenciar maiúsculas de minúsculas
|
|
(por exemplo, .SNAPRAIDIGNORE, .SnapRaid, CONTENT.TMP e CONTENT.Lock).
|
|
|
|
|
|
17 TRADUçãO (TRANSLATION)
|
|
=========================
|
|
|
|
Este documento é uma tradução automática do manual em inglês.
|
|
Consulte o manual em inglês para a versão oficial.
|
|
|
|
|
|
18 DIREITOS AUTORAIS (COPYRIGHT)
|
|
================================
|
|
|
|
Este arquivo é Copyright (C) 2026 Andrea Mazzoleni
|
|
|
|
|
|
19 VEJA TAMBéM (SEE ALSO)
|
|
=========================
|
|
|
|
snapraid_log(1), snapraidd(1), rsync(1)
|