Eu reinstalei um servidor Linux do CentOS 6 ao 7. O servidor possui 3 unidades - uma unidade SSD do sistema (que hospeda tudo, exceto /home
) e duas unidades de disco rígido de 4 TB que hospedam /home
. Tudo usa LVM. As duas unidades de 4 TB são espelhadas (usando a opção raid no próprio LVM) e são completamente preenchidas com a partição / home.
O problema é que, embora os discos de 4 TB sejam reconhecidos corretamente e o LVM veja o volume sem problemas, ele não o ativa automaticamente. Todo o resto é ativado automaticamente. Eu posso ativá-lo manualmente e funciona.
Tenho uma imagem da unidade antiga do sistema em / home. Isso também contém volumes LVM. Se eu montá-lo com kpartx
, e o LVM os pega e os ativa. Mas não vejo diferença entre esses volumes e os inativos.
O sistema de arquivos raiz também é LVM, e é ativado muito bem.
Eu vejo uma coisa peculiar: a execução lvchange -aay
me diz que eu preciso especificar quais unidades eu quero ativar. Também não faz isso automaticamente. Se eu especificar lvchange -ay lv_home
- isso funciona.
Não consigo encontrar nada que possa ser responsável por esse comportamento.
Adicionado: notei que o sistema antigo (que usava init) tinha vgchange -aay --sysinit
em seus scripts de inicialização. O novo usa systemd e não vejo a vgchange
chamada em seus scripts. Mas também não sei onde colocá-lo.
Adicionado 2: Começando a descobrir o systemd. Eu descobri onde os scripts estão localizados e comecei a entender como eles são chamados. Também descobri que eu podia ver os scripts executados com systemctl -al
. Isso mostra que, após iniciar, lvmetad
ele chama pvscan
cada dispositivo de bloco udev conhecido. No entanto, nesse ponto, há apenas um dispositivo de bloco udev registrado e esse é um dos volumes lvm reconhecidos. Os discos rígidos também estão lá, mas sob caminhos diferentes e nomes muito mais longos. O dispositivo de bloco reconhecido é algo como 8:3
, enquanto os discos rígidos são /device/something/
. Como não estou mais no servidor, não posso escrevê-lo com precisão (isso será corrigido mais tarde).
Eu acho que tem algo a ver com udev e detecção / mapeamento de dispositivos. Continuarei à noite e estudarei o udev então.
Se tudo mais falhar, encontrei o script que chama pvscan
e verifiquei que posso modificá-lo para verificar todos os dispositivos o tempo todo. Isso resolve o problema, mas parece um hack feio, então tentarei descobrir a verdadeira causa raiz.
Adicionado 3 : OK, ainda não sei por que isso acontece, mas pelo menos fiz uma solução razoavelmente aceitável. Eu fiz outro serviço systemd que chama pvscan
uma vez, logo após iniciar lvmetad
. A outra chamada para o dispositivo específico ainda está lá, e eu acho que é assim udev
que chama (esse é o único lugar em que encontrei referência a ele). Por que não chama isso para os outros discos rígidos - não faço ideia.
lvmetad
é - eu não notei nenhum outro).