GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo cambiar un sistema de partición física a LVM?

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


Linux
  1. Cómo cambiar la configuración regional de un sistema en RHEL7 Linux

  2. ¿Cómo cambiamos la contraseña raíz?

  3. ¿Cómo crear una partición Lvm/volumen físico> 2 tb?

  4. CentOS / RHEL:Cómo reducir el sistema de archivos raíz LVM

  5. CentOS / RHEL:cómo agregar un volumen físico (PV) a un grupo de volúmenes (VG) en LVM

Cómo restablecer o cambiar la contraseña de root en Linux

Cómo cambiar el UUID de la partición en el sistema de archivos de Linux

Cómo extender la partición raíz XFS sin LVM en Linux

Cómo establecer o cambiar el nombre de host en Linux

Cómo cambiar la contraseña de root en Linux

Cómo cambiar la contraseña de root en Kali Linux