Semana 7
Semana 7
Semana 7
INTRODUCCION
En esta semana 3 con VirtualBox que es una de las herramientas más completas que podemos
utilizar para virtualizar todo tipo de sistemas operativos. Esta aplicación, gratuita y de código
abierto, es propiedad de Oracle y nos permite instalar cualquier sistema operativo (Windows, Linux,
macOS, etc) en una máquina virtual de manera que podamos utilizarlo sin alterar el funcionamiento
de nuestro sistema operativo principal. Este tipo de herramientas deben actualizarse
constantemente con el fin de ofrecer el mejor rendimiento y la mejor compatibilidad.
Objetivo General:
El objetivo, es que se aprenda a crear un servidor Linux y pr, enlazarlo con otro servidor Linux,
probar la interconexión las redes y desarrollar los talleres de cada entrega.
Desarrollo:
A efectos prácticos, la configuración de red en última instancia, será por cuenta de cada sistema
operativo en concreto. VirtualBox nos da las herramientas para realizar la conexión, pero será cada
usuario el que tenga que configurar las características de la red de cada sistema operativo para
conectarlos por ejemplo para ver una carpeta compartida o utilizar control remoto.
0
Acceder a la configuración de red de la máquina virtual
Lo primero que tendremos que saber, como es normal es saber dónde se encuentra ésta
configuración. Podremos hacerlo de dos formas distintas, bien desde la ventana de ejecución de la
máquina virtual o desde el panel principal del administrador de VirtualBox.
Desde la ventana de cada máquina virtual, tendremos que dirigirnos a la barra herramientas de la
zona superior y pulsar sobre “Dispositivos -> Red -> Preferencia de Red”.
Mediante este modo, nosotros podremos comunicar las máquinas virtuales entre ellas como si de
una red LAN se tratase, pero NO tendremos acceso ni a Internet (red exterior) ni incluso a equipos
host. Esto es especialmente útil cuando queremos hacer pruebas de red entre máquinas sin
intervenciones externas ni peligro de que haya agujeros de seguridad.
Si nos fijamos en la conexión de red del sistema operativo, veremos que no tenemos puerta de
enlace, y ni siquiera tendremos una dirección IP parecida a la de nuestro equipo host.
1
Si ahora hiciéramos ping a nuestro host obtendríamos un interesante error de conexión. Esto
demuestra que la red interna funciona solamente para las máquinas virtuales.
Este tipo de conexión simula una conexión física a la red de la máquina virtual. Este significa que
nuestra máquina virtual estará conectada a través de un adaptador de red creado en la máquina
host al router o servidor de nuestro entorno.
2
De esta forma, cada máquina virtual obtiene una dirección IP directamente desde la puerta de
enlace a Internet, por lo que tendremos exactamente las mismas posibilidades que si estuviéramos
en un equipo físico.
Podremos tanto navegar por Internet como conectar máquinas físicas. También podremos crear
nuestros propios servidores y acceder a ellos remotamente desde el exterior de nuestra red
mediante la IP pública o dominio creado.
Vemos aquí como hemos obtenido una IP directamente desde nuestro router.
2. Monte VirtuaBox 5.2 (Software libre). Monte el sistema operacional Linux CentOS 6.8
en la máquina virtual (VM) de 40 GB de disco, un Core y 1.024 gb de memoria RAM.
3
Monte el sistema operacional Linux CentOS 6.8
4
40 GB de disco
5
6
3. Actualice el sistema operacional (yum -y update) y expórtela para tener una copia de
respaldo.
Máquina server
Cliente 1
Cliente 2
7
Desarrollo:
Para obtener información sobre las máquinas virtuales (VM) en su host y sus configuraciones, utilice uno o
más de los siguientes comandos.
8
Para obtener la configuración XML completa de una VM específica:
Para obtener información sobre los discos y otros dispositivos de bloque de una VM:
Para obtener información sobre los sistemas de archivos de una VM y sus puntos de montaje:
9
Para obtener información sobre los sistemas de archivos de una VM y sus puntos de montaje:
10
B. Monte el compilador de Java
1) Descargar Eclipse
11
3) Inicie la aplicación
Busque eclipse en el directorio de la aplicación y haga doble clic en el icono de eclipse para iniciar
la aplicación.
12
C. Desarrolle un programa de Paginación de memoria en Java
13
import java.util.Scanner;
teclado=new Scanner(System.in);
letra = let.next() ;
int n;
n=teclado.nextInt();
vec=new int[n];
for(int f=0;f<vec.length;f++)
System.out.println(letra);
14
public void acumularmemoriatotal();
int suma=0; //
for(int f=0;f<vec.length;f++) {
suma=suma+vec[f];
m.cargar();
m.acumularEnMemoriaTotal();
D. Desarrolle un programa de manejo de hilos con Java sobre Linux que corra en el server
En esta entrada vamos a ver las diferentes maneras de cómo trabajar con Threads en Java (o hilos
en español). Sino tienes muy claro el concepto de la multitarea te recomendamos que te leas
primero la entrada de Multitarea e Hilos, fácil y muchas ventajas aunque en esta entrada también
veremos (en menor detalle) los conceptos y las ventajas de la multitarea. En esencia la multitarea
nos permite ejecutar varios procesos a la vez; es decir, de forma concurrente y por tanto eso nos
permite hacer programas que se ejecuten en menor tiempo y sean más eficientes.
15
Semana 7
A. Elabore un programa para una pequeña aplicación en Java sobre la máquina virtual Linux,
con cuatro clases (main, limpiar, generar y consumir), en donde desde el main ejecute la
clase, limpie y sincronice dos hilos, uno para generar una variable llamada vacío que tenga
el valor “true”, pero que el hilo consumidor se quede esperando y, cuando cambie “false”
en el hilo generador, entonces dicha variable sea tomada por el hilo consumidor.
En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de forma
concurrente y por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y
sean más eficientes. Evidentemente no podemos ejecutar infinitos procesos de forma
concurrente ya que el hardware tiene sus limitaciones, pero raro es a día de hoy los
ordenadores que no tengan más de un núcleo por tanto en un procesador con dos núcleos se
podrían ejecutar dos procesos a la vez y así nuestro programa utilizaría al máximo los recursos
hardware. Para que veáis la diferencia en un par de imágenes, supongamos que tenemos un
programa secuencial en el que se han de ejecutar 4 procesos; uno detrás de otro, y estos
tardan unos segundos:
Main.java
package es.iessaladillo.pedrojoya.pspro.j7cc0112.main;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import es.iessaladillo.pedrojoya.pspro.j7cc0112.fabrica.FabricaHilos;
import es.iessaladillo.pedrojoya.pspro.j7cc0112.tarea.Tarea;
formateador.format(new Date()));
16
Tarea tarea = new Tarea();
// e inicio su ejecución.
Thread hilo;
hilo = fabrica.newThread(tarea);
hilo.start();
try {
TimeUnit.SECONDS.sleep(aleatorio.nextInt(3));
} catch (InterruptedException e) {
e.printStackTrace();
System.out.printf("%s\n", fabrica.getRegistro());
FabricaHilos.java
package es.iessaladillo.pedrojoya.pspro.j7cc0112.fabrica;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.concurrent.ThreadFactory;
17
// Clase que crea hilos.
// Atributos de la fábrica
// Constructor.
contador = 0;
this.nombreFabrica = nombreFabrica;
@Override
// fábrica.
contador++;
+ " creado\n");
return hilo;
18
// Retorna el registro (log) de la fábrica en formato cadena.
while (indice.hasNext()) {
sRegistro.append(indice.next());
return sRegistro.toString();
Configuración de VirtualBox
Este es el esquema de red con el que queremos trabajar. Vamos a utilizar VirualBox para simular
las máquinas que necesitamos en nuestro esquema de trabajo, de esta forma necesitaremos 3
máquinas virtuales:
19
Las caracteristicas de esta máquina será:
RAM: 512 Mb
Disco duro:10 Gb
Dos clientes: uno instalado con un sistema operativo Windows y otro con Linux.
Entrega capturas de pantalla donde se vea la pantalla principal de VirtualBox con todas las
características de las máquinas que acabas de crear.
Después de instalar los sistemas operativos, tienes que instalar las "Guests Additions". A
continución tenemos que configurar los siguientes parámetros:
El nombre de las máquinas: lo podemos hacer durante la instalación del sistema o después de la
instalación, para ello en el sistema Windows:
Inicio -> Botón derecho en Equipo -> Propiedades -> Cambiar configuración -> Cambiar ...
Inicio -> Herramientas administrativas -> Firewall de Windows con seguridad avanzada -> Y
desactivamos los tres perfiles (dominio, privado, público),
En el Windows Server:
Entrega una captura de pantalla donde se vea una ventana Windows donde se este ejecutando la
máquina virtual creada y la ejecución en una ventana de comandos (cmd) del comando ipconfig
para que se vea la configuración de red.
En los clientes
Máscara: 255.255.255.0
20
Dns: 192.168.102.2
Entrega dos capturas de pantalla: una donde se vea el cliente Windows con una consola de
texto con el comando ipconfig ejecutado, de esta manera podremos ver la configuración de red,
otra donde se vea el cliente Linux con una consola de comando donde se vea ejecutado la
instrucción ifconfig, para ver la configuración de red.
Entrega una captura de pantalla donde se compruebe que se puede hacer ping desde los dos
clientes.
Para terminar tenemos que hacer que el servidor Windows Server tenga la función de router y
haga NAT, para que todas las peticiones que vengan por la "red Interna" sea enrutada por la tarjeta
de red "Puente" y de esta manera los clientes sean capaz de salir a internet.
Botón derecho -> Configurar y habilitar Enrutamiento y acceso remoto -> Traducción de
direcciones de red (NAT) -> Siguiente -> Siguiente -> Configurar más adelante los servicios de
nombres y direcciones
C. Haga una transferencia de archivos entre las máquinas virtuales usando el comando scp.
El comando scp linux lo utilizamos para transferir archivos entre dos servidores. Desde el servidor
origen ejecutamos el comando y a continuación el archivo a transferir. Luego tenemos que decir el
usuario de la máquina destino y la ip o dominio. Despues de los dos puntos, el directorio destino
del fichero:
Comando SCP de Linux: Copiar de forma segura & Transferir archivos. El comando SCP (Copia
segura) es un método para cifrar la transmisión de archivos entre sistemas Unix o Linux. Es una
variante más segura del comando cp (copiar). SCP incluye cifrado a través de una conexión SSH
(Secure Shell).
21
La herramienta scp se basa en SSH (Secure Shell) para transferir archivos, por lo que todo lo que
necesita es el nombre de usuario y la contraseña para los sistemas de origen y destino. Otra
ventaja es que con SCP puedes mover archivos entre dos servidores remotos, desde tu máquina
local además de transferir datos entre máquinas locales y remotas.
Ayudar:
Utilice siempre la ubicación completa desde /, Obtenga la ubicación completa por pwd.
si se necesita un puerto personalizado (además del puerto 22) use -P número de puerto.
22
E. Monte un sistema de archivos NFS.
El protocolo NFS (del inglés Network File System) fue diseñado para permitir sistemas de archivo
distribuido en entornos de red local. Esto significa que cualquier equipo, ya sea un ordenador de
usuario o un servidor, es capaz de acceder a la información almacenada como si se tratara de
almacenamiento de un disco duro local. La primera versión fue presentada por Sun Microsystems
en 1984 y fue pensada para que fuera independiente del sistema operativo utilizado por cada
equipo y del tipo de red local que hubiera. Hay que recordar que en esa época la tecnología
TCP/IP competía con otros tipos de redes y aún no estaba claro cuál sería la red predominante.
Paso 3 (Exclusivo de SELinux) - Setear banderas: Ya que Centos 7 viene con SElinux, este no
permite que NFS comparta archivos, por lo que se deben activar algunas banderas para así poder
compartir
23
nfs_export_all_rw Opción para que todos puedan leer y escribir
nfs_export_all_ro --> on
nfs_export_all_rw --> on
En caso de que se tenga deshabilitado el firewall se debe obviar ese paso 4, verificar por medio de
firewall-cmd --state
Paso 6 - Permisos
Se debe modificar el archivo /etc/exports, ya que es ahí donde deben estar todos los directorios
que queremos que estén disponibles para NFS. Se puede poner desde uno hasta los necesarios,
este archivo es importante ya que aquí definimos algunos permisos y protocolos que podemos
usar.
/data xxx.xxx.xx.xx/24(rw,sync,no_root_squash)
24
Explicación:
-> sync -> Todos los cambios en el sistema de archivos correspondiente se vacían inmediatamente
al disco; Se esperan las respectivas operaciones de escritura
-> no_root_squash -> De forma predeterminada, cualquier solicitud de archivo realizada por el
usuario root en la máquina cliente es tratada como por el usuario nobody en el servidor. Si se
selecciona no_root_squash, el root en la máquina cliente tendrá el mismo nivel de acceso a los
archivos del sistema como root en el servidor.
Cliente NFS
En el lado cliente se deben instalar las utilidades NFS al igual que en el Servidor
Instalar utilidades
Montar el directorio
25
Verificación
[root@client ~]# df -h < IP o Servidor NFS >:/data 500G 1.7G 499G 1% /mnt/data
El siguiente es un ejemplo real de verificación (en este caso el cliente es Ubuntu, y el Servidor es
10.129.67.23)
Instalar nfs-common
sudo apt install nfs-common
26
E. Elabore una copia de seguridad de las carpetas / etc. Envíe al tutor el log de compresión
27
CONCLUSIONES
Esta implementación, utilizando máquinas virtuales, no pretende demostrar una mayor eficiencia
frente a maquinas reales. Pero, si se pudiese virtualizar la CPU y puentear (modo bridge) las
interfaces de red, que lograría una mejor eficiencia. Una de las grandes ventajas que tiene utilizar
VirtualBox es la manejabilidad del mismo, es muy versátil y te lo puedes llevar a donde quieras,
siempre y que en el otro PC al que vayas tengas instalado VirtualBox también. Para esto tan solo
tenemos que ir a la carpeta donde seleccionamos al principio la instalación de la máquina virtual
seleccionada.
«Sun Microsystems Announces Agreement to Acquire Innotek, Expanding Sun xVM Reach to the
Developer Desktop» (en inglés).
28