Introducción en conceptos sobre imágenes sincronizadas y diferenciales
Para empezar a trabajar con imágenes sincronizadas, desde la consola, el procedimiento es el mismo que si lo hicieramos con las actuales imágenes monolíticas, esto es, antes de poder crearlas es necesario definirlas e introducir sus parámetros desde el formulario correspondiente. Para ello seleccionaremos la pestaña de __Imádonde encontraremos tres carpetas que contendrán los distintos tipos de imágenes que pueden crearse. En nuestro ejemplo definiremos una imagen básica y una vez creada ésta, definiremos y crearemos una incremental. Después veremos cómo restaurar ambas y completar así este tutorial sobre la nueva técnica incorporada de imágenes sinronizadas.
Elegiremos la pestaña de //Imagenes// y posteriormente, pulsando con el botón secundario sobre la carpeta imágenes básicas, seleccionaremos, en el menú contextual, la opción //"Definir nueva imagen"//:
En el marco de la derecha aparecerá un formulario para introducir los datos que definen una imagen básica:
//Nombre//.-Es el nombre canónico del archivo de imagen, es decir, el nombre que tendrá físicamente en el disco duro, por tanto, en este campo, será obligatorio introducir sólo caracteres alfanuméricos.
//Descripción//.-Es una descripción breve de la imagen que se utilizará para identificarla a lo largo de la aplicación.
//Partición//.-La partición de la cual se quiere extraer la imagen.
//Tipo de partición//.-Es el tipo de partición seleccionada.
//Repositorio//.-Es la máquina que alojará la imagen cuando se cree. Al contrario que cuando utilizamos imágenes monolíticas, clonar con imágenes sincronizadas nos permite tener tantos repositorios como queramos; basta con que en todos ellos esté funcionando el servicio de sincronización. Este servicio es rsync y es una programa que viene, en la mayoría de los casos, con la propia distribución de Linux. Más adelante veremos como se inicia y configura.
//Ruta origen//.-
Usando la técnica de imágenes sincronizadas tenemos la ventaja de poder clonar un sistema completo o parte de él, o sea, se pueden crear imágenes no sólo de particiones completas, sino de una carpeta en particular. Por ejemplo, supongamos que tenemos bien configuradas las directivas de seguridad de nuestro sistema para que el usuario sólo pueda acceder a su carpeta personal. En ese caso es más rápido tener una imagen de esta carpeta que será la única que tendremos que restaurar en la mayoría de las ocasiones. Luego, por seguridad, podríamos tener también una imagen mayor que contenga toda la partición, para casos más graves de deterioro del sistema.
Si en este campo no se especifica nada se entenderá que se quiere crear una imagen completa del sistema. La sintaxis para indicar la ruta de una carpeta concreta será la utilizada por los sistemas Linux, en todos los casos, esto es, si queremos crear una imagen básica de la carpeta practicas que cuelga de home, la forma de indicarlo será:
Y en el caso de que sea en un sistema Windows donde tengamos la siguiente carpeta //"c:\Document and Setting\practicas"//, la sintaxis sera igualmente:
//Comentarios//.- Donde se podrán escribir las observaciones se crea conveniente.
//Perfil software//.-Este dato es de consulta y sólo tendrá contenido cuando se haya creado realmente la imagen. Aún así, nunca se tendrá acceso a él para modificarlo porque se actualiza automáticamente tras este proceso de creación. Esto será un indicador de que la imagen no es sólo una definición sino que existe y está alojada en su repositorio. El proceso de creación de una Imagen tanto si se utiliza el método de imagenes monolíticas como sincronizadas es el siguiente:
Definición de la imagen.
Envío de un comando de //"Creación de imagen básica"// desde la consola a un cliente determinado.
El cliente hace un inventario del software instalado en el sistema operativo y lo engloba en un perfil software que puede existir o crearlo nuevo.
El cliente sincroniza con su repositorio el contenido de la partición o parte de ella y envía por la red las diferencias. En caso de no existir la imagen por ser la primera vez que se envía el comando, la copia será completa.
Una vez acabada la sincronizacion notifica al servidor de administración el resultado de este proceso.
El servidor de administración actualiza, en la base de datos, el perfil software de la imagen. Este perfil contentrá el inventario anterior pudiéndose conocer, por tanto, qué aplicaciones están instaladas en ella.
A partir de este momento el dato perfil software de la imagen que aparece en el formulario de sus propiedades, tiene contenido y se puede interpretar como que la imagen ha sido creada correctamente.
Una vez hemos introducidos los parámetros que configuran una imagen y que van a condicionar su creación, pasamos a dicho proceso cuyos pasos ya hemos visto anteriormente. Para esto seleccionaremos un ordenador modelo al que le hemos instalado un sistema operativo con todas sus actualizaciones y algún software de uso general, como lectores de archivos o pequeñas aplicaciones muy utilizadas. Pulsando con el botón derecho del ratón sobre éste, elegiremos la opción //"Sincronización"// del menú contextual y luego seleccionaremos "//Crear Imagen Básica//":
En el marco de la derecha se mostrara la siguiente pantalla donde completaremos los datos necesarios para la creación:
//Imagen / Repositorio//.-En este desplegable seleccionaremos una imagen básica que previamente hallamos definido. Si no aparecieran todas se debe a que la consola realiza un filtro teniendo en cuenta los datos aportados en la definición. Así, por ejemplo, si hemos definido una imagen con un campo partición distinto al de la linea donde se encuentra el desplegable, ésta no aparecerá; igualmente pasaría si el tipo de partición fuese distinto.
//Opciones Adicionales//.-Las opciones adicionales pueden dejarse en blanco o bien seleccionar una combinación de ellas. Normalmente, el proceso de creación de una imagen tiene lugar enviando los datos a un repositorio; este repositorio está enlazado con la imagen desde que se definió y si seguimos adelante, ese será el lugar donde se enviaran los datos pero opcionalmente podemos marcar las siguientes opciones:
//Borrar la Imagen Previamente//.- Puede ocurrir que sea la primera vez que se ejecuta este comando con esta imagen porque nunca antes hubiera sido creada. Si fuera así, en el proceso de creación, se enviaría todo el contenido de la imagen al repositorio. En caso contrario tendría lugar una sincronización entre la partición o la carpeta origen con la información almacenada en el servidor. Estaríamos en el caso de haber creado previamente una imagen de ese sistema pero que de nuevo se ha vuelto a modificar instalándole software o archivos; en este caso sólo se enviarían al repositorio los cambios producidos. Si quisieramos aprovechar este momento para hacer un nuevo backup de todo, porque la imagen almacenada en el servidor ya no nos merece garantía al estar corrupta u otros motivos, podemos forzar a su eliminación previa al envío, marcando esta opción.
//Copiar imagen en cache//.- Puede ocurrir también que nuestro ordenador modelo tenga definida una partición caché y queramos, en el mismo acto, sincronizar la imagen también con ella. Para ello basta con marcar esta opción.
//Borrarla previamente de la cache//.- Si tampoco nos fiamos del estado de la imagen en caché y hemos seleccionado la opción anterior podemos forzar a que se copie completamente (sin sincronización) en ella, marcando esta opción.
//No borrar archivos en destino//.- Respeta los archivos que hubiese en destino y no estén en el origen. Esta opción es muy útil si se quiere preservar nuevos archivos incorporados en destino después de una sincronización anterior.
Una vez seleccionadas todas las opciones se hace click sobre el botón tipo radio de la primera columna, se seleccionan las opciones de ejecución que nos permite hacer un seguimiento del comando (Incluir cola de acciones), programarlo en el tiempo o guardarlo como procedimiento o tarea para ejecutarlo posteriormente, y por último se pulsa sobre el botón aceptar.
Cuando la imagen ya está creada, alojada en su repositorio y opcionalmente en la caché del equipo que sirvió de modelo, podemos restaurarla en otro equipo utilizando también la técnica de sincronización. De la misma manera, si es la primera vez que se hace, el volcado será completo, pero si no, el proceso de restauración será una sincronización entre la información almacenada en el repositorio o caché, y la partición local correspondiente. (Actualmente sólo se ha implementado la restauración desde caché local o repositorio pero se contempla la posibilidad de hacerlo usando como origen de datos cualquier otra fuente como pueden ser una partición o cache de otro cliente).
Para restaurar una imagen primero hay que seleccionar cualquiera de estos ámbitos de aplicación:
Un ordenador
Un grupo de ordenadores
Un aula
No tiene sentido aplicar el comando de restauración a un grupo de aulas y mucho menos a toda la Unidad Organizativa ya que probablemente los equipos y su función sean distintos de un aula a otra y por tanto también sus imágenes.
Elijamos un aula para este supuesto. Pulsando sobre ella con el botón derecho, seleccionaremos en el menú contextual la opción //"Sincronización"// y luego //"Restaurar Imagen Básica"//. La pantalla que nos aparece tendrá una apariencia parecida a esta:
En ella se observa la configuración de particiones de los equipos del aula, que seguramente será la misma en todos. Los datos que hay que completar son:
//Imagen//.-Es la descripción de la imagen que se quiere restaurar. Análogamente a la pantalla de creación, en el desplegable aparecerán sólo las imagenes que estén ya creadas y que concuerden con las características de la partición: Número y tipo.
//Desde//.-Cuando se restaura una imagen básica por el procedimiento de sincronización podemos optar por hacerlo desde la caché local o desde un repositorio. En ambos casos el contenido de la partición se sincroniza con ellos. En este punto se pueden dar ciertas situaciones en las que conviene aclarar cual sería el comportamiento de la Aplicación:
Se elije restaurar desde repositorio:
Se hace sin pasar por la caché, o sea, directamente entre repositorio y partición.
Se elije restaurar desde caché:
El equipo no tiene caché: El sistema devolvería un error de unidad no existente.
El equipo sí tiene caché: Primero se actualiza la cache sincronizando la imagen contenida en ella con el repositorio y posteriormenter se copia a la partición. Con esto nos aseguramnos que la imagen en la cache local estará actualizada en todo momento.
//Opciones Adicionales//.-Igual que en la creación de Imagenes, estas opciones complementan el uso del comando de restauración.
//Borrar la Partición Previamente//.-Marcando esta casilla forzamos a que la restauración sea completa y no sincronizada ya sea desde cache o desde repositorio.
//Copiar Imagen en cache//.-Se usa para asegurarnos de que la caché esté actualizada. De esta forma, aún en el caso de elegir la restauración desde repositorio, la imagen también se copiaría en ella.
//Borrarla previamente de la caché//.-Si se ha marcado la casilla anterior y se desea una copia completa en lugar de una sincronización, habrá que marcar esta otra.
//No borrar archivos en destino//.- Respeta los archivos que hubiese en la partición de destino y no estén en el origen. Esta opción es muy útil si se quiere preservar nuevos archivos incorporados a la partición después de una sincronización anterior.
Análogamente, una vez seleccionadas todas las opciones se hace click sobre el botón tipo radio de la primera columna, se seleccionan las opciones de ejecución que nos permite hacer un seguimiento del comando (Incluir cola de acciones), programarlo en el tiempo o guardarlo como procedimiento o tarea para ejecutarlo posteriormente, y por último se pulsa sobre el botón aceptar.
Hasta aquí, la forma de actuar del usuario con respecto a la creación y restauración de imagenes básicas es prácticamente la misma que para las imágenes monolíticas con la diferencia de que al hacerse por sincronización, los tiempo deberían acortarse. Al introducir la creación y restauración de imagenes sincronizadas, ha surgido un nuevo concepto: el de las Imagenes Incrementales que vamos a explicar con un ejemplo.
Supongamos que en un aula se van a impartir dos cursos, uno de diseño gráfico y otro de programación. Para el primero es necesario instalar varios programas de retoque de imágenes, maquetadores, dibujo vectorial, etc. Para el segundo bases de datos, compiladores y entornos gráficos de desarrollo, ambos suponiendo para la partición del sistema anfritión un aumento de muchos Megas, incluso GigasBytes. Para resolver este supuesto es muy aconsejable utilizar imágenes incrementales que consistiría en tener una imagen básica para ambos cursos, la misma, e instalar, en cada caso, el software necesario para cada uno ellos, creando después, respectiva e individualmente, una imagen incremental. La forma de proceder seria la siguiente:
1- Teniendo en cuenta que ya poseo una imagen básica del sistema --en caso de no tenerla se procedería a instalarlo y crearla--
efectúo una restauración de esta imagen básica en un equipo cualquiera.
2- Me siento delante de la máquina e instalo el software para el curso de diseño gráfico.
3- Defino y creo una imagen incremental referida a la imagen básica que restauré previamente y que será la imagen del curso.
4- Vuelvo a restaurar la imagen básica, borrando así cualquier resto del software de diseño.
5- Instalo las herramientas, compiladores, Entornos de desarrollo visual, etc, para el curso de programación.
6- Vuelvo a definir y crear otra imagen incremental también referida a la imagen básica primitiva y que será la imagen utilizada en el curso de programación.
Al final de este proceso tendría por tanto:
y las combinaciones serían:
Resumiendo, aunque una imagen incremental ocupe mucho menos espacio que una básica al haberse creado sobre ella y contener sólo los cambios,
al restaurarse, el sistema primero realiza una sincronización de la partición con la imagen básica, eliminando así cualquier vestigio de otras instalaciones y luego copia estos cambios, todo en el mismo proceso.
Por tanto en la pantalla de definición de una imagen incremental podemos encontrar los siguientes campos:
//Nombre//.-Es el nombre canónico del archivo de imagen incremental que contendrá los cambios con respecto a la imagen básica, es decir, el nombre que tendrá físicamente en el disco duro. Por tanto, en este campo, será obligatorio introducir sólo caracteres alfanuméricos.
//Descripción//.-Es una descripción breve de la Imagen Incremental que se utilizará para identificarla a lo largo de la aplicación.
//Imagen básica//.-Se trata de la Imagen Básica sobre la que se detectarán los cambios. El proceso de creación de una imagen incremental consiste en comparar el contenido de una partición con una imagen básica almacenada en un repositorio y guardar las diferencias en un archivo; este archivo se almacenará en el mismo repositorio donde la imagen básica utilizada para generarlo.
La pantalla de creación de las Imágenes Incrementales es idéntica a la de las Imágenes Básicas con la diferencia de que en el desplegable donde se selecciona la imagen a crear aparecen sólo Imagenes Incrementales con las mismas limitaciones y concordancias con la fila de partición que la imagen básica a la que están adscritas.
La pantalla de restauración de las Imágenes Incrementales es también idéntica a la de las Imágenes Básicas y también con la diferencia de que en el desplegable sólo aparecen Imágenes Incrementales ya creadas.
Por lo demás, todo lo dicho anteriormente en el proceso de creación y restauración de Imágenes Básicas, se hace extensivo a las Incrementales.
Se están haciendo cambios en la consola, al terminar se adaptará la documentación.
En la versión actual todas las páginas de sincronización muestran nuevas opciones que podemos ver en la siguiente imagen:
Tenemos un desplegable que nos permite elegir que versión de los comandos de sincronización queremos utilizar.
Tenemos tres casillas de selección que nos permiten dar distintas opciones a la transferencia de ficheros por la red:
Tanto la W como la C habrá que probar en cada caso si conviene o no usarla, dependiendo del ancho de banda y de la capacidad de cálculo de los equipos.
Como se sabe, el sistema de control y administración de Opengnsys está formado por un programa (ogAdmClient) que se ejecuta en el cliente y que actua como servicio encargado de recibir e interpretar las órdenes enviadas desde el ordenador Central (ogAdmServer), a través de la consola. Este programa (ogAdmClient) es también el encargado de enviar los resultados de la ejecución de estos comandos al servidor para que se lleven a cabo ciertas actualizaciones en la base de datos del sistema. El hecho de no utilizar los comandos de la consola para gestionar la creación y restauración de imágenes puede provocar inconsistencia de datos y la información mostrada en algunas pantallas podría no ser rigurosamente cierta, por lo cual, es altamente recomendable hacerlo así, a menos que se trabaje de forma que la consola sea un mero lanzador de código ejecutable, con lo cual se perdería gran parte de su funcionalidad.
El nexo de unión entre el ogAdmClient y el engine de Opengnsys es una colección de script localizados en la carpeta /opt/opengnsys/client/interfaceAdm y que son los encargados en última instancia de ejecutar las acciones requeridas. Estos scripts son invocados por el servicio cuando se recibe un comando y éstos a su vez llaman a las funciones primitivas del motor de clonación que devolverán un código de ejecución. Este código de ejecución es de nuevo capturado por el ogAdmClient y enviado, junto con otros datos, al servidor de Administración que gestionará la respuesta, como mencionábamos antes. Esta interface, por tanto, garantiza la independencia del sistema de administración con el engine y es en ella donde colocaremos los scripts de clonación con imágenes sincronizadas:
CrearImagenBasica
CrearSoftIncremental
RestaurarImagenBasica
RestaurarSoftIncremental
//CrearImagenBasica//
Los parámetros recibidos por este scripts desde el servicio ogAdmClient son los siguientes:
$1 Número de disco
$2 Número de particion
$3 Nombre canónico de la imagen básica (sin extensión)
$4 Dirección del repositorio
$5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
Tiene el formato "nnnn" donde "n" vale 0 ó 1.
1XXX: Borrar la imagen básica del repositorio antes de crearla
X1XX: Copiar imagen básica a la cache
XX1X: Borrar previamente la imagen básica de la cache antes de copiarla
XXX1: No borrar archivos en destino
El valor X indica que no importa el valor que tenga el dato
(/syncronizedoc/imagenes sincronizadas_1.jpg)
(/syncronizedoc/imagenes sincronizadas_2.jpg)
(/syncronizedoc/imagenes sincronizadas_3.jpg)
//CrearImagenIncremental//
Los parámetros recibidos por este scripts desde el servicio ogAdmClient son los siguientes:
$1 Número de disco
$2 Número de particion
$3 Nombre canónico de la imagen básica (sin extensión)
$4 Dirección del repositorio
$5 Nombre canónico de la imagen incremental (sin extensión)
$6 Es una cadena "nnnn" tipo flags que codifica varios parametros.
Tiene el formato "nnnn" donde "n" vale 0 ó 1.
1XXX: Borrar la imagen incremental del repositorio antes de copiarla
X1XX: Copiar imagen incremental también a la cache
XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla
XXX1: No borrar archivos en destino
El valor X indica que no importa el valor que tenga el dato
(/syncronizedoc/imagenes sincronizadas_4.jpg)
(/syncronizedoc/imagenes sincronizadas_5.jpg)
(/syncronizedoc/imagenes sincronizadas_6.jpg)
//RestaurarImagenBásica//
Los parámetros recibidos por este scripts desde el servicio ogAdmClient son los siguientes:
$1 Número de disco
$2 Número de particion
$3 Nombre canónico de la imagen básica (sin extensión)
$4 Dirección del repositorio
$5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
Tiene el formato "nnnn" donde "n" vale 0 ó 1.
1XXX: Borrar la partición de destino antes de restaurar la imagen básica
X1XX: Copiar imagen básica también a la cache
XX1X: Borrar previamente la imagen básica de la cache antes de copiarla
XXX1: No borrar archivos en destino
El valor X indica que no importa el valor que tenga el dato
$6 Método de clonación 0Desde caché 1Desde repositorio
$7 Ruta de origen de la Imagen (Carpeta)
(/syncronizedoc/imagenes sincronizadas_7.jpg)
(/syncronizedoc/imagenes sincronizadas_8.jpg)
(/syncronizedoc/imagenes sincronizadas_9.jpg)
//RestaurarImagenIncremental//
Los parámetros recibidos por este scripts desde el servicio ogAdmClient son los siguientes:
$1 Número de disco
$2 Número de particion
$3 Nombre canónico de la imagen básica (sin extensión)
$4 Dirección del repositorio (Si es 0.0.0.0 es caché)
$5 Nombre canónico de la imagen incremental (sin extensión)
$6 Es una cadena "nnnn" tipo flags que codifica varios parametros.
Tiene el formato "nnnn" donde "n" vale 0 ó 1.
1XXX: Borrar la partición de destino antes de restaurar la imagen incremental
X1XX: Copiar imagen incremental también a la cache
XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla
XXX1: No borrar archivos en destino
El valor X indica que no importa el valor que tenga el dato
$7 Método de clonación 0Desde caché 1Desde repositorio
$8 Ruta de origen de la Imagen (Carpeta)
(/syncronizedoc/imagenes sincronizadas_10.jpg)
(/syncronizedoc/imagenes sincronizadas_11.jpg)
(/syncronizedoc/imagenes sincronizadas_12.jpg)