zpool indisponível após adicionar novo disco ao servidor (ponto de montagem alterado)

zpool indisponível após adicionar novo disco ao servidor (ponto de montagem alterado)

Eu tenho um servidor doméstico rodando Proxmox com dois zpools. Quero substituir um pool existente com discos rígidos menores por um novo. Mas quando eu conecto um dos dois novos discos rígidos SATA, meus zpools não funcionam. Os logs diziam que faltava um disco importante. Quando eu envio o novo disco, tudo funciona bem.

Eu descobri que meunovodisco está montado em sda. Mas um dos discos antigos no zpool existente também é montado sdaquando o novo não está conectado. O que posso fazer para evitar esse conflito? Preciso informar ao Linux que sdaestá reservado para o disco antigo do zpool e que deve ser usado sdgpara 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? Tenho pools zfs existentes onde usei os pontos de montagem.

Responder1

Algum conhecimento prévio sobre o problema

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

Exemplo simples:

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

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

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

Se dependermos do ponto de montagem, teremos problemas agora: nosso sistema esperava a unidade nº 2 sdb, mas obteve uma unidade completamente diferente (unidade nº 4). De acordo com o arch wiki, isso pode acontecer até mesmo durante uma inicialização normal,semquaisquer alterações nos discos rígidos.

O que podemos fazer?

Bem, usar esses pontos de montagem parece uma má ideia. Deveríamos usarnomenclatura de dispositivo de bloco persistenteem vez disso, que estão disponíveis usando o udev. Deve estar disponível em qualquer distribuição Linux moderna. Nomes de blocos persistentes não usam nomes neutros como sdaou sdb. Em vez disso, ele cria algum tipo de nome, que fica persistentemente vinculado à unidade. Elas são comparáveis ​​às letras de unidade do Windows (sim, lembre-se de que as letras de unidade estão vinculadas a partições, onde os nomes dos blocos identificam uma unidade, mas ambos são persistentes!).

by-ide by-uuidparece mais relevante para resolver este problema, mas também existem outros. Você pode ler uma explicação mais detalhada na página wiki vinculada do Arch. É um artigo geral, que também pode ser aplicado a outras distribuições. Para este problema é importante saber que uuidssão uma espécie de id único gerado. E podemos usar idscomo uma alternativa mais 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

Comodescrito aqui, era necessário exportar todos os pools e depois reimportá-los, mas com o -dswitch. Diz ao zpool onde procurar dispositivos:

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

Usando zpool statusisto pode ser verificado: Antes da exportação/importação, você deverá ver pontos de montagem como /dev/sdapara os dispositivos. Isso deve mudar para IDs de disco após esse procedimento.

Volumes regulares (opcional)

Para mim isso não foi suficiente: tenho um disco rígido adicional chamadoamortecedorpara coisas como imagens ISO. Nenhum dado importante, apenas para aliviar meu SSD. Então este foi um volume ext3 clássico. Isso desencoraja a inicialização do meu servidor, pois exatamente o mesmo problema acontece aqui: O ponto de montagem mudou a causa dos novos discos, o que permitiu a falha na montagem.

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

dir: buffer
path /buffer
content iso

Depois de removê-lo, temos que dar uma olhada em /etc/fstab. Este arquivo monta nosso /buffervolume, onde ocorre a causa raiz:

/dev/sdf /buffer ext3 rw 0 0

Como você pode ver, o ponto de montagem /dev/sdfestá presente aqui.Se você não quiser rejeitar o disco como eu, basta usar um ponto de montagem exclusivo aqui! Por exemplo /dev/disk/by-id. É um exemplo de nomes de dispositivos de bloco persistentes. Eles são gerados com base em dados dependentes do dispositivo. by-idpor exemplo, usa o número de série do hardware. Assim, somos capazes de criar dois discos iguais. Leia mais no primeiro parágrafo para obter informações básicas.

No meu caso, simplesmente remover esta 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.

informação relacionada