{"id":2347,"date":"2020-11-01T22:47:24","date_gmt":"2020-11-02T04:47:24","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2347"},"modified":"2020-11-03T00:43:10","modified_gmt":"2020-11-03T06:43:10","slug":"pendiente-24","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2347","title":{"rendered":"Gnu\/Linux BTRFS y ZFS"},"content":{"rendered":"\n<p><strong>\u00bf Que son ?<\/strong><\/p>\n\n\n\n<p>Son sistemas de archivos de alto rendimiento aunque con diferente licenciamiento motivo por el cual ZFS no es parte oficial del kernel de Linux aunque puede instalarse m\u00f3dulos externos que le dan a Linux la capacidad de usar ZFS, BTRFS si es parte del c\u00f3digo de Linux aunque RedHat mantiene desactivado el m\u00f3dulo y si se requiere se tiene que re compilar el kernel<\/p>\n\n\n\n<p><strong>\u00bf Cual es mejor ?<\/strong><\/p>\n\n\n\n<p>En las pruebas hechas tienen sus fuertes y sus desventajas.<\/p>\n\n\n\n<p><em>Ventajas de ambos sobre otros sistemas de archivos.<\/em><\/p>\n\n\n\n<p><br \/>Tienen Snapshot<br \/>Tienen vol\u00famenes<br \/>Pueden sustituir el RAID y los vol\u00famenes l\u00f3gicos, sus funcionalidades lo integran<\/p>\n\n\n\n<p><em>Ventajas de ZFS sobre BTRFS<\/em><\/p>\n\n\n\n<p><br \/>Tiene cifrado nativo<\/p>\n\n\n\n<p><br \/>Tiene auto reparaci\u00f3n, como si fuera el poder mutante de Wolfverine, sin intervenci\u00f3n del administrador<br \/>Tiene Vol\u00famenes Z ( Zvols ) que le permiten tener sistemas de archivos internos diferentes por ejemplo ext4 o xfs dentro del propio ZFS, entrega dispositivos de bloques que adem\u00e1s pueden ser cifrados nativamente por ZFS.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><em>\u00bf Por que un ZVOL es ventajoso ?<\/em><\/strong><\/p>\n\n\n\n<p>Por su forma de funcionar ni BTRFS ni ZFS permiten archivos de overlay, ni archivos loop con sistemas de archivos, significa que Docker no correr\u00eda sobre ZFS o que no podr\u00edas activar un archivo de SWAP para ayuda a la memoria RAM, el ZVOL te da un dispositivo de bloques que puede ser formateado como xfs, ext4 , ntfs si por alguna extra\u00f1a raz\u00f3n se requiere el caso es que es un dep\u00f3sito de bloques donde podr\u00edas correr tu Docker o tener SWAP<br \/>Tiene Raid nativo 0, 5,6, y soporta spare ( respuestos ) al mismo tiempo es una desventaja contra BTFS debido a que se comporta como un RAID en toda regla, aumentar los discos de un arrelo, no es recomendado si no es para agregar Spare disk<\/p>\n\n\n\n<p><em>Desventaja de ZFS frente a BTRFS<\/em><\/p>\n\n\n\n<p><br \/>No tiene rebalanceo de datos al agregar un nuevo disco a un pool con RAID<br \/>Hasta la versi\u00f3n 5.9.2 no se incluye en el kernel por un problema de licenciamiento de incompatibilidad con la GPL, siendo esto un problema filosofo mas que t\u00e9cnico. Para usarlo en Linux debe conseguir se el c\u00f3digo, compilar los m\u00f3dulos de forma externa e instalarlos, aunque en estos momentos se puede instalar en muchas distros con sus gestores de paquetes sin mayor problema.<\/p>\n\n\n\n<p><em>Ventajas de BTRFS<\/em><\/p>\n\n\n\n<p>Tiene RAID como ZFS pero al agregar mas discos, estos pueden participar del arreglo despu\u00e9s de hacer un rebalanceo, un proceso donde los discos se reajustan para aceptar un nuevo disco en el RAID manteniendo la integridad a tolerancia de fallos<br \/>Tiene su c\u00f3digo integrado al kernel, solo debe activarse a la hora de compilar<br \/>Tiene la capacidad de desfragmentar o desfragmentar y comprimir en un volumen montado y trabajando en vivo<\/p>\n\n\n\n<p><em>Sus de ventajas frente ZFS<\/em><\/p>\n\n\n\n<p><br \/>No tiene cifrado nativo, pero puede tenerlo con Luks y dm-crypt como cualquier otro sistema de archivos.<\/p>\n\n\n\n<p><strong>Como usar ambos sistemas de archivos<\/strong><\/p>\n\n\n\n<p>A continuaci\u00f3n se da una lista de comandos equivalente en ambos sistemas de archivos<\/p>\n\n\n\n<p>Inicializar el sistema de archivos en los discos duros ( formateo )<\/p>\n\n\n\n<p><br \/><strong>BTRFS Un solo disco<\/strong><\/p>\n\n\n\n<p><br \/>mkfs.btrfs \/dev\/hda<\/p>\n\n\n\n<p><br \/><strong>ZFS un solo disco<br \/><\/strong>zpool create NombrePool \/dev\/hda<\/p>\n\n\n\n<p><br \/>\u2022 En ZFS al formatear se debe crear el POOL que es el volumen root con el nombre dado en NombrePool y del cual pueden salir sub-vol\u00famenes<\/p>\n\n\n\n<p><strong>BTRFS 2 discos RAID 0 autom\u00e1tico<\/strong><\/p>\n\n\n\n<p><br \/>mkfs.btrfs \/dev\/hda \/dev\/hdb<\/p>\n\n\n\n<p><br \/>\u2022 En BTRFS se puede especificar el tipo de RAID al formatear sin embargo al agregar discos y tener suficientes para un RAID 5 se puede rebalanceo datos convirtiendo un RAID 1 o RAID 0 en RAID 5<\/p>\n\n\n\n<p><br \/><strong>ZFS 2 discos RAID 0<\/strong><\/p>\n\n\n\n<p><br \/>zpool create NombrePOOL \/dev\/hda \/dev\/hdb<\/p>\n\n\n\n<p><strong>BRTFS 2 o m\u00e1s discos RAID 1 espejo o mirror<\/strong><\/p>\n\n\n\n<p><br \/>mkfs.btrfs \/dev\/hda \/dev\/hdb<br \/>btrfs balance start -dconvert=raid1 -mconvert=raid1 \/mnt<\/p>\n\n\n\n<p><br \/>\u2022 La conversi\u00f3n se hace con BTRFS ya montado y en vivo sin afectar operaciones.<\/p>\n\n\n\n<p><br \/><strong>ZFS 2 o m\u00e1s discos RAID 1 espejo o mirror<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zpool create NombrePool mirror \/dev\/hda \/dev\/hdb<\/p>\n\n\n\n<p><strong>BRTFS Raid 5<\/strong><\/p>\n\n\n\n<p><br \/>mkfs.btrfs \/dev\/hda \/dev\/hdb \/dev\/hdc<br \/>btrfs balance start -dconvert=raid5 -mconvert=raid5 \/mnt<\/p>\n\n\n\n<p><br \/>\u2022 La conversi\u00f3n se hace con BTRFS ya montado y en vivo sin afectar operaciones, si al iniciar el formateo de BRTFS no se tienen los 3 discos m\u00ednimos se puede agregar despu\u00e9s y rebalancear<\/p>\n\n\n\n<p><br \/><strong>ZFS Raid 5<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zpool create grupo1 raidz1 \/dev\/hda \/dev\/hdb \/dev\/hdc<\/p>\n\n\n\n<p><br \/>\u2022 Agregar m\u00e1s discos a un arreglo ZFS no se recomienda, excepto para usarlos como spare. Por lo que debe tenerse los discos necesarios desde el inicio y saber muy bien si requiere el raid 5 llamado raidz1 o el raid6 llamado raidz2<\/p>\n\n\n\n<p><em>Montado de los sistemas de archivos<\/em><\/p>\n\n\n\n<p><strong>BTRFS<\/strong><\/p>\n\n\n\n<p>mount \/dev\/hda \/mnt<\/p>\n\n\n\n<p><br \/>\u2022 Se monta como cualquier sistema tradicional, tambi\u00e9n se puede montar llamando cualquiera de los discos de un arreglo, hace un mount con \/dev\/hdb llamara al \/dev\/hda y al \/dev\/hdc en automatico para recrear el raid y tambi\u00e9n puede ser agregado como una entrada en el archivo \/etc\/fstab para montados autom\u00e1ticos despu\u00e9s de un reinicio<\/p>\n\n\n\n<p><br \/><strong>ZFS<\/strong><\/p>\n\n\n\n<p><br \/>Asignar punto de montura del pool o de los vol\u00famenes<\/p>\n\n\n\n<p><br \/>zfs set mountpoint=\/mnt\/ NombrePool<br \/>zfs mount NombrePool<\/p>\n\n\n\n<p><br \/>\u2022 Zfs no usa el comando mount, incluye sus propios comandos de montado y tampoco se usa el \/etc\/fstab para montados despu\u00e9s del reinicio. En caso de reiniciar deber\u00e1 importarse el pool con el comando zpool import NombrePool el cual debe ser agregado a los scripts de inicio as\u00ed como los comandos de montado de ser necesario.<\/p>\n\n\n\n<p><strong>ZFS agregar un volumen<br \/><\/strong>zfs create NombreVolumen\/home<\/p>\n\n\n\n<p><strong>ZFS crear un ZVOL<\/strong><\/p>\n\n\n\n<p><br \/>zfs create -V 10G NombreVolumen\/ext4<\/p>\n\n\n\n<p><br \/>\u2022 Esta acci\u00f3n crear\u00eda un dispositivo especial \/dev\/zvol\/raid0\/ext4 de 10G, espacio tomado del pool con alias o linksimbolico en \/dev\/zd0 los cuales son un dispositivo de bloques que puede ser formateado por cualquier sistema de archivo o ser usado para swap mkfs.ext4 \/dev\/zvol\/raid0\/ext4<\/p>\n\n\n\n<p><br \/><strong>BTRFS Agregar un volumen y montado<\/strong><\/p>\n\n\n\n<p><br \/>btrfs subvolume create mnt\/home<br \/>mount \/dev\/hda \/home\/ -o subvol=home,rw<\/p>\n\n\n\n<p><br \/><strong>ZFS Agregar un volumen y montado<\/strong><\/p>\n\n\n\n<p><br \/>zfs create NombrePool\/home<br \/>zfs set mountpoint=\/home NombreVolumen\/home<br \/>zfs mount NombreVolumen\/home<\/p>\n\n\n\n<p><strong>BTRFS Desmontar un volumen<br \/><\/strong>umount \/home<\/p>\n\n\n\n<p><strong>ZFS Desmontar un volumen<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zfs umount NombreVolumen<\/p>\n\n\n\n<p><strong>BTRFS cifrado del sistema de archivos con todo y vol\u00famenes<\/strong><\/p>\n\n\n\n<p><br \/>BTRFS no cuenta con un cifrado nativo, pero puede ayudarse de Luks2<\/p>\n\n\n\n<p><strong>ZFS cifrado de volumen o de Zvols<\/strong><\/p>\n\n\n\n<p><br \/>zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt NombrePool\/home<br \/><\/p>\n\n\n\n<p>zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt -V 5G NombreVolumen\/ext4<\/p>\n\n\n\n<p><strong>ZFS Abrir un volumen cifrado despu\u00e9s un reinicio<\/strong><\/p>\n\n\n\n<p><br \/><em>Pregunta la clave de todos los vol\u00famenes cifrados<\/em><\/p>\n\n\n\n<p><em><br \/><\/em>zfs load-key -a<br \/><\/p>\n\n\n\n<p>Pregunta la clave un volumen especifico<\/p>\n\n\n\n<p>zfs load-key NombreVolumen\/home<\/p>\n\n\n\n<p><strong>BTRFS Comprimir un volumen<\/strong><\/p>\n\n\n\n<p><br \/>mount \/dev\/hda \/home\/ -o subvol=home,rw,nosuid,nodev,noexec,compress=lzo<br \/><\/p>\n\n\n\n<p>\u2022 Se recomienda montar un volumen con compresi\u00f3n si eso se desea desde su creacion por que los archivos que hayan quedado sin compresi\u00f3n se mantendr\u00e1n as\u00ed a menos que manualmente se le indique como una opci\u00f3n de desfragmentaci\u00f3n en vivo sobre un sistema de archivos montado<\/p>\n\n\n\n<p><br \/><strong>ZFS Comprimir un volumen<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zfs set compression=lz4 NombrePool\/home<br \/>\u2022 Al igual que con BTRFS, si se planea que sea comprimido debe hacerse desde la creaci\u00f3n, por que los archivos que no se hayan comprimido se quedaran sin comprimir, solo los nuevos ser\u00e1n comprimidos.<\/p>\n\n\n\n<p><br \/><strong>BTRFS borrar un volumen<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>btrfs subvolume delete mnt\/home<\/p>\n\n\n\n<p><strong>ZFS Borrar un volumen<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zfs destroy NombreVolumen\/home<\/p>\n\n\n\n<p><strong>BTRFS comandos para la revisi\u00f3n de salud del sistema de archivos<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>btrfs filesystem show<br \/>btrfs filesystem df home\/<br \/>btrfs device stats \/home<\/p>\n\n\n\n<p><br \/><strong>ZFS comandos para la revisi\u00f3n de salud del sistema de archivos<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zpool status<\/p>\n\n\n\n<p><strong>BTRFS reemplazar disco por otro (spare)<\/strong><\/p>\n\n\n\n<p><br \/>btrfs replace start \/dev\/hda \/dev\/hdd \/home\/<\/p>\n\n\n\n<p><br \/>\u2022 Se hace con los sistemas de archivos montados en vivo<br \/>Retirar un disco o retirar un disco faltante f\u00edsicamente<br \/>btrfs device delete \/dev\/hda \/mnt\/<br \/>btrfs device delete missing \/dev\/hda \/mnt\/<\/p>\n\n\n\n<p>\u2022 Se puede retirar un disco de un arreglo, si el resto de los discos tienen suficiente espacio para respaldar el contenido del que se va a retirar, al poner un disco nuevo que lo sustituya se deber\u00e1 hacer un rebalanceo de los datos que han quedado desordenados y sin tolerancia a fallos al retirar un disco del arreglo, se usa missing para retirar un disco que se ha da\u00f1ado por completo y no hay nada que se pueda respaldar, si el arreglo permite la perdida de un disco por tolerancia a fallos podr\u00e1 continuar en modo degradado<\/p>\n\n\n\n<p><strong>ZFS retirar un disco del arreglo del pool.<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zpool remove NombrePool \/dev\/hda<br \/>o<br \/>zpool detach NombrePool \/dev\/had<\/p>\n\n\n\n<p><br \/>\u2022 Debido a que los RAID con tolerancia a fallos en zfs son muy parecidos a los tradicionales, no se podr\u00e1 remover discos que hagan fallar la integridad del arreglo. Solo pueden ser removido discos declarados como spare o de un arreglo mirror<\/p>\n\n\n\n<p><br \/><strong>ZFS reemplazar disco por otro (spare)<\/strong><\/p>\n\n\n\n<p><strong><br \/><\/strong>zpool replace NombrePool \/dev\/hda \/dev\/hdd<\/p>\n\n\n\n<p><strong>Video con comparativo de velocidades de sistemas de archivos en GNU\/Linux<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=yRcrdl4iEc4\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u00bf Que son ? Son sistemas de archivos de alto rendimiento aunque con diferente licenciamiento motivo por el cual ZFS no es parte oficial del kernel de Linux aunque puede instalarse m\u00f3dulos externos que le dan a Linux la capacidad de usar ZFS, BTRFS si es parte del c\u00f3digo de Linux aunque RedHat mantiene desactivado&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1924,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2347","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2347"}],"version-history":[{"count":3,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2347\/revisions"}],"predecessor-version":[{"id":2352,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2347\/revisions\/2352"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/1924"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}