Luego de de nuestra extensa recopilación de datos solucionamos este rompecabezas que pueden tener muchos de nuestros lectores. Te ofrecemos la respuesta y nuestro objetivo es que te sea de gran ayuda.
Solución:
Solución 1:
Una actualización rápida de mi parte. Contexto: hoy tengo en línea un servidor dedicado instalado con un esquema de partición física en lugar de LVM. Había 3 particiones:
/ boot (ext4) – 512M / (ext4) – intercambio 730G – 8G
Debido a la naturaleza de no tener acceso a la consola, el objetivo final era convertir la partición raíz existente a LVM.
Teniendo en cuenta que ext4 no se puede encoger, la única forma era reutilizar la partición de intercambio como raíz temporal. También decidí configurar la raíz temporal con LVM para asegurarme de que el proceso pueda funcionar correctamente.
Primero resultó el intercambio:
swapoff -a
Luego cambió el tamaño de la partición a través de parted (originalmente se inició de 742 a 750):
parted
resize 3 742 744
y creó una partición para el LVM:
mkpart primary ext2 744 750
set 4 lvm on
Creación de PV / VG / LV / sistema de archivos para la raíz temporal:
pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot
El siguiente paso fue copiar la raíz en el lugar temporal:
mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
Una vez que todo estuvo allí, la entrada para el sistema de archivos raíz en / media / etc / fstab también tuvo que cambiarse:
/dev/VolGroup00/tmproot / ext4 defaults 1 1
Casi ahí, la última y, digamos, la parte más no deseada sin acceso a la consola fue modificar el /boot/grub/grub.conf:
entrada original:
title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
entrada modificada:
title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
Solo para estar seguro: se agregó insmod lvm junto con el parámetro dolvm para el kernel y la ruta raíz también se cambió a root = / dev / mapper / VolGroup00-tmproot. Es importante utilizar la ruta / dev / mapper / en este momento. Como depósito de seguridad, también agregué el parámetro panic = 10 y no cambié la entrada de inicio predeterminada en el encabezado. En lugar de eso, intenté decirle al grub que arrancara con la nueva configuración solo una vez y, en caso de falla, la entrada original podría funcionar:
grub
savedefault --default=1 --once
Y finalmente:
reboot
Estuvo bien para mí la primera vez, así que repetí todo el procedimiento con la creación de un nuevo grupo de volumen en la parte superior de la partición raíz original y finalmente obtuve la raíz en el lugar correcto usando LVM.
Espero que esto ayude.
Solucion 2:
Nada es imposible en Linux, pero tendría que estar decidido y loco para intentar lo que describe. Tenga en cuenta que si solo tiene acceso SSH, es muy probable que pierda el acceso al servidor si comete un error. Si tiene una consola remota “en serie” y un interruptor de alimentación virtual, eso podría ayudar un poco. Dicho esto, si tiene una instalación nueva sin datos que perder, ¿por qué no probarla? Encontré un tutorial para convertir de forma remota un sistema Linux a RAID1; los pasos que intentaría para LVM serían análogos.
Primero, consideremos la necesidad de espacio de almacenamiento temporal. Suponiendo que no tiene un segundo disco en el servidor, podría reducir las particiones existentes usando parted
. Por supuesto, esto requiere que sus particiones de arranque y raíz usen menos de la mitad del disco, y deben usar un sistema de archivos encogible. (XFS y JFS, por ejemplo, no se pueden encoger).
Después de reducir sus particiones existentes, puede crear un volumen físico LVM en el espacio liberado, un grupo de volúmenes y volúmenes lógicos dentro de él. Replica tus sistemas de archivos. (Al replicar su sistema de archivos raíz, debe eliminar todo excepto sshd
, e idealmente estar en modo de usuario único. Probablemente tendrás que usar rsync
en vez de dd
ya que está replicando un sistema de archivos montado).
Luego, prepararía un initrd con soporte LVM y le diría a GRUB que arranque en el nuevo sistema, como se describe en el tutorial de Warren Togami. Una vez hecho esto, es muy sencillo eliminar los sistemas de archivos antiguos usando parted
y el aumento de los volúmenes de LVM.
¡Buena suerte! ¡Háganos saber si funcionó!
Solución 3:
Anteriormente he migrado mi partición raíz “/” que apuntaba a una partición de disco “/ dev / sda2” con 10G en centos 6 a una partición LV, los pasos realizados fueron los siguientes:
- Agregue un disco duro en VMware de 10G.
- reconocer el disco sin reiniciar el sistema.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/$x/scan ; done
- Cree una partición en el nuevo disco, supongamos que mi nuevo disco es / dev / sdb
- Trabajando con :
fdisk /dev/sdb
- Estar en la interfaz “fdisk” permite crear una partición con la tecla “n” asignando + 9G de capacidad, luego cambiar el tipo de partición con la tecla “t” asignando “8e” (partición lvm) y finalmente la tecla “w” para aplicar los cambios , si quieres ver cómo se ve la tabla de particiones, puedes presionar la tecla “p”.
- Una vez creada la partición, podemos validar que se ha creado el dispositivo con el siguiente comando (el comando funciona cuando el disco no se ha utilizado):
partprobe /dev/sdb
- Una vez que el dispositivo sale físicamente, creemos los objetos LVM en el siguiente orden:
pvcreate /dev/sdb1 vgcreate vg_root /dev/sdb1 lvcreate -v -n lv_root vg_root -L 9G
- Una vez que se han creado las unidades LV, asignemos un FS y lo montemos en el sistema actual.
mkfs -t ext4 /dev/vg_root/lv_root mkdir /mnt/new_root/ mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
- Si no sabe cuál es el FS de su partición actual, puede averiguarlo con comandos como:
df -lhT cat /etc/fstab blkid
- una vez montado el nuevo LV podemos proceder a copiar todos los archivos del sistema.
find / -xdev | cpio -pmvd /mnt/new_root/
- una vez copiados los archivos podemos proceder a cambiar el “chroot” pero antes vamos a montar algunas particiones:
cd /mnt/new_root/ mount -t proc /proc proc mount -t sysfs /sys sys/ mount --rbind /dev dev/
- cambiemos ahora el chroot
chroot /mnt/new_root/
- una vez que estemos en la nueva raíz modificamos el archivo:
vi /etc/fstab
- dejando el archivo casi similar a:
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 defaults 1 1 /dev/mapper/vg_root-lv_root / ext4 defaults 1 1
- Una vez que el archivo se ha modificado correctamente, creemos un archivo en la raíz con el nombre “./autorelabel” en caso de que esté trabajando con SELINUX “enforcing” o “permissive”.
touch ./autorelabel
- Salgamos ahora del entorno chroot de / mnt / new-root
exit
- Si los cambios se han realizado en función de su escenario, realicemos uno de los últimos cambios, que es modificar el archivo grub “/boot/grub/grub.conf”, agregando un nuevo menú (no modifique su opción de arranque actual hasta la nueva uno agregado funciona correctamente).
# before title CentOS 6 (2.6.32-573.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-573.el6.x86_64.img
# now title CentOS 6 (2.6.32-573.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-573.el6.x86_64.img title CentOS 6 (2.6.32-573.el6.x86_64-lvroot) root (hd0,0) insmod lvm kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-573.el6.x86_64.img
# the line added was title CentOS 6 (2.6.32-573.el6.x86_64-lvroot) root (hd0,0) insmod lvm kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-573.el6.x86_64.img
- Una vez que se hayan realizado los cambios en el archivo grub, terminemos de regenerar un nuevo archivo iso initrd:
cd /boot cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old dracut -f
- finalmente un reinicio:
init 6 # or reboot
- Una vez que aparezca el menú de grub, elija el nuevo agregado “CentOS 6 (2.6.32-573.el6.x86_64-lvroot)” y valide que esté funcionando correctamente.
- Si el sistema funciona correctamente y no utiliza “/ dev / sda”, puede eliminarlo y desconectarlo de su VM o servidor físico.
dd if=/dev/zero of=/dev/sda bs=1
- Último empinado estableció como entrada predeterminada el nuevo elemento agregado en el menú de grub “/boot/grub/grub.conf”:
#default=0 default=1
Espero que la información proporcionada anteriormente sea útil para alguien.
gracias de antemano,
Manuel Lazo
Si eres capaz, tienes la libertad de dejar una noticia acerca de qué le añadirías a esta sección.