martes, 21 de enero de 2014

FreeBSD 10.0 RELEASE

Ya contamos con nueva versión de FreeBSD y tiene Grandes cambios significativos no a nivel arquitectónico sino más bien en las aplicaciones que por años nos acompañaron como es el caso de GCC, BIND y pkg_add, ya que estas han sido removidas cuyos reemplazos comento ahora:
  • GCC ya no viene por defecto, en su lugar trae clang como compilador por defecto
  • BIND ha sido removido del sistema base y reemplazado por unbound
  • pkg_add/pkg_delete removidos y reemplasado por pkg(7) nueva generacion.
  • CVS es removido del sistema base en favor de SVN
Para mi estos cambios serán los más notorios a nivel de usuario, pero es muy bueno y modernizan o igualan bastante a FreeBSD frente a otros sistemas operativos.
Cabe destacar que también se puede instalar ZFS como zroot por defecto desde el instalador, evitando lo complejo que es hacerlo como en el articulo anterior FreeBSD 9.2 sobre ZFS 

viernes, 17 de enero de 2014

FreeBSD systat

Como verificar el rendimiento del sistema

Normalmente hay que buscar cuellos de botella cuando algo va mal, para lo cual un simple top no ayuda mucho.
systat te da toda la información en FreeBSD

systat -vmstat 1  # estadísticas del sistema (a intervalos de 1 segundo)
systat -tcp 1     # conexiones tcp (también probar con -ip)
systat -netstat 1 # conexiones activas
systat -ifstat 1  # trafico en la NIC activa
systat -iostat 1  # rendimiento CPU y disco

jueves, 16 de enero de 2014

Como instalar FreeBSD 9.2 con ZFS

Introducción

Debido a que es un poco complicado o engorroso de instalar FreeBSD con la raiz sobre ZFS y mediante varios artículos, no oficiales y el wiki oficial, me costo llegar a una configuración optima y básicamente, porque habían cabos sueltos que pienso atar en este articulo.

Para comenzar usaremos el nuevo bsdinstaller GPT, no MBR y seguiremos estas instrucciones paso a paso, para que saque máximo provecho a ZFS. Esta instalación no requiere tener EFI activado es en modo BIOS.
Nota 2014-01-27: Por estos días ha salido FreeBSD 10 y trae soporte desde el instalador, creando la misma configuración automáticamente. Y este documento solo podría ser usable si se desea usar ZFS como LVM para lo cual se debería aplicar la la opcion -V <size> en cada volumen. Lo que da un tamaño fijo a cada volumen, partición o punto de montaje.

Primera parte

Se debe efectuar una instalación normal y como de costumbre. Una vez arranca el disco o flash image de instalacion de freebsd selecionar el install.
Configurar el teclado:
Configurar el hostname en este caso freebsd porque será un template:
Configurar los paquetes ports y src pueden ser optativos, games fuera, la documentacion es altamente recomendable sobre todo para tener referencias a man-o:

Segunda parte

En la segunda parte se efectúan instrucciones en modo shell fuera del nuevo bsdinstaller y es aquí donde cambia el rumbo hacia el root sobre zfs, seleccionar shell y nos vamos al prompt.


Limpiamos el disco en este caso ada0 porque es sobre VBox VM.
gpart destroy -F ada0
Iniciar el disco GPT
gpart create -s gpt ada0
Crear el sector de arranque del disco GPT con un alineamiento especial para no usar zroot legacy.
gpart add -b 34 -s 94 -t freebsd-boot ada0
Crear el slice con el resto del disco sin crear freebsd-swap en vez de esto, ira sobre ZFS más adelante.
gpart add -t freebsd-zfs -l disk0 ada0
Marcar el disco como disco de arranque.
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
Configurar la flag de debug a 16 para ver por mensajes en caso de error
sysctl kern.geom.debugflags=0x10
Crear un gnop para linear los sectores a 4K esto mejora el rendimiento es una buena practica, indicando el altroot y finalmente montar.
gnop create -S 4096 /dev/gpt/disk0
zpool create -o altroot=/mnt -o cachefile=/var/tmp/zfs/zpool.cache zroot /dev/gpt/disk0.nop
zpool export zroot
gnop destroy /dev/gpt/disk0.nop
zfs mount zroot
Y esta el pool montado y se debe proceder a crear los volumes o particiones para optimizar mejor los recursos primero se configura el checksumer=fletcher4 que es lo más optimo para mantener la consistencia de los datos.
zfs set checksum=fletcher4 zroot
Para sacar provecho a zfs con la instalación se aplican opciones a cada volume, para así mejorar rendimiento, espacio y seguridad.
Nota 20/01/2014: El /var/crash no sirve de nada crearlo, ya que no se puede activar el dumpdev con ZFS por el momento, probé con un zvol pero es un dispositvo no valido, debido a que si el kernel cae antes de tener el modulo zfs.ko cargado no podría volcar core al zvol.
zfs create zroot/var
zfs create zroot/usr
zfs create zroot/usr/home
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on  -o setuid=off zroot/var/db/pkg
zfs create -o compression=lzjb -o exec=on  -o setuid=off zroot/var/tmp
#zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
Crear la swap.
zfs create -V 2G zroot/swap -o org.freebsd:swap=on zroot/swap -o checksum=off zroot/swap
Esto se puede dejar para la post instalación si no se ha seleccionado el paquete de ports en el bsdinstaller.
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
Crear un link del home y agregar permisos a los tmp.
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/tmp
chmod 1777 /mnt/var/tmp
Y ahora exit para volver a la instalación.
exit

Tercera parte
Retomamos el nuevo bsdinstaller para continuar con una instalación y post configuración normal, esto tarda algunos minutos y requiere un poco de interacción para configurar las cosas tipicas passwor, zona horaria, usuarios, etc.
Ingresar la password de root.
En las siguientes imágenes se puede ver como configurar la NIC con la red en la que esta la maquina IPv4 en este caso y sin IPv6, y el respectivo Gateway y DNS.






Configurar la zona horaria, en este caso se selecciona una zona de Europa, pero bien puede ser America/Santiago u otra.




Configurar OpenSSH para que levante al arranque, recordar ir al directorio /etc/ssh y activar el PermitRootLogin yes, debido a que FreeBSD no lo permite por defecto. Por otro lado, para respetar esta politica lo mejor es crear un usuario en el grupo wheel dos paso más adelante o después que la instalación finaliza.

Crear usuarios es opcional.
Exit, para salir del bsdinstaller.

Cuarta parte y final

Ya finalizada la post configuración (yes) para volver a la shell, en el cual se terminara de configurar lo necesario para arrancar con zfs.


Una vez completada la instalación hacer los siguientes paso:

Copiar el zpool.cache
cp /var/tmp/zpool.cache /mnt/boot/zfs

Configurar zfs para arranque automatico de sus modulos.
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf

Desactivar el almacenamiento de coredump's.
echo "kern.coredump=0" >> /etc/sysctl.conf

viernes, 10 de enero de 2014

Computer Science

En Chile y me da la sensación de que en la mayoría de los países de habla hispana, no suele ser común la carrera de ciencias de la computación, salvo honrosas excepciones (USACH.) 
Esta profesión es más bien impartida como "ingeniería en computación e informática". Pero algo que nos debe quedar claro tanto a estudiantes como profesionales del área, son las ramas de esta ciencia. Y por esto el siguiente gráfico:


La zona verde muestra la base que a mi criterio debería tener todo profesional en las ciencias de la computación. Con ese conocimiento podemos abordar el resto. Me explico la zona azul o aplicación es el desarrollo y la implantación de sistemas, la zona roja o técnica es la aplicación y manutención de las tecnologías existentes (SysAdmins, DBAs, técnicos de networking e infraestructura, etc.) Y la zona ámbar (naranja) o la teoría es el desarrollo y la búsqueda de nuevos teoremas para solucionar los problemas existentes y desarrollar nuevos paradigmas. Concluyentemente digo que la base es de color verde y por ende la mas importante.

También quiero ahondar en el estado del arte mediante un gráfico de artefactos que permiten seguir avanzando en investigación y desarrollo:


He creado esta imagen de como veo las capas de software sobre el hardware, no olvidar que básicamente este ultimo es el que más avanza, me quedaría pendiente desglosar las capas del sistema operativo, pero es tema para otro post.