Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización: 12 de diciembre de 2006 - Martes
Tras haber creado un nuevo BE (Boot Environment) y probarlo a fondo durante unos días, podemos liberar espacio eliminando el BE antiguo que ya no estamos usando. Hay que tener en cuenta, no obstante, que necesitaremos espacio de nuevo cuando vayamos a hacer un nuevo "Live Upgrade".
A continuación describo paso a paso los pasos para eliminar un BE Solaris 10 1/06 tras haber puesto en producción un BE Solaris 10 6/06.
Mis máquinas contienen dos BE: Un Solaris 10 1/06 y un Solaris 10 6/06. Tras haber probado a fondo durante dos semanas el entorno actualizado, me decido a eliminar BE antiguo.
Normalmente mantendría el BE antiguo hasta que necesitase eliminarlo para instalar uno nuevo. Pero dado que voy a empezar a utilizar ZFS en producción, y que la versión 1/06 de Solaris 10 no soporta dicho formato y no podría reiniciar la máquina con él (en cuanto migre cosas a ZFS), mantener ese BE no me aporta ninguna ventaja.
El primer paso es localizar el BE que queremos dar de baja:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris101 yes no no yes - Solaris10u2 yes yes yes no -
En nuestro caso queremos eliminar "Solaris101" (en realidad debería llamarse "Solaris10u2", pero cometí un error mecanográfico al crearlo };-) ). Antes de eliminarlo es conveniente montar de nuevo sus datos bajo el BE actual, para revisar si queremos conservar algo. Conservar cosas como el menú de GRUB es interesante, por lo que pudiera pasar. El programa nos indica claramente que podemos eliminar ese BE, aunque luego veremos que no es tan fácil :-).
# lumount Solaris101 /.alt.Solaris101 # df -k [...] /dev/md/dsk/d0 9621460 2466391 7058855 26% /.alt.Solaris101 /dev/md/dsk/d3006 333487 297773 2366 100% /.alt.Solaris101/usr/openwin /dev/md/dsk/d3007 137839 114706 9350 93% /.alt.Solaris101/usr/dt /dev/md/dsk/d3008 211567 177939 12472 94% /.alt.Solaris101/usr/jdk /dev/md/dsk/d3003 1591775 1390608 137496 92% /.alt.Solaris101/opt/sfw /dev/md/dsk/d3004 578991 445795 75297 86% /.alt.Solaris101/usr/sfw /dev/md/dsk/d3005 639279 561816 13536 98% /.alt.Solaris101/usr/staroffice7
Primero montamos las particiones de BE a eliminar, recuperando la información que nos interese (si hay algo que nos interese, que no debiera). Tomamos nota de las particiones virtuales ("soft partitions") exclusivas de este BE, para devolverlas al "pool" tras eliminar el BE. Una vez hecho eso, demontamos las particiones del BE e intentamos eliminarlo:
# luumount Solaris101 # ludelete Solaris101 ERROR: The boot environment <Solaris101> contains the GRUB menu. ERROR: You are not allowed to delete this BE. Unable to delete boot environment.
¿Qué ha pasado?. Pues que el gestor de arranque (GRUB) busca la descripción del arranque en ese BE (aunque el BE activo actual sea otro), de forma que no podemos eliminarlo sin más. Primero tendremos que mover esa información crítica a otro sitio. Es de esperar que futuras revisiones de la tecnología "Live Upgrade" sean capaces de realizar esta tarea de forma segura y automática. No hay que olvidar que el entorno de arranque GRUB apareció en Solaris 10 1/06, que solo tiene seis meses de antigüedad. De hecho esta funcionalidad ya está disponible en versiones recientes de Solaris Express, con el identificador CR 6341350.
Mientras tanto, tendremos que hacerlo a mano
ATENCIÓN: Los pasos que siguen son delicados. No me hago responsable de pérdida de información, destrucción del sistema informático o la creación espontánea de un agujero negro por seguir estas instrucciones. ¡¡Haz una copia de seguridad completa del equipo y VERIFÍCALA antes de seguir!!.
El primer paso será mover el menú GRUB actual al BE que vamos a dejar funcionando. Para ello se puede hacer uso del comando "lumount" que acabamos de ver. El menú GRUB reside en "/boot/grub/menu.lst". Tomamos el menú GRUB del BE que vamos a retirar y lo movemos al BE activo actual, en la misma posición. De paso podemos hacer una copia de seguridad. Es muy importante mover el menú, no copiarlo simplemente, porque "ludelete" fallará si existe un menú GRUB en el BE a eliminar. Por tanto, debemos mover el fichero o copiarlo y luego borrar el original.
A continuación debemos indicar al sistema dónde se encuentra el nuevo menú GRUB. En mi caso el path es "/dev/md/dsk/d5". Así que editamos el fichero "/etc/lu/GRUB_slice", indicando la partición física y lógica donde se encuentra el menú nuevo:
PHYS_SLICE=/dev/rdsk/c1d0s0 LOG_SLICE=/dev/md/dsk/d0 LOG_FSTYP=ufs
PHYS_SLICE=/dev/rdsk/c1d0s5 LOG_SLICE=/dev/md/dsk/d5 LOG_FSTYP=ufs
Revisar estas operaciones un par de veces. Si nos equivocamos la habremos hecho buena.
A continuación le decimos al sistema que reinstale GRUB, con la nueva configuración:
/sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c2d0s5 /sbin/installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1d0s5
Si todo ha ido bien, hemos movido el menú GRUB de partición, y ya podremos eliminar el BE antiguo sin dificultad:
[root@tesalia grub]# bootadm list-menu The location for the active GRUB menu is: /boot/grub/menu.lst default 2 timeout 10 0 Solaris 10 1/06 s10x_u1wos_19a X86 1 Solaris failsafe 2 Solaris10u2 3 Solaris10u2 failsafe 4 Solaris101 5 Solaris101 failsafe # ludelete Solaris101 Determining the devices to be marked free. Updating boot environment configuration database. Updating boot environment description database on all BEs. Updating all boot environment configuration databases. Updating GRUB menu on device </dev/md/dsk/d5> Boot environment <Solaris101> deleted.
El primer comando nos muestra que efectivamente hemos movido el menú GRUB. El segundo comando elimina el BE antiguo.
A continuación, eliminamos todas las particiones involucradas en el BE que acabamos de destruir. Por último, yo suelo reiniciar para asegurarme de que todo está correcto, incluyendo que se han eliminado las entradas en el menú GRUB para el BE eliminado.
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS