En esta página
- Requisitos previos:
ZFS es un administrador combinado de sistemas de archivos y volúmenes lógicos. Las funciones de ZFS incluyen protección contra la corrupción de datos, soporte para altas capacidades de almacenamiento, compresión de datos eficiente, integración del sistema de archivos y concepto de gestión de volúmenes, instantáneas y clones de copia en escritura, verificación continua de integridad y reparación automática, RAID-Z y nativa ACL de NFSv4.
ZFS se implementó originalmente como software de código abierto, con licencia de desarrollo y distribución común (CDDL).
Cuando hablamos del sistema de archivos ZFS, podemos destacar los siguientes conceptos clave:
- Integridad de los datos.
- Administración de almacenamiento simple con solo dos comandos:zfs y zpool.
- Todo se puede hacer mientras el sistema de archivos está en línea.
Para obtener una descripción general completa y una descripción de todas las funciones disponibles, consulte este artículo detallado de wikipedia.
En este tutorial, lo guiaré paso a paso a través de la instalación del sistema de archivos ZFS en Debian 8.1 (Jessie). Le mostraré cómo crear y configurar grupos usando raid0 (stripe), raid1 (Mirror) y RAID-Z (Raid con paridad) y explicaré cómo configurar un sistema de archivos con ZFS.
Según la información del sitio web www.zfsonlinux.org, ZFS solo es compatible con la arquitectura AMD64 e Intel de 64 bits (amd64). Comencemos con la configuración.
Requisitos previos:
- Debian 8 con kernel de 64 bits.
- privilegios de raíz.
Paso 1:actualice el repositorio y actualice el sistema Debian Linux
Para agregar el repositorio zfsonlinux a nuestro sistema, descargue e instale el paquete zfsonlinux como se muestra a continuación. Esto agregará los archivos /etc/apt/sources.list.d/zfsonlinux.list y /etc/apt/trusted.gpg.d/zfsonlinux.gpg en su computadora. Luego, puede instalar zfs como cualquier otro paquete de Debian con el comando apt-get. Otro beneficio de usar el repositorio de zfsonlinux es que obtiene actualizaciones automáticamente al ejecutar "apt-get update &&apt-get upgrade".
Inicie sesión en el servidor Debian con acceso SSH, conviértase en usuario root y luego ejecute los siguientes comandos.
# uname -a
Linux debian-zfs 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
# wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
# dpkg -i zfsonlinux_6_all.deb
# apt-get update
Paso 2:instalar zfsonlinux
Zfsonlinux tiene muchas dependencias de software que apt instala automáticamente. Este proceso tomará un tiempo. Cuando finalice la instalación, reinicie el servidor.
# apt-get install lsb-release
# apt-get install debian-zfs
# shutdown -r now
Paso 3:crear y configurar el grupo
Después de reiniciar el servidor, verifique que zfsonlinux esté instalado y funcionando correctamente.
# dpkg-l | GREP ZFS
II Debian-ZFS 7 ~ Jessie AMD64 Metapackaje del sistema de archivos nativo de ZFS para Debian.
II libZFS2 0.6.5.2-2 AMD64 Biblioteca del sistema de archivos ZFS nativo para Linux
II ZFS-DKMS 0.6.5.2 -2 todos los módulos nativos de kernel del sistema de archivos ZFS para Linux
II ZFSONLINUX 6 All Archive.zfsonlininux.org Paquete de confianza
II ZFSUTILS 0.6.5.2-2 Herramientas de línea de comandos AMD64 para administrar ZFS Filesystems
El resultado anterior muestra que zfs en Linux ya está instalado, por lo que podemos continuar con la creación del primer grupo.
He agregado cinco discos a este servidor, cada uno con un tamaño de 2 GB. Podemos comprobar los discos disponibles con este comando:
# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
Podemos ver que tenemos /dev/sda hasta que /dev/sdg, /dev/sda se usa para el sistema operativo Debian Linux Jessie 8.1. Usaremos /dev/sdb hasta /dev/sdg para el sistema de archivos ZFS.
Ahora podemos comenzar a crear el grupo, para el primero te mostraré cómo crear un raid0 (stripe).
# lista de zpool
no hay grupos disponibles
# zpool create -f pool0 /dev/sdb
# zpool list
NOMBRE TAMAÑO ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G - 0% 0% 1.00 x EN LÍNEA -
El comando "lista de zpool" muestra que creamos con éxito un grupo zfs raid0, el nombre del grupo es pool0 y el tamaño es de 2 GB.
A continuación, crearemos un raid1 (espejo) con los otros discos.
# zpool create -f pool1 mirror /dev/sdc /dev/sdd
# zpool list
NOMBRE SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool0 1.98G 64K 1.98G - 0% 0% 1.00x EN LÍNEA -
pool1 1.98G 64K 1.98G - 0% 0% 1.00x EN LÍNEA -
Podemos ver que ahora tenemos dos grupos, pool0 para raid0 y pool1 para raid1.
Para verificar el estado de la piscina, podemos usar el siguiente comando:
# zpool status
pool:pool0
state:ONLINE
escaneo:ninguno solicitado
config:
NAME STATE READ WRITE CKSUM
pool0 ONLINE 0 0 0
sdb ONLINE 0 0 0
errores:No hay errores de datos conocidos
pool:pool1
state:ONLINE
Escanear:ninguno solicitado
Configuración:
Nombre Estado Leer Escribir Cksum
Pool1 En línea 0 0 0
Mirror-0 en línea 0 0 0
SDC en línea 0 0 0
sdd ONLINE 0 0 0
errores:No hay errores de datos conocidos
Podemos verificar el estado del grupo con el comando "zpool status". Podemos ver la diferencia entre pool0 y pool1, pool0 tiene solo un disco y pool1 tiene dos discos y el estado de los discos es espejo (mirror-0).
A continuación, crearemos un grupo con RAID-Z, RAID-Z es un esquema de distribución de datos/paridad como RAID-5, pero utiliza un ancho de banda dinámico:cada bloque tiene su propia banda RAID, independientemente del tamaño del bloque. lo que da como resultado que cada escritura RAID-Z sea una escritura completa.
RAID-Z requiere un mínimo de tres discos duros y es una especie de compromiso entre RAID 0 y RAID 1. En un grupo RAID-Z:si un solo disco en su grupo falla, simplemente reemplace ese disco y ZFS reconstruirá automáticamente los datos basado en la información de paridad de los otros discos. Para perder toda la información en su grupo de almacenamiento, dos discos tendrían que morir. Para que la configuración de la unidad sea aún más redundante, puede usar RAID 6 (RAID-Z2 en el caso de ZFS) para obtener doble paridad.
Primero creemos un grupo RAID-Z con una paridad.
# zpool create -f poolz1 raidz sde sdf sdg
# zpool list poolz1
NOMBRE SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz1 5.94G 117K 5.94G - 0% 1.00x EN LÍNEA -
# zpool status poolz1
grupo:poolz1
estado:EN LÍNEA
escaneo:ninguno solicitado
config:
NOMBRE ESTADO LEER ESCRIBIR CKSUM
Poolz1 en línea 0 0 0
Raidz1-0 en línea 0 0 0
SDE Online 0 0 0 0
SDF Online 0 0 0
SDG Online 0 0 0
<
errores:No hay errores de datos conocidos
# df -h /poolz1
Sistema de archivos Tamaño Usado Uso disponible % Montado en
poolz1 3.9G 0 3.9G 0 % /poolz1
Como podemos ver, df -h muestra que nuestro grupo de 6 GB ahora se ha reducido a 4 GB, 2 GB se utilizan para almacenar información de paridad. Con el comando zpool status, vemos que nuestro grupo está usando RAID-Z ahora.
A continuación, crearemos RAID-Z2 (raid 6), para ello debemos eliminar el grupo existente porque no hay más discos disponibles. Eliminar un grupo es muy fácil, podemos usar el comando zpool destroy para eso.
# LISTA ZPOOL
Nombre Tamaño Alloc Free Expandsz Frag Cap Desdup Health Altroot
Pool0 1.98g 64k 1.98g -0%0%1.00x en línea -
Pool1 1.98g 64k 1.98g - 0% 0% 1.00x EN LÍNEA -
poolz1 5.94G 117K 5.94G - 0% 0% 1.00x EN LÍNEA -
# zpool destroy pool0
# zpool destroy pool1
# zpool destroy poolz1
# zpool list
no hay grupos disponibles
Ahora todos nuestros zpool se han ido, por lo que podemos crear un grupo RAID-Z2.
# zpool create poolz2 raidz2 sdb sdc sdd sde
# zpool list
NOMBRE TAMAÑO ASIGNACIÓN FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
poolz2 7.94G 135K 7.94G - 0% EN LÍNEA -
# df -h /poolz2
Sistema de archivos Tamaño Usado % de uso disponible Montado en
poolz2 3.9G 0 3.9G 0 % /poolz2
# zpool status poolz2
grupo:poolz2
estado:EN LÍNEA
escaneo:ninguno solicitado
config:
NOMBRE ESTADO LEER ESCRIBIR CKSUM
Poolz2 en línea 0 0 0
RAIDZ2-0 Online 0 0 0
SDB Online 0 0 0
SDC Online 0 0 0
SDD Online 0 0 0
SDE EN LÍNEA 0 0 0
errores:No hay errores de datos conocidos
Como podemos ver, df -h muestra que nuestro grupo de 8 GB ahora se ha reducido a 4 GB, ya que se utilizan 4 GB para almacenar la información de paridad dos veces. Con el comando "zpool status", vemos que nuestro grupo está usando RAID-Z2 ahora.
Paso 4:Simule una falla de disco
En este paso, simularemos una falla de disco catastrófica (es decir, uno de los HDD en el zpool deja de funcionar).
Cree un archivo en poolz2 y asegúrese de que podamos acceder a él.
# echo "Solo prueba"> /poolz2/prueba.txt
# cat /poolz2/prueba.txt
Solo prueba
Antes de simular la falla:verifique el estado de poolz2 y asegúrese de que el estado sea En línea y que el estado de todos los discos sea En línea.
La falla se simula escribiendo datos aleatorios con el comando dd en /dev/sdb .
# dd if=/dev/urandom of=/dev/sdb bs=1024 count=20480
# zpool scrub poolz2
# zpool status
pool:poolz2
state :EN LÍNEA
estado:Uno o más dispositivos han experimentado un error irrecuperable.
Se intentó corregir el error. Las aplicaciones no se ven afectadas.
acción:determine si es necesario reemplazar el dispositivo y elimine los errores
usando 'zpool clear' o reemplace el dispositivo con 'zpool replace'.
vea:http://zfsonlinux.org/msg/ZFS-8000-9P
exploración:limpieza reparada 17K en 0h0m con 0 errores el martes 8 de diciembre 22:37:49 2015
config:
Nombre Estado Leer Escribir Cksum
Poolz2 En línea 0 0 0
RAIDZ2-0 ONLINE 0 0 0
SDB Online 0 0 25
SDC Online 0 0 0
SDD en línea 0 0 0
sde ONLINE 0 0 0
errores:No hay errores de datos conocidos
Ahora podemos ver que uno o más discos han experimentado un error irrecuperable, por lo que debemos reemplazar el disco. En este caso, reemplazamos el disco /dev/sdb con /dev/sdf.
# zpool replace poolz2 sdb sdf
# zpool status
pool:poolz2
state:ONLINE
scan:resilvered 49.5K in 0h0m with 0 errores on Tue Dec 8 22:43:35 2015
Configuración:
Nombre Estado Leer Escribir Cksum
Poolz2 En línea 0 0 0
Raidz2-0 en línea 0 0 0
SDF en línea 0 0 0
SDC Online 0 0 0
SDD Online 0 0 0
SDE Online 0 0 0 0
Errores:No hay errores de datos conocidosDespués de reemplazar /dev/sdb por /dev/sdf, el error desapareció y aún podemos acceder al archivo de prueba que creamos antes.
# cat /poolz2/test.txt
Solo pruebaHasta este paso, sabemos cómo crear y configurar un zpool.
Paso 5:crear y configurar el sistema de archivos ZFS
En el siguiente paso, aprenderemos a crear y configurar el sistema de archivos ZFS.
# lista zfs
NOMBRE UTILIZADO DISPONIBLE REFERENCIA PUNTO DE MONTAJE
poolz2 105K 3.83G 26.1K /poolz2Ya tenemos un sistema de archivos ZFS, este se agrega automáticamente cuando creamos el zpool. Ahora crearemos otro sistema de archivos ZFS.
# zfs create poolz2/tank
# zfs list
NOMBRE UTILIZADO DISPONIBLE REFERIR MOUNTPOINT
poolz2 132K 3.83G 26.1K /poolz2
poolz2/tank 25.4K 3.83G 25.4K /poolz2/tanque# df-h | grep poolz2
poolz2 3.9G 128K 3.9G 1 % /poolz2
poolz2/tanque 3.9G 128K 3.9G 1 % /poolz2/tanque¿Muy fácil verdad? Creamos un nuevo sistema de archivos ZFS llamado tank y lo montamos automáticamente como /poolz2/tank.
¿Cómo crear un punto de montaje personalizado para un sistema de archivos ZFS? Utilice el siguiente comando:
# zfs create poolz2/data -o punto de montaje=/data
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0 % /poolz2
poolz2/tank 3.9G 0 3.9G 0 % /poolz2/tank
poolz2/data 3.9G 0 3.9G 0 % /data¿Cómo modificar el punto de montaje existente? Podemos hacerlo con el siguiente comando:
# zfs establece punto de montaje=/tank poolz2/tank
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0 % /poolz2
poolz2/data 3.9G 0 3.9G 0 % /data
poolz2/tank 3.9G 0 3.9G 0 % /tankPara montar y desmontar un sistema de archivos, use el siguiente comando:
# zfs desmontar /datos
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0 % /poolz2
poolz2/tanque 3.9G 0 3.9G 0 % /tanque# zfs mount poolz2/data
# df -h | grep poolz2
poolz2 3.9G 0 3.9G 0 % /poolz2
poolz2/tank 3.9G 0 3.9G 0 % /tank
poolz2/data 3.9G 0 3.9G 0 % /dataEliminar un sistema de archivos zfs es muy fácil, podemos usar el comando zfs destroy para eso.
# zfs destroy poolz2/data
# zfs list
NOMBRE UTILIZADO DISPONIBLE REFERIR MOUNTPOINT
poolz2 152K 3.83G 26.1K /poolz2
poolz2/tanque 25.4K 3.83G 25.4K /tanqueEl sistema de archivos /data se ha ido.
Conclusión
El sistema de archivos ZFS es un nuevo sistema de archivos revolucionario que cambia fundamentalmente la forma en que se administran los sistemas de archivos en los sistemas operativos similares a Unix. ZFS ofrece características y beneficios que no se encuentran en ningún otro sistema de archivos disponible en la actualidad. ZFS es robusto, escalable y fácil de administrar.