La administración de discos y sistemas de ficheros zfs en Solaris (y en BSD) es algo distinta a lo que estamos acostumbrados para otros entornos Unix y GNU/Linux (ext3, ext4…). Zfs es un sistema de ficheros de 128-bit con una gran escalabilidad, estabilidad, transaccional y con una especial seguridad en la integridad de los datos. Pero no vamos a entrar en estos detalles sino en cómo gestionar este sistema.
Los dos comandos que debemos conocer para trabajar con sistemas de ficheros zfs son zpool y zfs. zpool es la primera capa de abstracción, crea pools de discos que pueden gestionar a su vez X sistemas de ficheros. A posteriori, se pueden añadir más discos al pool y automáticamente los sistemas de ficheros reciben este espacio sin gestión extra, algo excepcional para la escalabilidad.
Vamos a añadir un pool de prueba con un disco extra que tenemos en nuestro sistema. Podemos ver los discos físicos con el comando iostat -En:
# iostat -En c7d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 Model: VBOX HARDDISK Revision: Serial No: VB5d392fb1-ed1f Size: 7,13GB Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0 Illegal Request: 0 c7d1 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 Model: VBOX HARDDISK Revision: Serial No: VBf793d417-2c8e Size: 1,07GB Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0 Illegal Request: 0 c8d1 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 Model: VBOX HARDDISK Revision: Serial No: VBf3c2659f-ea9c Size: 1,07GB Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0 Illegal Request: 0 c8t0d0 Soft Errors: 0 Hard Errors: 6 Transport Errors: 0 Vendor: VBOX Product: CD-ROM Revision: 1.0 Serial No: Size: 0,00GB Media Error: 0 Device Not Ready: 6 No Device: 0 Recoverable: 0 Illegal Request: 0 Predictive Failure Analysis: 0
El disco c7d0 es el que engloba el sistema y su propio pool (rpool), así que creamos de momento un nuevo pool llamado rpool2 con el disco c7d1:
# zpool rpool2 c7d1
Una vez realizado, automáticamente el pool se crea y es visible con un df -h, englobando todo el espacio del disco, se monta sólo:
# df -h /rpool2 Filesystem Size Used Avail Use% Mounted on rpool2 976M 31K 976M 1% /rpool2
Ahora podemos comenzar a crear sistemas de ficheros dentro del pool con el comando zfs, creamos el sistema de ficheros /rpool2/test, que se monta de forma automática:
# zfs create rpool2/test # df -h | grep rpool2 rpool2 976M 32K 976M 1% /rpool2 rpool2/test 976M 31K 976M 1% /rpool2/test
Lo interesante de esto es que una vez establecidos los pool, en caso de necesitar agregar más espacio a alguno de ellos, es tan sencillo como agregar nuevos discos al pool, automáticamente el espacio se asignará a los sistemas de ficheros que contiene. Yo tengo otro disco c8d1 así que lo voy a agregar para aumentar al doble el espacio del pool y sus sistemas de ficheros. Usaremos el comando zpool add seguido del pool y los discos a añadir:
# zpool add rpool2 c8d1
Y ya está, nuestro pool ha aumentado al doble su capacidad sin mayor gestión:
# df -h | grep rpool2 rpool2 2,0G 32K 2,0G 1% /rpool2 rpool2/test 2,0G 31K 2,0G 1% /rpool2/test
Si queremos tener una visión global de los pool en el sistema utilizamos el comando zpool list:
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 6,56G 2,93G 3,63G 44% 1.00x ONLINE - rpool2 1,97G 132K 1,97G 0% 1.00x ONLINE -
Por supuesto, no tenemos porque dejar que todos los sistemas de ficheros dispongan de todo el espacio del pool, podemos limitarlo estableciendo quotas:
# zfs set quota=200M rpool2/test
# df -h | grep test rpool2/test 200M 31K 200M 1% /rpool2/test
Podría decirse que esto es lo más básico, la conclusión que podemos sacar es que, es una forma distinta de trabajar los discos y sistemas de ficheros, pero una vez acostumbrados es bastante más sencilla y práctica que los sistemas de ficheros tradicionales. Podemos seguir investigando las opciones de zpool y zfs con sus páginas man. Encontraremos otras utilidades de gran importancia, por ejemplo la posibilidad de visualizar el estado de IO en los pools:
# zpool iostat rpool2 capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- rpool2 132K 1,97G 0 2 1,69K 14,6K
Os invito a investigar un poco, es un sistema lleno de posibilidades y realmente interesante, deduplicación, compresión, snapshots…