
Desde quebtrfs não rastreia blocos ruins, como uma solução alternativaesta postagem da lista de discussão do btrfssugeriu o uso de uma configuração RAID0 mdadm subjacente para suporte a badblocks.
O LVM poderia ser usado em vez do mdadm para essa finalidade?
Responder1
Em geral, como foi mencionado em umComenteaqui e no tópico da lista de discussão ao qual você vinculou, discos rígidos modernos que estão tão desgastados que possuem blocos defeituosos insubstituíveis devem ser descartados. (Você explicou por que está interessado nisso, mas vale a pena observar para outros leitores.)
Não acho que haja algo no LVM para evitar blocos defeituosos como tal; normalmente você abordaria isso abaixo do LVM, na camada do dispositivo. Uma maneira de lidar com o problema é usar o mapeador de dispositivos: criar uma tabela fornecendo o mapeamento do setor necessário para ignorar todos os blocos defeituosos e construir um dispositivo usando isso. Tal tabela seria algo como
0 98 linear /dev/sda 0
98 98 linear /dev/sda 99
etc. (isso cria um dispositivo de 196 setores, usando /dev/sda
mas ignorando o setor 98). Você dá isso paradmsetup
:
dmsetup create nobbsda --table mytable
e então crie um PV no /dev/nobbsda
dispositivo resultante (em vez de /dev/sda
).
Usando este método, com um pouco de planejamento você pode até mesmo lidar com setores com falha no futuro, da mesma forma que o firmware de uma unidade: deixe alguns setores no final da unidade livres (ou até mesmo espalhados pela unidade, se você quiser para distribuir o risco) e depois usá-los para preencher lacunas deixadas por setores em falha. Usando o exemplo acima, se considerarmos que os setores a partir de, digamos, 200 são setores sobressalentes e o setor 57 se torna ruim:
0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99
A criação de uma tabela de mapeamento de dispositivos usando uma lista de setores defeituosos fornecida por badblocks
é deixada como exercício para o leitor.
Outra solução que funcionaria com uma configuração LVM existente seria usarpvmove
a capacidade de mover extensões físicas para mover LVs para fora de áreas ruins. Mas isso não impediria que essas áreas fossem reutilizadas sempre que um novo LV fosse criado ou um LV existente fosse redimensionado ou movido.