Lanzamento de ZFS en Linux 0.8.0, implementacións de ZFS para o núcleo de Linux

Despois de case dous anos de desenvolvemento presentado liberación ZFS en Linux 0.8.0, unha implementación do sistema de ficheiros ZFS empaquetado como módulo para o núcleo de Linux. O módulo foi probado con núcleos de Linux desde 2.6.32 ata 5.1. Paquetes de instalación listos en breve estarán preparados para as principais distribucións de Linux, incluíndo Debian, Ubuntu, Fedora, RHEL/CentOS. O módulo ZFS en Linux xa está incluído nas distribucións Debian, Ubuntu, Gentoo, Sabayon Linux e ALT Linux.

Como parte de ZFS en Linux, preparouse unha implementación de compoñentes ZFS relacionados tanto co funcionamento do sistema de ficheiros como co funcionamento do xestor de volumes. En particular, impléntanse os seguintes compoñentes: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) e ZPL (ZFS POSIX Layer). Ademais, o proxecto ofrece a posibilidade de usar ZFS como backend para o sistema de ficheiros do clúster Luster. O traballo do proxecto baséase no código ZFS orixinal importado do proxecto OpenSolaris e mellorado con melloras e correccións da comunidade Illumos. O proxecto estase a desenvolver coa participación de empregados do Laboratorio Nacional de Livermore baixo un contrato co Departamento de Enerxía dos Estados Unidos.

O código distribúese baixo unha licenza CDDL gratuíta, que é incompatible con GPLv2, que non permite integrar ZFS en Linux na rama principal do núcleo de Linux, xa que non se permite mesturar código baixo licenzas GPLv2 e CDDL. Para evitar esta incompatibilidade de licenza, decidiuse distribuír todo o produto baixo a licenza CDDL como un módulo cargable por separado, que se subministra por separado do núcleo. A estabilidade da base de código ZFS en Linux é comparable a outros sistemas de ficheiros para Linux.

Principais cambios:

  • Engadido soporte integrado para o cifrado dos datos almacenados a nivel do sistema de ficheiros e das particións. O algoritmo de cifrado predeterminado é aes-256-ccm. Propúxose o comando "zfs load-key" para cargar claves de cifrado;
  • Implementouse a capacidade de transferir datos cifrados ao executar os comandos "zfs send" e "zfs receive". Ao especificar a opción "-w", os datos xa cifrados no grupo transfírense a outro grupo tal e como están, sen descifrar intermediario. Con tal copia, os datos permanecen protexidos pola chave do remitente, o que permite utilizar este modo para realizar copias de seguridade en sistemas non fiables (en caso de comprometer o destinatario, o atacante non poderá acceder aos datos sen a chave);
  • Engadiuse compatibilidade para eliminar as unidades primarias dunha agrupación de almacenamento, conectadas individualmente e como parte dun espello. A eliminación realízase co comando "zpool remove". O proceso de eliminación copia os datos da unidade excluída ás unidades primarias restantes do grupo;
  • Engadiuse o comando "punto de verificación zpool" para gardar o estado actual do pool coa posibilidade de retrotraer máis cambios no momento gardado (créase unha instantánea de todo o pool). Esta característica pode ser útil no proceso de realizar un traballo administrativo complexo potencialmente perigoso, que en condicións normais leva a cambios irreversibles (por exemplo, activar marcas para a nova funcionalidade de ZFS ou borrar datos);
  • Engadiuse o comando "zpool trim" para informar ás unidades utilizadas no pool sobre os sectores que xa non están en uso. O uso da operación TRIM permite aumentar a eficiencia dos SSD e evitar a degradación do seu rendemento. Propúxose unha nova propiedade "autotrim" para permitir o proceso continuo en segundo plano de transmitir comandos TRIM;
  • Engadiuse o comando "zpool initialize" para inicializar todo o espazo en disco non asignado, o que permite que estea listo para o seu uso ao instante, sen degradación do rendemento no primeiro acceso (por exemplo, ao aloxar almacenamentos virtualizados como VMware VMDK);
  • Engadido soporte para cotas de contabilidade e de proxecto, ademais das cotas de usuarios e grupos dispoñibles previamente. En esencia, os proxectos son un espazo separado de obxectos asociados cun identificador separado (ID do proxecto). A vinculación defínese mediante a operación 'chattr -p' ou mediante a herdanza de atributos. Para a xestión de proxectos, preséntanse os comandos “zfs project” e “zfs projectspace”, que permiten xestionar a creación de proxectos e establecer límites de espazo en disco para eles;
  • Engadiuse a posibilidade de crear scripts Lua para automatizar varios traballos con ZFS. Os scripts execútanse en ambientes illados especiais mediante o comando "zpool program";
  • Nova biblioteca implantada pyzfs, que proporciona unha API estable para administrar ZFS desde aplicacións Python. A biblioteca é un envoltorio en torno a libzfs_core e proporciona un conxunto idéntico de funcións, pero usa tipos de Python máis próximos;
  • As utilidades arcstat, arcsummary e dbufstat fixéronse compatibles con Python 3. As utilidades arcstat.py, arc_summary.py e dbufstat.py foron renomeadas a versións sen a extensión ".py";
  • Engadiuse soporte para a interface do núcleo Linux Direct IO (O_DIRECT), que permite acceder aos datos sen almacenar no búfer e omitir a caché;
  • Optimizacións de rendemento introducidas:
    • O traballo dos comandos "scrub" e "resilver" acelerouse debido á división en dúas fases (asignouse unha fase separada para escanear metadatos e determinar a localización dos bloques con datos no disco, o que permite unha maior verificación mediante datos secuenciais). lectura);
    • Engadido soporte para as clases de asignación,
      permitindo que SSD relativamente pequenos se agrupen e se usen para almacenar só certos tipos de bloques de uso habitual, como metadatos, datos DDT e pequenos bloques de ficheiros;

    • Mellorouse o rendemento dos comandos de administración como
      "zfs list" e "zfs get", almacenando na caché os metadatos necesarios para o seu funcionamento;

    • Engadido soporte para a paralelización das operacións de asignación de bloques mediante a execución de procesos de asignación separados para cada grupo de metaslab. Nos sistemas convencionais, hai un aumento do rendemento do 5-10%, pero nos grandes (8 128 GB SSD, 24 núcleos NUMA, 256 GB de RAM), o aumento das operacións de asignación de bloques pode chegar ao 25%;
    • Engadida a posibilidade de execución aprazada do comando "resilver" (reconstruíndo a distribución de datos tendo en conta os cambios na configuración das unidades) - se o anterior aínda non se completou ao iniciar unha nova operación, entón o novo controlador comezará a executarse só despois de o final do anterior;
    • Engadíronse optimizacións ao ZIL (ZFS Intent Log) para permitir a creación e procesamento de bloques en presenza de bloques que aínda están sendo procesados ​​polo almacenamento;
    • Tempo de rexistro reducido para particións (zvol) no sistema. Cando unha agrupación contén un gran número de particións, agora están dispoñibles inmediatamente despois de facer "zpool import";
    • Engadiuse compatibilidade para o cálculo acelerado de hardware de hash SHA256 e operacións de cifrado AES-GSM mediante chips Intel QAT (Tecnoloxía de asistencia rápida). Engadido soporte para a aceleración de hardware do chipset Intel C62x e CPU Atom C3000.

Fonte: opennet.ru

Engadir un comentario