Por que o btrfs permite criar um raid1 com unidades incompatíveis?

5

Estou criando um btrfs usando

sudo mkfs.btrfs -m raid1 -d raid1 <small-disk> <large-disk> or
sudo mkfs.btrfs -m raid1 -d raid1 <large-disk> <small-disk>

cria o fs com o tamanho da soma dos dois discos / partições, mas

 btrfs fi df <mountpoint>

me fornece RAID1 para dados, sistema e metadados

Como isso pode estar correto?

Existe alguma maneira como o mdadm

cat /proc/mdstat

para ver o que o btrfs está fazendo e para garantir que meu raid1 é seguro? Não é dados terrivelmente importantes, por isso, é bom usar o btrfs, mas também não quero perdê-lo.

    
por Fabian Zeindl 05.01.2012 / 10:21

1 resposta

9

Eu descobri a resposta perguntando na lista de discussão.

O btrfs não faz RAID por volume, mas sim por bloco. O sistema de arquivos reserva espaço "bruto" em (p.e.) pedaços de 1 GB. Inicializar o fs com o raid1 significa que toda vez que ele tentar alocar um trecho, ele tentará alocar uma cópia desse trecho em outro dispositivo.

Essa arquitetura permite dispositivos de tamanho misto e seus recursos futuros podem incluir níveis de invasão por arquivo.

Atualmente, df mostra a quantidade de espaço livre disponível nos dispositivos, que é a soma de todos os tamanhos de dispositivo. Supondo que o tamanho do fragmento seja 1 GB, escrever apenas um arquivo de 5 MB em um raid1-btrfs diminuirá o espaço bruto em 2 GB. É por isso que o btrfs inclui o comando btrfs fi df para fornecer o uso real. Isso provavelmente será adaptado no futuro para mostrar com mais precisão o que está acontecendo.

    
por 09.01.2012 / 12:12