Mientras esperamos la publicacion de la ultima version de opensolaris (prevista para el mes de Marzo… pero hasta el momento no publicada), vamos a realizar la instalacion de un sistema de NAS basico de alto rendimiento instalable en equipos con poca capacidad de calculo que nos va a permitir el uso de las capacidades avanzadas de ZFS (snapshoting, clones, deduplicacion), de crossbow y de comstar (iscsi) todo ello con un footprint minimo (menos de 118 mb la instalacion completa ubicada en ramdisk).

Para ello vamos autilizar EON-NAS (Embedded Operating system/Networkin) en conjuncion con un GUI pensado para sistemas basados en zfs…(opensolaris, nexenta y EON), llamado napp-it. Con este conjunto podremos facilmente gestionar zfs, crear volumenes, asignar cuotas, crear comparticiones smb y nfs, crear usuarios, comprobar el estado de los servicios…

Ciertamente es una opcion muy interesante para sistemas de tipo legacy (32 bits), o la creacion de NAS de pequeño tamaño (con capacidades nunca soñadas para un NAS normal), con la ventaja de su pequeño footprint, la estabilidad de un sistema minimo (nucleo y servicios imprescindibles), si bien, claramante para instalaciones mayores es mas interesante la opcion de Nexentastor, como alternativa a Freenas es muy valida.

La ultima version de EON esta basada en el nucleo de la ultima version publicada de Solaris Express (proyecto denominado Nevada, y ya abandonado en favor del proyecto Indiana), existen 4 versiones diferentes: CIFS 64 y 32 bits y SAMBA 64 y 32 bits (en funcion al sistema de comparticion que utilicen, CIFS usa el integrado en el propio sistema de ZFS y samba permite mayor flexibilidad al incorporar el conocido programa de gestion de comparticion de ficheros).

Para utilizar el gui napp-it, es necesario utilizar la version basada en CIFS (32 o 64 bits).

Instalacion de EON: es sencillo, tras grabar el cd debemos arrancar el equipo desde esa unidad…tras su inicio nos pedira usuario y contraseña…

user: admin pass: eonstore
user: root pass: eonsolaris

Para simplificar primero haremos una instalacion en el disco duro (o disco usb o compact flash), para ello simplemente debemos ejecutar:

install.sh (como root)

o

pfexec install.sh (como admin… nos pedira la contraseña de root)

Nos realizara una serie de preguntas (seleccionar disco donde instalar, asi como diversas confirmaciones de borrado e instalacion).

Reiniciamos
Una nota… por defecto el usuario root no tiene permisos para acceder por ssh, asi que  o bien cambiamos la configuracion en /etc/ssh/sshd_config permitiendo el acceso o bien accedemos como admin y ejecutamos su para convertirnos en root… Si deseamos utilizar los servicios de SFTP para subir ficheros y modificar ficheros remotamente tendremos que optar por la primera opcion… para ello ejecutaremos como root
vi /etc/ssh/sshd_config

Y modificaremos la linea

PermitRootLogin no

quedando

PermitRootLogin yes
y reiniciamos el servicio ssh (como root)
svcadm restart ssh
El siguiente paso seria configurar la red…  para ello ejecutamos como root el comando “setup” (o bien como admin hacemos un “pfexec setup”), nos va a  pedir el nombre del  equipo (hostname), la direccion, el router por defecto etc… (aqui nuestro ejemplo)
eon:1:/etc/ssh#setup
This process will step thru the necessary configuration information.
Hostname: EONAS
Hostname: EONAS correct [y,n?] y
Configure network interface [e1000g0] via DHCP
(Dynamic Host Configuration Protocol) [y,n?] n
Enter IP address for [e1000g0]: 192.168.1.41
IP Address: 192.168.1.41 correct [y,n?] y
Enter subnet mask (eg 255.255.255.0): 255.255.255.0
Subnet mask: 255.255.255.0 correct [y,n?] y
Enter domain for [e1000g0] (eg eon.com): testing.pkisistemas.com
Domain: testing.pkisistemas.com correct [y,n?] y
Enter a default route [y,n?] 192.168.1.1
Enter a default route [y,n?] y
Enter default router IP 192.168.1.1
Hostname: EONAS
DHCP: NO
IP: 192.168.1.41/24
Netmask: 255.255.255.0
Domain: testing.pkisistemas.com
Default router: 192.168.1.1
Is this correct [y,n?] y
Initializing interfaces

Tras esto… perderemos la conexion a ssh (al cambiar la direccion ip y reiniciar la red)… tendremos que volver a conectar, con la nueva ip

El siguiente paso a realizar seria la instalacion de napp-it… para ello descargamos el fichero desde esta direccion: http://www.napp-it.org/index.html
Lo descomprimimos y nos queda una carpeta llamada snapp-it, dentro de dicha carpeta hay 2 ficheros que deben modificarse para funcionar en EON…
Del fichero admin.pl la linea
use CGI::Carp qw (fatalsToBrowser);
debe quedar
#      use CGI::Carp qw (fatalsToBrowser);
Y en el fichero napp-it.cfg se deben borrar las 2 ultimas lineas (con ello eliminamos las contraseñas del gui)
text_adminpw|!UmPlVR//7/Qs|
text_operatorpw|!UmPlVR//7/Qs|
Ya disponemos de la carpeta con los ficheros modificados… ahora debemos subir dicha carpeta con un programa sftp (winscp por ejemplo), y debemos ubicarla dentro de la carpeta /var/apache2/2.2/cgi-bin/
Ahora debemos establecer los permisos correctos para la ejecucion de los programas perl que contiene napp-it… para ello ejecutamos como root:
cd /var/apache2/2.2/cgi-bin
chown webservd:webservd napp-it
cd napp-it
chmod -R 755 ./*
Ahora solo queda probar el funcionamiento… para ello vamos al navegador y apuntamos a la direccion: http://192.168.1.71/cgi-bin/napp-it/admin.pl (la direccion ip dependerá de la que hayamos configurado anteriormente… ), si accedemos al entorno grafico seleccionamos admin como usuario y hacemos login (sin contraseña)… y ya tendremos el sistema instalado… pero quedaria un pequeño detalle a solucionar… y es que el usuario que ejecuta el servidor web (webservd) no tiene permisos para ejecutar comandos como root (a traves de pfexec, por lo que si bien podremos ver las caracteristicas… no podremos realizar modificacion alguna de las mismas (ni crear pools, no modificarlos etc)… asi que tenemos que realizar los siguientes cambios:
1º. Cambiar en /etc/security/exec_attr la linea

All:suser:cmd:::*:

Que quedará:
All:suser:cmd:::*:uid=0

Finalmente daremos permisos al usuario webservd

usermod -P’All’ webservd

————————————————————————————–
En este punto debemos explicar el funcionamiento de EON… pues es una mezcla entre live-cd y ficheros de configuracion permanentes… es decir, si en estos momentos arrancamos nos encontraremos que las modificaciones desaparecen… para evitar esto debemos actualizar los datos de la imagen del disco… pues al reiniciar el sistema volvera a su configuracion inicial (de serie), para guardar las configuraciones existe un script a ejecutar… OJO NO EJECUTAR TODAVIA LEER DEBAJO
updimg.sh /mnt/eon0/boot/x86.eon
Este comando creará una nueva imagen del sistema, y la guardara en el fichero x86.eon… mientras que las versiones anteriores las renombrara (la antigua x86.eon pasara a x86.eon.0, la x86.eon.0 pasa a x86.eon.1, y asi progresivamente… mientras que existe un fichero denominado x86.eon.oem que es la configuracion “de serie” o de fabrica (que se arranca seleccionando el modo OEM de grub).
PERO CUIDADO…. si realizamos este comando… NO NOS VA A GUARDAR NAPP-IT es decir… nos quedariamos sin instalacion de GUI… la razon… solamente se guardan al actualizar la imagen una seleccion concreta de carpetas y ficheros… entre los que no esta NAPP-IT, asi debemos editar el fichero que determina los ficheros a guardar,  asi editamos el fichero /mnt/eon0/.backup y añadimos las siguientes lineas:
/var/apache2/2.2/cgi-bin/*
/etc/security/exec_attr
2º. Ahora ya podemos ejecutar el actualizador de la imagen:
updimg.sh /mnt/eon0/boot/x86.eon
En la proxima entrada realizaremos un analisis mas detallado de las posiblidades que nos propone esta instalacion.

Tras tener definidos discos duros, caja y memoria a usar, tenemos que definir lo mas importante del sistema: procesador y placa.

En este punto y en tanto hemos decidido que vamos a utilizar un sistema basado en memoria ECC, la eleccion se simplifica de forma considerable. Asi, aunque en nuestra empresa somos mas partidarios de utilizar soluciones integramente intel (Chipset + procesador + networking) para garantizar la estabilidad del sistema, cuando hablamos de un home server todo cambia…¿la razon?… los chipset intel con soporte de memoria ECC son o bien de gamas muy altas o bien son de tipo servidor (para equipos Xeon).

INTEL

De este modo… si disponemos de capital suficiente… y no nos importa tener un consumo electrico superior (salvo que consigamos un modelo de Xeon de bajo consumo de la serie Conroe, Wolfdale o Woodcrest), esta es la opcion mas interesante.

Respecto a modelos y marcas concretos, en Intel no vamos a definir pero recomendariamos comprar placas Intel (integran mejor las caracteristicas de los chipsets), o supermicro. En cualquier caso son una opcion mas cara que la alternativa en AMD.

Debemos tener en cuenta asimismo que la placa elegida va a ser determinada en gran medida por la caja seleccionada, asi por ejemplo, si seleccionamos cajas mini-itx, la gama de placas que podemos adquirir se reduce de forma muy considerable (sobre todo si queremos soporte ECC).

Una cuestion que nos va a surgir es ¿y una placa atom?…posiblemente no sea una opcion muy indicada porque:

  1. . Algunos modelos de atom no tienen soporte 64 bits (algo muy importante para opensolaris, aunque no imprescindible).
  2. No tendriamos soporte de memoria ECC
  3. Tendriamos una escalabilidad del sistema limitada (en tanto la mayor parte de placas atom solamente tienen 2 conectores sata, siendo las opciones con 4 mas escasas).

No obstante y todo ello, si el objetivo primordial fuera reducir al maximo el consumo, esta claro que esta seria posiblemente la mejor opcion.

Como recomendacion de equipo intel, podemos dar la gama basica de servidores HP (gama proliant ml 110 G5), pues estan plenamente soportados en opensolaris, incluyen soporte de memoria ECC y estan dando un excelente rendimiento a un coste muy ajustado (si bien los consumos electricos son mayores de lo deseables).

AMD

Una vez definido que no podemos (o queremos) optar por la solucion intel … tenemos la alternativa AMD… personalmente la mayor parte de mis equipos (dejando aparte portatiles) han sido AMD, y debemos reconocer una relacion calidad precio muy interesante.

¿Porque la opcion de memoria ECC es mas barata en AMD que en Intel?.. muy sencillo, Intel hasta hace poco incorporaba el gestor de memoria en el Northbridge del chipset, con lo cual, para soportar memoria ECC debiamos buscar un chipset que incorporara ese soporte… AMD por el contrario desde hace tiempo utiliza el mismo diseño para sus procesadores de gama servidor y de gama “domestica”, simplemente varia la velocidad del reloj asi como el numero de nucleos , la cache y el numero de enlaces hypertransport que soporta… de este modo incorpora “de serie” un gestor de memoria integrado dentro del propio microprocesador (con ello el fabricante de la placa base se ahorra en el chipset la instalacion de gestores de memoria).. gracias a ello, podemos contar con una feature “enterprise” en nuestros equipos domesticos.

Por otro lado, el uso de la tecnologia hypertransport simplifica mucho el desarrollo de las placas (en tanto los chipset pueden tener menos elementos e incluso pueden funcionar a velocidades de reloj menores pues tienen un ancho de banda garantizado de comunicacion con la cpu)… en definitiva, durante mucho tiempo AMD ha estado tecnologicamente por delante de Intel (si bien esta situacion ha cambiado con el desarrollo de los procesadores Nehalem (I7, i5, i3) y el uso del QuickPath Interconnect.

Otro dato a tener en cuenta… los consumos del conjunto placa + micro son considerablemente inferiores en AMD que en Intel (excepcion hecha de modelos Atom), en primer lugar porque AMD tiene unos ratios TDP menores (habitualmente), y en segundo lugar porque la utilizacion de la tecnologia Hypertransport permite obtener rendimientos similares con menores frecuencias de trabajo (y menor consumo).

De este modo una vez definido que el equipo a a ser un AMD, debemos seleccionar microprocesador, en este punto tenemos la opcion de la gama BE de los antiguos Athlon X2 (con un TDP) de 45 W, un poco antiguos ya y dificiles de conseguir, o cualquier de la gama e (energy-efficient) de la antigua version K9… respecto a los nuevos micros de la familia K10 (Athlon II, phenom…) tenemos 2 opciones muy interesantes:

La gama “u” (ultra low voltage)… p.ejm Athlon II X2 260u… con un TDP de 25 W
La gama “e” (energy efficient)… p.ejm: Athlon II X2 240e…. con un TDP de 45 W
Personalmente voy a decantarme por un Athlon X2 4400 de la gama Brisbane (ninguno de los indicados arriba ¿la razon?… porque ya lo tengo y tiene un TDP “asumible” de 65 W (en definitiva consumo maximo de 65 W (consumo que hemos comprobado no alcanza habitualmente).
Definido el micro debemos seleccionar la placa… aqui estableceria diversas recomendaciones:
  • Marca reconocida (Asus es una buena opcion).
  • Que disponga de consdensadores de estado solido (mayor estabilidad para el microprocesador), y si estos son japoneses mejor que mejor.
  • Con un minimo de 4 SATA (6 mejor)
  • Tarjeta de red a Gigabit soportada por Opensolaris.
  • Disponible un slot PCI-e 1x (minimo)… mas adelante veremos el porque.
  • Obviamente que gestione la memoria ECC.
  • Que disipe correctamente el calor del chipset y de los transistores encargadas de suministrar al procesador el voltaje necesario.
La gama de opciones es casi infinita, de todas las opciones voy a hablar de 3…todas ellas placas Asus.
extraordinaria placa (un poco antigua ya… pero que soporta procesadores phenom), con soporte para 10 discos sata, 10 usb, 2 ide, doble ethernet a gigabit (con soporte de driver gldV3 para crossbow), 3 firewire, todo ello correctamente soportado por opensolaris, con refrigeracion pasiva por heat-pipes de chipset y resto de chips esenciales de la placa, por desgracia tiene un par de inconvenientes:
a. Formato atx
b. No cuenta con grafica integrada… con lo que la grafica va a incrementar nuestro consumo.
  • M2N68-CM

placa de gama media con interesantes caracteristicas:
4 sata y 1 ide, soporte memoria ECC, 4 modulos de memoria (hasta 8 Gb) 12 usb, condensadores de estado solido y tarjeta de red a gigabit, formato micro-ATX, soporte memoria ECC (con un gestor desde la propia bios que nos permite realizar escaneos periodicos de la misma):
Inconvenientes:
a. Tarjeta de red no directamente soportada (hay que descargar el driver nfo, que soporta  gldV3).
b. Solo 4 sata (aunque no es problema si instalamos el sistema en un disco ide).
6 sata 10 usb con soporte para toda la gama de micros AMD, y parece estar recomendado en varios foros por usuarios de Opensolaris (fuente).
En cualquier caso… ¿porque recomendamos que disponga de un slot PCI-e libre?  primero para poder instalar mas discos duros si fuera necesario (a traves de una tarjeta externa para discos sata)  y porque en algunos casos se ha comprobado que el rendimiento que estan dando las tarjetas de red no son todo lo adecuadas que deberian (ello puede estar causado por muchos factores, asi que si disponemos de un slot libre podremos instalar una tarjeta externa que este correctamente soportada por el Sistema operativo, y si es compatible con los drivers de tipo gldV3 mejor que mejor (cuando analicemos crossbow veremos en mayor detalle que es gldv3, el proyecto nemo y que tarjetas de red elegir)… pero para no liarnos… seleccionamos una tarjeta de red a gigabit intel y siempre acertaremos.

El objeto de esta serie de posts va a ser la instalación y configuración de un sistema de home server basado en opensolaris 2010.3 (si bien la mayor parte de las entradas son de aplicación en opensolaris 2009.6).

Antes de nada, debemos aclarar qué entendemos por Home server, asi como las premisas que vamos a utilizar en esta serie: entendemos por Home server al sistema de uso habitualmente domestico (si bien puede ser también utilizado en entornos SOHO) cuya finalidad principal es:

  • Almacenamiento y copia de seguridad de datos.
  • Servicio de ficheros e impresoras (comparticion).
  • Servicio de sistemas UPNP AV (servir los ficheros multimedia a los dispositivos indicados)
  • Cliente de programas p2p
  • Opcionálmente servidor web para pequeñas aplicaciones y servicios.

La selección del hardware y software la vamos a realizar en función a los siguientes parámetros:

  1. Soporte por el sistema operativo
  2. Consumo energético
  3. Fiabilidad y seguridad en los datos
  4. Precio (en el hardware… todo el software usado va a ser gratuito).

El objetivo final es reunir toda la información que actualmente o bien esta dispuesta en multitud de fuentes diferentes o bien esta concentrada en manuales genéricos de cientos de paginas, todo ello con la finalidad de que un usuario avanzado con conocimientos básicos del mundo opensolaris (o de los sistemas BSD o *nix en general) sea capaz de realizar sin problemas la instalación y configuración del sistema.

Intentaremos que los post sean lo mas descriptivos posible (incluyendo los resultados de las instalaciones, imagenes etc), e intentaremos abarcar un numero lo suficientemente amplio de opciones (partiendo de las opciones mas basicas, ampliando progresivamente con acciones opcionales).

Esperamos que el desarrollo de esta serie sea dinámico pudiendo ampliarlo con la participación  de los comentarios de los miembros de la comunidad de opensolaris que deseen participar.

Novedades en opensolaris

04 of Enero 2010

ZFS:
1º. Deduplicacion a block level…. basicamente si hay 2 bloques iguales (identico hash) cambia el puntero de uno hacia los datos del otro, dejando el espacio disponible. En zfs la deduplicacion es sincrona (se realiza durante el proceso de escritura en el disco).
Imaginemos en entornos de virtualizacion (cada vez mas abundantes) donde se instalan un numero elevado de maquinas virtuales que comparten el 70% del sistema operativo…el ahorro en espacio es considerable… pero ¿y el rendimiento?… tambien, en tanto los datos que pasan a la memoria cache (ya sea en ARC o ARC2) va a ser utilizada por todas las maquinas virtuales (no es necesario escribir varias copias del mismo bloque en la cache, con lo que disponemos de mayor cantidad de cache para otros bloques).

2º. zpool recovery support… muy importante y practica, en sistemas en el que los discos no hacen lo que dicen haber hecho, puede ocurrir lo teoricamente imposible… una corrupcion del pool a nivel de uberblock (unico nivel que no es corregible los errores, pues al resto de niveles la correccion se realiza de forma casi automatica a traves del self healing)… lo que hace es eliminar la ultima entrada del uberblock de tal modo que recupera la entrada inmediatamente anterior, la correccion se realiza con el siguiente comando (como de costumbre en zfs comandos complejos y dificiles de recordar…:-))

zpool clear -F

Por cierto… para quien tenga este problema (con versiones anteriores de opensolaris)… la solucion: arranca opensolaris con un live-cd (128 o superior)  ejecuta  zpool clear -F … y a funcionar.

Otra cuestion respecto a ZFS: la no inclusion de ZFS en OSX snow leopard… mucho se ha hablado de este tema, que si no estaban convencidos de la fiabilidad, que si habria que realizar muchos cambios internos en osx… La respuesta es mas simple que esa… y la tenemos en un mensaje de un foro en el que Jeff Bonwick (creador de ZFS) indica  lo siguiente:

> Apple can currently just take the ZFS CDDL code and incorporate it
> (like they did with DTrace), but it may be that they wanted a “private
> license” from Sun (with appropriate technical support and
> indemnification), and the two entities couldn’t come to mutually
> agreeable terms.

I cannot disclose details, but that is the essence of it.

Jeff

Continuaremos con las novedades en networking (que son tambien muy importantes)…ILB

Imaginemos la situacion, tenemos 3 equipos que actuan como servidores de aplicaciones web y queremos un balanceador de carga entre los diferentes equipos (asi como un reverse-proxy para que puedan acceder
a los mismos desde fuera de nuestra red)… tenemos varias opciones…

apache (tienen un modulo de reverse proxy y balanceo de carga),
instalar un programa de balanceo de carga y reverse proxy ah-hoc… o
podemos usar ILB … (integrated L3/L4 Load Balancer) en opensolaris.

¿como funciona?… basicamente creamos un grupo …

ilbadm create-servergroup -s servers=webserv1,webserv2,

webserv3 webgroup

Al que podemos añadir nuevos elementos:

ilbadm add-server -s servers=webserv4 webgroup

Y finalmente creamos una regla que especifique que puerto debemos balancear, que rango de ips estan involucradas, el algoritmo de balanceo usado, el tipo de chequeo para comprobar que el servidor esta
“vivo” asi como otras opciones adicionales (filtrado de paquetes…)

ilbadm create-rule -i port=80,vip=15.192.0.0,ipversion=IPv4 \
-m lbalg=hash-IP-port,type=NAT \
-o servergroup=webgroup webrule

Inconvenientes: Tiene una cantidad menor de featurares que los programas ad-hoc.

Ventajas: Rendimiento (al estar insertado en la propia pila ip del
kenel (como modulo eso si).
Sencillez de concepto y manejo.
Podemos configurar que puertos deseamos balancear (y no
solamente los habituales como http, o https…)
Podemos balancear rangos completos de puertos (o la
totalidad de las conexiones)
Integracion con kstat
Integracion con crossbow.

En estos momentos disponemos de una herramienta que, en conjuncion con crossbow, nos permite personalizar hasta limites insospechados la creacion de redes virtuales (muy utiles en sistemas de
virtualizacion).

Cerrar
Enviar por Correo