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).Respostas:
Eu fiz isso! Eu fiz isso! Eu consertei corretamente (eu acho).
Aqui está a história:
Depois de algum tempo, o servidor mostrou-se defeituoso e teve que ser descartado. Eu mantive discos e recebi tudo o mais. Em seguida, reinstalei o CentOS novamente no SSD e conectei os HDDs. O LVM funcionou bem, os discos foram reconhecidos, a configuração mantida. Mas o mesmo problema surgiu novamente - após uma reinicialização, o volume estava inativo.
No entanto, desta vez, percebi outra coisa - o carregador de inicialização passa os seguintes parâmetros para o kernel:
Hmm, espere um minuto, aqueles parecem familiares !
Consulta rápida do Google, e aqui estamos :
Bem agora. Isso explica tudo!
Portanto, a resolução foi (coletada de várias outras consultas do Google):
/etc/defaults/grub
para incluir o volume adicional nos parâmetros:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap
rd.lvm.lv=vg_home/lv_home
rhgb quiet
grub2-mkconfig -o /boot/grub2/grub.cfg
mkinitrd -f -v /boot/initramfs-3.10.0-327.18.2.el7.x86_64.img 3.10.0-327.18.2.el7.x86_64
. Nota: seus valores podem variar. Useuname -r
para obter essa versão do kernel. Ou apenas leiamkinitrd
. (Francamente, não sei por que essa etapa é necessária, mas aparentemente é - tentei sem ela e não funcionou)grub2-install /dev/sda
TA-DA! O volume está ativo na reinicialização. Adicione
fstab
e divirta-se! :)fonte
Atualização secundária (para RHEL 7 na máquina EFI (não BIOS) ):
Eu tenho sucesso usando estas etapas:
/etc/defaults/grub
para incluir o volume adicional nos parâmetros:rd.lvm.lv=rhel/home
(além derhel/root
erhel/swap
)Reconfigure o grub com
( nota: outro caminho!)
Reconfigure o initramfs com
grub2-install /dev/sda
(porque eu tenho um dir vazio/usr/lib/grub/
)fonte
_netdev
bandeira parafstab
, permitirchkconfig netfs on
e até mesmo desligaruse_lvmetad = 0
olvmetad
em/etc/lvm/lvm.conf
apenas na esperança os dispositivos re-sondados e retomada ...Eu tive esse problema também. No meu caso, foi uma combinação de iscsi, multipath e lvm e a ordem de criação da sessão etc. Resolvi o problema adicionando uma chamada
/sbin/vgchange -a y
para/etc/rc.local
.fonte
Então, tentei a configuração rd.lvm.lv = em / etc / default / grub e isso não funcionou
Eu precisava que os dois volumes lógicos no grupo de volumes ssd_vg estivessem ativos na inicialização. Assim como o volume lógico home_lv no kubuntu-vg para estar ativo
O que funcionou foi editar /etc/lvm/lvm.conf Na seção da lista de volumes, coloque isso em volume_list = ["ssd_vg", "kubuntu-vg / home_lv"]
resultado após a reinicialização
$ sudo lvscan inativo Original '/ dev / kubuntu-vg / root' [50.00 GiB] herdar
fonte
Pela minha parte, comentei esta linha em /etc/lvm/lvm.conf
Porque, se estiver ativo, apenas os volumes vg00 e vg01 estarão ativos na inicialização.
A documentação do lvm.conf:
fonte