|
Sistema de Archivos de Solaris Unix |
ZFS (sistema de archivos) |
|
|
12 de junio de 2011 |
Universidad Tecnológica de Panamá
Facultad de Ingeniería en Sistemas Computacionales
Lic. En Redes Informáticas
“Sistemas Operativos I”
Profesora:
Giovanna Garrido
Trabajo de Investigación # 1
Sistema de Archivos de Solaris Unix
Fecha de entrega:
12 de mayo de 2011
Grupo:
VIF441
Pertenece a:
Lashmi Medina | 4-756-1795 |
John Eric Brown | 8-802-526 |
| |
| |
Contenido
1. Introducción
2. Qué es ZFS?
3. Capacidad
4. Plataformas
5. Auto reparación (Self-healing)
6. Modelo transaccional (Copy-on-write)
7. Instantáneas (Snapshots)
8. Dynamic striping
9. Tamaños de bloque variable
10. Espacios de almacenamiento (Storage pools)
11. Creación de sistemas de ficheros ligeros
12. Capacidades adicionales
13. CONCLUSIÓN
14. Glosario
15. Anexo
16. Bibliografía
1. Introducción
Desde que hizo su aparición Solaris 10, se presentó con un gran número de avances respecto a sus versiones anteriores, por ejemplo: el DTrace, la Virtualización por medio de contenedores, la sustitución del rc por svc, etc. En esta ocasión vamos a mostrar una de estas nuevas características: el ZFS.
El ZFS es un nuevo tipo de filesystem, combina una serie de tecnologías de almacenamiento en una forma automatizada y simple. ZFS es un sistema de archivos desarrollado por Sun Microsystems para su sistema operativo Solaris. El significado original era 'Zettabyte File System', pero ahora es un acrónimo recursivo.
El anuncio oficial de ZFS se produjo en Septiembre del 2004.El código fuente del producto final se integró en la rama principal de desarrollo de Solaris el 31 de octubre del 2005 y fue lanzado el 16 de noviembre de 2005 como parte del build 27 de OpenSolaris.
ZFS fue diseñado e implementado por un equipo de Sun liderado por Jeff Bonwick, ZFS destaca por su gran capacidad, integración de los conceptos anteriormente separados de sistema de ficheros y administrador de volúmenes en un solo producto, nueva estructura sobre el disco, sistemas de archivos ligeros, y una administración de espacios de almacenamiento sencilla.
2. Qué es ZFS?
Figura #1. El sistema de avance en Solaris 10 ofrece una capacidad prácticamente ilimitada, integridad de los datos comprobables, y la administración de casi cero.
ZFS es una nueva clase de sistema de ficheros que proporciona una administración simple, semántica transaccional, integridad de los datos, y una inmensa escalabilidad. ZFS no es una mejora incremental de la tecnología existente; es fundamentalmente un nuevo acercamiento a la administración/gestión de datos.
ZFS presenta un modelo reunido de almacenamiento que elimina totalmente el concepto de volúmenes y los problemas asociados de particiones, del aprovisionamiento, del ancho de banda perdido y del almacenamiento inmovilizado. Los millares de sistemas de ficheros pueden escribirse en un pool de almacenamiento común, cada uno consumiendo solamente tanto espacio como realmente necesite.
El ancho de banda combinado de E/S de todos los dispositivos en el pool está siempre disponible para todos los sistemas de ficheros. Todas las operaciones son transacciones ‘copia-en-escritura’, así que el estado de los datos en disco son siempre válidos. No es necesario realizar fsck(1M) en ZFS, nunca. Cada bloque es comprobado para prevenir la corrupción silenciosa de datos y éstos son comprobados en (duplicado espejo ó en RAID) configuraciones replicadas. Si se daña una copia, ZFS la detectará y utilizará otra copia para repararla.
ZFS introduce un nuevo modelo de replicación de datos llamado RAID-Z. Es similar al RAID-5, pero emplea anchura variable para eliminar el agujero de escritura que deja RAID-5 (corrupción debido a pérdida de energía entre los datos y las actualizaciones de paridad). Todo el RAID-Z escribe en full-stripe. No hay ninguna imposición de lectura-modificación-escritura, no hay agujeros en la escritura, y -la mejor parte-, ninguna necesidad de NVRAM en hardware.
Al igual que la memoria ECC, la idea es leer todos los datos para detectar errores latentes mientras éstos puedan ser corregidos. Un “fregado” atraviesa el pool entero del almacenamiento para leer cada copia de cada bloque, validarla contra la suma de comprobación 256-bit, y repararla en caso de necesidad. Todo ésto sucederá mientras el pool de almacenamiento siga vivo y en uso.
ZFS tiene un motor canalizado de E/S, similar en concepto a las tuberías de la CPU. La tubería funciona sobre dependencias de E/S y proporciona scoreboarding, prioridad, programación de plazo, out-of-order y agregación de E/S. La carga de E/S que traen otros sistemas de ficheros a sus rodillas son manejadas con facilidad por la tubería de E/S de ZFS.
ZFS proporciona snapshots ilimitados y clonaciones. Un snapshot es una copia inalterable de un punto en el tiempo de un sistema de ficheros, mientras que una copia es una copia escribible de un snapshot. Las clonaciones proporcionan una manera extremadamente eficiente de almacenar muchas copias de datos sobre volúmenes compartidos, tales como espacios de trabajo (workspaces), instalaciones de software, y clientes diskless (sin discos).
Las copias de seguridad (backups) y el restaurado (restore) ZFS son realizados a través de snapshots. Cualquier snapshot puede generar un backup completo, y cualquier par de snapshot puede generar un backup incremental. Los backups incrementales son tan eficientes que pueden ser utilizados para la réplicados remotos, por ejemplo: transmitir una actualización incremental cada 10 segundos.
No hay límites arbitrarios en ZFS. Puedes tener tantos ficheros como desees; offsets de 64-bit del fichero; enlaces/links ilimitados, entradas de directorio, snapshots, etcétera.
ZFS proporciona compresión incorporada. Además de reducir uso del espacio en x2 ó x3, la compresión también reduce la cantidad de E/S de 2 a 3 veces. Por ésta razón, permitir la compresión hace realmente que algunas cargas de trabajo vayan más rápidamente. Además de sistemas de ficheros, los pools de almacenamiento ZFS pueden proporcionar volúmenes para usos que necesitan la semántica crudo-dispositivo (raw-device). Por ejemplo, los volúmenes de ZFS se pueden utilizar como dispositivos de intercambio ó swap. Y si permitimos la compresión en un volumen de intercambio/swap, ahora tendríamos memoria virtual comprimida.
3. Capacidad
128 bits (27 veces la capacidad de un sistema de ficheros de 64 bits).
Los límites de ZFS están diseñados para ser tan grandes que no se encuentren nunca en la práctica. Respecto a la capacidad del sistema, Jeff Bonwick, el arquitecto jefe de Sun para ZFS, dijo "Llenar un sistema de archivos de 128 bits excedería los límites cuánticos de almacenamiento de la Tierra. No puedes rellenarlo sin hervir los océanos".
Algunos límites teóricos de ZFS son:
· 248: Número de snapshots en cualquier sistema de ficheros (2 × 1014).
· 248: Número de ficheros en un sistema de ficheros (2 × 1014).
· 16 exabytes: Tamaño máximo de un sistema de ficheros.
· 16 exabytes: Tamaño máximo de un fichero.
· 16 exabytes: Tamaño máximo de cualquier atributo.
· 3 × 1023 petabytes: Tamaño máximo de un zpool.
· 256: Número de atributos de un fichero (realmente limitado a 248 que es el número de ficheros que puede contener un sistema de ficheros ZFS).
· 256: Número de ficheros en un directorio (realmente limitado a 248 que es el número de ficheros que puede contener un sistema de ficheros ZFS).
· 264: Número de dispositivos en cualquier zpool.
· 264: Número de zpools en un sistema.
· 264: Número de sistemas de ficheros en un zpool.
“Como ejemplo de las capacidades expresadas por estos números, si un usuario crease 1000 ficheros por segundo, tardaría unos 9000 años en alcanzar el límite impuesto por el número de ficheros.”
4. Plataformas
ZFS es parte de Solaris para SPARC y Solaris para x86. Los Pools y sus sistemas de ficheros ZFS asociados / zvols pueden moverse entre sistemas que utilicen SPARC y x86. El complejo formato de punteros de bloque también proporciona que los metadatos del sistema de ficheros se almacenen de manera adaptada al Endianness de la máquina, permitiendo en un almacenamiento que contiene un pool ZFS se mueva entre sistemas que utilizan diferente orden para los bytes. Los bloques individuales de metadatos se escriben con el orden de bytes nativo del sistema que escribe el bloque. Cuando se lee, si el endianness no coincide, los bytes del metadato se intercambian en memoria. Como cabe esperar en los sistemas POSIX, desde el punto de vista de las aplicaciones, los ficheros son arrays de bytes, de manera que las aplicaciones siguen siendo responsables de copiar los datos de los ficheros con cualquier intercambio de bytes que sea necesario.
Sun ha indicado que está investigando el port del producto a Linux, aunque no hay planes para llevarlo a HP-UX o AIX,.3 FreeBSD 7, también da soporte a ZFS.4
Recientemente, Apple ha confirmado que utilizará ZFS en la próxima versión Server de su sistema operativo Mac OS X 10.6 'Snow Leopard'.
5. Auto reparación (Self-healing)
En pools de estructura mirror o raidz1 y raidz2 (equivalentes a raid 5 y raid 6 respectivamente pero sin el defecto de write-hole que sufren estos últimos), todos los datos son hasheados previamente a su escritura en el bloque lógico del pool, una vez escritos los datos, el crc es comprobado para verificar la correcta inscripción de los mismos, este crc es asociado a través de un sistema de metadatos al bloque lógico, de tal modo que cuando se accede a los datos del bloque lógico, se hace un chequeo de su integridad (a través de la comparación del crc guardado como metadato y el calculado con los datos del bloque), si hay discordancia entre los datos, siendo sistemas con redundancia, proceda a buscar en el bloque espejo (mirror) o a calcular los datos a través del sistema de paridad empleado (raidz1 y raidz2), si los datos obtenidos con dicha fuente son correctos (equivalencia en los crc calculado y archivado), se procede a la corrección de los datos del bloque dañado, así como al envío de los datos solicitados a la aplicación. Esta característica permite la detección de fallos tanto en discos como memorias, fuentes de alimentación, placas base etc.
6. Modelo transaccional (Copy-on-write)
ZFS utiliza un modelo transaccional copy-on-write. Todos los punteros a bloques de un sistema de ficheros contienen un checksum de 256 bits sobre el bloque apuntado, que se comprueba al leer el bloque. Los bloques que contienen datos activos no se sobrescriben nunca; en su lugar, se reserva un nuevo bloque, y los datos modificados se escriben en él, y entonces cualquier bloque de metadatos que lo referencie es, de modo similar, reubicado y escrito. Para reducir la sobrecarga de este proceso, se agregan varias actualizaciones en grupos de transacciones, y se utiliza un log de intentos cuando se necesitan escrituras síncronas.
7. Instantáneas (Snapshots)
Como ZFS no sobrescribe datos, tomar una instantánea simplemente significa no liberar los bloques utilizados por versiones antiguas de los datos. La ventaja es que las instantáneas se toman rápidamente y también son eficientes desde el punto de vista del espacio, pues comparten los datos sin modificar con el sistema de ficheros.
Se pueden crear instantáneas modificables (llamadas clones), lo que resulta en dos sistemas de ficheros independientes que se crean compartiendo un conjunto común de bloques. A medida que se realizan cambios los bloques del sistema de ficheros divergen, pero los bloques comunes se mantendrán independientemente de cuantos clones existan.
8. Dynamic striping
A medida que se añaden dispositivos al zpool, el ancho de las bandas se expande de forma automática para incluirlos, de manera que se utilizan todos los discos en el pool para balancear la carga de escrituras entre todos los dispositivos.
9. Tamaños de bloque variable
ZFS utiliza bloques de tamaño variable hasta 128K. El código disponible actualmente permite al administrador afinar el tamaño máximo de bloque utilizado, pues ciertas cargas no rinden bien con bloques grandes. También está contemplado un ajuste automático para adecuarse a las características de la carga de trabajo.
Si se activa la compresión se utilizan tamaños de bloque variable, si un bloque se puede comprimir para que quepa en un bloque de tamaño menor, se utiliza el bloque pequeño en el disco, de manera que no sólo se consume menos capacidad sino que se aumenta el throughput de entrada/salida (con el coste de aumentar la sobrecarga de la CPU).
10. Espacios de almacenamiento (Storage pools)
A diferencia de los sistemas de ficheros tradicionales que residen encima de un sólo dispositivo subyacente y por lo tanto requieren un gestor de volúmenes separado si se precisa un sistema de archivos mayor que el dispositivo, ZFS se apoya en espacios de almacenamiento virtuales (virtual storage pools). Los espacios se construyen a partir de uno o más dispositivos virtuales (vdevs), de los que cada uno es o bien un raw device, un mirror (RAID 1) de uno o más dispositivos todos los vdevs esa disponible para todos los sistemas de archivos del zpool.
Para limitar la cantidad de espacio que un sistema de ficheros puede ocupar, se pueden aplicar cuotas de disco, y garantizar que habrá espacio disponible para determinado sistema de ficheros. Se puede fijar una reserva de disco.
11. Creación de sistemas de ficheros ligeros
La creación de un nuevo sistema de ficheros en el interior de un espacio de almacenamiento ZFS es extremadamente rápida y fácil, mucho más parecida en tiempo y esfuerzo a crear un nuevo directorio en un sistema de archivos tradicional que al tiempo y esfuerzo necesario para crear un nuevo sistema de ficheros en cualquier otro SO tradicional. Estos sistemas de ficheros pueden tener cuotas reservadas y otras capacidades de administración útiles. Entre los usos posibles se encuentra la creación de un sistema de ficheros separado, no sólo un directorio, para cada usuario del sistema.
12. Capacidades adicionales
· Prioridad I/O explícita con deadline scheduling
· Ordenación y agregación de I/O globalmente óptima
· Multiple independent prefetch streams with automatic length and stride detection
· Parallel, constant-time directory operations
Para las aplicaciones ZFS es un sistema de ficheros estándar POSIX; no es necesario ningún cambio en las aplicaciones para guardar datos en ZFS.
13. CONCLUSIÓN
· Es un nuevo sistema de archivos dinámico del sistema operativo Solaris.
· Ofrece una administración sencilla que automatiza y consolida complicados conceptos de almacenamiento.
· Protege todos los datos con sumas de 64 bits que detectan y corrigen el daño de datos silenciosos.
· Es el primer sistema de archivos de 128 bits, ofrece una capacidad de 16.000 millones de veces superior a la de los sistemas de 32 o 64 bits, virtualmente es el único sistema de archivos con capacidad de almacenamiento prácticamente ilimitada.
14. Glosario
1. RAID: del inglés Redundant Array of Independent Disks, (conjunto redundante de discos independientes), anteriormente conocido como Redundant Array of Inexpensive Disks, (conjunto redundante de discos baratos). Hace referencia a un sistema de almacenamiento que usa múltiples discos duros o SSD entre los que se distribuyen o replican los datos.
2. RAID 5: usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 ha logrado popularidad gracias a su bajo coste de redundancia. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad. RAID 5 necesitará un mínimo de 3 discos para ser implementado.
3. RAID 6: amplía el nivel RAID 5 añadiendo otro bloque de paridad, por lo que divide los datos a nivel de bloques y distribuye los dos bloques de paridad entre todos los miembros del conjunto. El RAID 6 no era uno de los niveles RAID originales.
4. RAID Z: El sistema de archivos ZFS de Sun Microsystems implementa un esquema de redundancia integrado parecido al RAID 5 que se denomina RAID Z. Esta configuración evita el (agujero de escritura) del RAID 55 y la necesidad de la secuencia leer-modificar-escribir para operaciones de escrituras pequeñas efectuando sólo escrituras de divisiones (stripes) completas, espejando los bloques pequeños en lugar de protegerlos con el cálculo de paridad, lo que resulta posible gracias a que el sistema de archivos conoce la estructura de almacenamiento subyacente y puede gestionar el espacio adicional cuando lo necesita.
5. Pooling: Proceso que consiste en ofrecer un número de recursos pre configurados con el fin de mejorar el rendimiento.
6. ECC: (criptografía de curva elíptica) (n.) Criptografía de clave pública para entornos móviles o inalámbricos que trabaja en curvas elípticas.
7. Solaris(nombre lógico): (n.)Nombre que se utiliza normalmente para gestionar los dispositivos del sistema operativo Solaris. En los discos, suele tener la apariencia siguiente: /dev/rdsk/c0t2d0s2. Para cada nombre de dispositivo lógico de Solaris, existe un nombre de dispositivo físico subyacente de Solaris.
8. Solaris(nombre físico): (n.)Nombre que otorga un controlador de dispositivo a un dispositivo en el sistema operativo Solaris. El nombre aparece en un equipo Solaris en forma de ruta bajo el árbol /devices. Por ejemplo, un disco típico SI tiene un nombre físico de Solaris parecido a devices/sbus@1f,0/SUNW,fas@e,8800000/sd@6,0:c,raw.
9. Back up: Copiar el contenido de las carpetas del almacén de mensajes en un dispositivo de copia de seguridad.
10.Restore: Copiar el contenido de las carpetas de un dispositivo de copia de seguridad al almacén de mensajes.
11.Vdev: Un vdev (también conocido como "dispositivos virtuales") es: un solo disco, o dos o más discos que se reflejan, o un grupo de discos que se organizan con RAID-Z.
15. Anexo
16. Bibliografía
- ZFS (Sistema de Archivos). http://es.wikipedia.org/wiki/ZFS_%28sistema_de_archivos%29 (consultado el 03/06/2011)
- Que es ZFS. http://inieto.wordpress.com/2005/11/18/que-es-zfs/ (consultado el 04/06/2011).
- Introducción al uso de ZFS en Solaris. http://www.unixymas.com.mx/2010/09/introduccion-al-uso-de-zfs-en-solaris.html (consultado el 04/06/2011).
- Noticia: Sun Storage 7000, almacenamiento abierto y ecoeficiente. http://www.techweek.es/almacenamiento/noticias/1003981001501/sun-storage-7000-almacenamiento.1.html (consultado el 06/06/2011)
No hay comentarios:
Publicar un comentario