zpool unavaliable após adicionar novo disco ao servidor (ponto de montagem alterado)

1

Eu tenho um homeserver rodando o Proxmox com dois zpools. Eu quero substituir um pool existente com hdds menores por um novo. Mas quando eu insiro um dos dois novos discos SATA, meus zpools não funcionam. Os logs disseram que um disco importante está faltando. Quando eu despacho o novo disco, tudo funciona bem.

Descobri que meu disco novo está montado em sda . Mas um dos discos antigos no zpool existente também é montado em sda quando o novo não está conectado. O que posso fazer para evitar esse conflito? Eu preciso dizer ao Linux que sda é reservado para o disco antigo do zpool, e deve usar sdg para o novo.

Estou confuso que esse comportamento possa acontecer. Como resultado, o Linux não parece vincular pontos de montagem a unidades como letras de unidade no Windows. Acho que foi um erro usar o ponto de montagem e devo usar algum identificador exclusivo (UUID?) No zpool. Mas como posso fazer isso? Eu tenho pools zfs existentes em que usei os pontos de montagem.

    
por Lion 29.09.2017 / 17:11

1 resposta

2

Algum conhecimento prévio sobre o problema

Depois de um pouco de pesquisa e tentativa, concluo que o zfs usou os pontos de montagem. Portanto, minha teoria estava certa: os pontos de montagem não são estáticos, como letras de unidade no Windows. Em vez disso, o Linux os atribui na ordem de detecção durante a inicialização. Adicionar ou remover discos pode misturar os pontos de montagem.

Exemplo simples:

sda -> Drive #1
sdb -> Drive #2
sdc -> Drive #3

Agora adicionamos uma nova unidade # 4. Poderia ser inserido assim:

sda -> Drive #1
sdb -> Drive #4
sdc -> Drive #2
sde -> Drive #3

Se dependermos do ponto de montagem, estaremos com problemas agora: Nosso sistema espera a unidade 2 em sdb , mas obteve uma completamente diferente (unidade # 4). De acordo com o arch wiki, isso pode acontecer mesmo durante uma inicialização normal, sem alterações nas propriedades do disco rígido.

O que podemos fazer?

Bem, usar esses pontos de montagem parece uma má ideia. Devemos usar nomenclatura de dispositivo de bloco persistente , que estão disponíveis no udev. Deve estar disponível em qualquer distribuição Linux moderna. Os nomes de bloqueio persistentes não usam nomes neutros como sda ou sdb . Em vez disso, cria alguns tipos de nomes, que são vinculados persistentemente à unidade. Eles são comparáveis a letras de unidade no Windows (sim, lembre-se de que letras de unidade estão vinculadas a partições, onde nomes de bloco identificam uma unidade, mas ambos são persistentes!).

by-id e by-uuid parecem mais relevantes para resolver esse problema, mas há outros também. Você pode ler uma explicação mais detalhada na página wiki vinculada do Arch. É um artigo geral, que pode ser aplicado a outras distribuições também. Para esse problema, é importante saber que uuids é um tipo de ID exclusivo gerado. E podemos usar ids como uma alternativa melhor legível, porque eles estão usando informações específicas do disco rígido como fabricante, modelo e número de série.

ZFS

Como descrito aqui , era necessário exportar todos os pools e importá-los novamente, mas com o -d interruptor. Diz ao zpool onde procurar por dispositivos:

zpool export <poolname>
zpool import -d /dev/disk/by-id <poolname>

Usando zpool status , isso pode ser verificado: antes da exportação / importação, você deve ver pontos de montagem como /dev/sda para os dispositivos. Isso deve mudar para IDs de disco após esses procedimentos.

Volumes regulares (opcional)

Para mim, isso não foi suficiente: eu tenho um hdd adicional chamado buffer para coisas como imagens ISO. Não há dados importantes, apenas para aliviar meu SSD. Então esse era um volume ext3 clássico. Isso desencoraja o servidor a inicializar, pois exatamente o mesmo problema acontece aqui: O ponto de montagem alterou a causa dos novos discos, o que permite a falha da montagem.

Eu resolvi isso simplesmente removendo essa unidade. De qualquer forma, essa foi a minha ideia, já que os novos hdds são grandes o suficiente e eu poderia economizar um pouco de energia tendo menos discos. Para fazer isso, temos que remover o armazenamento do proxmox usando o arquivo /etc/pve/storage.cfg . No meu caso, a parte relevante é assim:

dir: buffer
path /buffer
content iso

Depois de removê-lo, devemos dar uma olhada em /etc/fstab . Este arquivo monta nosso /buffer volume, onde a causa principal ocorre:

/dev/sdf /buffer ext3 rw 0 0

Como você pode ver, o ponto de montagem /dev/sdf está presente aqui. Se você não quiser rejeitar o disco como eu, simplesmente use um ponto de montagem exclusivo aqui! Por exemplo, / dev / disk / by-id . É um exemplo de nomes de dispositivos de blocos persistentes. Eles são gerados com base em dados dependentes de dispositivo. by-id , por exemplo, usa o número de série do hardware. Então, somos capazes de até mesmo colocar dois discos iguais. Leia mais no primeiro parágrafo para informações básicas.

No meu caso, simplesmente remover essa linha impede que o linux monte meu disco rígido. Se você tiver mais volumes, será necessário repetir essas etapas para cada um deles, para ter certeza de não ter problemas após a reinicialização.

    
por 30.09.2017 / 13:45