junio 20, 2008

ZFS

Qué es ZFS?

ZFS es un tipo de sistema de archivos nuevo, de fácil administración, con semántica transaccional, integridad total de los datos y un potencial inmenso de escalabilidad, desarrollado por la gente de Sun para su sistema operativo Solaris.

ZFS no es una mejora cuantitativa, incremental a la tecnología de almacenamiento existente: es una manera de encarar el concepto de storage de manera radicalmente diferente, un salto cualitativo algunos años hacia, lo que parece, será el futuro.

En palabras de Bill Moore, Ingeniero Distinguido de Sun, quien es parte del equipo principal de desarrollo de ZFS:

Haciendo una comparación, cuando en un servidor quieres aumentar la memoria (RAM), el proceso es sencillo: lo apagas, insertas módulos DIMM, vuelves a encender, y listo! No debes correr dimmconfig, no debes editar /etc/dimmtab, no debes crear dimms virtuales para montar en las aplicaciones. La memoria es un simple pool de recursos, administrado por el sistema operativo para soportar las aplicaciones. Si Firefox necesita más megabytes de memoria, simplemente la pide, y si está disponible, se le asigna. Cuando termina, la libera y de vuelta ocupa la porción de memoria disponible para otras aplicaciones. Es muy simple, una manera natural de pensar en relación al storage.

Con ZFS, nos preguntamos: porque no podemos manejar el almacenamiento en disco de la misma manera? Tenemos el modelo de almacenamiento en pools.

Los discos son como DIMMs, y los sistemas de archivos, como aplicaciones. Agregas dispositivos al almacenamiento, y ahora el sistema de archivos no está atado al concepto de disco físico. Inserta los datos al pool a medida que necesita guardar información en archivos, y a medida que borras archivos, devuelve ese espacio al pool para ser utilizado por otro sistema de archivos. De vuelta: es una manera muy natural, muy sencilla de administrar grandes cantidades de datos.


Características principales:

  • Integridad demostrable: todos los datos y metadatos, son verificados mediante checksums, lo cual permite detector errores de hardware (corrupción del disco duro, cables IDE sueltos, etc)
  • Actualización atómica: el estado del disco es consistente todo el tiempo, no necesitas realizar largos chequeos del sistema de archivos (no utiliza fsck!!) tras reboots forzados o fallas de alimentación de energía.
  • Snapshots y clones instantáneos: Hace posible tener eficientemente respaldos por hora, día y semana, también como experimentar nuevas configuraciones del sistema sin correr riesgos.
  • Compresión embebida opcional.
  • Altamente escalable
  • Modelo de pool storage: crear un sistema de archivos es tan fácil como crear un nuevo directorio! Puedes tener miles de sistemas de archivos, cada uno con su propia cuota y reserve, con diferentes propiedades (algoritmo de compresión, algoritmo de checksum, etc)
  • Stripes propios (RAID-0), mirrors (RAID-1) y RAID-Z (similar a un RAID-5 por software, pero más eficiente, debido al modelo transaccional de ZFS copy-on-write).
  • Mucho más!!! (tamaño de sectores variable, endianness adaptable, ...)

Suena divertido y desafiante no? Eso no es todo…además de las maravillas prometidas, la gente de Sun, lo publicó bajo licencia open source, y existen proyectos para portarlo a FreeBSD y Linux.


Enlaces interesantes:

junio 19, 2008

Comandos VxFS: extendfs_vxfs

NOMBRE

extendfs_vxfs - agranda un file system VxFS

SINOPSIS

extendfs [ -F vxfs ] [ -q ] [ -v ] [ -s tam ] especial

DISPONIBILIDAD

VRTSvxfs

DESCRIPCIÓN

Si la imagen del filesystem VxFS creada en especial no usa todo el espacio disponible, el comando extendfs aumenta la capacidad actualizando la estructura del sistema de archivos para incluir el espacio adicional.

La opción especial especifica el special file del dispositivo tanto de un logical volume como de una partición de disco. Si éste fuera un sistema de archivos montado, debes desmontarlo antes de correr el comando extendfs.

NOTAS

La Version 5 del disk layout soporta sistemas de archivos de hasta 32 terabytes. El tamaño al cual podemos agrandar el sistema de archivos en versión 5, depende del tamaño de bloques:

  • 1024 bytes 4,294,967,039 sectores (4 TB)
  • 2048 bytes 8,589,934,078 sectores (8 TB)
  • 4096 bytes 17,179,868,156 sectores (16 TB)
  • 8192 bytes 34,359,736,312 sectores (32 TB)
La Version 7 del disk layout soporta sistemas de archivos de hasta 256 terabytes.
El tamaño al cual podemos agrandar el sistema de archivos en versión 7, depende del tamaño de bloques:
  • 1024 bytes 34,359,736,312 sectores (32 TB)
  • 2048 bytes 68,719,472,624 sectores (64 TB)
  • 4096 bytes 137,438,945,248 sectores (128 TB)
  • 8192 bytes 274,877,890,496 sectores (256 TB)
El tamaño máximo soportado de un sistema de archivos es de 2 terabytes. Para aumentar el tamaño a 32 terabytes o más, el sistema de archivos debe estar en un sistema operativo con kernel de 64 bits y estar en un volumen de Veritas Volume Manager.

Si el sistema de archivos reside en un volume set, extendfs fallará. Use el comando fsvoladm para extender un sistema de archivos multi-volumen.

Cuando el tamaño del sistema de archivos se aumenta con el comando extendfs, el tamaño del log no aumenta automáticamente.


Problemas con Cluster File System

El comando extendfs reserva un volumen compartido al ser invocado. Si el volumen compartido es utilizado por otro comando, éste fallará.

Sea cuidadoso al acceder a volumenes compartidos con otras utilidades, tal como dd, que pueden escribir a disco. Puede llegar a destruir datos en otros nodos.

OPCIONES

-F vxfs

Especifica el tipo de sistema de archivos VxFS.

-q

Busca en especial el espacio a determinar. El sistema de archivos no es extendido.

-s "tam"

Especifica el numero de bloques DEV_BSIZE a añadir al sistema de archivos. Si tam es omitido, se utiliza el máximo tamaño posible,

-v

Especifica el modo verboso.

EJEMPLOS

Este ejemplo muestra como aumentar la capacidad de un sistema de archivos creada en un logical volume.

umount /dev/vg00/lvol1

lvextend -L tamaño_mayor/dev/vg00/lvol1

extendfs -F vxfs /dev/vg00/rlvol1

mount /dev/vg00/lvol1 mount_point

junio 04, 2008

Comandos: find

Mi amigo Quique, me prestó esta entrada en su blog, relativa al comando find:



"Este es mi primer post de caracter técnico a pedido de un amigo.

Parece algo minúsculo dedicarle un post a un solo comando de Unix / Linux, pero es de destacar la utilidad del mismo y como contrapartida éste, como tantos otros comando de unix, puede ser usado en Windos sin problemas mediante Cygwin, del que vamos a hablar mas adelante

En mi día a día he encontrado diversas formas y utilidades al find. ¿Pero qué tiene de especial?

find puede usarse tanto para buscar un elemento determinado como para ejecutar acciones sobre el mismo.

Vamos a los sintaxis básica:

find [path...] [expression]

Pero ésto no dice demasiado, asi que mejor me voy a centrar en los ejemplos.

1) Digamos que quiero buscar un archivo por su nombre en un directorio.. digamos /home

# find /home -name archivo.gz

2) Ahora suponemos que quiero buscar en mi /home… los archivos y solo los archivos que hayan sido modificados entre el día de hoy y el de ayer, es decir, que tengan menos de 2 días de modificados (incluye crearlos), y quiero verlos en modo extendido.

# find /home -type f -mtime -2 -exec ls-l {} \;

* Con -type indicamos el tipo de elemento (f para archivo y d para directorio).

* Con -mtime indico cuando fue modificado por última vez ese archivo ( si le ponemos -n son menos de n días ; si le ponemos n es hace exactamente n días (sin contar hoy); y si le ponemos +n (adiviná) son los con más de n días). Del mismo modo se puede usar el parámetro -atime (access time) o el -ctime (create time)

* Con -exec lo que hago es decirle al find que ejecute algún otro comando con los archivos que encontró (que van entre llaves en la sentencia). Ésto nos abre tremendamente las posibilidades de automatizar tareas ya que podemos por ejemplo comprimir, borrar o hacer cualquier cosa con un grupo de archivos , directorios o ambos que cumplan con las condiciones que le imponemos con el find.

Para terminar, otro parámetro que se le puede agregar a nustra sarta find es el -mount o -xdev (según el SO que usemos), esto es de gran utilidad, y sirve para que la búsqueda no se escape por otros filesystems montados en puntos que están donde estoy buscando.

Para mayor información hacer man find ;)

Bueno, espero sirva.

Hasta la próxima"

Goosh (Google Shell)

Navegando por alli, me encontré con una extrañeza:
Welcome to goosh.org - the unofficial google shell.

Tal como alli se indica, goosh.org es un sitio no-oficial de Google.com, pero que usa su motor de búsqueda; es una interface que se comporta de manera similar a un shell de unix, y sinceramente se parece bastante.

Aqui una captura de pantalla:

A medida que vas tipeando "comandos", te los va mostrando en la pantalla.
Tienes un pequeño menu de opciones, tecleando la palabra help o simplemente la letra h; esto te mostrara las distintas opciones que tienes en este pseudo-shell.
De ellas, logicamente, la mas interesante es la que te permite buscar en el motor de Google.com.

Además tienes la opcion lucky, que te trae una sitio al azar de la búsqueda seleccionada y trans para utilizar el famoso traductor de Google.


Con sólo introducir la palabra o conjunto de palabras que deseas buscar, seguido de enter te devuelve los primeros resultados, a los que puedes acceder haciendo clic en el resultado, o bien go seguido del numero de orden del resultado.





Si bien no me resulta cómodo para utilizarlo a diario, me pareció una idea original, muy bien desarrollada, conque van mis felicitaciones a <grothkopp@gmail.com> su autor.

junio 03, 2008

Las Caracteristicas menos conocidas de Solaris

(Less Known Features in Solaris = LKFS)


Tal el título de una excelente publicación bajo licencia CC que podemos encontrar en formato PDF aqui.

Abarca los siguientes temas:
  • Administración Solaris
    • Live Upgrade
    • Boot environment basados en snapshots ZFS.
    • Trabajando con SMF (Service Management Facilities)
    • Solaris Resource Manager
    • AutoFS
    • lockfs
  • Seguridad en Solaris
    • RBAC (Role Based Access Control)
    • IPSec
  • Storage
    • fssnap
    • iSCSI
    • Point-in-Time Copy
    • SamFS: Storage Archive Manager Filesystem
Lamentablemente, solo está en ingles, pero lo recomiendo ya que abarca temas poco convencionales y poco documentados y de un modo bastante didactico.
Espero lo disfruten tanto como yo!!!

Referencia Rápida Vi

Buscando un dato particular de vi (como borrar desde un punto determinado hasta el final del archivo), me topé con esta Guía de Referencia Rápida para uno de los editores mas utilizados en el mundo Unix (tranquilos los fans de emacs :P), me pareció interesante reproducirla aquí, el URL es:


http://goanna.cs.rmit.edu.au/~saied/Downloads/Basics/Basics.vi.pdf

Quick Reference: vi-based editors

S.Tahaghoghi, July 2000

Misc:

:r File_F read File_F

:w File_F write File_F

:wq exit with save

:q! exit without save

Cursor movement:

h/¬ left

l/® right

k/­ up

j/¯ down

B/b back one word

W/w forward one word

E/e forward to end of next word

(/) back/forward one sentence

{/} back/forward one paragraph

0/$ beginning/end of line

-/¿ beginning of previous/next line

[CTRL]-d down one page

[CTRL]-u up one page

H Home line of page

M Middle line of page

L Lowest line of page

Line_LG Go to line Line_L (if Line_L not specified, go to end of file)

Editing:

v mark (in vim)

Esc switch to command mode

I/i insert before first non-blank character on line / before cursor

A/a append at end of line/after cursor

O/o open a line above/below current line

R/r replace current character/until Escape

C/c change to end of line/specified point

D/d delete to end of line/specified point

X/x delete character to left/right

S/s substitute line / characters

Y/y yank to end of line/specified point

P/p paste before/after cursor position

~ toggle case

J join lines

gq justify lines

U/u undo last change / all changes to line

[CTRL]-r redo

. repeat last command

cM change M (e.g. cw = change word)

ncc change (n) line(s)

dM delete M

ndd delete (n) line(s)

yM yank M

nyy yank (n) line(s)

Examples:

d'r delete till r

d0 delete till beginning of line

d) delete till end of sentence

dL delete till last line on screen

dG delete till end of file

d1G delete till beginning of file

Search and Replace:

/ search forward

? search backward

n/N repeat search forward/backward

:[address]s/search-string/replace-string[/g]

Search

and replace (/g does globally)

Special characters:

^ begining of line

$ end of line

. any character

\< beginning of word

\> end of word

% whole file

[CTRL]-V next character is literal (e.g. Ctrl+V ¿ = ^M)

mayo 29, 2008

Comando batch

Cuando uno entra a la pagina del manual de los comandos at o batch en algún Unix, aparece en el encabezado lo siguiente:
at, batch, atq, atrm - queue,
examine or delete jobs for later execution
(Esto lo he comprobado en Solaris 8, 9 y 10, en Debian y Ubuntu Linux y en HP-UX 11.22)
Por lo que siempre pense que el comando "batch" lo que hacia era generar una especie de "alias" al comando at, enviaba el script o comando a ejecutar al background y listo.

Grande fue mi sorpresa hoy, al leer con detenimiento (como debo hacer siempre :D ) la pagina del manual, que el comando batch tiene un altisimo valor agregado: ejecuta el comando o script si y solo si, la carga del equipo no es demasiado elevada
batch executes commands when system load levels permit;
in other words, when the load average drops below 1.5, or the value
specified in the invocation of atd.
Interesante, y por sobre todo útil cuando necesitamos hacer algo en algún servidor, pero éste está algo pesadito ;)