O btrfs pode rastrear/evitar blocos defeituosos?

O btrfs pode rastrear/evitar blocos defeituosos?

Eu tenho um HDD no qual não confio totalmente, mas ainda quero usar (mineração de Burstcoin, onde se eu obtiver um bloco defeituoso em um arquivo, perderei apenas alguns centavos).

Como posso dizer ao btrfs para marcar certos blocos como ruins (por exemplo, da badblockssaída)?

Se eu não puder pré-marcar os blocos como ruins, quaisquer blocos defeituosos identificados por btrfs scrubserão evitados no futuro se o arquivo que os utiliza for excluído?

Responder1

Infelizmente não.

O btrfs não rastreia blocos defeituosos e btrfs scrubnão impede que o próximo arquivo atinja o(s) mesmo(s) bloco(s) defeituoso(s).

Esta postagem da lista de discussão do btrfssugere usar ext4 com mkfs.ext4 -c(este"cria uma lista de bloqueios defeituosos e depois não usa esses setores"). A sugestão de usobtrfs sobre mdadm 3.1+ com RAID0 não funcionará.

Parece queLVM não suporta realocação de badblock.

Uma solução alternativa é construir um dispositivo excluindo blocos conhecidos como ruins:btrfs sobre dmsetup.


Wiki de ideias de projetos btrfsdiz:

Não reivindicado — sem patches ainda — Ainda não está no kernel

Atualmente o btrfs não rastreia blocos defeituosos, blocos de disco que têm grande probabilidade de perder dados gravados neles. O Btrfs deve aceitar uma lista no formato de saída de badblocks, armazená-la em uma nova btree (ou talvez na árvore de extensão atual, com um novo sinalizador), realocar quaisquer dados que os blocos contenham e reservar esses blocos para que não possam ser usados para futuras alocações. Além disso, o scrub pode ser ensinado a testar blocos defeituosos quando um erro de soma de verificação é encontrado. Isso tornaria o esfoliante muito mais útil; Erros de soma de verificação geralmente são causados ​​pelo disco, mas enquanto o scrub detecta arquivos afetados, o que em um cenário de backup dá a oportunidade de recriá-los, o próximo arquivo a reutilizar os blocos defeituosos começará a receber erros. Esses dois itens corresponderiam a um recurso ext4 (usado por meio do e2fsck).

Comente se o status mudar e atualizarei esta resposta.

Responder2

É assim que estou pensando em contornar essa limitação. Uma solução imperfeita.

  1. Crie ext4 sem registro no diário como sistema de arquivos (com blocos defeituosos marcados)
  2. Crie uma imagem de arquivo btrfs sobre o arquivo ext4.
  3. Monte a imagem btrfs com dispositivo de loop.

Pode haver alguma sobrecarga extra a ser esperada.

informação relacionada