Como se ativa --write-mostly com o Linux RAID?

6

Infelizmente, o mdadm e mdadm.conf As páginas do manual não são exatamente iguais. Eu gostaria de ativar o --write-mostly bandeira para o meu RAID, mas nem as páginas do homem nem a internet vão me dizer como. Não tenho conhecimento de nenhum lugar para colocar argumentos padrão para mdadm, nem ciente de quando seria lançado e por quê.

Parece que o lugar lógico para adicionar esta informação é mdadm.conf, mas a bandeira não é mencionada em man mdadm.conf. Onde e como posso ativar --write-mostly? Obrigado.

user76871
fonte

Respostas:

13

Você pode configurar um dispositivo para escrever principalmente com, por exemplo,

echo writemostly > /sys/block/md0/md/dev-sda1/state

e limpe o status de gravar principalmente com

echo -writemostly > /sys/block/md0/md/dev-sda1/state

Note que você provavelmente precisa ser root para que isso seja bem-sucedido e que

sudo echo  Estado  & gt; / sys / block / md0 / md / dev-sda1 / state 

não vai funcionar.

Se você tiver outras dúvidas sobre mdadm ou Linux Software RAID, por favor, publique-os para

[email protected]

(você não precisa estar inscrito).

O bug do kernel panic que você mencionou em sua resposta foi corrigido nas versões do kernel Linux lançadas em Jan 2012 e posteriores - 3.1.10, 3.2.2 e 3.3-rc1. Apenas afetou matrizes em que todos os dispositivos são "escritos principalmente".

NeilBrown
fonte
No meu sistema, parece que o caminho seria em vez disso /sys/block/md0/md/dev-sda1/state (note o adicional /md entre md0 e dev-sda1 ), mas também estou usando uma versão mais antiga.
rob
Eu apenas tentei isso com o mdadm v2.6.3 e v3.2.3, e digitando o comando como @ NeilBrown originalmente escreveu que produz um erro "Não há arquivo ou diretório". Digitar o comando como escrevi no meu comentário anterior funciona desde que você esteja logado como root. Eu editei a resposta para refletir o caminho correto.
rob
Hmm, parece que a propriedade writemostly não é persistente quando definida usando este método. Depois de uma reinicialização, a propriedade desapareceu.
rob
1
Eu acho estranho como o parâmetro de entrada sysfs é "writemostly", a saída do arquivo de estado sysfs é "write_mostly", e o parâmetro mdadm da linha de comando é "write-mostly". Por que tão pouca consistência aqui me pergunto.
lkraav
2

Já faz mais de uma semana, então para responder minha própria pergunta:

Aparentemente, você passa isso como um argumento de linha de comando para mdadm quando você cria uma nova matriz RAID; basta pegar o exemplo na man page e adicionar --write-mostly. A página man diz que todos os dispositivos depois terão a maioria de gravação ativada; esta é uma linguagem vaga, então eu só posso supor que significa a coisa razoável: que se aplica ao próximo argumento.

No kernel 3.1 (lançado em outubro de 2011), no entanto, tentando --write-mostly / --write-behind desencadeou um pânico em [something...]scsi.c durante algum passo crítico, e destruiu minha matriz RAID.

Além disso, se você estiver dividindo sua matriz, verifique se sabe o que está fazendo. Descobri que minha matriz tinha novos UUIDs (possivelmente devido a uma nova versão principal de metadados) e não sabia como proceder.

user76871
fonte