jueves, 4 de julio de 2013

Actualizar FreeBSD 9 con freebsd-update y beadm

English version: Updating FreeBSD 9 with freebsd-update and beadm


En mi anterior entrada he descrito como instalar FreeBSD 9 sobre ZFS con soporte para beadm; ahora pretendo mostrar las ventajas de esta configuración a la hora de afrontar tareas tan comprometidas -y necesarias-  como  son las actualizaciones de SO.

Como punto de partida, tenemos un sistema bajo FreeBSD 9 en el que se ha generado un snapshot con beadm nada mas concluir la instalación.

La versión inicial que tenemos es:
root@morsa:/root # uname -a
FreeBSD morsa 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UT
C 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

En FreeBSD hay dos rutas para actualizar el S.O; con svn o CTM se puede actualizar los fuentes de /usr/src y después compilar el kernel y el userland, o bien, emplear el comando freebsd-update que actualiza los binarios y es el método que voy a mostrar.

freebsd-update permite realizar actualizaciones de versión mayores o menores, solo con el kernel GENERIC, no con los personalizados. También permite parchear FreeBSD.

Para actualizar el sistema, primero hay que descargar la actualización:
root@morsa:/root # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Preparing to download files...
00....110....120
.........................................
The following files will be updated as part of updating to 9.1-RELEASE-p4:
/boot/kernel/kernel
/boot/kernel/kernel.symbols
/boot/kernel/linker.hints
/boot/kernel/nfsd.ko
/boot/kernel/nfsd.ko.symbols
/lib/libc.so.7
/lib/libcrypto.so.6
/rescue/
/rescue/atacontrol
/rescue/atmconfig
Una vez concluida la descarga, actualizamos el sistema:
root@morsa:/root # freebsd-update install
Installing updates... done
Reiniciamos el servidor:
root@morsa:/root # shutdown -r now
Ahora, tenemos FreeBSD 9 actualizado:
root@morsa:/root # uname -a
FreeBSD morsa 9.1-RELEASE-p4 FreeBSD 9.1-RELEASE-p4 #0: Mon Jun 17 11:42:37 UTC 2013     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
En este punto, realizamos un snapshot para tener un punto de  retorno consistente.

root@morsa:/root # beadm create 91_30062013@update_RELEASE-p4
 Created successfully
Finalmente listamos los snapshots que hemos realizado.
root@morsa:/root # beadm list -s
BE/Dataset/Snapshot                                                 Active Mountpoint            Space Created

91_30062013
  fbsdzpool1/ROOT/91_30062013                                       NR     /                    466.7M 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr                                   -      /usr                 435.6M 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr/home                              -      /usr/home            144.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr/ports                             -      /usr/ports             1.4G 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles                   -      /usr/ports/distfiles   1.7M 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr/ports/packages                    -      /usr/ports/packages  144.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/usr/src                               -      /usr/src             511.9M 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var                                   -      /var                 692.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/crash                             -      /var/crash           148.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/db                                -      /var/db              278.2M 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/db/pkg                            -      /var/db/pkg          280.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/empty                             -      /var/empty           144.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/log                               -      /var/log             416.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/mail                              -      /var/mail            152.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/run                               -      /var/run             448.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013/var/tmp                               -      /var/tmp             356.0K 2013-06-30 14:39
  fbsdzpool1/ROOT/91_30062013@intall_r243825                        -      -                     71.7M 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr@intall_r243825                    -      -                     78.6M 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr/home@intall_r243825               -      -                      0.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr/ports@intall_r243825              -      -                      8.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles@intall_r243825    -      -                      8.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr/ports/packages@intall_r243825     -      -                      0.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/usr/src@intall_r243825                -      -                      1.9M 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var@intall_r243825                    -      -                    124.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/crash@intall_r243825              -      -                      0.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/db@intall_r243825                 -      -                    212.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/db/pkg@intall_r243825             -      -                      8.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/empty@intall_r243825              -      -                      0.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/log@intall_r243825                -      -                    108.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/mail@intall_r243825               -      -                      8.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/run@intall_r243825                -      -                    184.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013/var/tmp@intall_r243825                -      -                    100.0K 2013-06-30 16:00
  fbsdzpool1/ROOT/91_30062013@update_RELEASE-p4                     -      -                     84.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr@update_RELEASE-p4                 -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr/home@update_RELEASE-p4            -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr/ports@update_RELEASE-p4           -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr/ports/distfiles@update_RELEASE-p4 -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr/ports/packages@update_RELEASE-p4  -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/usr/src@update_RELEASE-p4             -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var@update_RELEASE-p4                 -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/crash@update_RELEASE-p4           -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/db@update_RELEASE-p4              -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/db/pkg@update_RELEASE-p4          -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/empty@update_RELEASE-p4           -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/log@update_RELEASE-p4             -      -                     84.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/mail@update_RELEASE-p4            -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/run@update_RELEASE-p4             -      -                      0.0K 2013-07-03 08:49
  fbsdzpool1/ROOT/91_30062013/var/tmp@update_RELEASE-p4             -      -                    100.0K 2013-07-03 08:49
A partir de este punto, si fuera preciso deshacer los cambios y retroceder a un punto anterior confiable tenemos dos opciones:

freebsd-update rollback: Este comando tiene la opción de deshacer los cambios aplicados, dejando el sistema en el estado anterior a la aplicación de la actualización. En este caso con ejecutar este comando el sistema quedaría restaurado a la versión
FreeBSD 9.1-RELEASE #0 r243825.

beadm create/activate: Con beadm se puede restaurar todo el entorno de Arranque a un punto anterior arbitrariamente definido. Para revertir la versión a FreeBSD 9.1-RELEASE #0 r243825 Ejecutaríamos :
# beadm create -e 91_30062013@intall_r243825 91_04072013
# beadm activate 91_04072013
# shutdown -r now
La diferencia entre ambos métodos estriba en la especificidad del primero, que revierte el S.O - y solo el S.O- a su estado previo.

Por contra, en el caso del segundo método el punto de restauración está arbitrariamente definido en el momento de la creación del snapshot y no solo se revierte los binarios de FreeBSD sino los sistema de ficheros completos, donde está instalado el S.O.

El segundo método es más directo, evita problemas con los ficheros de configuración, que puedan haberse modificado con mergemaster, y posibles cambios en el estado de los paquetes y ports que podamos haber realizado.

1 comentario:

  1. Hola, comparti este post, si lo queres postear me avisas y lo borro.
    Excelente Blog!! Hace dos dias instale FreeBSD.
    Saludos, y gracias!!

    ResponderEliminar

Vuestros comentarios son bien recibidos, os animo a contribuir proponiendo temas que os interesen para desarrollar en este blog.