Вы находитесь на странице: 1из 53

REA DE REDES Y TELECOMUNICACIONES

Departamento de Ingeniera Elctrica. UAM Iztapalapa Sistema de Almacenamiento Distribuido

Desarrollado por:

Diego Rodrigo Guzmn Santamara Julio Martnez Tovar Sal Martnez Vidals Jos Isaac Torres Rivera
Bajo la direccin de:

Ricardo Marceln Jimnez Jorge Luis Ramrez Ortiz

ndice general
1. Introduccin
1.1. 1.2. 1.3. Descripcin del Sistema Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9
9 9 10

Cmo Leer ste Reporte?

2. Investigacin previa
2.1. Sockets 2.1.1. 2.1.2. 2.1.3. 2.2. JXTA 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo cliente-servidor usando sockets orientados a conexin

11
12 12 12 13 13 13 13 13 14 14 14 14 14 15 15

Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajuste de variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problemas que se presentaron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MPI Java 2.3.1. 2.3.2.

Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4.

JBoss-Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

NDICE GENERAL

2.4.2.

Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

3. Actividades Realizadas
3.1. 3.2. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Respaldo y Recuperacin de Archivos 3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.3. 3.4. 3.5.

17
17 18 18 19 19 19 20 20 20 20 21 21 21

Transriendo Archivos va FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispersin y Agrupacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registro de los Archivos Respaldados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Dicultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Diseo de la Interfaz de Usuario Empaquetando la Aplicacin

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1. 3.5.2. 3.5.3. 3.5.4. AT - 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AT - 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AT - 220 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dicultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Trabajo Futuro
4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Transferencia Paralela Servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23
23 24 24 24 25 25

Interfaz Grca de Usuario

Acceder a Servidores en Otras Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mejorar la Seguridad del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deteccin y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A. Manual tcnico
A.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
27 27 28 29

NDICE GENERAL

A.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.1. Deteccin de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32 32 33 34

A.3.2. Transferencia de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.3. Dispersin y Reunin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B. Manual de usuario
B.1. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37
37 37 38 39 39 39

B.1.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Modo de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B.2.1. Servidor de deteccin

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

C. Diagramas
C.1. Diagramas Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2. Diagramas de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3. Diagramas de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41
41 45 48 51

C.4. Diagrama de Implementacin

NDICE GENERAL

ndice de guras
3.1. Deteccin de servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

C.1. Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2. Detalle del Respaldo de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3. Detalle de la Recuperacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42 43 44 46 47 49 50 51

C.4. Clases del Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.5. Clases del Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.6. Secuencia Recuperacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C.7. Secuencia Respaldo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.8. Implementacin del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

NDICE DE FIGURAS

Captulo 1

Introduccin
ndice
1.1. Descripcin del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Cmo Leer ste Reporte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10

En la actualidad el almacenamiento de informacin en forma de archivos es muy comn y se realiza en diversos medios fsicos, por ejemplo: Discos Duros, Discos Compactos, Memorias Flash USB, etc. Sin embargo corremos el riesgo de que informacin importante pueda corromperse de forma imprevista en cualquiera de estos dispositivos. Esto crea la necesidad de disear sistemas capaces de soportar dichos fallos (perdida de archivos).

1.1. Descripcin del Sistema


En ste proyecto se busca implementar un mecanismo para almacenamiento distribuido de archivos de forma segura, sencilla y de bajo costo, que sea capaz de precisos) usando un algoritmo de dispersion ya existente (Round Robin) y a su vez sea capaz de dicho archivo, desde cualquier sitio donde se haya almacenado.

RESPALDAR un archivo en varias mquinas (en cinco, para ser RECUPERAR

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

Fcil de usar Fcil de instalar Fcil de congurar Independiente del sistema operativo

10

1.3. Cmo Leer ste Reporte?

1.3. Cmo Leer ste Reporte?


Al inicio del trimestre anterior tuvimos la necesidad de informarnos acerca de las distintas opciones a nuestro alcance para implementar la solucin al problema originalmente planteado. el detalle de lo obtenido en la investigacin previa, se encuentra en el

captulo 2.

Una vez terminada dicha investigacin, realizamos varias actividades, referentes al desarrollo de la aplicacin, en el

captulo 3 describimos las tareas que realizamos, y los problemas que se nos presentaron, as como la forma

en que los solucionamos. Dado el poco tiempo de desarrollo del que disponemos, hay mucho trabajo que qued pendiente, un listado completo de las funcionalidades que es deseable que el sistema tenga en un futuro cercano, puede ser leida en el

captulo 4.

Dada la complejidad de la aplicacin, es necesaria una especie de gua que ayude a las personas que retomen este trabajo, a utilizar las bases que hemos dejado. El manual tcnico, en el para entender mejor la documentacin de la aplicacin . Como una referencia para el usuario nal, incluimos en el documento el manual de usuario (disponible en el

captulo A, es una buena introduccin

captulo B) contiene una breve descripcin de cmo utilizar e instalar el programa.


Finalmente, en el anexo ( del sistema.

captulo C) incluimos los diagramas de casos de uso, clases, secuencia e implementacin

1 La
mento.

Documentacin del sistema de almacenamiento distribuido, se incluye junto con el cdigo fuente, los archivos .jar y ste docu-

Captulo 2

Investigacin previa
ndice
2.1. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Modelo cliente-servidor usando sockets orientados a conexin . . . . . . . . . . . . . . . . 2.1.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. Requerimientos . . . . . . . . . Ajuste de variables de entorno Fortalezas . . . . . . . . . . . . Debilidades . . . . . . . . . . . Problemas que se presentaron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12 12 13

2.2. JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .

13

2.3. MPI Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. JBoss-Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2.4.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14 15

13 13 13 14 14 14 14 15 15

La primera etapa en la realizacin de ste proyecto, fue una investigacin sobre diversas herramientas que podran ayudarnos en las tareas de deteccin, y envo de archivos a travs 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 comunicacin, se consideran el objeto bsico en la comunicacin a travs de internet, su comunicacin es continua y naliza cuando una de las mquinas cierra su conexin. Existen dos tipos de canales de comunicacin o

sockets: Los orientados a conexin y los no orientados a conexin.

En los primeros se deben conectar con un socket los programas y hasta que la conexin se encuentre establecida correctamente, ninguno de los programas podr transmitir datos. Aqu es donde acta el protocolo TCP y nos garantiza que todos los datos van a llegar de un programa a otro correctamente. Este canal de comunicacin es utilizado cuando no se quiere perder ningn dato sin importar que un programa quede bloqueado esperando o transmitiendo datos. En la comunicacin no orientada a conexin, no es necesario que los programas estn conectados, cualquiera puede transmitir datos en cualquier momento, independientemente de que est escuchando o no. Esta comunicacin la maneja el protocolo UDP y nos garantiza que los datos llegarn correctamente, pero lo que no garantiza es que lleguen todos. Esta comunicacin es utilizada cuando queremos que el programa no se quede bloqueado y no importa que los datos se pierdan.

2.1.1. Modelo cliente-servidor usando sockets orientados a conexin


El servidor trabaja de la siguiente manera.

1. Inicia el puerto de comunicacin en espera de que algn cliente se conecte, creando un serverSocket. 2. Una vez que existe una conexin, crea un hilo de ejecucin orientado a conexin para este usuario mientras que el hilo principal regresa a vericar el puerto de comunicacin. 3. Se comunica con el cliente mediante el socket creado. 4. Espera a que el cliente cierre la comunicacin o l mismo la cierra y elimina el hilo que cre.

Y el cliente.

1. Establece la conexin con el servidor creando un socket. 2. Manda mensajes al servidor o espera mensajes de ste. 3. Cierra la conexin con el servidor.

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

2.1.2. Ventajas
Mejor rendimiento. Flexibilidad en las aplicaciones a desarrollar. Compatibilidad entre sistemas operativos.

2. Investigacin previa

13

2.1.3. Desventajas
Es necesario seleccionar explcitamente el protocolo, direccin IP y puerto a utilizar. Se requiere mucho tiempo de programacin para tener una aplicacin funcional.

Se descartaron los sockets como medio de comunicacin en el proyecto debido al elevado tiempo de programacin necesario para la deteccin de servidores ya que se encontr un API que nos permite realizar deteccin de forma mucho ms sencilla, adems de lo elaborado que resulta realizar una conexin y enviar archivos de una mquina a otra.

2.2. JXTA
JXTA (Juxtapose) es una plataforma peer-to-peer (P2P) open source creada por Sun Microsystems en el ao
2001. Esta plataforma est denida como un conjunto de protocolos basados en XML. Dichos protocolos permiten que dispositivos conectados a una red intercambien mensajes entre si. JXTA es el framework P2P ms maduro que actualmente existe. Adems, fue diseado para permitir que un amplio rango de dispositivos (computadoras, telfonos 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 instalacin es complicada y poco clara.

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

2.2.5. Problemas que se presentaron


Instalacin No se muestra de forma clara, la forma adecuada de instalar el API, se hace uso de programas
como SVN y ANT.

JXTA Shell An cuando los comandos necesarios para enviar mensajes y para actualizar las PC conectadas,
funciona adecuadamente, no fue posible enviar archivos entre las mquinas. 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 del 2 proyecto HPJava , aunque en si mismo, MPI Java no es una extensin del lenguaje de programacin Java.

2.3.1. Fortalezas
El hecho de que sea simplemente una interfaz y no una implementacin completa en Java de MPI, ayuda a que el rendimiento de las aplicaciones sea un poco mejor.

2.3.2. Debilidades
MPI es una abstraccin de muy bajo nivel para el paso de mensajes, y no ofrece ayuda alguna en el problema de la deteccin de servidores remotos.

Es un API de dicil instalacin.

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

1 Message Passing Interface Por sus siglas en ingls 2 es un ambiente de programacin paralela SPMD: Single Program, Multiple Data,
arreglos distribuidos

HPJava

especialmente para pogramacin sobre

2. Investigacin previa

15

2.4. JBoss-Remoting
2.4.1. Fortalezas
Fcil desarrollo para la comunicacin entre equipos, en gran medida por el alto nivel que proporciona el API y por el lenguaje de programacin utilizado. Multiplataforma, al estar basado en tecnologa Java, se puede portar a otros sistemas operativos haciendo pocos o ningn cambio.

2.4.2. Debilidades
Al estar basado en Java, no hay buen rendimiento en equipos con hardware que ya tiene varios aos en el mercado.

16

2.4. JBoss-Remoting

Captulo 3

Actividades Realizadas
ndice
3.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Respaldo y Recuperacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. 3.2.2. 3.2.3. 3.2.4. Transriendo Archivos va FTP . . . . Dispersin y Agrupacin de Archivos . Registro de los Archivos Respaldados Dicultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 18

3.3. Diseo de la Interfaz de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Empaquetando la Aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1. 3.5.2. 3.5.3. 3.5.4. AT - 105 . . . . . . . . . . AT - 106 . . . . . . . . . . AT - 220 . . . . . . . . . . Dicultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20 20 20

18 19 19 19

20 21 21 21

En una primera etapa se dividi el problema en dos partes: la deteccin de servidores en una red local y el respaldo de un archivo.

3.1. Deteccin
Para la deteccin el problema se resolvi en dos versiones. En una primera la deteccin se realiz mediante el uso de procedimientos para guardar las direcciones a un

String )

IP

que se descomponan desde el detector principal, (concatenndose

en donde estaba guardada la informacin del servidor encontrado, guardndolos en una estructura y

conforme fueran detectndose los servidores fueran agregados, al igual que cuando un servidor se detena, buscaba su IP y se eliminaba de la estructura actualizndose de forma continua mientras se ejecutaba la deteccin, en sta versin los elementos guardados en la estructura slo eran las direcciones IP. Ya que esta versin haca lo debido pero de una forma muy burda se recurri a la revisin y ajuste del cdigo. Para la segunda versin se revis la forma de agregar los servidores y eliminarlos al ser encontrados por el detector, esto se realiz con una estructura en java que nos permiti guardar y borrar slo con la llamada al mtodo 17

18

3.2. Respaldo y Recuperacin de Archivos

Figura 3.1: Deteccin de servidores

correspondiente, se guardaron referencias completas del servidor localizado, teniendo informacin como protocolo, host y puerto, entre los mas importantes al invocar los mtodos de la clase que nos guarda la referencia del servidor. Con esta versin la deteccin se realiz de una manera ms sencilla y se pudo obtener mayor informacin a cerca de los servidores encontrados. Para detectar los servidores, el cliente manda paquetes hacia todos los posibles destinatarios en la red local los cuales son recibidos por los servidores que estn activos (escuchando por el puerto) indicado, y a

broadcast ),

su vez, notican al cliente que se encuentran activos, envindole su direccin. dicho procedimiento se ilustra en la gura 3.1 La deteccin fue implementada en base a los ejemplos proporcionados por el API de dolo a un tiempo de deteccin determinado.

JBossRemoting ajustn-

3.2. Respaldo y Recuperacin de Archivos


Una de las tareas fundamentales que requiere el sistema para ser funcional, es la de respaldar un archivo en uno o mltiples servidores. Una vez detectados los servidores, se recuperan sus direcciones en una lista, y por cada direccin se hace una conexin entre la mquina cliente, y el servidor dado por la direccin recuperada. En un principio, la idea para implementar el envo de un archivo desde el cliente hacia el servidor, era utilizar nicamente las clases proporcionadas por el API de

JBossRemoting.

3.2.1. Transriendo Archivos va FTP


Debido a los problemas que se presentaron en la implementacin del envio de archivos con

JBossRemoting,

optamos por cambiar de tecnologa para realizar la transmisin 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 con varios mtodos que nos permiten interactuar con servidores FTP. En el caso del servidor FTP, se tienen 2 opciones dependiendo del sistema operativo instalado en cada mquina, para el caso de GNU/Linux usamos vsFTPd este servidor trabaja en segundo plano y tiene un archivo de conguracin fcil de modicar. En el caso de Windows se empleo FileZilla Server FTP que cuenta con una interfaz grca para su conguracin. La ventaja de utilizar

FTP para enviar archivos de un host a otro es que el mismo protocolo nos garantiza (al

menos con los servidores y el cliente FTP elegidos) que los datos llegan correctamente a su destino, adems de que resolvemos al mismo tiempo el problema de respaldar y recuperar archivos.

3.2.2. Dispersin y Agrupacin de Archivos


En sta etapa del proyecto, no se tuvo acceso al algoritmo de dispersin de informacin, el cual se utilizar para disgregar y codicar los archivos para su posterior transmisin. en vez de lo cual, denimos una interfaz que simula dichas operaciones; por lo que implementamos una clase que simula los procesos de de archivos. Aunque dicha clase en realidad no aplica el algoritmo que dispersin, implementa una interfaz que puede ser reutilizada posteriormente por una clase que si implemente dicho algoritmo.

dispersin y recuperacin

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 mquina, esto con la nalidad de que cuando se requiera recuperar dicho archivo, se sepa de antemano en qu equipos se guadaron cada uno de las partes de la informacin original.

3.2.4. Dicultades Enfrentadas


Las primeras pruebas de transferencia de archivos fueron realizadas con cuatro computadoras del laboratorio AT 105, durante las cuales, logramos transmitir un pequeo archivo de una mquina a otra, el problema se present cuando intentamos utilizar esa implementacin de la transferecia de archivos en otros equipos, cuando hicimos pruebas, en otras computadoras, el respaldo de archivos, simplemente no funcion, arrojando la siguiente excepcin:

Listing 3.1: Enlace del Servidor FTP

" java . lang . r e f l e c t . InvocationTargetException "

Investigamos al respecto, pero no encontramos una solucin satisfactoria al problema, adems, la transferencia de archivos via

JBoss Remoting tenia el inconveniente de que no se pueden transmitir archivos mayores que 2Gb.

20

3.3. Diseo de la Interfaz de Usuario

3.3. Diseo de la Interfaz de Usuario


En ste punto, el sistema (propiamente el cliente) tiene una interfaz basada en lnea de comandos, mediante la cual se le especica al programa el archivo sobre el cual se desea ejecutar la operacin( respaldar, o recuperar) y segn sea el caso, tambin se le indica qu accin se realizar con dicho archivo.


$ java

Listing 3.2: Respaldando archivo

j a r

cliente . jar

archivo


$ java

Listing 3.3: Recuperando archivo

j a r

cliente . jar

archivo

3.4. Empaquetando la Aplicacin


Aqui va lo que est haciendo Sal 28 de mayo de 2009

3.5. Pruebas Finales


Con todas las actividades anteriores terminadas, nos dispusimos a hacer pruebas de los paquetes generados en otros laboratorios, al momento de escribir estas lneas, 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 utilizamos

1 Laboratorios

Divisionales de Docencia de Ciencias Bsicas e Ingeniera

3. Actividades Realizadas
vsftpd - en las mquinas con Linux. FileZillaFTP Server - en las mquinas con Windows.

21

3.5.2. AT - 106
En el laboratorio utilizamos nicamente computadoras con Sistema Operativo Microsoft Windows Vista Home Edition, cabe destacar que al momento de escribir estas lneas , slo se hicieron pruebas de la deteccin de servidores.

3.5.3. AT - 220
El ste laboratorio utilizamos mquinas que tienen como Sistema Operativo: Ubuntu Linux 8.04, y como servidor FTP, vsftpd.

3.5.4. Dicultades Encontradas


Las pruebas nales fueron exitosas, el nico detalle encontrado es que el sistema, por su naturaleza slo detecta los servidores que tienen el servidor de deteccin activo, aunque no tengan levantado el servicio de FTP, o no lo tengan congurado correctamente, en tal caso, la transferencia de los archivos que prentendan enviarse a dichos servidores fracasar. para no tener estos problemas, es altamente recomendable revisar el correcto funcionamiento y conguracin del servidor FTP antes de activar el servidor de deteccin.

22

3.5. Pruebas Finales

Captulo 4

Trabajo Futuro
ndice
4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Transferencia Paralela . . . . . . . . . Servicio . . . . . . . . . . . . . . . . . . Interfaz Grca de Usuario . . . . . . Acceder a Servidores en Otras Redes Mejorar la Seguridad del Sistema . . . Deteccin y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 24 24 25 25

De entre las actividades que quedan pendientes para las siguientes etapas del desarrollo del proyecto, se incluyen las 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 que

archivo, se ponen estas parejas servidor correspondiente.

( servidor, archivo ) en una cola, y se transmiten por FTP una por una al

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 recuperen

dichos archivos uno por uno.

Un objetivo a futuro, es implementar esta transferencia de archivos, utilizando hilos, los cuales sern lanzados de manera concurrente, con la nalidad de ahorrar tiempo en la transmisin, tanto de ida como de vuelta, respecto de la solucin que est implementada actualmente. 23

24

4.2. Servicio

4.2. Servicio
Actualmente el servidor de deteccin funciona como cualquier aplicacin de usuario, es decir, cuando el usuario lanza el proceso del servidor, mediante el comando:


$ java

Listing 4.1: Iniciando el Servidor

j a r

servidor . jar

Opcionalmente se puede especicar un puerto desde la lnea de comandos:


$ java

Listing 4.2: Especicando el puerto

j a r

servidor . jar

5555

En ste ejemplo elegimos el puerto

5555.

La idea es que en prximas versiones de la aplicacin, el servidor sea como un servicio ms (como el FTP, por ejemplo).

Listing 4.3: Iniciando el Servidor de Deteccin / e t c / i n i t . d / s e r v i d o r d e t e c c i o n . s h start

4.3. Interfaz Grca de Usuario


En la etapa actual del proyecto, el sistema cuenta con una interfaz de usuario basada en lnea de comandos, mediante la cual,

de manera no interactiva, se le indica al sistema, la accin que se desea realizar (en ste caso
usabilidad

respaldar o recuperar un archivo) y sobre que archivo se requiere aplicar dicha accin. Con el objetivo de mejorar la del sistema, as como para facilitar la conguracin del mismo, se

requiere desarrollar una interfz grca de usuario para la aplicacin, 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 diseo de ste sistema, fu que los servidores de almacenamiento, se encuentran todos en la misma red LAN, la prxima meta es que el sistema sea capz de enviar respaldos a servidores 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 generarn nuevas necesidades de seguridad, por poner un ejemplo, cuando se transmitan por FTP el usuario y la contrasea de la sesin, as como los archivos, dichos datos sern completamente visibles desde Internet.

4.6. Deteccin y FTP


Que el servidor de deteccin incluya como requisito para poder ejecutarse, que el servidor correctamente congurado, y que la cuenta de usuario utilizada por los clientes, exista.

FTP est funcionando,

26

4.6. Deteccin y FTP

Apndice A

Manual tcnico
ndice
A.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3.1. Deteccin de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.2. Transferencia de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.3. Dispersin y Reunin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27 27 32

28 29

32 33 34

A.1. Requerimientos del Sistema


Para el correcto funcionamiento de sta aplicacin, 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 desempear el rol de Servidor La Mquina Virtual de Java de Sun Microsystems. para poder ejecutar las aplicaciones (tanto el cliente,
como el servidor de deteccin)

Una cuenta de usuario

comn en tdas las mquinas servidor, la cual se utilizar para establecer las

conexiones a los servidores FTP cada vez que se requiera respaldar o recuperar archivos.

A.2. Servidor
Para que un host pueda desempear la funcin de servidor de almacenamiento, necesita bsicamente de dos componentes: el servidor de deteccin, y un servidor FTP, el cual es independiente del sistema. 27

28

A.2. Servidor

A.2.1. Deteccin
El cdigo fuente que corresponde al el se denen tres clases:

Servidor de Deteccin se encuentra en el paquete llamado servidor, en

servidor.deteccion.DetectorServidor servidor.deteccion.ServidorMulticast servidor.deteccion.DetectorInvocationHandler

La deteccin de servidores se hace, en parte mediante las clases proporcionadas por

JBoss Remoting,

una vez

iniciado el servidor, lo nico que hace es escuchar por el puerto que se le indique, ya sea desde su archivo de conguracin, o desde la lnea de comandos, cuando recibe una peticin desde algn cliente, procesa el mensaje y devuelve un mensaje que contiene Una instancia de la clase obtener la informacin que necesita del servidor. La clase encargada de iniciar el servidor de deteccin es cia de

Notication 1 ,

la cual es procesada por el cliente para

servidor.conf.Principal, dicha clase crea una instanservidor.deteccion.DetectorServidor, la cual se dedica a escuchar por el puerto indicado, a continuacin

se muestra la parte de cdigo responsable de la deteccin, por parte del servidor.

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

Listing A.1: Iniciando el Servidor de deteccin /* informacion host puerto ttlServidor del servidor

*/

String String String int

protocolo

= " socket " ; = datos . getProperty ( " host " ) ; = datos . getProperty ( " puerto_deteccion " ) ; = Integer . parseInt ( datos . getProperty ( " tiempo_servidor " ) ) ; al servidor para que pueda ser detectado

/ * URI q u e String /* crea

identifica

*/

u r i = protocolo + " :// " + host + " : " + puerto ; el detector

*/
DetectorServidor () ;

DetectorServidor try { /* inicia el

s e r v i d o r = new

detector

de

mensajes

*/ */

servidor . iniciaDetector () ; /* } catch ( Exception { System . e r r . p r i n t l n ( "ERROR: JBossRemoting . " ) ; Al intentar iniciar el servidor remoto e) inicia el servidor de peticiones

servidor . iniciaServidor ( uri ) ;

1 Para

ms informacin, consultar la documentacin de JBoss Remoting

A. Manual tcnico
66 67

29

e . printStackTrace () ;

De acuerdo con la conguracin el servidor de deteccin espera un tiempo antes de terminar o continuar escuchando por el puerto (previamente especicado)

69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

Listing A.2: Deteniendo el Servidor de deteccin /* cuando el valor de ttl_servidor por tiempo en el archivo de configuracion es 0, el

* servidor */
/*

funciona != un 0)

indefinido

if ( ttlServidor { espera

lapso

de "

tiempo segundos

antes o

de

detener activo

el por

servidor " + usando

*/
+

System . o u t . p r i n t l n ( " E l

servidor

estara puede

ttlServidor

deternerlo

C t r l+ C\ n " ) ;

Thread . s l e e p ( t t l S e r v i d o r try {

*1000) ;

servidor . detenDetector () ; } catch ( Exception { e . printStackTrace () ; } servidor . detenServidor () ; } else { System . o u t . p r i n t l n ( " I n i c i a d o " ernerlo /* el servidor funciona servido use remoto J B o s s / Remoting ... para det " + C t r l+ C" ) ; e)

indefinidamente

*/

while ( true ) Thread . s l e e p ( 1 0 0 0 0 0 0 ) ; } System . e x i t ( 0 ) ; }

A.2.2. FTP
En un principio, la idea fue transferir archivos de un host a otro utilizando el API de

JBoss Remoting, el problema

con dicho mtodo es que tiene limitantes sobre el tamao mximo de archivo que puede transmitir, adems de que no garantiza que los datos llegarn correctamente a su destino, lo que nos hubiera obligado implementar algoritmos

30

A.2. Servidor

de deteccin y correccin de errores. Por stas razones la eleccin tomada para transferir archivos de una mquina a otra, fue utilizar FTP.

GNU/Linux Instalacin: Por simplicidad se uso el servidor vsftpd, que se encuentra en los repositorios de ubuntu. El cual
instalamos con la siguiente instruccin:


$ sudo a p t g e t install

Listing A.3: Instalando el servidor FTP vsftpd

Conguracin: En el archivo /etc/vsftpd.conf , se hacen los siguentes cambios:

l i s t e n= YES anonymous_enable= NO l o c a l _ e n a b l e= YES w r i t e _ e n a b l e= YES l o c a l _ u m a s k =022 d i r m e s s a g e _ e n a b l e= YES x f e r l o g _ e n a b l e= YES c o n n e c t _ f r o m _ p o r t _ 2 0= YES f t p d _ b a n n e r=B i e n v e n i d o c h r o o t _ l i s t _ e n a b l e= YES al

Listing A.4: Valores modicados

servidor

de

Isaac

:D

c h r o o t _ l i s t _ f i l e =/ e t c / v s f t p d . c h r o o t _ l i s t

Estos sin cambio alguno:

pam_service_name=v s f t p d

Listing A.5: Valores por defecto s e c u r e _ c h r o o t _ d i r =/ v a r / r u n / v s f t p d r s a _ c e r t _ f i l e =/ e t c / s s l / c e r t s / s s l

r s a _ p r i v a t e _ k e y _ f i l e =/ e t c / s s l / p r i v a t e / s s l

c e r t s n a k e o i l . pem c e r t s n a k e o i l

. key

El archivo /etc/vsftpd.chroot_list, incluye la lista de usuarios con acceso al servidor.

A. Manual tcnico
Ejemplo:

31

psd boss hardy isaac # Nombre # Otros de

Listing A.6: Lista de Usuarios del servidor FTP usuario del utilizado servidor para FTP transferir archivos en el sistema

usuarios

Windows
Servidor FTP FileZilla, se encuentra en su pagina web

http://filezilla-project.org/.

Instalacin:
direccin:

Para su instalacin debemos bajar el archivo ejecutable de instalacin, que se encuentra en la


_9_30 . e x e

Listing A.7: Enlace del Servidor FTP h t t p s : / /www . o h l o h . n e t / p r o j e c t s / f i l e z i l l a / d o w n l o a d ? f i l e n a m e=F i l e Z i l l a _ S e r v e r

Una vez que tenemos el archivo (FileZilla_Server-0_9_30.exe) hacemos doble click y hacemos una instalacin estndar. Compatible con Windows 2000, XP y Vista.

Conguracin:

En la interface de usuario, se congura el usuario, abrimos Edit =>Users. En el rea de

Account Settings marcamos las opciones:

Enable account Password (lo escribimos)

En el rea de Users aadimos el usuario (pds). A continuacin, denimos 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, bsicamente mediante dos tareas principales

A.3.1. Deteccin de Servidores


El proceso de deteccin se realiza en el cliente cada vez que se ejecuta la aplicacin, el mtodo utilizado tanto para respaldar como para recuperar archivos es el

Mtodo

cliente.motor.Aplicacion.getServidoresActivos();
DetectorCliente, la cual se encargar

Cuando se llama a ste mtodo, la Aplicacin crea una instancia de la clase disponibles.

de emitir mensajes por inundacin ( broadcast ) los cuales sern contestados por los servidores que se encuentren

84 85 86 87 88 89 90 91 92 93 94 95 96

Listing A.8: Iniciando el mtodo de deteccin A r r a y L i s t <I n v o k e r L o c a t o r > g e t S e r v i d o r e s A c t i v o s ( ) { cliente J B o s s / Remoting . . . " ) ; d c = new DetectorCliente () ;

public

System . o u t . p r i n t l n ( " I n i c i a n d o DetectorCliente /* int try Inicia el

detector

*/

tClienteDeteccion = Integer . parseInt ( opciones . getProperty ( " t_cliente_deteccion ") ) ; { dc . i n i c i a D e t e c t o r ( ) ; Thread . s l e e p ( t C l i e n t e D e t e c c i o n

*1000) ;

} }

c a t c h ( Throwable

e)

e . printStackTrace () ;

A. Manual tcnico

33

Pasado algn tiempo detiene el perodo de deteccin de servidores para poder continuar con la ejecucin del programa.

96 97 98 99 100 101 102 103 104

Listing A.9: Deteniendo la deteccin

/* try } }

Detiene {

el

detector

*/

dc . d e t e n D e t e c t o r ( ) ; catch ( Exception e) { e . printStackTrace () ;

System . o u t . p r i n t l n ( " D e t e n i e n d o

cliente

J B o s s / Remoting " ) ;

El valor devuelto al nal es un

ArrayList

que contiene la informacin de los servidores detectados si es que ha

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

105 106 107 108 109 110 111 112 113 114

Listing A.10: Devolviendo los servidores detectados A r r a y L i s t <I n v o k e r L o c a t o r > s e r v i d o r e s A c t i v o s = d c . s e r v i d o r e s A c t i v o s ( ) ; if ( { System . e r r . p r i n t l n ( " E r r o r : System . e x i t ( 1 ) ; } return servidoresActivos ; No hay servidores activos ") ; System . e r r . p r i n t l n ( " A b o r t a n d o . . . " ) ; s e r v i d o r e s A c t i v o s == n u l l || s e r v i d o r e s A c t i v o s . s i z e ( ) == 0 )

A.3.2. Transferencia de Archivos


La idea de la transferencia de archivos, es pasarle la responsabilidad de dicha tarea a una sesin FTP comn y corriente. Una vez terminada la deteccin 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 especicada en su archivo de conguracin, la clase encargada de sta tarea es son:

ControlFTP.respaldoMasivo()

cliente.ftp.ControlFTP, cuyos mtodos principales ControlFTP.recuperacionMasiva(), los cuales, se encargan de mandar

varios archivos, a varias mquinas ( con una correspondencia de 1 a 1 ). Tanto para el envo como para la recepcin de archivos, se inician varias sesiones FTP, (una por archivo en el servidor que le corresponde). y se carga o descarga el archivo segn sea el caso.

34

A.3. Cliente
2

A modo de ejemplo se muestra una parte del cdigo del mtodo es muy similar a su contraparte de recuperacin .

ControlFTP.recuperacionMasiva(),

el cual

194 195 196 197 198 199

Listing A.11: Recuperacin de archivos int try { f t p . openConnection ( if ( iniciar hosts . get ( i ) , alias , clave puerto ) ) { ); // V e r i f i c a n d o que se pueda i = 0 ; i < hosts . s i z e () ; i++ ) {

for (

ftp . iniSesion ( sesion

200 201 202

if (

f t p . setTransferTypeToBinary ( ) if ( f t p . download ( get ( i ) ) ) {

) cacheLocal + separador + archs . Recuperado );

archs . get ( i ) ,

203

System . o u t . p r i n t l n ( exitosamente del ) ;

archs . get ( i ) + " : host hosts . get ( i ) ,

" + hosts . get ( i )

204

registraRecuparacion ( get ( i ) ) , true } else {

getNombreArchivo ( a r c h s .

205 206

System . e r r . p r i n t l n ( " ) ;

archs . get ( i ) + " : hosts . get ( i ) ,

Recuperacion

fallida .

207

registraRecuparacion ( get ( i ) ) , false ) ; }

getNombreArchivo ( a r c h s .

208

A.3.3. Dispersin y Reunin de Archivos


Al momento de escribir ste reporte, no tenemos una implementacin del algoritmo de dispersin de archivos, el cual es necesario para el funcionamiento completo del sistema. Con la nalidad de facilitar la posterior integracin de dicha funcionalidad, denimos una clase que se encarga de simular el proceso de dispersin y reunin 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: si el archivo se llama archivo.loquesea, cada una de las copias ser llamada archivo-i.loquesea, donde i es
un dgito entre 1 y 5 (los digitos no se repiten).

Reunir un archivo: Una vez terminada exitsamente la recuperacin de los archivos y se tienen almacenados
en una carpeta temporal (la que se especique en el archivo de conguracin del cliente), la reunin de los fragmentos consiste en eliminar todos los archivos descargados menos uno, y el archivo que se conserve ser renombrado, para que se llame igual que el archivos original, es decir, si el archivo recuperado se llama

archivo-x.loquesea, ser renombrado a archivo.loquesea


2 Para

ms informacin al respecto consultar la documentacin adjunta con el cdigo fuente del proyecto

A. Manual tcnico
banador, la cual implementa la Archivo y regeneraArchivo3 .
La clase que, en sta versin del sistema, se encarga de las tareas arriba mencionadas, es interfaz

35

cliente.motor.Dispersa,

dicha interfaz declara los mtodos

cliente.motor.Re dispersa-

Para integrar la dispersin de archivos al proyecto, slo se necesita escribir una clase que implemente esta interfaz, y que una instancia de ella reemplace a cada instancia de la clase

cliente.motor.Rebanador.

3 Para

ms informacin al respecto consultar la documentacin adjunta con el cdigo fuente del proyecto

36

A.3. Cliente

Apndice B

Manual de usuario
ndice
B.1. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Modo de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37 39

37 38 39 39

B.1. Conguracin
B.1.1. Servidor de deteccin
Para inciar el servidor de deteccin, primero debemos de congurar el archivo servidor.conf para ajustar la direccin IP que tiene la mquina, el puerto de deteccin, as como el tiempo que el servidor de deteccin estar en uso, este se especica en segundos, si se selecciona el 0 es por tiempo indenido y hasta que se elige detener el servidor este se encuentra activo, para detenerlo ejecutamos

ctrl + c.

# Archivo

Listing B.1: Archivo de conguracin del servidor de deteccin

## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # de configuracion del sevidor # ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # direccion IP local

host =192.168.1.25 # puerto usado para la deteccion de los equipos

p u e r t o _ d e t e c c i o n =5400

37

38

B.1. Conguracin
en segundos es 0 el que se mantiene estara activo activo el servidor tiempo JBossRemoting , indefinido

# tiempo # si el

valor

servidor

por

t i e m p o _ s e r v i d o r =0

B.1.2. Cliente
Para poder utilizar las funciones del cliente es necesario congurar un archivo en el cual se especicaran los reconocida.

path

que nos permitan guardar los archivos respaldados, estos archivos deben de existir para que la conguracin sea

# Archivo de

Listing B.2: Archivo de conguracin del cliente

## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # configuracion del cliente # ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # usuario a l i a s =p s d p a s s w o r d=a r c h i v o s # direccion IP local y contrasena para acceder a los servidores FTP r e m o t o s

host =192.168.1.25 # Puerto para la transferencia de archivos p o r FTP

p u e r t o _ f t p =21 # tiempo en segundos empleado para detectar servidores disponibles de la red

t _ c l i e n t e _ d e t e c c i o n =5 # Directorio para almacenar los archivos recien recuperados

c a c h e d i r =/home/ f t p /tmp # Directorio para colocar los archivos finales

f i n a l d i r =/home/ f t p #E l archivo estan donde se registran que archivos estan respaldados , y en que servidores

dispersos

l o g r e s p a l d o s =/home/ f t p / l o g r e s p a l d o s

B. Manual de usuario

39

B.2. Modo de Uso


B.2.1. Servidor de deteccin
Una vez que est congurado el archivo iniciamos el servidor con el siguiente comando.


$ java

Listing B.3: Iniciando servidor de deteccin

j a r

servidor . jar

El servidor mostrar los siguientes mensajes al estar activo el tiempo que se haya congurado.

Created El MBeanServer servidor se servido with remoto Iniciando Iniciado

Listing B.4: Servidor de deteccin ID :

yo5bw3 :
para

f t 0 i t x q f . 0 : lap :1 con ... el URI socket ://192.168.1.25:5400 de los clientes . use C t r l+ C mensajes para

identificado listo

servidor

encuentra remoto

aceptar

J B o s s / Remoting

deternerlo

B.2.2. Cliente
Una vez congurado el archivo al ejecutar el siguiente comando, se obtendr una sinopsis de cmo usarlo

Argumentos N M R O B E cliente . jar SINOPSIS : [ VAL ...] [ e <a r c h i v o >] no validos

Listing B.5: Ejecutando el cliente.jar java

i n t r e p i d @ i n t r e p i d : ~ / p r o y e c t o p r u e b a s / c l i e n t e $

j a r

cliente . jar

Almacenamiento

distribuido

de

archivos .

[h ]

[ l ]

[ r <nombre >]

OPCIONES :

<a r c h i v o > que se

Respaldar quiere

un

a r c h i v o , <a r c h i v o > e s

el

' p at h '

completo

del

archivo

respaldar . este mensaje . respaldados y la fecha en que se almacenaron . los archivos

h l

: :

Muestra Lista

40

B.2. Modo de Uso


: Recuperar java un a r c h i v o , <nombre> e s el nombre del archivo .

<nombre> de

Ejemplo

uso :

j a r

cliente . jar

/ etc / fstab

Respaldo
Para realizar un respaldo desde la aplicacin es necesario pasar como argumento la bandera -e y el nombre del archivo que deseamos respaldar, ejecutandolo de la siguiente manera.


java

Listing B.6: Iniciando respaldo del cliente

j a r

cliente . jar

M i a r c h i v o . png

Ejecutado este comando la aplicacin realiza el respaldo en los servidores encontrados siempre que sean 5, en caso de detectar ms de 5 servidores el programa tomar los 5 primeros.

Recuperacin
Para realizar una recuperacin desde la aplicacin es necesario pasar como argumento la bandera -r y el nombre del archivo que deseamos recuperar, ejecutandolo de la siguiente manera.


java

Listing B.7: Iniciando recuperacin del cliente

j a r

cliente . jar

M i a r c h i v o . png

Slo si el archivo ha sido respaldado anteriormente y adems 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 en que deben ser pasadas las banderas dependiendo de la accin que se desee realizar.


java

Listing B.8: Ayuda del cliente

j a r

cliente . jar

Apndice C

Diagramas
ndice
C.1. C.2. C.3. C.4. Diagramas Casos de Uso . . . Diagramas de Clases . . . . . Diagramas de Secuencia . . . Diagrama de Implementacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 45 48 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 aplicacin, tales cmo y

respaldar

recuperar

archivos, en la gura C.1 por ejemplo se muestra una vista global de los casos de

uso del sistema, mientras que en las guras C.3 y C.2 se muestran los detalles de los casos de uso

Respaldo de archivos respectivamente

Recuperacin

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 Recuperacin 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 principales en los diagramas de secuencia de recuperacin de archivos en la gura C.6 y la de respaldo de archivos en la gura

??.

C. Diagramas

49

Figura C.6: Secuencia Recuperacin

50

C.3. Diagramas de Secuencia

Figura C.7: Secuencia Respaldo

C. Diagramas

51

Figura C.8: Implementacin del Sistema

C.4. Diagrama de Implementacin


Por ltimo, en el diagrama de implementacin, mostrado en la gura C.8 se ilustran los componentes necesarios para el correcto funcionamiento de la aplicacin.

52

C.4. Diagrama de Implementacin

Bibliografa
[1] Documentacin del API de Java:

http://java.sun.com/j2se/1.5.0/docs/api/ http://www.jboss.org/overview.html

[2] Sitio Ocial de JBoss Remoting:

[3] Documentacin del paquete CleanFTP

Incluida en este documento

[4] Sitio Ocial de JXTA:

https://jxta.dev.java.net http://aspen.ucs.indiana.edu/pss/HPJava/mpiJava.html

[5] Sitio Ocial de MPI Java:

[6] Computer Networking

A Top-Down Approach Featuring the Internet J.F Kurose & K.W. Ross Pearson Education Inc, 2003, 2nd edition

53

Вам также может понравиться