Vamos a dar los pasos para crear en FreeBSD dos raidz, crearemos también dos zpools y en uno de ellos vamos a montar la compresión y la deduplicacion que nos ofrece ZFS, a más voy a poner unos comandos que suelen ser útiles para controlar el tema.
El escenario es el siguiente, tenemos 8 discos duros, 4 de 2 TB y 4 de 600GB, la idea es crear dos raidz.
Primero de todo, lo que vamos a mirar es la lista de discos duros que tenemos en nuestro FreeBSD, lo haremos con el comando
egrep '^ad[0-9]|^da[0-9]' /var/run/dmesg.boot
Como os fijareis, estoy en una plataforma virtual, como consejo es diré que tengáis en cuenta los canales del conector de SCSI en VMware, yo soy partidario de separa los discos del sistema en el canal 0 y los de backup (en este caso) en el canal 1, esto también nos da la facilidad que en el caso que sean discos de backup, podamos decidir que esos discos no se realicen snapshot, o por ejemplo si tenemos que hace backup de esa máquina virtual, en mi caso con veeam backup, podremos decirle que no haga backup de los discos que estén conectados en el canal 1.
Un trozo de mi lista es:
da7: Command Queueing enabled
da7: 614400MB (1258291200 512 byte sectors: 255H 63S/T 78325C)
da8 at mpt1 bus 0 scbus3 target 6 lun 0
da8: <VMware Virtual disk 1.0> Fixed Direct Access SCSI-2 device
da8: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da8: Command Queueing enabled
da8: 2097151MB (4294967294 512 byte sectors: 255H 63S/T 267349C)
da9 at mpt1 bus 0 scbus3 target 8 lun 0
da9: <VMware Virtual disk 1.0> Fixed Direct Access SCSI-2 device
da9: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da9: Command Queueing enabled
da9: 614400MB (1258291200 512 byte sectors: 255H 63S/T 78325C)
Bien, pues vamos a crear primero los dos RAIDZ.
zpool create storage raidz da2 da3 da6 da8
Donde storage es el nombre del «pool» y da2..da8, los discos que queremos añadir a ese Raid.
Por defecto al colocar raidz nos generara algo parecido al RAID5 tradicional, pero disponemos de otro tipos de RAID, dentro del RAIDZ.
Tipos de RAID-Z
Raid 0
zpool create nombredelpoll discos
Raidz-2
Creación de un zpool raidz-2 con 4 discos, doble paridad y un disco de spare,
<pre>zpool create nombre del pool raidz2 discos spare disco_en_spare
Ahora vamos crear el segundo raidz
zpool create backups raidz da4 da5 da7 da9
Podemos ver que el Raid se creo correctamente con
zpool list
backups 2.33T 104G 2.23T 4% 1.43x ONLINE -
storage 7.94T 1.58T 6.36T 19% 1.00x ONLINE -
Para ver el punto de montaje, lo podemos hacer con un df -h
Como vamos a colocar copias de seguridad en este pool backups activaremos la compresión y la deduplicacion
Podemos hace una simulación de lo que podíamos ganar en el caso de activar la deduplicacion en un pool, con el comando
zdb -S pool
<pre>
zfs set dedup=on backups/
zfs set compression=gzip-9 backups/
Podemos elegir el nivel de compresión.
Cuando empecemos a trabajar con el, podemos ir comprobando lo que hemos ganado con la deduplicacion y compresion con el comando siguiente.
zdb -D pool
zdb -DD pool
Que nos devolverá información básica o detallada del pool.
Ejemplo basico
DDT-sha256-zap-duplicate: 2682724 entries, size 356 on disk, 166 in core
DDT-sha256-zap-unique: 14651367 entries, size 335 on disk, 150 in core
dedup = 2.42, compress = 3.52, copies = 1.00, dedup * compress / copies = 8.48
Ejemplo detallado
DDT-sha256-zap-duplicate: 2682724 entries, size 356 on disk, 166 in core
DDT-sha256-zap-unique: 14651367 entries, size 335 on disk, 150 in core
DDT histogram (aggregated over all DDTs):
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 14.0M 1.73T 471G 473G 14.0M 1.73T 471G 473G
2 1.23M 135G 42.6G 42.8G 3.08M 345G 106G 106G
4 513K 47.3G 18.8G 18.9G 2.43M 234G 91.8G 92.2G
8 311K 33.5G 10.4G 10.5G 3.25M 362G 110G 111G
16 118K 11.1G 4.30G 4.31G 2.61M 252G 95.7G 96.1G
32 396K 47.5G 11.1G 11.1G 14.1M 1.67T 405G 407G
64 11.9K 389M 373M 375M 1014K 32.9G 31.4G 31.5G
128 3.56K 142M 131M 132M 607K 23.5G 21.9G 21.9G
256 4.24K 75.7M 44.6M 45.8M 1.30M 23.7G 14.0G 14.3G
512 106 3.40M 3.34M 3.36M 67.6K 2.16G 2.12G 2.13G
1K 16 366K 350K 353K 21.9K 440M 418M 422M
2K 16 88.5K 67.5K 71.1K 42.5K 237M 178M 188M
4K 8 77.5K 39.5K 41.1K 43.2K 423M 218M 227M
8K 2 48K 48K 48.6K 23.5K 565M 565M 573M
16K 3 77.5K 77.5K 78.5K 53.8K 1.36G 1.36G 1.38G
32K 1 71.5K 71.5K 71.8K 36.9K 2.58G 2.58G 2.59G
Total 16.5M 2.00T 559G 561G 42.6M 4.65T 1.32T 1.33T
dedup = 2.42, compress = 3.52, copies = 1.00, dedup * compress / copies = 8.48
En este caso no vamos a separa la cache de cada pool y los logs, pero es posible tener una cache por cada grupo discos, una cache que es interesante que este en unos discos más rápidos, si vemos que nos hace falta podemos mirar el rendimiento de nuestro sistema de RAID con la aplicación que queramos, sabiendo que contra más compresión pues mas recursos.
Una herramienta que esta bastante bien es Bonnie++
Con esto ya tendremos montado nuestro sistema Raid-Z y algunas características de zfs