ZFS | |
---|---|
Desarrollador | Oracle (anteriormente Sun Microsystems ) , desarrolladores de OpenZFS |
sistema de archivos | ZFS - Sistema de archivos Zettabyte |
Día de entrega | Noviembre de 2005 ( OpenSolaris ) |
Estructura | |
Contenido de la carpeta | Tabla hash expandible |
Restricciones | |
Tamaño máximo de archivo | 16 exebites |
Máximo de archivos | 248 _ |
Longitud máxima del nombre de archivo | 255 bytes |
Tamaño de volumen máximo | 256 zebibytes |
Caracteres válidos en los títulos | sin codificación o UTF-8 (opcional) |
Capacidades | |
Precisión de almacenamiento de fecha | 1 n [1] |
Flujos de metadatos | Sí (llamado Atributos extendidos ) |
Atributos | POSIX , adicional |
Derechos de acceso | POSIX |
Compresión de fondo | Sí |
Cifrado de fondo | De la versión 30 del grupo |
SO compatible | Solaris , OpenSolaris , FreeBSD , Linux (a través de FUSE o un módulo de kernel separado ( ZFS en Linux )), Apple Mac OS X 10.5 , Windows ( ZFSin ) |
ZFS (Sistema de archivos Zettabyte) es un sistema de archivos de copia en escritura de árbol Merkle creado por Sun Microsystems en 2004–2005 para el sistema operativo Solaris . Este sistema de archivos admite grandes cantidades de datos, combina los conceptos de un sistema de archivos, arreglos RAID , un administrador de disco lógico (volumen) , los principios de los sistemas de archivos livianos y proporciona una administración simple de volúmenes de almacenamiento de datos. Cuando se creó ZFS, su estructura de diseño de datos era innovadora. Hay implementaciones abiertas de ZFS, en particular, OpenZFS tiene licencia bajo CDDL ( Licencia de desarrollo y distribución común ). Debido a restricciones de licencia, la compatibilidad con ZFS en GNU/Linux es limitada, lo que no ocurre con el sistema de archivos Btrfs similar a ZFS . ZFS se encuentra actualmente en desarrollo activo.
Las principales ventajas de ZFS son su control total sobre los medios físicos y los volúmenes lógicos y el mantenimiento constante de la consistencia del sistema de archivos. Operando en diferentes niveles de abstracción de datos, ZFS puede proporcionarles acceso de alta velocidad, controlar su integridad y minimizar la fragmentación de datos . ZFS es altamente configurable, le permite cambiar la cantidad de espacio en disco en el proceso y establecer diferentes tamaños de bloques de datos para diferentes aplicaciones, y proporciona operaciones paralelas de lectura y escritura.
ZFS fue diseñado y construido en Sun Microsystems por un equipo dirigido por Jeff Bonwick y anunciado el 14 de septiembre de 2004 [2] . El código fuente de la versión final se integró en la rama principal de Solaris el 31 de octubre de 2005 [3] .
ZFS se incluyó en OpenSolaris build 27 , lanzado el 16 de noviembre de 2005. Sun declaró que ZFS se integró en la actualización 6/06 para Solaris 10 en junio de 2006, un año después de la apertura de la comunidad OpenSolaris [4] .
ZFS se llamó originalmente " Sistema de archivos Zettabyte ", pero luego el nombre se convirtió en un acrónimo simple [5] .
ZFS se lanzó bajo una licencia comercial como parte del sistema operativo Solaris, luego SUN Microsystems ZFS de código abierto en el proyecto OpenSolaris bajo una CDDL. Después de la adquisición de SUN Microsystems por parte de Oracle, el código se cerró nuevamente, pero en ese momento ZFS ya estaba incluido en FreeBSD y otros proyectos de código abierto que se desarrollaron de forma independiente e intercambiaron códigos fuente a través de "backports" ( ing. backports ) [6] .
En 2013, se lanzó el proyecto OpenZFS [7] [8] , que toma nuevas funciones y correcciones de Illumos y las distribuye a todos los puertos a otras plataformas, y viceversa [9] .
ZFS - 128 bits[10] un sistema de archivos que le permite almacenar 18,4 × 10 18 veces más datos que todos los sistemas de 64 bits conocidos. ZFS está diseñado para que sus limitaciones sean tan inalcanzables que no se encontrarán en la práctica en un futuro previsible [11] .
Algunos límites teóricos en ZFS:
Al mismo tiempo, las utilidades de administración del sistema de archivos imponen restricciones adicionales.
A diferencia de los sistemas de archivos tradicionales, que residen en un solo dispositivo y, por lo tanto, requieren un administrador de volumen cuando se usan en más de un dispositivo, ZFS se basa en grupos de almacenamiento virtual llamados zpools . El grupo se crea a partir de dispositivos virtuales ( vdevs ), cada uno de los cuales es un dispositivo físico o un espejo ( RAID 1) de uno o más dispositivos, o ( RAID Z) un grupo de dos o más dispositivos. La capacidad de todos los vdevs está disponible para todos los sistemas de archivos en el zpool .
Se puede establecer una cuota para limitar el espacio disponible para un sistema de archivos o volumen en particular . Además, es posible utilizar la reserva de disco (límite); esto garantiza que siempre habrá espacio disponible para un sistema de archivos o volumen en particular.
Versiones de grupos de ZFSHay diferentes versiones del sistema de archivos ZFS y versiones del grupo ZFS ( zpool ), y hay diferentes funciones disponibles según la versión. A partir de noviembre de 2012, hay 34 versiones del grupo ZFS. Todas las versiones del grupo se lanzan inicialmente para Solaris .
La versión 2 incluía soporte para metadatos replicados ( bloques ídem ) . Debido a la estructura de árbol del formato de disco ZFS, los errores irrecuperables en los metadatos del grupo pueden hacer que el grupo no se pueda abrir. Esta función proporciona replicación automática de metadatos (hasta tres copias de cada bloque ) independientemente de la redundancia subyacente en todo el grupo . Por ejemplo, en un grupo con un solo espejo, los metadatos más críticos se escribirán tres veces en cada lado del espejo, para un total de seis copias. Esto garantiza que si se pierden datos debido a daños, todos los datos del grupo serán localizables y el grupo estará en buen estado.
La versión 3 incluye soporte para repuestos dinámicos y paridad dual RAID-Z (raidz2); la versión 4 introdujo soporte para mantener el historial del grupo ZFS ( zpool history); la versión 5 agregó soporte para la compresión sobre la marcha para conjuntos de datos ZFS utilizando el método gzip ; la versión 6 incluye soporte para la propiedad bootfs (le permite cambiar el FS raíz del sistema operativo de arranque a través de un atributo, además de la opción del cargador de arranque).
La versión 7 introdujo soporte para un "registro de destino" ( ZFS Intent Log , ZIL , literalmente "registro de intento"), que proporciona a las aplicaciones la capacidad de saber que los datos que han modificado están en un almacenamiento estable, al regresar de una llamada al sistema . El registro de destino mantiene registros de estas llamadas al sistema, se reproducen si hubo una falla de energía o un error crítico en el que el grupo principal no reconoció su ejecución. Cuando el diario de destino está fuera del grupo principal, asigna bloques que se encadenan a través del grupo.
En la versión 8, se implementa la capacidad de delegar tareas administrativas para administrar ZFS a usuarios normales; antes de eso, solo los administradores tenían la capacidad de administrar ZFS.
En la versión 9, además de las funciones de cuotas y reservas existentes, se ha agregado la asignación de cuotas y reservas, que no incluye el consumo de espacio en disco por parte de estructuras de datos anidadas, como clones y cuotas ( zfs set refquota, zfs set refreservation). La reserva se establece automáticamente cuando el volumen ZFS no disperso ( no disperso ) creado coincide con el tamaño de la partición. También en la versión 9, se ha agregado soporte para el servidor CIFS .
La versión 10 introdujo la capacidad de agregar dispositivos a un grupo como dispositivos de almacenamiento en caché para proporcionar una capa adicional de almacenamiento en caché entre la memoria principal y el disco. El uso de dispositivos de almacenamiento en caché mejora significativamente el rendimiento para lecturas pesadas de contenido en orden, principalmente estático. En la versión 12, apareció el soporte para las propiedades de instantáneas, en la versión 13, las siguientes propiedades de instantáneas estuvieron disponibles: usedbysnapshots, usedbychildren, usedbyrefreservation, usedbydataset, en la versión 14, las propiedades y también están disponibles passthrough-x, aclinheriten la versión 15, las propiedades , , userusedestán groupusedincluidas . userquotagroupquota
La versión 17 introdujo soporte para RAID-Z de triple paridad . La versión 18 admite la función de retención de instantáneas de ZFS . A partir de la versión 19, se hizo posible eliminar un dispositivo adjunto para almacenar registros; anteriormente, dicho dispositivo no se podía eliminar. La versión 20 incluye el algoritmo de compresión zle .
La versión 21 introduce la deduplicación (uso principal de zle). A partir de la versión 30 , se admite el cifrado del sistema de archivos , a partir de la versión 32, se admite un bloque de 1 MB y, en la versión 34, se implementa la creación de redes compartidas con herencia entre sistemas de archivos.
La versión 37 agregó soporte para el algoritmo de compresión lz4 (más eficiente y rápido que los existentes).
ZFS utiliza un modelo de transacción de objetos basado en el mecanismo de copia en escritura . Todos los punteros a bloques dentro del sistema de archivos contienen una suma de verificación de 256 bits en el bloque de destino, que se verifica cuando se lee el bloque. Se puede usar la suma de Fletcher o la función hash criptográfica SHA-256 como suma de verificación . [13] Se pueden elegir otras sumas de verificación para los datos. Los bloques de datos que contienen datos activos (en este momento) nunca se sobrescriben juntos; por el contrario, se asigna un nuevo bloque, se escriben los datos modificados y luego los metadatos de cualquier bloque que se refiera a él, por lo que todo se reasigna y se escribe. Para reducir la sobrecarga, este proceso agrupa varias actualizaciones en un grupo de transacciones y, si es necesario, registra el uso en escrituras sincrónicas.
El grupo de ZFS mantiene un registro de las últimas docenas de versiones de los datos del grupo (durante los últimos minutos, horas o días, según la intensidad del cambio de datos), diseñado para restaurar los datos en caso de que un error del sistema haya provocado el cambio. piscina en un estado inoperable e incurable. Con la copia en escritura, todas estas versiones de los datos en el registro son independientes pero comparten datos comunes.
El modelo de copia por escritura en ZFS tiene otra gran ventaja: cuando ZFS escribe datos nuevos, en lugar de liberar bloques que contienen datos antiguos, puede guardarlos creando instantáneas del sistema de archivos. Las instantáneas en ZFS se crean muy rápidamente (con la excepción de los casos excepcionales de bloqueo de un grupo largo por una operación que lleva mucho tiempo con el FS), ya que todos los datos de la instantánea ya están guardados; también son eficientes en el espacio, ya que cualquier dato sin cambios se comparte (compartido) entre el sistema de archivos y su instantánea.
Además, se puede crear una instantánea grabable ("clon") a partir de cualquier instantánea, lo que da como resultado dos o más sistemas de archivos o volúmenes independientes que comparten un complejo de bloques para reducir el espacio total y reducir el tiempo de creación de clones. Tan pronto como se realizan cambios en cualquier clon del sistema de archivos, se crean bloques de datos nuevos para él y los datos antiguos permanecen en todos los demás clones.
Cuando se crea, un clon se vincula a la instantánea a partir de la cual se creó. Esta instantánea no se puede destruir siempre que al menos dos clones hagan referencia a ella (incluido el almacenamiento original). Para eliminar este enlace, se debe volver a crear el almacenamiento (sistema de archivos o volumen), pero esto se hace fácilmente mediante la transferencia, y puede evitar ocupar espacio adicional en el grupo si habilita la deduplicación durante la transferencia y transfiere el almacenamiento dentro del misma piscina.
Las instantáneas le permiten acceder a los datos que estaban en la bóveda en el momento en que se tomó la instantánea como la misma bóveda de solo lectura, independientemente de la bóveda original, sus clones y otras instantáneas. También le permiten restaurar de forma rápida y precisa los datos de almacenamiento a un estado de instantánea.
Las instantáneas y los clones se pueden crear de forma recursiva para un árbol de sistemas de archivos. Esto evita la necesidad de repetir comandos y administrar transacciones usted mismo, ya que la creación de instantáneas recursivas es atómica.
La creación de instantáneas y clones (así como nuevos sistemas de archivos) puede ser difícil debido a las limitaciones de ZFS. Las instantáneas y los clones no se pueden crear si el nombre de al menos uno de ellos excede el límite (y el nombre completo de la instantánea es más largo que el nombre completo del original por al menos 2 caracteres), si hay un conflicto de nombres (esencial para la creación de instantáneas recursivas), si se superan las nuevas cuotas o las reservas no son viables (las cuotas y las reservas se heredan del original).
En función de las instantáneas, se implementan copias de seguridad de almacenamiento incrementales. Mediante el reenvío de instantáneas, puede recrear la misma secuencia de instantáneas en cualquier grupo de ZFS. Después de crear nuevas instantáneas del original, la transferencia incremental de instantáneas recrea los mismos datos actualizados en la copia o el clon, a menos que haya un conflicto de actualización. Las instantáneas también le permiten saber qué archivos se han modificado, creado, eliminado y renombrado entre instantáneas.
La partición dinámica de todos los dispositivos con el máximo rendimiento significa que se incluyen dispositivos adicionales en el zpool, los canales más amplios se expanden automáticamente para incluir el uso de todos los discos en el grupo, esto equilibra la carga de escritura.
ZFS utiliza un tamaño de bloque variable de hasta 1 megabyte (desde la versión 32 del grupo, solía ser de hasta 128 kilobytes). Actualmente, el administrador puede establecer el tamaño máximo de bloque utilizado, pero algunos trabajos fallarán (o fallarán) si se usan bloques demasiado grandes. Los ajustes de rendimiento automáticos corresponden a los privilegios.
Si la compresión está habilitada, se utilizan tamaños de bloque variables. Si un bloque ha sido comprimido, puede fusionarse en un bloque más pequeño, lo que significa que se usa menos espacio en disco y se incrementa el rendimiento (Entrada/Salida) (a costa de un mayor uso de CPU y RAM para operaciones de compresión y descompresión).
El grupo ZFS también admite diferentes tamaños de sector de dispositivos y selecciona automáticamente el tamaño de bloque más grande de los dispositivos especificados cuando se creó el grupo (después de eso, el tamaño del bloque del grupo no se puede cambiar). Se admiten de forma estable tamaños de 512 bytes, 4 KiB (4K). También se admiten tamaños de bloque grandes, pero es posible que el sistema operativo no funcione de manera estable.
El control de integridad de extremo a extremo se refiere a escribir una suma de verificación en el disco para cada bloque de datos, y la suma de verificación y los datos están especialmente espaciados lo más lejos posible entre sí para reducir la probabilidad de que se dañen juntos. Si hay varios dispositivos en el grupo, para los datos ubicados en uno de ellos, la suma de verificación se escribirá en el otro. Las sumas de verificación se calculan no solo para los datos, sino también para los metadatos, y resulta que el grupo siempre tiene una suma de verificación para cada bloque de información.
Al leer cualquier bloque, se calcula su suma de verificación y el resultado se compara con la suma de verificación almacenada en el disco. En caso de discrepancia, el error se detecta inmediatamente. Por supuesto, si no se planificó ninguna redundancia de antemano en el grupo (ni RAID-Z ni de otro tipo), el error no se puede corregir, pero los datos dañados no se presentarán como verdaderos.
El objetivo de la integridad de datos de extremo a extremo es evitar la corrupción de datos no detectada debido a una falla del firmware o del hardware del controlador o la unidad. Aunque la probabilidad de que ocurra tal evento parece baja, algunos estudios muestran que es bastante significativo para organizaciones de cualquier tamaño [14] .
Los programas que leen o escriben datos deben ser compatibles con estas funciones (la posibilidad de que no se lea un solo bloque de un archivo, la posibilidad de que el grupo entre en un estado de espera de recuperación de almacenamiento con E/S bloqueada por un tiempo indefinido).
En ZFS, manipular un sistema de archivos en un grupo es más fácil que la cantidad de manipulación en los sistemas de archivos tradicionales; el tiempo y el esfuerzo necesarios para crear o modificar un sistema de archivos ZFS se parece más a la cantidad de trabajo que implica un nuevo directorio que a la manipulación de particiones en otras tecnologías.
Las características adicionales incluyen una función para establecer una prioridad de E/S específica con un período de programación, soporte para múltiples subprocesos independientes con detección automática preventiva de longitud y paso, limpieza y corrección inteligentes [15] , carga y uso compartido de discos en un grupo [16] , reproducción múltiple de metadatos [ 17] , soporte para el mecanismo de copia en escritura , la capacidad de seleccionar un sistema de archivos de arranque en el cargador del sistema operativo , instalar el sistema de archivos de arranque principal, crear varios sistemas de archivos raíz, uno de los cuales (con todos los niños) se utilizará al cargar el sistema operativo , la capacidad de integrar software y actualizaciones del sistema operativo con la creación de instantáneas y clones de sistemas de archivos en los que se almacenan los programas, y el uso de estas instantáneas para restaurar fácilmente una versión anterior y clones para crear un sistema de arranque múltiple con la capacidad de arrancar diferentes configuraciones o versiones del sistema operativo ( Solaris se actualiza de forma predeterminada), una opción para limitando los nombres de archivo a texto válido en UTF-8 en la forma normal seleccionada, una opción para no tener en cuenta las mayúsculas y minúsculas de los caracteres en los nombres de archivo.
ZFS también presenta el reemplazo adaptable de caché ( ARC ), un nuevo método para administrar el caché en lugar de las páginas virtuales de caché en memoria tradicionales de Solaris.
Los arreglos y el ZFS configurado en ellos se pueden transferir entre diferentes plataformas, incluso si tienen un endian diferente. El formato de bloque ZFS permite la detección automática y el reordenamiento de bytes sobre la marcha cuando se leen los metadatos.
Al mismo tiempo, el diferente orden de bytes en diferentes sistemas no afecta a las aplicaciones de ninguna manera, los archivos para ellas siguen siendo una simple secuencia de bytes. Por lo tanto, las aplicaciones son responsables del formato independiente (plataforma) ya dentro de los propios archivos.
Los atributos del grupo son una forma de controlar las funciones y la configuración de un grupo. Tienen tipos especiales y restricciones de escritura. Indican si se puede escribir o leer en el grupo, si la desduplicación de datos está habilitada, FS para cargar el sistema operativo de forma predeterminada, una raíz de montaje alternativa, características del grupo y más.
Los atributos del sistema del repositorio son una forma de administrar las capacidades y la configuración de los repositorios. Tienen tipos especiales y restricciones de escritura. Especifican la configuración para el cifrado, la compresión, las sumas de verificación, la deduplicación, la copia de seguridad, el almacenamiento en caché, el tamaño de los bloques de almacenamiento de datos de almacenamientos específicos. También indican el tamaño de los volúmenes, puntos de montaje de FS, disponibilidad de almacenamientos individuales para escritura, pertenencia de almacenamientos a zonas, mandatos, reservas, cuotas, configuraciones para la creación automática de recursos compartidos de red (NFS, SMB), derechos de acceso a los mismos y más. Estos atributos especifican las características de las bóvedas. Estos atributos facilitan la administración de funciones relacionadas con FS que anteriormente se realizaban manualmente (por ejemplo, configurar el montaje de varios sistemas de archivos adicionales, crear recursos compartidos de red).
Algunos de los atributos del sistema son heredados por los repositorios secundarios; como resultado, los atributos también se aplican inmediatamente a los repositorios secundarios. Los atributos para controlar la compresión, la deduplicación, las sumas de verificación de datos y similares se aplican solo a los datos recién escritos. Para aplicarlos a todos los datos, los datos deben sobrescribirse (esto se hace fácilmente enviando instantáneas al mismo grupo con la recreación de los almacenamientos).
A cada almacén de datos (FS, volumen, instantánea, etc.) se le pueden asignar atributos personalizados. Los atributos de usuario difieren de los atributos del sistema en sus nombres. Para los atributos personalizados, puede usar cualquier nombre (de 1 a 2¹⁰ bytes), pero se recomienda usar nombres que contengan dos puntos (para evitar conflictos con los atributos del sistema), su nombre de dominio antes de estos dos puntos (para evitarlo con otros usuarios) , el nombre del atributo después de los dos puntos. Los atributos personalizados los heredan las tiendas secundarias.
Debido al desarrollo ramificado de nuevas funciones en diferentes sistemas operativos, varios de estos atributos se utilizan como nuevos atributos del sistema.
Los atributos personalizados son utilizados por los usuarios y los programas independientes (por ejemplo, el programa de copia de seguridad y creación automática del control deslizante de tiempo).
Para archivos de cualquier tipo, se puede especificar el valor de varios atributos del sistema. [18] Estos atributos le permiten controlar acciones en el archivo. Los atributos de archivo extendidos tienen los mismos atributos del sistema.
Además de los atributos que almacenan las fechas de creación, último acceso, última modificación, última modificación de metadatos, existen atributos [19] :
Nombre del Atributo | Nombre de atributo en comando chmod[20] | Objetivo | ¿Qué hace el sistema operativo con este atributo? |
---|---|---|---|
Oculto | hidden | Los archivos con este atributo no se muestran en la lista general si esta opción está habilitada y es compatible con el programa de salida de archivos. | Nada. |
escaso | sparse | Se recomienda que un archivo con este atributo se procese como disperso, es decir, que contenga bloques de cero bytes que no se almacenan en la unidad, sino que están implícitos. Este atributo es de asesoramiento y no tiene nada que ver con si el archivo es realmente disperso. El programa de procesamiento de archivos para trabajar con archivos dispersos aún necesita recibir datos sobre los bloques dispersos del archivo del FS. | Nada. |
sistémico | system | Un archivo con este atributo está destinado al sistema operativo, no es un archivo de usuario. Generalmente ignorado por los programas. | Nada. |
solo para leer | readonly | Un archivo con este atributo no se puede modificar (solo datos, no atributos). Se aplica a todos sin excepción. | Bloquea el acceso de escritura si el atributo está establecido. |
para archivar | archive | El archivo necesita ser archivado. | Nada. |
inamovible | nounlink | Para los directorios, el nombre del directorio y los nombres de sus hijos inmediatos no se pueden eliminar ni cambiar. Para otros tipos de archivos: el nombre del archivo no se puede eliminar ni cambiar. | Bloquea el cambio de nombre y elimina el acceso si el atributo está establecido. |
inmutable | immutable | Un archivo con este atributo no se puede modificar (datos, atributos, excepto este atributo y la fecha del último acceso). Se aplica a todos sin excepción. | Los bloques modifican el acceso si se establece el atributo. |
Solo para suplemento | appendonly | Los datos del archivo solo se pueden modificar agregando, pero no se pueden sobrescribir. | Bloquea el acceso de escritura si el atributo está establecido. |
no para vertederos | nodump | No se utiliza en Solaris. Vino de BSD . Requiere privilegios apropiados para modificar. | No se utiliza en Solaris. |
En cuarentena antivirus | av_quarantined | El acceso al archivo está restringido hasta que se levante la cuarentena. El atributo se puede configurar y eliminar solo si tiene derechos de superusuario (el antivirus los tiene). | Bloquea el acceso si el atributo está establecido. |
Modificado (después de la última comprobación de antivirus) | av_modified | Indica que el antivirus no comprueba la versión actual del archivo. Se establece automáticamente cuando se crea el archivo y cada vez que se modifican los datos o el tamaño del archivo. Puede ser configurado por un usuario con derechos para cambiar atributos. Se puede restablecer solo si tiene derechos de superusuario (el antivirus los tiene). | Establece automáticamente el atributo al cambiar datos, creando un archivo. |
Puede crear atributos extendidos para cada archivo de cualquier tipo. El atributo extendido es una matriz de bytes con nombre, como un archivo normal. A los atributos extendidos, como a los archivos normales, se les pueden asignar sus propios permisos y atributos del sistema. A diferencia de un archivo normal, los atributos extendidos, los enlaces duros, no se pueden crear para los atributos extendidos. Los atributos de archivos extendidos tienen la capacidad de ser tratados como archivos normales hasta cierto punto. Para ello, se crea una carpeta sin nombre para cada archivo (en el momento de la creación del primer atributo extendido), en la que están disponibles los archivos regulares correspondientes a los atributos extendidos de este archivo. En Solaris, se puede acceder a esta carpeta mediante la utilidad runat[21] .
La gestión de bóvedas individuales se puede delegar a los usuarios. Para hacer esto, ZFS ha asignado poderes que se pueden delegar (crear almacenamientos, instantáneas, eliminarlos, montarlos, compararlos, reenviarlos y más). Los permisos se delegan para las bóvedas seleccionadas de la misma manera que se asignan atributos y se extienden a las bóvedas secundarias.
Debido al principio de " copia en escritura " , los datos en ZFS siempre están en un estado consistente, el archivo no se puede perder en el momento de sobrescribir [6] .
Cuando se utilizan volúmenes con redundancia (volúmenes RAIDZ), la seguridad de los datos está garantizada en caso de falla de los medios físicos [6] [22] , mientras que RAIDZ es efectivo para el almacenamiento a largo plazo de archivos grandes, especialmente cuando se configura el tamaño de bloque correspondiente al y con la reescritura frecuente y cuando se colocan archivos de tamaño pequeño, aumenta la carga en el procesador y el subsistema del disco [6] .
ZFS es parte del sistema operativo Solaris y está disponible para plataformas SPARC y x86 . Dado que el código ZFS es de código abierto (licencia CDDL), se pueden producir puertos a otros sistemas operativos y plataformas sin la participación de Oracle.
OpenSolaris 2008.05 utiliza ZFS como sistema de archivos predeterminado.
Sistema operativo NexentaNexenta OS es un sistema operativo con un entorno GNU creado sobre el kernel de OpenSolaris y su entorno de tiempo de ejecución. La compatibilidad con ZFS se incluyó en la versión alpha1 del kernel. Más recientemente, Nexenta Systems presentó NexentaStor , un sistema de almacenamiento en red habilitado para ZFS que brinda capacidades NAS / SAN / iSCSI y está basado en Nexenta OS. NexentaStor incluye una interfaz gráfica que simplifica el proceso de uso de ZFS. El 2 de diciembre de 2008, se lanzó NexentaStor 1.1. Actualizó el núcleo de OpenSolaris, mejoró la integración con CIFS/AD, agregó varios complementos y corrigió algunos errores. Hay dos ediciones de NexentaStor: una Enterprise Edition comercial y una Community Edition gratuita con un límite máximo de capacidad de almacenamiento de 18 TB. A partir de agosto de 2012, la versión actual del software es 3.1.3.
Debido a las restricciones de licencia de CDDL, ZFS no está incluido en el kernel, pero está disponible como un módulo de kernel que ahora está disponible en muchas distribuciones de GNU/Linux [6] [24] .
Durante mucho tiempo en Linux , portar ZFS al nivel del kernel se consideró legalmente imposible debido a la incompatibilidad de las licencias CDDL , bajo cuya jurisdicción se encuentra ZFS, y la GNU GPL , bajo cuya jurisdicción se encuentra Linux . Sin embargo, en mayo de 2010, Brian Behlendorf presentó una nueva versión del proyecto, que está trabajando en la implementación de soporte nativo para el sistema de archivos ZFS para Linux. Para eludir la restricción de la licencia, Behlendorf decidió distribuir todo su producto bajo la licencia CDDL como un módulo descargable por separado que se envía por separado del kernel [25] [26] . Desde marzo de 2013 (versión 0.6.1), el proyecto se considera listo para uso industrial [24] . Ubuntu 16.04 (64 bits) es la primera distribución principal de Linux preparada para ZFS [27] .
FUSIBLELa iniciativa Google Summer of Code patrocina una adaptación de Linux de ZFS utilizando el módulo FUSE , que ejecuta el sistema de archivos ZFS en el espacio del usuario [28] . Se cree que esta solución teóricamente está plagada de pérdidas de rendimiento [29] . Pero el ejemplo de implementar NTFS ( NTFS-3G ) a través de FUSE muestra un buen rendimiento en comparación con otros sistemas [30] , lo que da motivos para predecir un rendimiento aceptable de ZFS-FUSE.
A fines de 2012, ZFS-FUSE [31] se presentó como la versión 0.7.0, que incluía soporte casi completo para ZFS y todas sus funciones; se introdujo soporte para la versión 23 del grupo.
Pawel Jakub Dawidek ha adaptado ZFS para FreeBSD como módulo del kernel. ZFS está incluido en FreeBSD 7.0 (lanzado el 27 de febrero de 2008) [32] .
El código ZFSv28 se prueba en FreeBSD 9 y se transfiere a la rama de desarrollo estable 8. Las versiones FreeBSD 8.3, 8.4 y 9.0 admiten la versión 28 del grupo ZFS. La versión FreeBSD 9.2 y las versiones posteriores de FreeBSD utilizan nuevas funciones de "indicadores de características" basadas en la implementación de la versión 5000 del Pool [33] .
Es de destacar que en FreeBSD, desde la versión 8, ZFS, a diferencia de Linux, no requiere la presencia de FUSE y, por lo tanto, no hay problemas de rendimiento asociados con él. Esto se confirma por el hecho de que ZFS en FreeBSD está incluido en el núcleo y está presente en el sistema inmediatamente, entre otras cosas, permitiéndole arrancar el sistema operativo desde volúmenes ZFS. Y el módulo FUSE no está incluido en el sistema operativo, y puede instalarse opcionalmente desde la colección de puertos [34] (que se requiere, por ejemplo, para admitir NTFS).
Apple ha estado intentando portar ZFS a Mac OS X , y ha habido una discusión activa sobre las listas de correo de ZFS y los cortes preliminares para la próxima versión de Mac OS X de Apple [35] . Aunque Mac OS X 10.5 (9A321) es compatible con ZFS, no tiene la capacidad de usar ZFS en particiones raíz, ni tiene la capacidad de formatear unidades locales bajo ZFS (este último se considera un error [36] ).
En junio de 2009, Apple en su conferencia de prensa WWDC '09 abandonó ZFS en la versión presentada de Mac OS X 10.6 Snow Leopard, todas las referencias a ZFS se eliminaron de la documentación y los materiales del sitio. La empresa no revela los motivos por los que no utiliza ZFS [37] .
Mientras que el soporte para ZFS se devolvió en Mac OS X 10.6 Snow Leopard compilación 10A432, marcado como Golden Master, el soporte para ZFS se eliminó una vez más en la versión final de Mac OS X 10.6, definitivamente [38] .
En respuesta al cierre del soporte oficial para ZFS, apareció un proyecto gratuito, que se basa en el código base creado previamente por Apple, pero difiere en el método de integración en el sistema. MacZFS no se ejecuta a nivel de kernel, sino a nivel de usuario, trabajando con MacFUSE, se ha preparado un paquete binario, compilado sobre la base de los textos fuente publicados en el repositorio de Git , así como las instrucciones de configuración.
El sistema operativo Redox planeó usar ZFS como el sistema de archivos predeterminado, pero luego cambió a su propia implementación de principios similares: TFS [39] [40] , escrito en el lenguaje principal de Redox: Rust .
Sun Microsystems (adquirida por Oracle ) | |
---|---|
Equipo | |
Software |
|
Almacenamiento de datos | |
Computación de alto rendimiento |
|
Investigar | |
Educación |
|
Comunidad |
Solaris | |
---|---|
Tecnología | |
OpenSolaris |
Sistemas de archivos ( lista , comparación ) | |||||||
---|---|---|---|---|---|---|---|
Disco |
| ||||||
Distribuido (red) | |||||||
Especial |
|