Gracias al proyecto ZFS On Linux podemos utilizar en sistemas GNU/Linux el sistema de ficheros ZFS de Sun Microsystems, diseñado específicamente para sistemas Solaris.
En el sitio web ZFS On Linux tenéis información sobre como instalar en cada distribución, y por paquetes, todo lo necesario para hacer funcionar ZFS. Os dejo el método de instalación para RHEL, CentOS y derivados y también para Debian. En el caso de RHEL y CentOS he tenido que cambiar algún detalle así que os lo dejo a continuación:
Instalación en RHEL, CentOS y derivados
Los paquetes de ZFS se basan y están disponibles en el repositorio EPEL y en el propio repositorio de ZFS. Debemos instalar ambos y posteriormente los paquetes necesarios junto con las sources del Kernel:
RHEL y CentOS 6:
# wget https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # wget http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install --nogpgcheck epel-release-6-8.noarch.rpm # yum install --nogpgcheck zfs-release.el6.noarch.rpm # yum install kernel-devel zfs-fuse zfs-dkms
RHEL y CentOS 7:
# wget https://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm # wget http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm # yum install --nogpgcheck epel-release-7-2.noarch.rpm # yum install --nogpgcheck zfs-release.el7.noarch.rpm # yum install kernel-devel zfs-fuse zfs-dkms
Instalación en Debian
Sustituimos DIST por la versión de Debian que estemos utilizando: squeeze, wheezy, jessie.
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_3%7EDIST_all.deb # dpkg -i zfsonlinux_3~DIST_all.deb
Cómo usar ZFS
A partir de aquí la gestión de ZFS es exactamente igual que en un sistema Solaris. Hace ya unos años hice unos artículos sobre gestión de ZFS en Solaris que podéis leer haciendo click en los siguientes enlaces:
Podemos probar lo más básico. Empezamos creando un nuevo zpool con un disco:
# zpool create test_zpool /dev/sdb
Verificamos que se ha creado:
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT test_zpool 1.98G 182K 1.98G 0% 1.00x ONLINE -
# zpool status test_zpool pool: test_zpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM test_zpool ONLINE 0 0 0 sdb ONLINE 0 0 0 errors: No known data errors
Podemos crear un nuevo filesystem ZFS dentro del POOL llamandolo zfs01:
# zfs create test_zpool/zfs01
El filesystem se monta automáticamente:
# df -h /test_zpool/zfs01 Filesystem Size Used Avail Use% Mounted on test_zpool/zfs01 2.0G 21K 2.0G 1% /test_zpool/zfs01
Establecemos la quota del filesystem:
# zfs set quota=1G test_zpool/zfs01
# df -h /test_zpool/zfs01 Filesystem Size Used Avail Use% Mounted on test_zpool/zfs01 1.0G 21K 1.0G 1% /test_zpool/zfs01
En definitiva, vemos que podemos trabajar sin ningún problema con el ZFS dentro de nuestro sistema GNU/Linux. Si estáis interesados, os recomiendo revisar las FAQ del proyecto para aclarar cualquier duda en cuanto a rendimiento y parámetros de configuración avanzados. En la propia documentación avisan de que el proyecto todavía no ha sido optimizado para el rendimiento, pero sí que dan unas pautas para que sea lo más óptimo posible:
- Distribuir los discos de los Pool en distintas controladoras
- Crear el pool utilizando el disco completo
- Disponer de un mínimo de 2GB de memoria RAM. Se requiere memoria adicional cuando se activa la deduplicación y compresión.
- Establecer el parámetro «ashift=12»:
# zpool create -o ashift=12 tank mirror sda sdb
Yo únicamente lo he instalado y probado por curiosidad así que no os puedo decir su rendimiento, y sobre todo, antes de poner algo así en producción… pruebas, muchas pruebas.