Solución 1:
Uso ZFS en Linux como administrador de volúmenes y un medio para proporcionar protecciones y funcionalidades adicionales a los sistemas de archivos tradicionales. Esto incluye llevar instantáneas a nivel de bloque, replicación, deduplicación, compresión y almacenamiento en caché avanzado a los sistemas de archivos XFS o ext4.
Consulte:https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ para obtener otra explicación.
En mi caso de uso más común, aprovecho la función ZFS zvol para crear un volumen disperso en un zpool existente. Las propiedades de ese zvol se pueden configurar como un sistema de archivos ZFS normal. En este momento, puede establecer propiedades como el tipo de compresión, el tamaño del volumen, el método de almacenamiento en caché, etc.
La creación de este zvol presenta un dispositivo de bloque para Linux que se puede formatear con el sistema de archivos de su elección. Usa fdisk
o parted
para crear su partición y mkfs
el volumen terminado.
Monte esto y esencialmente tendrá un sistema de archivos respaldado por un zvol y con todas sus propiedades.
Este es mi flujo de trabajo...
Cree un zpool compuesto por cuatro discos:
Querrás el ashift=12
directiva para el tipo de discos que está utilizando. El nombre de zpool es "vol0" en este caso.
zpool create -o ashift=12 -f vol0 espejoscsi-AccOW140403AS1322043scsi-AccOW140403AS1322042 espejoscsi-AccOW140403AS1322013scsi-AccOW140403AS1322044
Establecer la configuración inicial de zpool:
Configuré autoexpand=on
en el nivel de zpool en caso de que alguna vez reemplace los discos con unidades más grandes o amplíe el grupo en un espejo ZFS configuración. Por lo general, no uso ZFS raidz1/2/3 debido al bajo rendimiento y la incapacidad de expandir el zpool.
zpool set autoexpand=on vol0
Establecer propiedades iniciales del sistema de archivos zfs:
Utilice el lz4
algoritmo de compresión para nuevas instalaciones de ZFS. Está bien dejarlo encendido todo el tiempo.
zfs set compression=lz4 vol0
zfs set atime=off vol0
Crear ZFS zvol:
Para ZFS en Linux, es muy importante que utilice un tamaño de bloque grande. -o volblocksize=128k
es absolutamente esencial aquí. El -s
La opción crea un zvol escaso y no consume espacio del grupo hasta que se necesita. Puede comprometerse en exceso aquí, si conoce bien sus datos. En este caso, tengo alrededor de 444 GB de espacio en disco utilizable en el grupo, pero estoy presentando un volumen de 800 GB para XFS.
zfs create -o volblocksize=128K -s -V 800G vol0/pprovol
Dispositivo zvol de partición:
(debe ser /dev/zd0 para el primer zvol; /dev/zd16, /dev/zd32, etc. para los siguientes zvols )
fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)
Crear y montar el sistema de archivos:
mkfs.xfs o ext4 en la partición recién creada, /dev/zd0p1.
mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1
Toma el UUID con blkid
y modificar /etc/fstab
.
UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro xfs noatime,logbufs=8,logbsize=256k 1 2
Monte el nuevo sistema de archivos.
mount /ppro/
Resultados...
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sde2 20G 8.9G 9.9G 48% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sde1 485M 63M 397M 14% /boot
/dev/sde7 2.0G 68M 1.9G 4% /tmp
/dev/sde3 12G 2.6G 8.7G 24% /usr
/dev/sde6 6.0G 907M 4.8G 16% /var
/dev/zd0p1 800G 398G 403G 50% /ppro <-- Compressed ZFS-backed XFS filesystem.
vol0 110G 256K 110G 1% /vol0
Listado del sistema de archivos ZFS.
[[email protected] ~]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
vol0 328G 109G 272K /vol0
vol0/pprovol 326G 109G 186G - <-- The actual zvol providing the backing for XFS.
vol1 183G 817G 136K /vol1
vol1/images 183G 817G 183G /images
Lista de zpool de ZFS.
[[email protected] ~]# zpool list -v
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
vol0 444G 328G 116G 73% 1.00x ONLINE -
mirror 222G 164G 58.1G -
scsi-AccOW140403AS1322043 - - - -
scsi-AccOW140403AS1322042 - - - -
mirror 222G 164G 58.1G -
scsi-AccOW140403AS1322013 - - - -
scsi-AccOW140403AS1322044 - - - -
Propiedades de ZFS zvol (tome nota de referenced
, compressratio
y volsize
).
[[email protected] ~]# zfs get all vol0/pprovol
NAME PROPERTY VALUE SOURCE
vol0/pprovol type volume -
vol0/pprovol creation Sun May 11 15:27 2014 -
vol0/pprovol used 326G -
vol0/pprovol available 109G -
vol0/pprovol referenced 186G -
vol0/pprovol compressratio 2.99x -
vol0/pprovol reservation none default
vol0/pprovol volsize 800G local
vol0/pprovol volblocksize 128K -
vol0/pprovol checksum on default
vol0/pprovol compression lz4 inherited from vol0
vol0/pprovol readonly off default
vol0/pprovol copies 1 default
vol0/pprovol refreservation none default
vol0/pprovol primarycache all default
vol0/pprovol secondarycache all default
vol0/pprovol usedbysnapshots 140G -
vol0/pprovol usedbydataset 186G -
vol0/pprovol usedbychildren 0 -
vol0/pprovol usedbyrefreservation 0 -
vol0/pprovol logbias latency default
vol0/pprovol dedup off default
vol0/pprovol mlslabel none default
vol0/pprovol sync standard default
vol0/pprovol refcompressratio 3.32x -
vol0/pprovol written 210M -
vol0/pprovol snapdev hidden default
Solución 2:
También debe habilitar el descarte en el sistema de archivos ext4. Sin descartar, zfs no recupera el espacio cuando se eliminan los archivos. Esto puede conducir a grandes discrepancias de espacio entre lo que informa el sistema de archivos ext4 y los informes de volumen zfs.