Usamos cookies propias y de terceros para ayudarte en tu navegación. Si continuas navegando consideramos que aceptas el uso de cookies. OK

lunes, 25 de noviembre de 2013

Sistema de archivos ZFS Cuarta parte

En las entradas anteriores, primera parte, segunda parte, tercera parte y cuarta parte vimos una parte del mundo ZFS. En esta entrada veremos que sos las instantaneas y como manejarnos con ellas.   
Las instantáneas son una copia de solo lectura. Tiene las siguientes características: las instantáneas se mantienen después de reiniciar el sistema, el numero de instantáneas posibles es 2^64 y las instantáneas no utilizan espacio de almacenamiento. El espacio que ocupan procede del grupo de almacenamiento al que pertenece el sistema de archivo.

  • Creación y destrucción de instantáneas:
Se utiliza el comando zfs snapshot. El nombre de las instantáneas tienen el formato: nombredesistema@nombreinstantanea. 
Ej: Se creará una instantánea de tank/home/pepe. Se utiliza el comando: # zfs snapshot tank/home/pepe@lunes.
También es posible hacer instantáneas de todos los sistemas de archivos descendientes utilizando la opción –r. 
Ej: #zfs snapshot –r tank/home.

- Se pueden ver los snapshot mediante el comando: #zfs list –t snapshot.
- Las instantáneas no tienen propiedades modificables.
- Las instantáneas se destruyen mediante el comando destroy. 
  Ej:#zfs destroy tank/home/pepe@lunes.

- No es posible destruir un conjunto de datos si tiene asociada una instantánea.
  • Cambio de nombre a una instantánea:
Se le puede cambiar el nombre siempre que esté bajo el mismo conjunto de datos. 
Ej: #zfs rename tank/home/pepe@lunes tank/home/pepe@martes. 
No se podría hacer en este caso: 
Ej: #zfs rename tank/home/pepe@lunes pool/home/pepe@martes.
  • Visualizar la instantánea:
Las instantáneas  de los sistemas de archivos están disponibles en el directorio .zfs/snapshot contenido en el directorio raíz del sistema de archivos donde procede.

  • Restablecer de una instantánea anterior de ZFS:
El comando zfs roolback puede utilizarse para descartar todos los cambios efectuados desde una determinada instantánea. Para volver a una instantánea anterior, deben destruirse todas las intermedias. Puede hacerse especificando la opción –r. Si llega a haber un clon de la instantánea, también se debe destruir, por lo cual se debe especificar también la opción –R.
- El sistema de archivos debe estar desmontado.
- Uso del comando: Ej: # zfs rollback tank/home/pepe@martes. Si da error porque hay otras instantáneas anteriores (Ejemplo: del lunes) se usa la opción –r, o sea,  # zfs rollback –r tank/home/pepe@martes.


Clones de ZFS:

Un clon es un volumen o un sistema de archivos en que es posible escribir datos y cuyo contenido es igual al conjunto de datos del que precede y se realiza prácticamente de forma inmediata e inicialmente no consume espacio adicional.
- Los clones no heredan las propiedades de los conjuntos de datos del que proceden.
- El sistema de archivos original no puede destruirse si existe un clon del mismo.
  • Creación del clon:
Para crear un clon se usa el comando zfs clone. Primero se crea la instantánea y luego se la clona.  Ej: #zfs snapshot tank/home/pepe@lunes
#zfs clone tank/home/pepe@lunes tank/home/pepe2
  • Destrucción  del clon:
Ej: #zfs destroy tank/home/pepe2.
  •  Sustitución de un sistemas de archives ZFS por un clon:
El comando zfs promote puede utilizarse para sustituir un sistema de archivos ZFS. También se utiliza para destruir el sistema de archivos origen del cual se creó el clon. 
Ej: el ejemplo siguiente se clona el sistema de archivos tank/test/producto y a continuación el clon tank/productAbeta se convierte en el sistema de archivos tank/test/producto

# zfs create tank/test
# zfs create tank/test/productA
# zfs snapshot tank/test/productA@lunes
# zfs clone tank/test/product@lunes tank/test/productAbeta
# zfs list –r tank/test (para ver el listado )
# zfs promote tank/test/productAbeta (se sustituye)
# zfs rename tank/test/productA tank/test/productAviejo (se renombra)
# zfs rename tank/test/productAbeta tank/test/product (se renombra)
# zfs destroy tank/test/productAviejo (se destruye)

En la quinta parte veremos algunas propiedades mas de ZFS.

domingo, 17 de noviembre de 2013

Sistemas de archivo ZFS en Solaris Tercera parte

Despues de haber leído la primera  y la segunda parte de ZFS en Solaris, vamos a ver algunos ejemplos concretos de configuración real. Luego seguiremos con algunas opciones avanzadas.
En este caso, tengo un servidor Solaris 10 con 6 discos (Ver imagen). El primero (c0d1) es que el tiene el S.O. por lo cual vamos a trabajar con los demás discos.
Lo primero que debemos hacer es ejecutar #format para ver que discos estan instalados y reconocidos por el Solaris.

Ejecutamos un #zpool status para ver que conguntos ZFS están creados. En la imagen se ve que "no hay conjuntos disponibles", por lo cual procedemos a crear algunos. 
Primero creamos un pool ZFS  normal, con solo el disco c1t0d0 y le damos el nombre "discozfs". Luego hacemos un #df -h para asegurarnos que se ha creado. (Podemos ver en la imagen que la ultima linea está disponible "discozfs" montado en /discozfs).


















Ahora volvemos a ejecutar #zpool status y vemos el conjunto "discozfs".

















Ahora procedemos a crear un conjunto mirror llamado "discomirror"con dos discos, c1t1d0 y c1t2d0. Ejecutamos #  zpool create discomirror mirror c1t1d0  c1t2d0 y luego hacemos un #df -h para asegurarnos que se ha creado y montado. En la imagen vemos que existe un discomirror y que la capacidad es de 976M, esto es porque si bien utilizamos dos discos, al estar en mirror se pierde el 50 %.


 Nos quedan 2 disco libres de los 5 que teniamos al principio. Los utilizamos para crear un conjunto concatenado, o sea, un pool que tenga el tamaño de la suma de los dos discos. En este caso c2d0 c2d1. Ejecutamos # zpool create discoconcat c2d0 c2d1. Luego hacemos #df -h y vemos en la ultima linea el disco con el tamaño de 1.9 G.

 Como ahora vamos a crear un zpool en raid 5 y no nos queda ningun disco libre ejecutamos # zpool destroy "nombredelpool" para destruir todos los conjuntos y liberar todos los discos. En este caso yo destruí todos los pools. 
Creamos el raid 5, ejecutamos #zpool create discoraid5 raidz c1t0d0 c1t1d0 c1t2d0. Hacemos un df -h y vemos el nuevo pool creado. El tamaño es de 1.9 G porque si bien utilizamos 3 discos, al disponerlos como raid 5 perdemos el 33% que se utilizará para paridad.
















Destruimos nuevamente todos los pools y ejecutamos #zpool status para ve que no exista ningún pool. Creamos ahora un conjunto raid con doble paridad. Este conjunto tiene la particularidad que soporta la perdida de dos discos. (Recordad que el raid 5 con paridad simple soporta solo una perdida). Ejecutamos, entonces, #zpool create discoraid5 raidz2 c1t0d0 c1t1d0 c1t2d0. Hacemos #df -h y vemos que el pool se ha creado y que tiene el tamaño de 972M,  ya que al tener paridad doble pierde el 66% de la capacidad.

Una vez creado el pool en raidz2, vamos a crear un file system dentro. Utilizamos el comando "zfs".
Creamos un fs llamado "zfs1". Ejecutamos # zfs create discoraid5/zfs1. Ejecutamos df -h y vemos que se ha creado y montado automáticamente.


















En la cuarta parte vemos los clones zfs.

miércoles, 13 de noviembre de 2013

Sistemas de archivo ZFS en Solaris Segunda parte

En la primera parte de  Sistemas de archivo ZFS en Solaris vimos las principales características de este maravilloso sistema de archivos. Veremos ahora algunas más y otros ejemplos más de configuración.

Componente de un grupo de almacenamiento de ZFS:
  • Discos
- Al menos 128 Mbytes de tamaño.
- Puede ser un disco o un slice. Lo recomendado es que se utilice el disco completo. Solo se debería usar un slice si este comparte con otro slice ufs.
- ZFS utiliza etiquetas EFI. Se pueden utilizar los nombre de ruta completas a los discos (/dev/dsk/c1t0d0) o solo la abreviación (c1t0d0). También se puede utilizar volúmenes creado por algún manejador, pero no se recomienda.
  • Archivos
- ZFS permite utilizar archivos UFS como dispositivos virtuales del grupo de almacenamiento, pero no se recomienda.

  • Dispositivos virtuales.
- Representan los archivos o dispositivos de disco que se utilizan para crear el grupo de almacenamiento.


Funciones de réplica (RAID) de los grupos de almacenamiento de ZFS.

  • Configuración de grupos de almacenamiento duplicados:
- Dispositivo duplicado de dos vías:
# mirror c1t0d0  c2t0d0
- Dos dispositivos duplicados de tres vías:
#mirror  c1t0d0  c2t0d0  c3t0d0  mirror  c4t0d0  c5t0d0  c6t0d0

  • Grupos de almacenamiento en configuración RAID-Z (Similar al RAID 5)
- En RAID-Z, ZFS utiliza bandas de RAID de ancho variable para que cada operación de escritura se realice por completo en una banda.
- Es necesario utilizar al menos dos discos para una configuración RAID-Z de paridad sencilla y tres discos para una de doble paridad.
- Paridad sencilla con 3 discos: # raidz c0t0s0 c1t0d0 c2t0d0
- Doble paridad: # raidz c1t0d0 c2t0d0 raidz c3t0d0 c4t0d0

Cada argumento de raidz define un dispositivo virtual. En el primer ejemplo 1 dispositivo virtual, en el segundo ejemplo 2 dispositivos virtuales.


Reparación automática de los datos en una configuración replicada.

  • Cuando  ZFS usando RAID detecta datos en mal estado, busca la copia en la réplica y repara los datos automáticamente. 

Configuración del grupo de almacenamiento en bandas dinámicas

  • ZFS distribuye sus datos en forma dinámica en bandas repartidas por todos los dispositivos. La decisión de donde se colocarán los datos se hace en el momento de la escritura.

Creación y destrucción de grupos de almacenamiento de ZFS.

  • Creación: Para crear un grupo de almacenamiento se utiliza zpool create.
- El ejemplo muestra cómo crear un grupo de almacenamiento básico denominado tank y el sistema de archivos también llamado tank formado por dos discos.
#zpool create tank c1t0d0 c1t1d0

- El ejemplo muestra cómo crear un grupo de almacenamiento duplicado de dos vías denominado tank.
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
La palabra mirror indica que se está especificando un nuevo dispositivo virtual de nivel superior.

- El ejemplo muestra cómo crear un grupo de almacenamiento RAID-Z  de 4 discos de paridad sencilla denominado tank.
# zpool create tank raidz c1d0 c2d0 c3d0 c4d0
Podría crearse lo mismo usando slices:
# zpool create tank raidz c1d0s0 c2d0s0 c3d0s0 c4d0s0

- El ejemplo muestra cómo crear un grupo de almacenamiento RAID-Z  de 4 discos de doble paridad denominado tank.
# zpool create tank raidz2 c1d0 c2d0 c3d0 c4d0

-La opción –n del comando zpool create se utiliza para simular la creación del grupo de almacenamiento.

  • Destrucción: se utiliza zpool destroy.
Ejemplo: #zpool destroy tank

En la tercera parte seguiremos viendo las demás opciones de ZFS.

viernes, 8 de noviembre de 2013

Sistemas de archivo ZFS en Solaris

ZFS (Zettabyte File System) es un sistema de archivos desarrollado por Sun Microsystems para su sistema operativo Solaris. Dicho nombre proviene de la capacidad de direccionamiento, se dice que tal sistema de archivos puede direccionar cada granito de arena del mundo.
En 2004, cuando se creó, el cambio de paradigma fue rotundo ya que no solo era un sistema de archivos sino que contenia incorporado el manejo de volumenes. En tal sentido, ya no era necesario utilizar Solaris Volume Manager para implementar volumenes y sistemas RAID.

Las primcipales características de este sistema son: 
  • ZFS trabaja con grupos de almacenamiento, donde allí administra los dispositivos físicos.
  • ZFS es un sistema de archivo transaccional, lo que hace que su estado mantenga la coherencia e integridad dentro del disco. Utiliza la copia tras escritura. Los datos nunca se sobrescriben y cualquier operación se confirma por completo o se descarta por completo. Esto hace que el sistema de archivos no se deteriorará por un fallo eléctrico o caída del sistema, por lo cual tampoco necesita un comando como el fsck.
  • Con ZFS se efectúa la suma de comprobación  de todos los datos y metadatos utilizando un algoritmo seleccionado por el usuario. Estas se almacenan de modo que los fallos se detecten y puedan recuperarse automáticamente. Todo este proceso es transparente para el usuario. También ZFS admite redundancia usando RAID. Cuando ZFS detecta datos en mal estado, busca la copia en la réplica y repara los datos automáticamente.
  • ZFS está diseñado para gran expansión. Es un sistema de 128 Bits. Los metadatos se asigna en forma dinámica, por lo que no es preciso pre asignar inodos. Lo directorios pueden tener hasta 256 billones de entrada. Y  no existe limite de archivos para el sistema de archivos.
  • Una instantánea de ZFS se puede hacer con facilidad y no consume espacio adicional.
  • ZFS tiene un modo de administración más sencilla.

Nomenclatura de los componentes:
  • No se permiten componentes vacios.
  • Cada componente puede contener únicamente caracteres alfanuméricos, además de los caracteres especiales indicados a continuación: “_”, ”-”, ”:” y ”.”.
  • Los nombres de los grupo de almacenamiento deben empezar por una letra, pero no se admiten nombres como c[0-9] y palabras como mirror, raidz o spare.
  • Los nombres de los conjuntos de datos deben empezar por un carácter alfanumérico.
Requisitos y recomendaciones de software y hardware:
  • Solaris 10 6/06 o superior.
  • Disco con un espacio mínimo de 128 Mbytes. La cantidad mínima para un grupo de almacenamiento es de 64 Mbytes.
  • Se recomienda tener 1 Gb de RAM.
  • Si se crea una configuración de duplicación, se recomienda usar varios controladoras.

Creación de un sistema de archivos ZFS básico:

Existen dos comando básicos para el manejo de este sistemas de archivos: zfs y zpool.

El ejemplo muestra cómo crear un grupo de almacenamiento denominado tank y el sistema de archivos también llamado tank con un solo comando. Se da por supuesto que la totalidad del disco /dev/dsk/c1t0d0 está disponible para utilizarse:
 #zpool create tank c1t0d0
        
El nuevo sistema de  archivos ZFS tank puede utilizar todo el espacio disponible en c1t0d0 y         se monta automáticamente en /tank.
Si se quiere crear más sistemas de archivos dentro del grupo, ejemplo el sistema var dentro del grupo tank:  #zpool create tank c1t0d0
           #zfs create tank/var

El nuevo sistema de  archivos ZFS tank puede utilizar todo el espacio disponible en c1t0d0 y     se monta automáticamente en /tank/var. 
Creamos también los sistemas  /tank/usr, /tank/home y /tank/root:
#zfs create tank/usr
#zfs create tank/home
#zfs create tank/root

En la segunda parte veremos opciones más avanzadas y volúmenes.

domingo, 3 de noviembre de 2013

Multipathing en Solaris 10


IPMP (Multipathing) es una funcionalidad que otorga a un sistema operativo a tener un varias nics conectadas al mismo segmento de la red de manera que cuando la placa de red principal  falle otra de las nics tome su lugar. Este proceso es automático y lo detecta apenas el link se cae. Veamos como se logra:
 
1-      Se debe tener dos o mas placas de RED Fisica.2-   La variable de la OBP “local-mac-address?=true ” tiene que estar en true.  (Se cambia ejecutando desde Solaris  #eeprom “local-mac-address?=true” (En SPARC) 
3-      Configurar el /etc/hosts con una ip distinta dentro del rango a cada interfaz.
# cat /etc/hosts
# Internet hosts table
127.0.0.1     localhost
192.168.1.1                lan       # Placa principal
192.168.1.2                lan2     # Placa de backup
4-      Configurar las interfaces en los /etc/hostaname.xxx
# cat /etc/hostname.e1000g0
lan netmask + broadcast + group ipmo_group0 up

#cat /etc/hostname.e1000g1
lan2 netmask + broadcast + group ipmp_group0 up

Las placas deben formar parte del mismo grupo para que funcione, en este caso el grupo se llama "ipmp_group0"
5-      Reiniciar el sistema.

***  Despues de reiniciar y hacemos un ifconfig –a vamos a ver las interfaces físicas. Si la placa principal se cae, automáticamente se crea una subinterfaz sobre la placa de backup con la IP de la placa que falló.