Área de redes y telecomunicaciones148.206.53.84/tesiuami/uami14525.pdf · siendo seleccionada...

53

Upload: duongthu

Post on 25-Jan-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

ÁREA DE REDES YTELECOMUNICACIONES

Departamento de Ingeniería Eléctrica.

UAM Iztapalapa

Sistema de Almacenamiento Distribuido «

Desarrollado por:

Diego Rodrigo Guzmán SantamaríaJulio Martínez TovarSaúl Martínez Vidals

José Isaac Torres Rivera

Bajo la dirección de:

Ricardo Marcelín Jiménez

Jorge Luis Ramírez Ortiz

2

Índice general

1. Introducción 9

1.1. Descripción del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3. ¾Cómo Leer Éste Reporte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. Investigación previa 11

2.1. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.1. Modelo cliente-servidor usando sockets orientados a conexión . . . . . . . . . . . . . . . . . . 12

2.1.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.3. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2. JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2. Ajuste de variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.4. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.5. Problemas que se presentaron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3. MPI Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4. JBoss-Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3

4 ÍNDICE GENERAL

2.4.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3. Actividades Realizadas 17

3.1. Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2. Respaldo y Recuperación de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.1. Trans�riendo Archivos vía FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.2. Dispersión y Agrupación de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.3. Registro de los Archivos Respaldados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.4. Di�cultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.3. Diseño de la Interfaz de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.4. Empaquetando la Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5. Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.1. AT - 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.2. AT - 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5.3. AT - 220 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5.4. Di�cultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4. Trabajo Futuro 23

4.1. Transferencia Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2. Servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3. Interfaz Grá�ca de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.4. Acceder a Servidores en Otras Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.5. Mejorar la Seguridad del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.6. Detección y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

A. Manual técnico 27

A.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

A.2.1. Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

ÍNDICE GENERAL 5

A.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

A.3.1. Detección de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

A.3.2. Transferencia de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

A.3.3. Dispersión y Reunión de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

B. Manual de usuario 37

B.1. Con�guración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B.1.1. Servidor de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B.1.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.2. Modo de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.2.1. Servidor de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.2.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

C. Diagramas 41

C.1. Diagramas Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

C.2. Diagramas de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

C.3. Diagramas de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

C.4. Diagrama de Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6 ÍNDICE GENERAL

Índice de �guras

3.1. Detección de servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

C.1. Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

C.2. Detalle del Respaldo de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

C.3. Detalle de la Recuperación de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

C.4. Clases del Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

C.5. Clases del Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

C.6. Secuencia Recuperación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

C.7. Secuencia Respaldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

C.8. Implementación del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7

8 ÍNDICE DE FIGURAS

Capítulo 1

Introducción

Índice1.1. Descripción del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3. ¾Cómo Leer Éste Reporte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

En la actualidad el almacenamiento de información en forma de archivos es muy común y se realiza en diversosmedios físicos, por ejemplo: Discos Duros, Discos Compactos, Memorias Flash USB, etc. Sin embargo corremos elriesgo de que información importante pueda corromperse de forma imprevista en cualquiera de estos dispositivos.Esto crea la necesidad de diseñar sistemas capaces de soportar dichos fallos (perdida de archivos).

1.1. Descripción del Sistema

En éste proyecto se busca implementar un mecanismo para almacenamiento distribuido de archivos de formasegura, sencilla y de bajo costo, que sea capaz de RESPALDAR un archivo en varias máquinas (en cinco, para serprecisos) usando un algoritmo de dispersion ya existente (Round Robin) y a su vez sea capaz de RECUPERARdicho archivo, desde cualquier sitio donde se haya almacenado.

1.2. Objetivos

El principal objetivo de éste proyecto es, tener un sistema de alamacenamiento distribuido de archivos que sea:

Fácil de usar

Fácil de instalar

Fácil de con�gurar

Independiente del sistema operativo

9

10 1.3. ¾Cómo Leer Éste Reporte?

1.3. ¾Cómo Leer Éste Reporte?

Al inicio del trimestre anterior tuvimos la necesidad de informarnos acerca de las distintas opciones a nuestro al-cance para implementar la solución al problema originalmente planteado. el detalle de lo obtenido en la investigaciónprevia, se encuentra en el capítulo 2.

Una vez terminada dicha �investigación�, realizamos varias actividades, referentes al desarrollo de la aplicación,en el capítulo 3 describimos las tareas que realizamos, y los problemas que se nos presentaron, así como la formaen que los solucionamos.

Dado el poco tiempo de desarrollo del que disponemos, hay mucho trabajo que quedó pendiente, un listadocompleto de las funcionalidades que es deseable que el sistema tenga en un futuro cercano, puede ser leida en elcapítulo 4.

Dada la complejidad de la aplicación, es necesaria una especie de guía que ayude a las personas que retomeneste trabajo, a utilizar las bases que hemos dejado. El manual técnico, en el capítulo A, es una buena introducciónpara entender mejor la documentación de la aplicación1.

Como una referencia para el usuario �nal, incluimos en el documento el manual de usuario (disponible en elcapítulo B) contiene una breve descripción de cómo utilizar e instalar el programa.

Finalmente, en el anexo (capítulo C) incluimos los diagramas de casos de uso, clases, secuencia e implementacióndel sistema.

1La Documentación del sistema de almacenamiento distribuido, se incluye junto con el código fuente, los archivos .jar y éste docu-

mento.

Capítulo 2

Investigación previa

Índice2.1. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.1. Modelo cliente-servidor usando sockets orientados a conexión . . . . . . . . . . . . . . . . 12

2.1.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1.3. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2. JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2. Ajuste de variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.4. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.5. Problemas que se presentaron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3. MPI Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4. JBoss-Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

La primera etapa en la realización de éste proyecto, fue una investigación sobre diversas herramientas que podríanayudarnos en las tareas de detección, y envío de archivos a través de una red, las herramientas examinadas fueron:

1. Sockets

2. JXTA

3. MPI Java

4. JBoss Remoting

Siendo seleccionada JBoss Remoting debido a las facilidades que éste API nos brinda.

11

12 2.1. Sockets

2.1. Sockets

Los sockets son canales de comunicación, se consideran el objeto básico en la comunicación a través de internet,su comunicación es continua y �naliza cuando una de las máquinas cierra su conexión.

Existen dos tipos de canales de comunicación o sockets: Los orientados a conexión y los no orientados a conexión.En los primeros se deben conectar con un socket los programas y hasta que la conexión se encuentre establecidacorrectamente, ninguno de los programas podrá transmitir datos. Aquí es donde actúa el protocolo TCP y nosgarantiza que todos los datos van a llegar de un programa a otro correctamente. Este canal de comunicación esutilizado cuando no se quiere perder ningún dato sin importar que un programa quede bloqueado esperando otransmitiendo datos.

En la comunicación no orientada a conexión, no es necesario que los programas estén conectados, cualquierapuede transmitir datos en cualquier momento, independientemente de que esté escuchando o no. Esta comunicaciónla maneja el protocolo UDP y nos garantiza que los datos llegarán correctamente, pero lo que no garantiza es quelleguen todos. Esta comunicación es utilizada cuando queremos que el programa no se quede bloqueado y no importaque los datos se pierdan.

2.1.1. Modelo cliente-servidor usando sockets orientados a conexión

El servidor trabaja de la siguiente manera.

1. Inicia el puerto de comunicación en espera de que algún cliente se conecte, creando un serverSocket.

2. Una vez que existe una conexión, crea un hilo de ejecución orientado a conexión para este usuario mientrasque el hilo principal regresa a veri�car el puerto de comunicación.

3. Se comunica con el cliente mediante el socket creado.

4. Espera a que el cliente cierre la comunicación o él mismo la cierra y elimina el hilo que creó.

Y el cliente.

1. Establece la conexión con el servidor creando un socket.

2. Manda mensajes al servidor o espera mensajes de éste.

3. Cierra la conexión con el servidor.

Con el uso de sockets UDP y TCP es necesario saber a qué computadora y por cuál puerto se van a comunicar.

2.1.2. Ventajas

Mejor rendimiento.

Flexibilidad en las aplicaciones a desarrollar.

Compatibilidad entre sistemas operativos.

2. Investigación previa 13

2.1.3. Desventajas

Es necesario seleccionar explícitamente el protocolo, dirección IP y puerto a utilizar.

Se requiere mucho tiempo de programación para tener una aplicación funcional.

Se descartaron los sockets como medio de comunicación en el proyecto debido al elevado tiempo de programaciónnecesario para la detección de servidores ya que se encontró un API que nos permite realizar detección de formamucho más sencilla, además de lo elaborado que resulta realizar una conexión y enviar archivos de una máquina aotra.

2.2. JXTA

JXTA (Juxtapose) es una plataforma peer-to-peer (P2P) open source creada por Sun Microsystems en el año2001. Esta plataforma está de�nida como un conjunto de protocolos basados en XML. Dichos protocolos permitenque dispositivos conectados a una red intercambien mensajes entre si. JXTA es el framework P2P más maduroque actualmente existe. Además, fue diseñado para permitir que un amplio rango de dispositivos (computadoras,teléfonos celulares y PDAs) se comuniquen de forma descentralizada.

2.2.1. Requerimientos

Ant 1.6 o superior (apache.org)

Java Standard Edition 5.0 Compatible VM (java.sun.com)

JXSE 2.5

BouncyCastle 1.37 (bouncycastle.org)

Servlet 2.3 (java.sun.com)

Jetty 4.2.25 (mortbay.com)

2.2.2. Ajuste de variables de entorno

Para JDK: JAVA_HOME = C:\Archivos de programa\Java\jdk1.5.0_16\bin

Para ANT: ANT_HOME = C:\JXTA\apache-ant-1.6.0

2.2.3. Fortalezas

Funciona bien en redes LAN

Existen aplicaciones desarrolladas, similares a la nuestra.

14 2.3. MPI Java

2.2.4. Debilidades

Su instalación es complicada y poco clara.

Es un API de muy alto nivel (bajo rendimiento).

2.2.5. Problemas que se presentaron

Instalación No se muestra de forma clara, la forma adecuada de instalar el API, se hace uso de programascomo SVN y ANT.

JXTA Shell Aún cuando los comandos necesarios para enviar mensajes y para actualizar las PC conectadas,funciona adecuadamente, no fue posible enviar archivos entre las máquinas.

Las pruebas en Windows Vista, fueron fallidas.

2.3. MPI Java

MPI Java es una interfaz Java orientada a objetos del estandar MPI1, la cual, fue desarrollada como parte delproyecto HPJava2, aunque en si mismo, MPI Java no es una extensión del lenguaje de programación Java.

2.3.1. Fortalezas

El hecho de que sea simplemente una interfaz y no una implementación completa en Java de MPI, ayuda aque el rendimiento de las aplicaciones sea un poco mejor.

2.3.2. Debilidades

MPI es una abstracción de muy bajo nivel para el paso de mensajes, y no ofrece ayuda alguna en el problemade la detección de servidores remotos.

Es un API de di�cil instalación.

Requiere de instalar una distribución en C de MPI (por ejemplo, lam, mpich, u open-mpi).

1�Message Passing Interface� Por sus siglas en inglés2HPJava es un ambiente de programación paralela SPMD: Single Program, Multiple Data, especialmente para pogramación sobre

arreglos distribuidos

2. Investigación previa 15

2.4. JBoss-Remoting

2.4.1. Fortalezas

Fácil desarrollo para la comunicación entre equipos, en gran medida por el alto nivel que proporciona el APIy por el lenguaje de programación utilizado.

Multiplataforma, al estar basado en tecnología Java, se puede portar a otros sistemas operativos haciendopocos o ningún cambio.

2.4.2. Debilidades

Al estar basado en Java, no hay buen rendimiento en equipos con hardware que ya tiene varios años en elmercado.

16 2.4. JBoss-Remoting

Capítulo 3

Actividades Realizadas

Índice3.1. Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2. Respaldo y Recuperación de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.1. Trans�riendo Archivos vía FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.2. Dispersión y Agrupación de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.3. Registro de los Archivos Respaldados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2.4. Di�cultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.3. Diseño de la Interfaz de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.4. Empaquetando la Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5. Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.1. AT - 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.5.2. AT - 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5.3. AT - 220 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5.4. Di�cultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

En una primera etapa se dividió el problema en dos partes: la detección de servidores en una red local y elrespaldo de un archivo.

3.1. Detección

Para la detección el problema se resolvió en dos versiones. En una primera la detección se realizó mediante el usode procedimientos para guardar las direcciones IP que se descomponían desde el detector principal, (concatenándosea un String) en donde estaba guardada la información del servidor encontrado, guardándolos en una estructura yconforme fueran detectándose los servidores fueran agregados, al igual que cuando un servidor se detenía, buscabasu IP y se eliminaba de la estructura actualizándose de forma continua mientras se ejecutaba la detección, en éstaversión los elementos guardados en la estructura sólo eran las direcciones IP. Ya que esta versión hacía lo debidopero de una forma muy burda se recurrió a la revisión y ajuste del código.

Para la segunda versión se revisó la forma de agregar los servidores y eliminarlos al ser encontrados por eldetector, esto se realizó con una estructura en java que nos permitió guardar y borrar sólo con la llamada al método

17

18 3.2. Respaldo y Recuperación de Archivos

Figura 3.1: Detección de servidores

correspondiente, se guardaron referencias completas del servidor localizado, teniendo información como protocolo,host y puerto, entre los mas importantes al invocar los métodos de la clase que nos guarda la referencia del servidor.Con esta versión la detección se realizó de una manera más sencilla y se pudo obtener mayor información a cercade los servidores encontrados.

Para detectar los servidores, el cliente manda paquetes hacia todos los posibles destinatarios en la red local(broadcast), los cuales son recibidos por los servidores que estén activos (escuchando por el puerto) indicado, y asu vez, noti�can al cliente que se encuentran activos, enviándole su dirección. dicho procedimiento se ilustra en la�gura 3.1

La detección fue implementada en base a los ejemplos proporcionados por el API de JBossRemoting ajustán-dolo a un tiempo de detección determinado.

3.2. Respaldo y Recuperación de Archivos

Una de las tareas fundamentales que requiere el sistema para ser funcional, es la de respaldar un archivo en unoo múltiples servidores.

Una vez detectados los servidores, se recuperan sus direcciones en una lista, y por cada dirección se hace unaconexión entre la máquina cliente, y el servidor dado por la dirección recuperada. En un principio, la idea paraimplementar el envío de un archivo desde el cliente hacia el servidor, era utilizar únicamente las clases proporcionadaspor el API de JBossRemoting.

3.2.1. Trans�riendo Archivos vía FTP

Debido a los problemas que se presentaron en la implementación del envio de archivos con JBossRemoting,optamos por cambiar de tecnología para realizar la transmisión de archivos, de esta forma se buscaron API's para

3. Actividades Realizadas 19

java que nos permitieran trabajar con servidores nativos FTP, el API elegido fue �CleanFTP�, este API cuenta convarios métodos que nos permiten interactuar con servidores FTP.

En el caso del servidor FTP, se tienen 2 opciones dependiendo del sistema operativo instalado en cada máquina,para el caso de GNU/Linux usamos �vsFTPd� este servidor trabaja en segundo plano y tiene un archivo de con-�guración fácil de modi�car. En el caso de Windows se empleo �FileZilla Server FTP� que cuenta con una interfazgrá�ca para su con�guración.

La ventaja de utilizar FTP para enviar archivos de un host a otro es que el mismo protocolo nos garantiza (almenos con los servidores y el cliente FTP elegidos) que los datos llegan correctamente a su destino, además de queresolvemos al mismo tiempo el problema de respaldar y recuperar archivos.

3.2.2. Dispersión y Agrupación de Archivos

En ésta etapa del proyecto, no se tuvo acceso al algoritmo de dispersión de información, el cual se utilizará paradisgregar y codi�car los archivos para su posterior transmisión. en vez de lo cual, de�nimos una interfaz que �simula�dichas operaciones; por lo que implementamos una clase que �simula� los procesos de dispersión y recuperaciónde archivos.

Aunque dicha clase en realidad no aplica el algoritmo que dispersión, implementa una interfaz que puede serreutilizada posteriormente por una clase que si implemente dicho algoritmo.

3.2.3. Registro de los Archivos Respaldados

Una vez transmitidos exitosamente los �fragmentos� del archivo, el cliente va a guardar en un archivo de texto,qué fragmento guardó en qué máquina, esto con la �nalidad de que cuando se requiera recuperar dicho archivo, sesepa de antemano en qué equipos se guadaron cada uno de las partes de la información original.

3.2.4. Di�cultades Enfrentadas

Las primeras pruebas de transferencia de archivos fueron realizadas con cuatro computadoras del laboratorioAT 105, durante las cuales, logramos transmitir un pequeño archivo de una máquina a otra, el problema se presentócuando intentamos utilizar esa implementación de la transferecia de archivos en otros equipos, cuando hicimospruebas, en otras computadoras, el respaldo de archivos, simplemente no funcionó, arrojando la siguiente excepción:

Listing 3.1: Enlace del Servidor FTP�" java . lang . r e f l e c t . Invocat ionTargetExcept ion "� �

Investigamos al respecto, pero no encontramos una solución satisfactoria al problema, además, la transferenciade archivos via JBoss Remoting tenia el inconveniente de que no se pueden transmitir archivos mayores que 2Gb.

20 3.3. Diseño de la Interfaz de Usuario

3.3. Diseño de la Interfaz de Usuario

En éste punto, el sistema (propiamente el cliente) tiene una interfaz basada en línea de comandos, mediante lacual se le especi�ca al programa el archivo sobre el cual se desea ejecutar la operación( respaldar, o recuperar) ysegún sea el caso, también se le indica qué acción se realizará con dicho archivo.

Listing 3.2: Respaldando �archivo��$ java −j a r c l i e n t e . j a r −e arch ivo� �

Listing 3.3: Recuperando �archivo��$ java −j a r c l i e n t e . j a r −r a rch ivo� �

3.4. Empaquetando la Aplicación

Aqui va lo que está haciendo Saúl 28 de mayo de 2009

3.5. Pruebas Finales

Con todas las actividades anteriores terminadas, nos dispusimos a hacer pruebas de los paquetes generados enotros laboratorios, al momento de escribir estas líneas, en los LDDCBI1 bajo las siguientes condiciones:

3.5.1. AT - 105

Utilizamos computadoras con los siguientes Sistemas Operativos:

Ubuntu Linux, tanto en sus versiones 8.04 como 8.10

Slackware GNU/Linux 12.0

Microsoft Windows XP

Microsoft Windows Vista, .

Microsoft Windows 7 beta

Como servidor FTP utilizamos1Laboratorios Divisionales de Docencia de Ciencias Básicas e Ingeniería

3. Actividades Realizadas 21

vsftpd - en las máquinas con Linux.

FileZillaFTP Server - en las máquinas con Windows.

3.5.2. AT - 106

En el laboratorio utilizamos únicamente computadoras con Sistema Operativo Microsoft Windows Vista HomeEdition, cabe destacar que al momento de escribir estas líneas , sólo se hicieron pruebas de la detección de servidores.

3.5.3. AT - 220

El éste laboratorio utilizamos máquinas que tienen como Sistema Operativo: Ubuntu Linux 8.04, y como servidorFTP, vsftpd.

3.5.4. Di�cultades Encontradas

Las pruebas �nales fueron exitosas, el único detalle encontrado es que el sistema, por su �naturaleza� sólo detectalos servidores que tienen el servidor de detección activo, aunque no tengan levantado el servicio de FTP, o no lotengan con�gurado correctamente, en tal caso, la transferencia de los archivos que prentendan enviarse a dichosservidores fracasará. para no tener estos problemas, es altamente recomendable revisar el correcto funcionamientoy con�guración del servidor FTP antes de activar el servidor de detección.

22 3.5. Pruebas Finales

Capítulo 4

Trabajo Futuro

Índice4.1. Transferencia Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2. Servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3. Interfaz Grá�ca de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.4. Acceder a Servidores en Otras Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.5. Mejorar la Seguridad del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.6. Detección y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

De entre las actividades que quedan pendientes para las siguientes etapas del desarrollo del proyecto, se incluyenlas siguientes:

4.1. Transferencia Paralela

Actualmente, la transferencia de archivos se hace de la siguiente manera:

Respaldo: Una vez detectados los servidores, fragmentado el archivo, y decidido, en que servidor va quearchivo, se ponen estas parejas ( servidor, archivo ) en una cola, y se transmiten por FTP una por una alservidor correspondiente.

Recuperacion: Una vez detectados los servidores, y ubicados los fragmentos que nos interesa recuperar,tambien se forman parejas ( servidor, archivo ) y se encolan, para que por medio de FTP se recuperendichos archivos uno por uno.

Un objetivo a futuro, es implementar esta transferencia de archivos, utilizando hilos, los cuales serán lanzadosde manera concurrente, con la �nalidad de ahorrar tiempo en la transmisión, tanto de ida como de vuelta, respectode la solución que está implementada actualmente.

23

24 4.2. Servicio

4.2. Servicio

Actualmente el servidor de detección funciona como cualquier aplicación de usuario, es decir, cuando el usuariolanza el proceso del servidor, mediante el comando:

Listing 4.1: Iniciando el Servidor�$ java −j a r s e r v i d o r . j a r� �Opcionalmente se puede especi�car un puerto desde la línea de comandos:

Listing 4.2: Especi�cando el puerto�$ java −j a r s e r v i d o r . j a r −p 5555� �En éste ejemplo elegimos el puerto 5555.

La idea es que en próximas versiones de la aplicación, el servidor sea como un servicio más (como el FTP, porejemplo).

Listing 4.3: Iniciando el Servidor de Detección�$ / e tc / i n i t . d/ se rv idor−de t e c c i on . sh s t a r t� �4.3. Interfaz Grá�ca de Usuario

En la etapa actual del proyecto, el sistema cuenta con una interfaz de usuario basada en línea de comandos,mediante la cual, de manera no interactiva, se le indica al sistema, la acción que se desea realizar (en éste casorespaldar o recuperar un archivo) y sobre que archivo se requiere aplicar dicha acción.

Con el objetivo de mejorar la usabilidad del sistema, así como para facilitar la con�guración del mismo, serequiere desarrollar una interfáz grá�ca de usuario para la aplicación, la cual, dado el estado actual del programa,puede ser desarrollada independientemente de éste.

4.4. Acceder a Servidores en Otras Redes

Una de las premisas en que nos basamos para el diseño de éste sistema, fué que los servidores de almacenamiento,se encuentran todos en la misma red LAN, la próxima meta es que el sistema sea capáz de enviar respaldos aservidores que se encuentren fuera de la red local.

4. Trabajo Futuro 25

4.5. Mejorar la Seguridad del Sistema

Cuando sean accesibles los servidores de otras redes, se generarán nuevas necesidades de seguridad, por ponerun ejemplo, cuando se transmitan por FTP el usuario y la contraseña de la sesión, así como los archivos, dichosdatos serán completamente visibles desde Internet.

4.6. Detección y FTP

Que el servidor de detección incluya como requisito para poder ejecutarse, que el servidor FTP esté funcionando,correctamente con�gurado, y que la cuenta de usuario utilizada por los clientes, exista.

26 4.6. Detección y FTP

Apéndice A

Manual técnico

ÍndiceA.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

A.2.1. Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

A.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

A.3.1. Detección de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

A.3.2. Transferencia de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

A.3.3. Dispersión y Reunión de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.1. Requerimientos del Sistema

Para el correcto funcionamiento de ésta aplicación, es necesario contar con la siguiente infraestructura:

Una red de área local (LAN): con al menos cinco computadoras, sobre las cuales se instalará el sistema.

Un servidor FTP instalado en cada uno de los nodos que van a desempeñar el rol de Servidor

La Máquina Virtual de Java de Sun Microsystems. para poder ejecutar las aplicaciones (tanto el cliente,como el servidor de detección)

Una cuenta de usuario común en tódas las máquinas servidor, la cual se utilizará para establecer lasconexiones a los servidores FTP cada vez que se requiera respaldar o recuperar archivos.

A.2. Servidor

Para que un host pueda desempeñar la función de servidor de almacenamiento, necesita básicamente de doscomponentes: el servidor de detección, y un servidor FTP, el cual es independiente del sistema.

27

28 A.2. Servidor

A.2.1. Detección

El código fuente que corresponde al Servidor de Detección se encuentra en el paquete llamado servidor, enel se de�nen tres clases:

servidor.deteccion.DetectorServidor

servidor.deteccion.ServidorMulticast

servidor.deteccion.DetectorInvocationHandler

La detección de servidores se hace, en parte mediante las clases proporcionadas por JBoss Remoting, una veziniciado el servidor, lo único que hace es escuchar por el puerto que se le indique, ya sea desde su archivo decon�guración, o desde la línea de comandos, cuando recibe una petición desde algún cliente, procesa el mensaje ydevuelve un mensaje que contiene Una instancia de la clase Noti�cation1, la cual es procesada por el cliente paraobtener la información que necesita del servidor.

La clase encargada de iniciar el servidor de detección es servidor.conf.Principal, dicha clase crea una instan-cia de servidor.deteccion.DetectorServidor, la cual se dedica a escuchar por el puerto indicado, a continuaciónse muestra la parte de código responsable de la detección, por parte del servidor.

Listing A.1: Iniciando el Servidor de detección�43 /* in formac ion de l s e r v i d o r */44 St r ing pro toco l o = " socke t " ;45 St r ing host = datos . getProperty ( " host " ) ;46 St r ing puerto = datos . getProperty ( " puerto_detecc ion " ) ;47 i n t t t l S e r v i d o r = In t eg e r . pa r s e In t ( datos . getProperty ( " t iempo_servidor " ) ) ;48

49 /* URI que i d e n t i f i c a a l s e r v i d o r para que pueda s e r detectado */50 St r ing u r i = pro toco l o + " :// " + host + " : " + puerto ;51

52 /* crea e l d e t e c t o r */53 Detec to rServ idor s e r v i d o r = new Detec to rServ idor ( ) ;54

55 t ry56 {57 /* i n i c i a e l d e t e c t o r de mensajes */58 s e r v i d o r . i n i c i aDe t e c t o r ( ) ;59

60 /* i n i c i a e l s e r v i d o r de p e t i c i o n e s */61 s e r v i d o r . i n i c i a S e r v i d o r ( u r i ) ;62 }63 catch ( Exception e )64 {65 System . e r r . p r i n t l n ( "ERROR: Al i n t en t a r i n i c i a r e l s e r v i d o r remoto

JBossRemoting . " ) ;

1Para más información, consultar la documentación de JBoss Remoting

A. Manual técnico 29

66 e . pr intStackTrace ( ) ;67 }� �

De acuerdo con la con�guración el servidor de detección espera un tiempo antes de terminar o continuar es-cuchando por el puerto (previamente especi�cado)

Listing A.2: Deteniendo el Servidor de detección�69 /* cuando e l va l o r de t t l_ s e r v i d o r en e l a rch ivo de con f i gu r a c i on es 0 , e l70 * s e r v i d o r func iona por tiempo i nd e f i n i d o71 */72 i f ( t t l S e r v i d o r != 0)73 {74 /* espera un lapso de tiempo antes de detener e l s e r v i d o r */75 System . out . p r i n t l n ( "El s e r v i d o r e s t a r a ac t i vo por " + t t l S e r v i d o r +76 " segundos o puede d e t e r n e r l o usando Ctr l+C\n" ) ;77 Thread . s l e e p ( t t l S e r v i d o r *1000) ;78 t ry {79 s e r v i d o r . detenDetector ( ) ;80 }81 catch ( Exception e )82 {83 e . pr intStackTrace ( ) ;84 }85 s e r v i d o r . de tenServ idor ( ) ;86 }87 e l s e88 {89 System . out . p r i n t l n ( " I n i c i a do s e rv ido remoto JBoss/Remoting . . . para det " +90 " e r n e r l o use Ctr l+C" ) ;91

92 /* e l s e r v i d o r func iona inde f in idamente */93 whi le ( t rue )94 Thread . s l e e p (1000000) ;95 }96 System . e x i t (0 ) ;97 }� �

A.2.2. FTP

En un principio, la idea fue transferir archivos de un host a otro utilizando el API de JBoss Remoting, el problemacon dicho método es que tiene limitantes sobre el tamaño máximo de archivo que puede transmitir, además de queno garantiza que los datos llegarán correctamente a su destino, lo que nos hubiera obligado implementar algoritmos

30 A.2. Servidor

de detección y corrección de errores. Por éstas razones la elección tomada para transferir archivos de una máquinaa otra, fue utilizar FTP.

GNU/Linux

Instalación: Por simplicidad se uso el servidor vsftpd, que se encuentra en los repositorios de ubuntu. El cualinstalamos con la siguiente instrucción:

Listing A.3: Instalando el servidor FTP�$ sudo apt−get i n s t a l l v s f tpd� �Con�guración: En el archivo �/etc/vsftpd.conf�, se hacen los siguentes cambios:

Listing A.4: Valores modi�cados�l i s t e n=YESanonymous_enable=NOloca l_enab le=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxfe r log_enab le=YESconnect_from_port_20=YESftpd_banner=Bienvenido a l s e r v i d o r de I saac :Dchroot_l i s t_enab le=YESch r o o t_ l i s t_ f i l e=/etc / vs f tpd . ch r oo t_ l i s t� �Estos sin cambio alguno:

Listing A.5: Valores por defecto�secure_chroot_dir=/var /run/ vs f tpdpam_service_name=vs f tpdr s a_ce r t_ f i l e=/etc / s s l / c e r t s / s s l−cer t−s n ak eo i l . pemrsa_pr ivate_key_f i l e=/etc / s s l / p r i va t e / s s l−cer t−s n ak eo i l . key� �El archivo �/etc/vsftpd.chroot_list�, incluye la lista de usuarios con acceso al servidor.

A. Manual técnico 31

Ejemplo:

Listing A.6: Lista de Usuarios del servidor FTP�psd # Nombre de usuar io u t i l i z a d o para t r a n s f e r i r a r ch ivo s en e l s i s tema

boss # Otros u sua r i o s de l s e r v i d o r FTPhardyi s a a c� �

Windows

Servidor FTP FileZilla, se encuentra en su pagina web http://filezilla-project.org/.

Instalación: Para su instalación debemos bajar el archivo ejecutable de instalación, que se encuentra en ladirección:

Listing A.7: Enlace del Servidor FTP�https : //www. ohloh . net / p r o j e c t s / f i l e z i l l a /download? f i l ename=Fi l eZ i l l a_Se rve r −0

_9_30 . exe� �Una vez que tenemos el archivo (FileZilla_Server-0_9_30.exe) hacemos doble click y hacemos una instalación

estándar. Compatible con Windows 2000, XP y Vista.

Con�guración: En la interface de usuario, se con�gura el usuario, abrimos Edit =>Users. En el área de�Account Settings� marcamos las opciones:

�Enable account�

�Password� (lo escribimos)

En el área de �Users� añadimos el usuario (pds). A continuación, de�nimos la carpeta para el FTP. Esto lo

hacemos en las opciones de �Shared Folders� y marcamos las opciones de:

Read

Write

Delete

32 A.3. Cliente

Append

Para los archivos (Files) y para los directorios marcamos las opciones de:

Create

Delete

List

+subdirs

A.3. Cliente

El cliente es la parte del sistema desde la cual, el usuario puede respaldar y recuperar los archivos que desee,básicamente mediante dos tareas principales

A.3.1. Detección de Servidores

El proceso de detección se realiza en el cliente cada vez que se ejecuta la aplicación, el método utilizado tantopara respaldar como para recuperar archivos es el

Método cliente.motor.Aplicacion.getServidoresActivos();

Cuando se llama a éste método, la Aplicación crea una instancia de la clase DetectorCliente, la cual se encargaráde emitir mensajes por inundación ( broadcast ) los cuales serán contestados por los servidores que se encuentrendisponibles.

Listing A.8: Iniciando el método de detección�84 pub l i c ArrayList<InvokerLocator> ge tSe rv ido r e sAc t i vo s ( ) {85 System . out . p r i n t l n ( " In i c i ando c l i e n t e JBoss/Remoting . . . " ) ;86 Detec to rC l i en t e dc = new Detec to rC l i en t e ( ) ;87

88 /* I n i c i a e l d e t e c t o r */89 i n t tC l i en t eDet e c c i on = In t eg e r . pa r s e In t ( opc iones . getProperty (90 " t_c l i ente_detecc ion " ) ) ;91 t ry {92 dc . i n i c i aDe t e c t o r ( ) ;93 Thread . s l e e p ( tC l i en t eDet e c c i on *1000) ;94 } catch ( Throwable e ) {95 e . pr intStackTrace ( ) ;96 }� �

A. Manual técnico 33

Pasado algún tiempo detiene el período de detección de servidores para poder continuar con la ejecución delprograma.

Listing A.9: Deteniendo la detección�96

97 /* Detiene e l d e t e c t o r */98 t ry {99 dc . detenDetector ( ) ;

100 } catch ( Exception e ) {101 e . pr intStackTrace ( ) ;102 }103

104 System . out . p r i n t l n ( "Deteniendo c l i e n t e JBoss/Remoting" ) ;� �El valor devuelto al �nal es un ArrayList que contiene la información de los servidores detectados si es que ha

detectado alguno, en caso contrario, el sistema emite un mensaje de error y termina la aplicación.

Listing A.10: Devolviendo los servidores detectados�105 ArrayList<InvokerLocator> s e r v i do r e sAc t i v o s = dc . s e r v i do r e sAc t i v o s ( ) ;106

107 i f ( s e r v i do r e sAc t i v o s == nu l l | | s e r v i do r e sAc t i v o s . s i z e ( ) == 0 )108 {109 System . e r r . p r i n t l n ( "Error : No hay s e r v i d o r e s a c t i v o s " ) ;110 System . e r r . p r i n t l n ( "Abortando . . . " ) ;111 System . e x i t (1 ) ;112 }113 re turn s e r v i do r e sAc t i v o s ;114 }� �

A.3.2. Transferencia de Archivos

La idea de la transferencia de archivos, es pasarle la responsabilidad de dicha tarea a una sesión FTP comúny corriente. Una vez terminada la detección de servidores (Cada uno de los cuales debe brindar el servicio FTP),el cliente intenta conectarse a los servidores seleccionados uno por uno, con la cuenta que tiene especi�cada en suarchivo de con�guración, la clase encargada de ésta tarea es cliente.ftp.ControlFTP, cuyos métodos principalesson: ControlFTP.respaldoMasivo() y ControlFTP.recuperacionMasiva(), los cuales, se encargan de mandarvarios archivos, a varias máquinas ( con una correspondencia de 1 a 1 ).

Tanto para el envío como para la recepción de archivos, se inician varias sesiones FTP, (una por archivo en elservidor que le corresponde). y se carga o descarga el archivo según sea el caso.

34 A.3. Cliente

A modo de ejemplo se muestra una parte del código del método ControlFTP.recuperacionMasiva(), el cuales muy similar a su contraparte de recuperación2.

Listing A.11: Recuperación de archivos�194 f o r ( i n t i = 0 ; i < hos t s . s i z e ( ) ; i++ ) {195

196 t ry {197

198 f t p . openConnection ( hos t s . get ( i ) , puerto ) ;199 i f ( f t p . i n i S e s i o n ( a l i a s , c l ave ) ) { // Ver i f i c ando que se pueda

i n i c i a r s e s i o n200

201 i f ( f t p . setTransferTypeToBinary ( ) )202 i f ( f t p . download ( archs . get ( i ) , cacheLocal + separador + archs .

get ( i ) ) ) {203 System . out . p r i n t l n ( archs . get ( i ) + " : Recuperado

exitosamente de l host " + host s . get ( i ) ) ;204 r eg i s t r aRecuparac i on ( hos t s . get ( i ) , getNombreArchivo ( archs .

get ( i ) ) , t rue ) ;205 } e l s e {206 System . e r r . p r i n t l n ( archs . get ( i ) + " : Recuperacion f a l l i d a .

" ) ;207 r eg i s t r aRecuparac i on ( hos t s . get ( i ) , getNombreArchivo ( archs .

get ( i ) ) , f a l s e ) ;208 }� �

A.3.3. Dispersión y Reunión de Archivos

Al momento de escribir éste reporte, no tenemos una implementación del algoritmo de dispersión de archivos, elcual es necesario para el funcionamiento completo del sistema. Con la �nalidad de facilitar la posterior integración dedicha funcionalidad, de�nimos una clase que se encarga de �simular� el proceso de dispersión y reunión de archivos.

Lo único que hacen las instancias de ésta clase es, en el caso de:

Dispersar un archivo: Genera cinco copias del archivo original, cada una llamada de la siguiente forma: siel archivo se llama archivo.loquesea, cada una de las copias será llamada archivo-i.loquesea, donde i esun dígito entre 1 y 5 (los digitos no se repiten).

Reunir un archivo: Una vez terminada exitósamente la recuperación de los archivos y se tienen almacenadosen una carpeta temporal (la que se especi�que en el archivo de con�guración del cliente), la �reunión� de los�fragmentos� consiste en eliminar todos los archivos descargados menos uno, y el archivo que se conserveserá renombrado, para que se llame igual que el archivos original, es decir, si el archivo recuperado se llamaarchivo-x.loquesea, será renombrado a archivo.loquesea

2Para más información al respecto consultar la documentación adjunta con el código fuente del proyecto

A. Manual técnico 35

La clase que, en ésta versión del sistema, se encarga de las tareas arriba mencionadas, es cliente.motor.Rebanador, la cual implementa la interfaz cliente.motor.Dispersa, dicha interfaz declara los métodos dispersa-Archivo y regeneraArchivo3.

Para integrar la dispersión de archivos al proyecto, sólo se necesita escribir una clase que implemente estainterfaz, y que una instancia de ella reemplace a cada instancia de la clase cliente.motor.Rebanador.

3Para más información al respecto consultar la documentación adjunta con el código fuente del proyecto

36 A.3. Cliente

Apéndice B

Manual de usuario

ÍndiceB.1. Con�guración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B.1.1. Servidor de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

B.1.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.2. Modo de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.2.1. Servidor de detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.2.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

B.1. Con�guración

B.1.1. Servidor de detección

Para inciar el servidor de detección, primero debemos de con�gurar el archivo servidor.conf para ajustar ladirección IP que tiene la máquina, el puerto de detección, así como el tiempo que el servidor de detección estaráen uso, este se especi�ca en segundos, si se selecciona el 0 es por tiempo inde�nido y hasta que se elige detener elservidor este se encuentra activo, para detenerlo ejecutamos ctrl + c.

Listing B.1: Archivo de con�guración del servidor de detección�########################################################### Archivo de con f i gu r a c i on de l s ev ido r ###########################################################

# d i r e c c i o n IP l o c a lhost =192 .168 .1 .25

# puerto usado para l a de t e c c i on de l o s equipospuerto_detecc ion=5400

37

38 B.1. Con�guración

# tiempo en segundos que se mantiene ac t i vo e l s e r v i d o r JBossRemoting ,# s i e l va l o r es 0 e l s e r v i d o r e s t a r a ac t i vo por tiempo i nd e f i n i d ot iempo_servidor=0� �

B.1.2. Cliente

Para poder utilizar las funciones del cliente es necesario con�gurar un archivo en el cual se especi�caran los pathque nos permitan guardar los archivos respaldados, estos archivos deben de existir para que la con�guración seareconocida.

Listing B.2: Archivo de con�guración del cliente�########################################################### Archivo de con f i gu r a c i on de l c l i e n t e ###########################################################

# usuar io y contrasena para acceder a l o s s e r v i d o r e s FTP remotosa l i a s=psdpassword=arch ivo s

# d i r e c c i o n IP l o c a lhost =192 .168 .1 .25

# Puerto para l a t r a n s f e r e n c i a de a r ch ivo s por FTPpuerto_ftp=21

# tiempo en segundos empleado para de t e c t a r s e r v i d o r e s d i s p on i b l e s de l a redt_c l i ente_detecc ion=5

# Di r e c t o r i o para almacenar l o s a r ch ivo s r e c i e n recuperadoscached i r=/home/ f tp /tmp

# Di r e c t o r i o para co l o c a r l o s a r ch ivo s f i n a l e sf i n a l d i r=/home/ f tp

#El arch ivo donde se r e g i s t r a n que a r ch ivo s estan respa ldados , y en que s e r v i d o r e sestan d i s p e r s o s

l o g r e s pa l d o s=/home/ f tp / l o g r e s pa l d o s� �

B. Manual de usuario 39

B.2. Modo de Uso

B.2.1. Servidor de detección

Una vez que está con�gurado el archivo iniciamos el servidor con el siguiente comando.

Listing B.3: Iniciando servidor de detección�$ java −j a r s e r v i d o r . j a r� �

El servidor mostrará los siguientes mensajes al estar activo el tiempo que se haya con�gurado.

Listing B.4: Servidor de detección�Created MBeanServer with ID : −yo5bw3 : f t 0 i t x q f . 0 : lap : 1In i c i ando s e r v i d o r remoto i d e n t i f i c a d o con e l URI socke t : / / 1 92 . 1 6 8 . 1 . 2 5 : 5 4 0 0El s e r v i d o r se encuentra l i s t o para aceptar mensajes de l o s c l i e n t e s .I n i c i a do s e rv ido remoto JBoss/Remoting . . . para d e t e r n e r l o use Ctr l+C� �

B.2.2. Cliente

Una vez con�gurado el archivo al ejecutar el siguiente comando, se obtendrá una sinopsis de cómo usarlo

Listing B.5: Ejecutando el cliente.jar�i n t r ep i d@ in t r ep id :~/ proyecto−pruebas / c l i e n t e $ java −j a r c l i e n t e . j a rArgumentos no va l i d o s

NOMBREc l i e n t e . j a r − Almacenamiento d i s t r i b u i d o de a r ch ivo s .

SINOPSIS :[VAL . . . ] [−e <archivo >] [−h ] [− l ] [− r <nombre>]

OPCIONES:−e <archivo> : Respaldar un archivo , <archivo> es e l ' path ' completo de l a rch ivo

que sequ i e r e r e spa lda r .

−h : Muestra e s t e mensaje .− l : L i s t a l o s a r ch ivo s re spa ldados y l a f echa en que se almacenaron .

40 B.2. Modo de Uso

−r <nombre> : Recuperar un archivo , <nombre> es e l nombre de l a rch ivo .

Ejemplo de uso : java −j a r c l i e n t e . j a r −e / e tc / f s t ab� �

Respaldo

Para realizar un respaldo desde la aplicación es necesario pasar como argumento la bandera -e y el nombre delarchivo que deseamos respaldar, ejecutandolo de la siguiente manera.

Listing B.6: Iniciando respaldo del cliente�java −j a r c l i e n t e . j a r −e Miarchivo . png� �Ejecutado este comando la aplicación realiza el respaldo en los servidores encontrados siempre que sean 5, en

caso de detectar más de 5 servidores el programa tomará los 5 primeros.

Recuperación

Para realizar una recuperación desde la aplicación es necesario pasar como argumento la bandera -r y el nombredel archivo que deseamos recuperar, ejecutandolo de la siguiente manera.

Listing B.7: Iniciando recuperación del cliente�java −j a r c l i e n t e . j a r −r Miarchivo . png� �Sólo si el archivo ha sido respaldado anteriormente y además se encuentran activos almenos 3 servidores que

tienen el archivo este es recuperado con éxito.

Ayuda

Para que nos muestre la ayuda debemos de ejecutar al cliente con la bandera -h, este nos mostrará la forma enque deben ser pasadas las banderas dependiendo de la acción que se desee realizar.

Listing B.8: Ayuda del cliente�java −j a r c l i e n t e . j a r −h� �

Apéndice C

Diagramas

ÍndiceC.1. Diagramas Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

C.2. Diagramas de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

C.3. Diagramas de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

C.4. Diagrama de Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

C.1. Diagramas Casos de Uso

En los diagramas de casos de uso, se busca ilustrar, cuales son las tareas principales que debe realizar la aplicación,tales cómo respaldar y recuperar archivos, en la �gura C.1 por ejemplo se muestra una vista global de los casos deuso del sistema, mientras que en las �guras C.3 y C.2 se muestran los detalles de los casos de uso Recuperacióny Respaldo de archivos respectivamente

41

42 C.1. Diagramas Casos de Uso

Figura C.1: Diagrama de Casos de Uso

C. Diagramas 43

Figura C.2: Detalle del Respaldo de Archivos

44 C.1. Diagramas Casos de Uso

Figura C.3: Detalle de la Recuperación de Archivos

C. Diagramas 45

C.2. Diagramas de Clases

Con el �n de ayudar a comprender como es que funciona el sistema, se presentan dos diagramas de clases,correspondientes al cliente en la �gura C.4 y al servidor en la �gura C.5

46 C.2. Diagramas de Clases

Figura C.4: Clases del Cliente

C. Diagramas 47

Figura C.5: Clases del Servidor

48 C.3. Diagramas de Secuencia

C.3. Diagramas de Secuencia

El �ujo del programa se ve mas claramente si se consultan los diagramas de secuencia de las dos tareas principalesen los diagramas de secuencia de recuperación de archivos en la �gura C.6 y la de respaldo de archivos en la �gura ??.

C. Diagramas 49

Figura C.6: Secuencia Recuperación

50 C.3. Diagramas de Secuencia

Figura C.7: Secuencia Respaldo

C. Diagramas 51

Figura C.8: Implementación del Sistema

C.4. Diagrama de Implementación

Por último, en el diagrama de implementación, mostrado en la �gura C.8 se ilustran los componentes necesariospara el correcto funcionamiento de la aplicación.

52 C.4. Diagrama de Implementación

Bibliografía

[1] Documentación del API de Java:http://java.sun.com/j2se/1.5.0/docs/api/

[2] Sitio O�cial de JBoss Remoting:http://www.jboss.org/overview.html

[3] Documentación del paquete CleanFTPIncluida en este documento

[4] Sitio O�cial de JXTA:https://jxta.dev.java.net

[5] Sitio O�cial de MPI Java:http://aspen.ucs.indiana.edu/pss/HPJava/mpiJava.html

[6] Computer NetworkingA Top-Down Approach Featuring the Internet

J.F Kurose & K.W. Ross

Pearson Education Inc, 2003, 2nd edition

53