Un servidor que no arranca normalmente conserva todos sus datos. La causa suele ser pequeña: una línea incorrecta en /etc/fstab, una actualización del kernel que dañó el gestor de arranque, un disco lleno, un sistema de archivos que necesita comprobación o una regla de firewall que lo dejó sin acceso. Un sistema de rescate arranca desde la red en lugar de sus discos, así que puede montar los discos, corregir el problema y volver a arrancar con normalidad, o poner antes sus datos a salvo. Esta guía cubre las reparaciones más comunes en servidores Linux.
Antes de cambiar nada, abra la consola y mire los últimos mensajes en pantalla:
En el sistema de rescate, liste los discos y las particiones:
lsblk -f
fdisk -l
Busque la partición raíz (a menudo la partición ext4 o xfs más grande) y, en servidores UEFI, una pequeña partición vfat (la partición del sistema EFI). Si ve linux_raid_member o LVM2_member, ensámblelos primero:
# Software RAID (mdadm)
mdadm --assemble --scan
cat /proc/mdstat
# LVM
vgscan
vgchange -ay
lvs
Ejecute la comprobación del sistema de archivos mientras la partición no esté montada. Sustituya los nombres de dispositivo por los suyos:
# ext4
fsck -f /dev/sda2
# XFS: try a normal mount first, use xfs_repair only if mounting fails
xfs_repair /dev/mapper/vg0-root
xfs_repair -L salvo que una reparación normal sea imposible: descarta el registro (log) y puede perder escrituras recientes. Si los datos son importantes, cópielos primero (paso 8).mkdir -p /mnt/sys
mount /dev/sda2 /mnt/sys # your root partition or LV
ls /mnt/sys # you should see etc, home, var ...
nano /mnt/sys/etc/fstab
Comente la línea del disco que ya no existe añadiendo # delante, y añada nofail a los discos de datos opcionales para que un disco ausente no pueda volver a impedir el arranque:
UUID=1234-abcd /data ext4 defaults,nofail 0 2
Use los UUID de blkid en lugar de nombres como /dev/sdb1, que pueden cambiar entre arranques. Cómo montar discos correctamente se explica en particionar y montar un disco de datos.
Si el sistema de archivos raíz está lleno al 100 %, los servicios fallan y algunos sistemas dejan de arrancar. Con el disco montado, busque y elimine archivos grandes, normalmente registros o copias de seguridad antiguos:
du -xh /mnt/sys --max-depth=2 2>/dev/null | sort -h | tail -20
Encontrará más ideas de limpieza en liberar espacio en disco en Linux.
Para las reparaciones que necesitan las herramientas del propio sistema (GRUB, gestor de paquetes, passwd), haga chroot en él:
mount /dev/sda1 /mnt/sys/boot # only if /boot is a separate partition
mount /dev/sda15 /mnt/sys/boot/efi # UEFI only: the vfat EFI partition
for d in dev proc sys run; do mount --bind /$d /mnt/sys/$d; done
chroot /mnt/sys /bin/bash
Ahora está trabajando dentro de su sistema instalado. Para restablecer aquí una contraseña de root olvidada, basta con ejecutar passwd root; encontrará otros métodos en restablecer la contraseña de root en Linux.
Dentro del chroot:
# Debian / Ubuntu, legacy BIOS boot
grub-install /dev/sda
update-grub
update-initramfs -u -k all
# Debian / Ubuntu, UEFI boot
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
update-grub
# Rocky / AlmaLinux / CentOS
grub2-mkconfig -o /boot/grub2/grub.cfg
dracut -f --regenerate-all
Con RAID por software, ejecute grub-install en cada disco miembro (por ejemplo /dev/sda y /dev/sdb) para que el servidor pueda arrancar desde cualquiera de ellos.
Si el servidor arranca pero no puede conectarse después de cambiar la configuración del firewall o de SSH, corríjalo desde el chroot (o directamente en la consola VNC si el sistema todavía arranca):
# Check the SSH configuration for errors
sshd -t
# Temporarily disable the firewall at next boot
systemctl disable ufw 2>/dev/null; systemctl disable firewalld 2>/dev/null
Cuando haya recuperado el acceso, vuelva a activar el firewall con el puerto correcto abierto, como se indica en abrir puertos con firewalld y ufw.
Si la reparación falla o piensa reinstalar, copie primero los datos importantes a otro servidor. Desde el sistema de rescate:
# Copy a directory to a backup server over SSH
rsync -aHAX --info=progress2 /mnt/sys/var/www/ user@backup-server:/backup/www/
# Stream a compressed archive without needing local space
tar -C /mnt/sys -czf - home etc var/lib/mysql | ssh user@backup-server "cat > /backup/server.tar.gz"
En el caso de las bases de datos, copiar los archivos en bruto de un servidor detenido funciona si los restaura en la misma versión de la base de datos. En caso contrario, arranque el sistema una vez reparado y use mysqldump.
exit # leave the chroot
for d in run sys proc dev; do umount /mnt/sys/$d; done
umount -R /mnt/sys
sync
Después salga del modo rescate (en IMIDC: Current Task → Exit Rescue, tarea actual → salir del modo rescate) para que el servidor arranque desde sus propios discos, y observe el arranque en la consola VNC.
Elija el tipo de rescate Windows para iniciar un entorno Windows desde el que puede copiar archivos de la unidad del sistema, o ejecutar chkdsk C: /f y bcdboot C:\Windows para reparar los archivos de arranque.
Es posible que la controladora RAID necesite un driver que el sistema de rescate no incluye, o que un disco haya fallado. Abra un ticket para que nuestros ingenieros revisen el hardware.
Solo cuando sus datos estén a salvo. Una reinstalación borra los discos; el sistema de rescate le permite hacer antes una copia.
¿Sigue con problemas después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico 24/7 de IMIDC le ayudará. Incluya la IP del servidor, una captura de pantalla del error de arranque en la consola y la salida de lsblk -f para que podamos localizar el problema más rápido.