Solución 1:
Una actualización rápida de mi parte. Contexto:hoy conseguí en línea un servidor dedicado instalado con un esquema de partición física en lugar de LVM. Había 3 particiones:
/arranque (ext4) - 512M/ (ext4) - 730Gswap - 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 reducir, 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 funcione 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/filesystem 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 al lugar temporal:
mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/
Una vez que todo estuvo allí, también se tuvo que cambiar la entrada para el sistema de archivos raíz en /media/etc/fstab:
/dev/VolGroup00/tmproot / ext4 defaults 1 1
Casi allí, la última y digamos la parte más no deseada sin acceso a la consola fue modificar /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. Importante usar 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 a 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
La primera vez me fue bien, así que repetí todo el procedimiento creando un nuevo grupo de volúmenes encima de la partición raíz original y finalmente obtuve la raíz en el lugar correcto usando LVM.
Espero que esto ayude.
Solución 2:
Nada es imposible en Linux, pero tendrías que estar decidido y loco para intentar lo que describes. 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 "serie" remota y un interruptor de alimentación virtual, eso podría ayudar un poco. Dicho esto, si tiene una instalación completamente 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 un espacio de almacenamiento temporal. Suponiendo que no tenga 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 reducible. (XFS y JFS, por ejemplo, no se pueden reducir).
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 en su interior. Replicar sus 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 lugar 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 inicie el nuevo sistema, como se describe en el tutorial de Warren Togami. Una vez que haga eso, es muy sencillo eliminar los sistemas de archivos antiguos usando parted
y aumentar los volúmenes de LVM.
¡Buena suerte! ¡Háganos saber si funcionó!
Solución 3:
Anteriormente migré 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
- Trabajar con:
fdisk /dev/sdb
- Estando en la interfaz "fdisk" vamos a crear una partición con la tecla "n" asignando +9G de capacidad, luego cambie el tipo de partición con la tecla "t" asignando "8e" (partición lvm) y finalmente la tecla "w" para aplicar los cambios, si desea ver cómo se ve la tabla de particiones, puede presionar la tecla "p".
- una vez que se crea la partición, podemos validar que el dispositivo se creó con el siguiente comando (el comando funciona cuando el disco no se usa):
partprobe /dev/sdb
- una vez que el dispositivo sale físicamente, vamos a crear 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 hayan creado las unidades LV, asignemos un FS y móntelo 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
- cuando el nuevo LV esté montado 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, modifique 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 haya modificado correctamente, creemos un archivo en la raíz con el nombre "./autorelabel" en caso de que trabaje con SELINUX "forzoso" o "permisivo".
touch ./autorelabel
- Salgamos ahora del entorno chroot de /mnt/new-root
exit
- Si se han realizado cambios 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 inicio actual hasta que el nuevo añadido funcione 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 generar 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 funciona correctamente.
- Si el sistema funciona correctamente y no utiliza "/dev/sda", se puede eliminar y desconectar de su máquina virtual o servidor físico.
dd if=/dev/zero of=/dev/sda bs=1
- Último conjunto empinado 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