ZFS ha combinado un administrador de volumen y un sistema de archivos con varias funciones avanzadas.
Esta es la primera parte de una serie de artículos sobre ZFS.
En el artículo, proporcionaremos una introducción de alto nivel a ZFS, explicaremos cómo instalar ZFS en Linux, crear un grupo ZFS y varios comandos ZFS zpool.
1. Introducción a ZFS
Las siguientes son algunas de las características del sistema de archivos ZFS:
- Protección contra la corrupción de datos
- Soporte para altas capacidades de almacenamiento
- Compresión de datos eficiente
- Tomar instantáneas del sistema de archivos
- Clones de copia en escritura
- Compatibilidad con RAID Z
- Comprobación de integridad
- Reparación automática y soporte para NFSV4 ACL nativo
Este fue desarrollado originalmente por Sun Microsystems para la plataforma Solaris. En 2010, Oracle adquirió los microsistemas de Sun y realizó muchas mejoras en el sistema de archivos ZFS.
ZFS se está volviendo popular recientemente en Linux, ya que se ha vuelto más estable.
El puerto de ZFS en Linux es producido por el Laboratorio Nacional Lawrence Livermore (LLNL).
ZFS en Linux es un módulo de kernel que puede descargar, compilar e instalar. No tiene que parchear o recompilar su núcleo.
Puede descargar los paquetes fuente para su respectiva distribución de SO desde aquí.
2. Instalar ZFS en Linux
En este artículo, instalaremos ZFS en el servidor CentOS. Sin embargo, los comandos zfs que se mencionan a continuación son los mismos para casi todas las distribuciones en las distribuciones de Linux, excepto la parte de instalación.
Ejecute los siguientes comandos yum para instalar ZFS en Redhat/CentOS.
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install kernel-devel zfs
Asegúrese de que se cumplan todas las dependencias. Una de las dependencias donde normalmente falla la instalación, sería un requisito para instalar el compilador GCC. En este caso, instale el compilador GCC antes de instalar ZFS.
Asegúrese de que los módulos ZFS estén cargados con el comando lsmod como se muestra a continuación:
# lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs,zcommon,znvpair,zavl,zunicode
En una nota relacionada, es posible que desee leer acerca de los conceptos básicos sobre cómo se crean los módulos del kernel cargables de Linux.
Hemos agregado algunos discos en este servidor (desde /dev/sdb hasta /dev/sdf) para probar la funcionalidad de ZFS.
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
3. Crear un zpool
Comando Zpool utilizado para configurar los grupos de almacenamiento en ZFS. El grupo de almacenamiento es una colección de dispositivos que proporciona almacenamiento físico y replicación de datos para conjuntos de datos zfs.
Lo siguiente crea un zpool.
# zpool create -f mypool raidz sdb sdc sdd sde sdf
En el ejemplo anterior:
- crear soportes para crear un nuevo grupo.
- La opción -f es ignorar las etiquetas de partición del disco ya que estos son discos nuevos
- raidz es nivel de incursión. RAIDZ no es más que la variación de RAID-5 que permite una mejor distribución de la paridad y elimina el agujero de escritura "RAID-5" (inconsistencia de datos y paridad después de una pérdida de energía).
- Un grupo raidz puede tener paridad simple, doble o de tribu, lo que significa que puede soportar una, dos o tres fallas respectivamente sin perder ningún dato. Los datos y la paridad se dividen en todos los discos dentro de un grupo raidz.
A continuación, verifique el estado del zpool que acabamos de crear.
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors
Una vez que se crea el grupo, si hace df –h, verá que el grupo recién creado se monta automáticamente en el punto de montaje.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool
4. Crear un grupo reflejado
Para crear un grupo reflejado, use el comando zpool create con las siguientes opciones.
Si alguno de los discos en el grupo espejado en particular falla, entonces el otro disco todavía contiene los datos. Tan pronto como se reemplace el disco fallido, el contenido se duplicará (también conocido como reprogramación) en el disco recién reemplazado.
# zpool create -f mypool mirror sdb sdc mirror sdd sde
A continuación, verifique el estado del zpool reflejado que acabamos de crear:
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors
5. Importación y exportación de Zpool
Hay algunos casos en los que puede necesitar migrar grupos zfs entre sistemas.
ZFS lo hace posible al exportar un grupo de un sistema e importarlo a otro sistema.
Para exportar cualquier grupo, use el comando zpool export y el comando zpool import se usa para importar el grupo como se muestra en el siguiente ejemplo:
# zpool export mypool # zpool import mypool
6. Ver estadísticas de E/S del grupo ZFS
Para ver las estadísticas de E/S de zpool, utilice el comando iostat de zpool como se muestra a continuación:
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- -----
7. Eliminar un grupo ZFS
Para destruir un grupo, use el comando zpool destroy como se muestra a continuación:
# zpool destroy mypool
8. Reemplace el disco dañado en el grupo ZFS
Para reemplazar un disco, luego de una falla o daño, use el siguiente comando:
# zpool replace mypool sde sdf
9. Expanda el grupo ZFS con un disco nuevo
Para expandir el zpool agregando un nuevo disco, use el comando zpool como se indica a continuación:
# zpool add -f mypool sde
10. Agregue un disco de repuesto al grupo ZFS
También puede agregar un disco de repuesto al grupo de zfs mediante el siguiente comando, agregando un dispositivo de repuesto a un grupo de zfs.
Los discos fallidos se reemplazan automáticamente por el dispositivo de repuesto y el administrador puede reemplazar los discos fallidos en otro momento.
Tenga en cuenta que también puede compartir el dispositivo de repuesto entre varios grupos de ZFS.
# zpool add -f mypool spare sde
En la siguiente parte del artículo, explicaremos cómo usar los grupos ZFS para crear un sistema de archivos ZFS, montar el sistema de archivos ZFS y manipularlo desde la línea de comandos.