He reinstalado un servidor Linux de CentOS 6 a 7. El servidor tiene 3 unidades: una unidad SSD del sistema (aloja todo excepto /home
) y dos unidades HDD de 4 TB que alojan /home
. Todo usa LVM. Las dos unidades de 4TB están duplicadas (usando la opción de incursión dentro de LVM), y están completamente llenas con la partición / home.
El problema es que, aunque los discos de 4 TB se reconocen bien y LVM ve el volumen sin problemas, no lo activa automáticamente. Todo lo demás se activa automáticamente. Puedo activarlo manualmente y funciona.
Tengo una imagen de la unidad del sistema anterior en / home. Eso también contiene volúmenes LVM. Si lo monte kpartx
, y LVM los recoge y los activa. Pero no veo diferencia entre esos volúmenes y los inactivos.
El sistema de archivos raíz también es LVM, y eso se activa muy bien.
Sin embargo, veo una cosa peculiar: la ejecución lvchange -aay
me dice que necesito especificar qué unidades quiero activar. Tampoco lo hace automáticamente. Si lo especifico lvchange -ay lv_home
, eso funciona.
No puedo encontrar nada que pueda ser responsable de este comportamiento.
Agregado: noté que el sistema anterior (que usaba init) tenía vgchange -aay --sysinit
en sus scripts de inicio. El nuevo usa systemd, y no veo la vgchange
llamada en sus scripts. Pero tampoco sé dónde ponerlo.
Agregado 2: Comenzando a descubrir systemd. Encontré dónde se encuentran los scripts y comencé a entender cómo se llaman. También descubrí que podía ver los scripts ejecutados con systemctl -al
. Esto me muestra que, después de comenzar lvmetad
, requiere pvscan
cada dispositivo de bloqueo udev conocido. Sin embargo, en ese momento solo hay un dispositivo de bloque udev registrado, y ese es uno de los volúmenes lvm reconocidos. Los discos duros también están allí, pero bajo diferentes caminos y nombres mucho más largos. El dispositivo de bloque reconocido es algo así 8:3
como lo son los discos duros /device/something/
. Ya no estoy en el servidor, así que no puedo escribirlo con precisión (lo arreglaré más adelante).
Creo que tiene algo que ver con udev y la detección / mapeo de dispositivos. Continuaré por la tarde y estudiaré udev entonces.
Si todo lo demás falla, encontré el script que llama pvscan
y verifiqué que puedo modificarlo para escanear todos los dispositivos todo el tiempo. Eso soluciona el problema, pero parece un truco bastante feo, así que intentaré descubrir la verdadera causa raíz.
Agregado 3 : OK, todavía no sé por qué sucede esto, pero al menos he hecho una solución bastante aceptable. Hice otro servicio systemd que llama pvscan
una vez, justo después de comenzar lvmetad
. La otra llamada para el dispositivo específico todavía está allí, y creo que en realidad lo udev
llama (ese es el único lugar donde encontré referencia). Por qué no lo llama para los otros discos duros, no tengo idea.
lvmetad
, no he notado ningún otro).Respuestas:
¡Lo hice! ¡Lo hice! Lo arreglé correctamente (creo).
Aquí está la historia:
Después de un tiempo, el servidor resultó ser defectuoso y tuvo que ser desechado. Mantuve discos y obtuve todo lo nuevo. Luego reinstalé CentOS nuevamente en el SSD y luego conecté los HDD. LVM funcionó bien, se reconocieron los discos, se mantuvo la configuración. Pero el mismo problema surgió nuevamente: después de reiniciar, el volumen estaba inactivo.
Sin embargo, esta vez tuve la oportunidad de notar algo más: el gestor de arranque pasa los siguientes parámetros al núcleo:
Hmm, espera un minuto, ¡esos se ven FAMILIARES !
Consulta rápida de google, y ahí estamos :
Bien ahora. ¡Eso lo explica!
Entonces, la resolución fue (recopilada de varias consultas de Google más):
/etc/defaults/grub
para incluir el volumen adicional en los 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: sus valores pueden variar. Useuname -r
para obtener esa versión del kernel. O simplemente sigue leyendomkinitrd
. (Francamente, no sé por qué es necesario este paso, pero aparentemente lo es, lo intenté sin él y no funcionó)grub2-install /dev/sda
TA-DA! El volumen está activo al reiniciar. ¡Agrégalo
fstab
y disfruta! :)fuente
Actualización menor (para RHEL 7 en máquina EFI (sin BIOS) ):
Llegué al éxito con estos pasos:
/etc/defaults/grub
para incluir el volumen adicional en los parámetros:rd.lvm.lv=rhel/home
(además derhel/root
yrhel/swap
)Reconfigurar grub con
( nota: ¡ otro camino!)
Reconfigurar initramfs con
grub2-install /dev/sda
(porque tengo un directorio vacío/usr/lib/grub/
)fuente
_netdev
bandera parafstab
, permitirchkconfig netfs on
e incluso apagaruse_lvmetad = 0
ellvmetad
en/etc/lvm/lvm.conf
solo en la esperanza de los dispositivos se re-sondeado y se recoge ...Yo tuve este problema también. En mi caso, fue una combinación de iscsi, multipath y lvm y el orden de creación de la sesión, etc. Resolví el problema agregando una llamada
/sbin/vgchange -a y
a/etc/rc.local
.fuente
Así que probé la configuración de rd.lvm.lv = en / etc / default / grub y eso no funcionó
Necesitaba ambos volúmenes lógicos en el grupo de volúmenes ssd_vg para estar activo en el arranque. Así como el volumen lógico home_lv en kubuntu-vg para estar activo
Lo que funcionó fue editar /etc/lvm/lvm.conf. En la sección de la lista de volúmenes, coloque esto en volume_list = ["ssd_vg", "kubuntu-vg / home_lv"]
resultado después de reiniciar
$ sudo lvscan inactivo Original '/ dev / kubuntu-vg / root' [50.00 GiB] heredar
fuente
Por mi parte, he comentado esta línea en /etc/lvm/lvm.conf
Porque si está activo, solo el volumen vg00 y vg01 están activos en el arranque.
La documentación de lvm.conf:
fuente