{"id":12571,"date":"2023-08-11T09:15:51","date_gmt":"2023-08-11T12:15:51","guid":{"rendered":"https:\/\/categoriaoutros.com.br\/?p=12571"},"modified":"2023-10-14T10:19:25","modified_gmt":"2023-10-14T13:19:25","slug":"usando-comandos-zfs-para-gerenciar-discos","status":"publish","type":"post","link":"https:\/\/categoriaoutros.com.br\/?p=12571","title":{"rendered":"Usando Comandos ZFS para Gerenciar Discos"},"content":{"rendered":"\n<p>Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/22\/FSC_Primergy_TX200_S2_0012.JPG\" alt=\"\"\/><figcaption class=\"wp-element-caption\">ZFS em Discos<\/figcaption><\/figure><\/div>\n\n\n<p>No artigo denominado <a href=\"https:\/\/categoriaoutros.com.br\/?p=12378\">O que \u00e9 ZFS? Um sistema de arquivos Opensource<\/a> ZFS \u00e9 muito mais que um sistema de arquivos, \u00e9 um gerenciador de volume e um sistema de armazenamento de dados desenvolvido pela Sun Microsystems  em 2001 para o sistema operacional <strong>Solaris<\/strong>. Atualmente \u00e9 usado em uma ampla variedade de plataformas, incluindo servidores, workstations e dispositivos de armazenamento de dados.<\/p>\n\n\n\n<p>A Sun Microsystems foi adquirida pela Oracle Corporation em 2010 e a Oracle licenciou o c\u00f3digo-fonte do ZFS para a comunidade de c\u00f3digo aberto em 2012. O ZFS agora \u00e9 desenvolvido e mantido pela OpenZFS Foundation.<\/p>\n\n\n\n<p>ZFS tem diversas fun\u00e7\u00f5es: Armazenamento baseado em pool, Copy-on-Write, Snapshots, Gerenciador de Volume de Software, RAID de software, replica\u00e7\u00e3o e compress\u00e3o e Integridade de dados contra corrup\u00e7\u00e3o silenciosa de dados(ou Data integrity against silent data corruption).<\/p>\n\n\n\n<p>No artigo <a href=\"https:\/\/categoriaoutros.com.br\/?p=12386\">ZFS: Instalando no Linux<\/a> vimos como fazer a instala\u00e7\u00e3o nas principais distros.<\/p>\n\n\n\n<p>Tamb\u00e9m vimos em <a href=\"https:\/\/categoriaoutros.com.br\/?p=12455\">ZFS: \u00c9 Recomendado Usar Mem\u00f3ria ECC com 8GB no M\u00ednimo<\/a> que \u00e9 recomendado o uso de Mem\u00f3rias ECC, por\u00e9m esse tipo de mem\u00f3ria seja cara para usu\u00e1rios de desktops. Uma quest\u00e3o abordada foi: <a href=\"https:\/\/categoriaoutros.com.br\/?p=12459\">&nbsp;Posso Instalar em Sistema de 32-bits ao Inv\u00e9s de 64-bits?<\/a><\/p>\n\n\n\n<p>Hoje iremos ver alguns exemplos de comandos usando ZFS em um computador com 4 discos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Termos ZFS Usado nesse Artigo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pool<\/strong>: \u00e9 um conjunto de discos que s\u00e3o combinados para formar um \u00fanico espa\u00e7o de armazenamento<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Servidor Usando nos Testes de Comandos ZFS<\/h2>\n\n\n\n<p>Usaremos os eguinte servidor para testes em nosso laborat\u00f3rio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nome: oraclelinux92<\/li>\n\n\n\n<li>Endere\u00e7o IP: 192.168.50.5<\/li>\n\n\n\n<li>Discos: sdb, sdc, sdd, sde<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplos de Comandos ZFS com Somente Um Disco no Pool<\/h2>\n\n\n\n<p>Nesse exemplo nosso pool conter\u00e1 somente 1 disco. Usarei o \/dev\/sdc<\/p>\n\n\n\n<p>#1 Para criar um pool simples e n\u00e3o redundante usando um \u00fanico dispositivo de disco:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create meuPool \/dev\/sdc  <\/pre>\n\n\n\n<p>Para visualizar o novo pool, execiute df:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\n....\nmeuPool              1,8G  128K  1,8G   1% \/meuPool<\/pre>\n\n\n\n<p>#2 O resultado acima mostra a cria\u00e7\u00e3o e montagem do pool chamado meuPool, que agora est\u00e1 acess\u00edvel como um sistema de arquivos.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# touch \/meuPool\/listas.txt\n[root@oraclelinux92 ~]# touch \/meuPool\/documentos.txt\n[root@oraclelinux92 ~]# touch \/meuPool\/livraria.txt<\/pre>\n\n\n\n<p>Veja,<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# ls \/meuPool\/\ndocumentos.txt  listas.txt  livraria.txt<\/pre>\n\n\n\n<p>#3 Este pool ainda n\u00e3o est\u00e1 usando nenhum recurso e propriedade avan\u00e7ada do ZFS. Para criar um dataset(conjunto de dados) neste pool com compacta\u00e7\u00e3o habilitada:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs create meuPool\/meuDataSet<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs set compression=gzip meuPool\/meuDataSet<\/pre>\n\n\n\n<p>Agora meuPool\/meuDataSet \u00e9 um sistema de arquivos ZFS compactado. Tente copiar alguns arquivos grandes<\/p>\n\n\n\n<p>Veja que ele \u00e9 montado automaticamente:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n...\nmeuPool              1,8G  128K  1,8G   1% \/meuPool\nmeuPool\/meuDataSet   1,8G  128K  1,8G   1% \/meuPool\/meuDataSet<\/pre>\n\n\n\n<p>Se quisesse montar, caso n\u00e3o estivesse, execute:  <strong>zfs mount meuPool\/meuDataSet<\/strong><\/p>\n\n\n\n<p>#4 Se quiser desfazer a compacta\u00e7\u00e3o proceda<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs set compression=off meuPool\/meuDataSet<\/pre>\n\n\n\n<p>#5 Para desmontar um sistema de arquivos, use <strong>zfs umount<\/strong> e verifique com <strong>df<\/strong>:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs unmount meuPool\/meuDataSet<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n.....\nmeuPool              1,8G  128K  1,8G   1% \/meuPool<\/pre>\n\n\n\n<p>#6 Para remontar o sistema de arquivos para torn\u00e1-lo acess\u00edvel novamente, use<strong> zfs mount<\/strong> e verifique com <strong>df<\/strong>:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs mount meuPool\/meuDataSet<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n...\nmeuPool              1,8G  128K  1,8G   1% \/meuPool\nmeuPool\/meuDataSet   1,8G  128K  1,8G   1% \/meuPool\/meuDataSet<\/pre>\n\n\n\n<p>Pode tamb\u00e9m executar apenas o comando <strong>mount <\/strong> para exibir as montagens<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# mount | grep meuPool\n<font color=\"#C01C28\"><b>meuPool<\/b><\/font> on \/<font color=\"#C01C28\"><b>meuPool<\/b><\/font> type zfs (rw,xattr,noacl)\n<font color=\"#C01C28\"><b>meuPool<\/b><\/font>\/meuDataSet on \/<font color=\"#C01C28\"><b>meuPool<\/b><\/font>\/meuDataSet type zfs (rw,xattr,noacl)<\/pre>\n\n\n\n<p>usei tamb\u00e9m &#8220;<strong>| grep meuPool<\/strong>&#8221; para filtrar apenas linhas contendo meuPool<\/p>\n\n\n\n<p>#7 Use DataSet ZFS como qualquer sistema de arquivos ap\u00f3s a cria\u00e7\u00e3o. Defina outros recursos dispon\u00edveis por DataSet quando necess\u00e1rio. O exemplo abaixo cria um novo sistema de arquivos chamado dados. Ele assume que o sistema de arquivos cont\u00e9m arquivos importantes e o configura para armazenar duas c\u00f3pias de cada bloco de dados.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs create meuPool\/dados\n[root@oraclelinux92 ~]# zfs set copies=2 meuPool\/dados<\/pre>\n\n\n\n<p>Usando <strong>df <\/strong>podemos ver as montagens<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n......\nmeuPool              1,8G  128K  1,8G   1% \/meuPool\nmeuPool\/meuDataSet   1,8G  128K  1,8G   1% \/meuPool\/meuDataSet\nmeuPool\/dados        1,8G  128K  1,8G   1% \/meuPool\/dados<\/pre>\n\n\n\n<p>Observe que todos os sistemas de arquivos no pool t\u00eam o mesmo espa\u00e7o dispon\u00edvel. O uso de df nesses exemplos mostra que os sistemas de arquivos usam o espa\u00e7o de que precisam e todos extraem esse espa\u00e7o do mesmo pool. O ZFS elimina conceitos como volumes e parti\u00e7\u00f5es e permite que v\u00e1rios sistemas de arquivos compartilhem o mesmo pool.<\/p>\n\n\n\n<p>#8 para destruir datasets use <strong>zfs destroy nomedataset<\/strong><\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs destroy meuPool\/meuDataSet<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs destroy meuPool\/dados<\/pre>\n\n\n\n<p>Vamos destruir o pool para trabalharmos no pr\u00f3ximo t\u00f3pico com outro.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy meuPool<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Trabalhando com Discos em Raid no ZFS<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"822\" height=\"780\" src=\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/Hds-sata.jpg\" alt=\"usando comandos ZFS para gerenciar discos\" class=\"wp-image-12599\" srcset=\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/Hds-sata.jpg 822w, https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/Hds-sata-300x285.jpg 300w, https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/Hds-sata-768x729.jpg 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><figcaption class=\"wp-element-caption\">usando comandos ZFS para gerenciar discos<\/figcaption><\/figure><\/div>\n\n\n<p>Os discos falham. Uma maneira de evitar a perda de dados por falha no disco \u00e9 usar o RAID. O ZFS oferece suporte a esse recurso em seu design de pool. Os pools RAID-Z requerem tr\u00eas ou mais discos, mas fornecem mais espa\u00e7o utiliz\u00e1vel do que os pools espelhados.<\/p>\n\n\n\n<p>A Sun recomenda que o n\u00famero de dispositivos usados \u200b\u200bem uma configura\u00e7\u00e3o RAID-Z esteja entre tr\u00eas e nove. Para ambientes que exigem um \u00fanico pool com 10 discos ou mais, considere dividi-lo em grupos RAID-Z menores. Se dois discos estiverem dispon\u00edveis, o espelhamento ZFS fornece redund\u00e2ncia, se necess\u00e1rio.<\/p>\n\n\n\n<p>Tamb\u00e9m, j\u00e1 temos alguns artigos falando sobre Raid:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=4956\">Tipos de Raids em Discos: Linear, RAID 0, RAID 1, RAID 5, RAID 4, RAID 5, RAID 6 e RAID 10<\/a><\/li>\n<\/ul>\n\n\n\n<p>Aqui irei usar os discos sdc, sdd e sde<\/p>\n\n\n\n<p>Este exemplo cria um pool RAID-Z, especificando os discos a serem adicionados ao pool:<\/p>\n\n\n\n<p>#1 crie um RAID-Z especificando os discos<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create meuPool  raidz   sdc sdd sde<\/pre>\n\n\n\n<p>O exemplo anterior criou o meuPool usando a ferramenta zpool. <\/p>\n\n\n\n<p>#2 Este outro exemplo abaixo cria um novo sistema de arquivos chamado documentos nesse pool:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs create meuPool\/documentos<\/pre>\n\n\n\n<p>#3 Ative a compacta\u00e7\u00e3o e armazene uma c\u00f3pia extra de diret\u00f3rios e arquivos:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs set compression=gzip meuPool\/documentos<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs set copies=2  meuPool\/documentos<\/pre>\n\n\n\n<p>Crie alguns documentos dentro do novo dataset.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>#4 podemos criar um snapshot. Um snapshot no ZFS \u00e9 uma c\u00f3pia instant\u00e2nea do estado atual do sistema de arquivos, permitindo a recupera\u00e7\u00e3o de dados ou a cria\u00e7\u00e3o de pontos de verifica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Coloque um @ para separar o dataset do nome do snapshot<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs snapshot meuPool\/documentos@11-08-2023<\/pre>\n\n\n\n<p>O ZFS cria snapshot de um conjunto de dados, n\u00e3o de um \u00fanico diret\u00f3rio ou arquivo.<\/p>\n\n\n\n<p>#4.1 exclua o conte\u00fado dentro de \/meuPool\/documentos e traga eles novamente ao recuperar o snapshot<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# rm -rf \/meuPool\/documentos\/*<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs rollback  meuPool\/documentos@11-08-2023<\/pre>\n\n\n\n<p>#5 Para listar todos os instant\u00e2neos dispon\u00edveis, execute <strong>ls<\/strong> no diret\u00f3rio<strong> .zfs\/snapshot<\/strong> do sistema de arquivos. Por exemplo, para ver o instant\u00e2neo obtido:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# ls -l \/meuPool\/.zfs\/snapshot\/\ntotal 0\ndrwxrwxrwx 1 root root 0 ago 14 11:37 <span style=\"background-color:#26A269\"><font color=\"#12488B\">11-08-2023<\/font><\/span><\/pre>\n\n\n\n<p>Como dica, crie um script para tirar instant\u00e2neos regulares dos dados do usu\u00e1rio. <\/p>\n\n\n\n<p>#6 Com o tempo, os instant\u00e2neos podem ocupar muito espa\u00e7o em disco. Remova o instant\u00e2neo anterior usando o comando:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs destroy  meuPool@11-08-2023\n<\/pre>\n\n\n\n<p>#7 podemos definir uma pasta qualquer onde o dataset ser\u00e1 montado. O comportamento padr\u00e3o \u00e9 que o dataset seja montado em um caminho parecido com o seu nome, por exemplo meuPool\/documentos \u00e9 montado em \/meuPool\/documentos. Vamos supor que queira montar meuPool\/documentos em \/meusDocs<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs set mountpoint=\/meusDocs meuPool\/documentos<\/pre>\n\n\n\n<p>veja o resultado,<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n.....\nmeuPool              3,6G  128K  3,6G   1% \/meuPool\nmeuPool\/documentos   3,6G  128K  3,6G   1% \/meusDocs<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Recuperando um Raid-Z<\/h2>\n\n\n\n<p>Cada RAID de software possui um m\u00e9todo de monitoramento de seu estado(status). Visualize o status dos dispositivos RAID-Z usando: <strong>zpool status -x<\/strong><\/p>\n\n\n\n<p>#1 Se todos os pools estiverem Online e tudo estiver normal, a mensagem ser\u00e1 exibida: <em>all pools are healthy<\/em><\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status  -x\nall pools are healthy<\/pre>\n\n\n\n<p>#1.1 Se retirarmos o -x do comando acima teremos um resultado mais detalhado<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status  \n  pool: meuPool\n state: ONLINE\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  raidz1-0  ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\t    sdd     ONLINE       0     0     0\n\t    sde     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p>Se houver um problema, talvez um disco no estado Offline, o estado do pool ficar\u00e1 assim:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: DEGRADED\nstatus: One or more devices has been taken offline by the administrator.\n\tSufficient replicas exist for the pool to continue functioning in a\n\tdegraded state.\naction: Online the device using &apos;zpool online&apos; or replace the device with\n\t&apos;zpool replace&apos;.\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     DEGRADED     0     0     0\n\t  raidz1-0  DEGRADED     0     0     0\n\t    sdc     ONLINE       0     0     0\n\t    sdd     ONLINE       0     0     0\n\t    sde     OFFLINE      0     0     0\n\nerrors: No known data errors<\/pre>\n\n\n\n<p>podemos ver que o disco sde est\u00e1 offline. <\/p>\n\n\n\n<p>Voc\u00ea pode definir manualmente um disco como offline com o comando: <strong>zpool offline meuPool sde<\/strong> e para colocar novamente online execute: <strong>zpool online meuPool sde<\/strong><\/p>\n\n\n\n<p>#2 Desligue o servidor e substitua o disco sde. Ap\u00f3s ligar novamente o servidor, execute <strong>zpool replace meuPool  sde<\/strong><\/p>\n\n\n\n<p>Nesse caso, sde \u00e9 o novo disco.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool replace meuPool  sde<\/pre>\n\n\n\n<p>Vamos checar novamete usando <strong>zpool status -x<\/strong><\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status -x\nall pools are healthy\n<\/pre>\n\n\n\n<p>Neste exemplo, tudo est\u00e1 normal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verifica\u00e7\u00e3o de dados <\/h2>\n\n\n\n<p>O ZFS usa <strong>checksums<\/strong> para verificar a integridade dos dados armazenados. A cria\u00e7\u00e3o de sistemas de arquivos os habilita automaticamente. <\/p>\n\n\n\n<p><strong>Checksums<\/strong> s\u00e3o valores num\u00e9ricos gerados a partir de dados para verificar se houve alguma altera\u00e7\u00e3o ou corrup\u00e7\u00e3o nos dados durante a transmiss\u00e3o ou armazenamento. Desativar <strong>Checksums<\/strong> \u00e9 poss\u00edvel, mas n\u00e3o recomendado! As somas de verifica\u00e7\u00e3o ocupam pouco espa\u00e7o de armazenamento e fornecem integridade de dados. A maioria dos recursos do ZFS n\u00e3o funcionar\u00e1 corretamente com sem <strong>checksums<\/strong>. Desativar esses <strong>checksums<\/strong> n\u00e3o aumentar\u00e1 o desempenho de forma percept\u00edvel.<\/p>\n\n\n\n<p>Verificar os <strong>checksums<\/strong>(chamadas <em>scrubbing<\/em>) garante a integridade do pool de armazenamento com:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool scrub meuPool<\/pre>\n\n\n\n<p>A dura\u00e7\u00e3o de um scrub depende da quantidade de dados armazenados. Quantidades maiores de dados levar\u00e3o proporcionalmente mais tempo para serem verificadas. Como o scrub \u00e9 intensivo em E\/S, o ZFS permite que um \u00fanico scrub seja executado por vez. Ap\u00f3s a conclus\u00e3o do scrub, visualize o status com zpool status:<\/p>\n\n\n\n<pre>\n[root@oraclelinux92 ~]# zpool status meuPool\n  pool: meuPool\n .....\n  scan: scrub repaired 0B in 00:00:00 with 0 errors on Mon Aug 14 12:13:08 2023\nconfig:\n....\n<\/pre>\n\n\n\n<p>Exibir a data de conclus\u00e3o do \u00faltimo scrub ajuda a decidir quando iniciar outra. As limpezas de rotina ajudam a proteger os dados contra corrup\u00e7\u00e3o silenciosa e garantem a integridade do pool.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#1 Administrando zpool<\/h2>\n\n\n\n<p><br>A administra\u00e7\u00e3o do ZFS usa dois utilit\u00e1rios principais:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zpool<\/li>\n\n\n\n<li>zfs<\/li>\n<\/ul>\n\n\n\n<p>O utilit\u00e1rio zpool controla a opera\u00e7\u00e3o do pool e permite adicionar, remover, substituir e gerenciar discos. Enquanto o utilit\u00e1rio zfs permite criar, destruir e gerenciar datasets(ou conjunto de dados), tanto sistemas de arquivos quanto volumes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#1.1 Criando e destruindo pools de armazenamento<\/h2>\n\n\n\n<p>A cria\u00e7\u00e3o de um pool de armazenamento ZFS requer decis\u00f5es permanentes, pois a estrutura do pool n\u00e3o pode ser alterada ap\u00f3s a cria\u00e7\u00e3o. A decis\u00e3o mais importante \u00e9 em quais tipos de vdevs agrupar os discos f\u00edsicos. Consulte a lista de tipos de vdev para obter detalhes sobre as op\u00e7\u00f5es poss\u00edveis. Depois de criar o pool, a maioria dos tipos de vdev n\u00e3o permite adicionar discos ao vdev. As exce\u00e7\u00f5es s\u00e3o mirrors, que permitem adicionar novos discos ao vdev, e stripes, que atualizam para mirrors anexando um novo disco ao vdev. Embora a adi\u00e7\u00e3o de novos vdevs expanda um pool, o layout do pool n\u00e3o pode ser alterado ap\u00f3s a cria\u00e7\u00e3o do pool. Em vez disso, fa\u00e7a backup dos dados, destrua o pool e recrie-o.<\/p>\n\n\n\n<p>Vamos destruir o pool que criamos acima<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy meuPool<\/pre>\n\n\n\n<p>#1 Crie um pool com dois discos espelhados(mirrored)<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create meuPool mirror sdd sde<\/pre>\n\n\n\n<p>Poder\u00edamo criar mais de um vdev da seguinte forma: <strong>zpool create meuPool mirror sdb sdc mirror sdd sde<\/strong><\/p>\n\n\n\n<p>Os pools tamb\u00e9m podem usar parti\u00e7\u00f5es em vez de discos inteiros. Colocar o ZFS em uma parti\u00e7\u00e3o separada permite que o mesmo disco tenha outras parti\u00e7\u00f5es para outras finalidades. Em particular, permite adicionar parti\u00e7\u00f5es com bootcode(c\u00f3digo de inicializa\u00e7\u00e3o) e sistemas de arquivos necess\u00e1rios para inicializar. Isso permite inicializar a partir de discos que tamb\u00e9m s\u00e3o membros de um pool. O ZFS n\u00e3o adiciona nenhuma peso de desempenho no FreeBSD ao usar uma parti\u00e7\u00e3o em vez de um disco inteiro. O uso de parti\u00e7\u00f5es tamb\u00e9m permite que o administrador provisione menos os discos, usando menos do que a capacidade total. Se um futuro disco de substitui\u00e7\u00e3o com o mesmo tamanho nominal do original realmente tiver uma capacidade um pouco menor, a parti\u00e7\u00e3o menor ainda caber\u00e1, usando o disco de substitui\u00e7\u00e3o.<\/p>\n\n\n\n<p>Vamos destruir mais uma vez o pool que criamos <\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy meuPool<\/pre>\n\n\n\n<p>#2 Agora, crie um pool RAID-Z2 usando parti\u00e7\u00f5es:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create  meuPool raidz2  sdb sdc sdd sde<\/pre>\n\n\n\n<p>veja <\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  raidz2-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\t    sdd     ONLINE       0     0     0\n\t    sde     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool list\nNAME      SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT\nmeuPool  7.50G   273K  7.50G        -         -     0%     0%  1.00x    ONLINE  -<\/pre>\n\n\n\n<p>e<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# df -h\nSist. Arq.           Tam. Usado Disp. Uso% Montado em\n...\nmeuPool              3,7G  128K  3,7G   1% \/meuPool<\/pre>\n\n\n\n<p>Vamos criar dois datasets<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs create meuPool\/docs\n[root@oraclelinux92 ~]# zfs create meuPool\/imagens\n<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs list\nNAME              USED  AVAIL     REFER  MOUNTPOINT\nmeuPool           238K  3.61G     32.9K  \/meuPool\nmeuPool\/docs     32.9K  3.61G     32.9K  \/meuPool\/docs\nmeuPool\/imagens  32.9K  3.61G     32.9K  \/meuPool\/imagens<\/pre>\n\n\n\n<p>No documento dentro de https:\/\/docs.freebsd.org diz que: <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Destrua um pool que n\u00e3o \u00e9 mais necess\u00e1rio para reutilizar os discos. A destrui\u00e7\u00e3o de um pool requer primeiro a desmontagem dos sistemas de arquivos desse pool. Se algum conjunto de dados estiver em uso, a opera\u00e7\u00e3o de desmontagem falhar\u00e1 sem destruir o pool. Force a destrui\u00e7\u00e3o do pool com -f. Isso pode causar um comportamento indefinido em aplicativos que tinham arquivos abertos nesses conjuntos de dados.<\/p>\n<\/blockquote>\n\n\n\n<p>S\u00f3 que n\u00e3o foi isso que os testes mostraram quando executados no Linux. Foi muito f\u00e1cil destruir um dataset e todo o pool.<\/p>\n\n\n\n<p>Vamos tentar destruir o dataset meuPool\/docs. Veja que conseguimos sem problema realizar e exclus\u00e3o do dataset:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zfs destroy meuPool\/docs<\/pre>\n\n\n\n<p>Vamos tentar excluir o pool meuPool. Veja que tamb\u00e9m conseguimos sem dificuldades<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy meuPool<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">#1.2 Adicionando e removendo dispositivos no Pool<\/h2>\n\n\n\n<p>Vamos refazer o pool com 3 dispositivos apenas<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create meuPool raidz2 sdb sdc sdd<\/pre>\n\n\n\n<p>Existem duas maneiras de adicionar discos a um pool: <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>anexar um disco a um vdev existente com o comando <strong>zpool attach<\/strong> ou <\/li>\n\n\n\n<li>adicionar vdevs ao pool com <strong>zpool add<\/strong>. <\/li>\n<\/ol>\n\n\n\n<p>Alguns<a href=\"https:\/\/categoriaoutros.com.br\/?p=12728#:~:text=os%20recursos%20dispon%C3%ADveis.-,Tipos%20de%20vdev,-Um%20pool%20consiste\"> tipos de vdev<\/a> permitem adicionar discos ao vdev ap\u00f3s a cria\u00e7\u00e3o.<\/p>\n\n\n\n<p>Um pool criado com um \u00fanico disco carece de redund\u00e2ncia. Ele pode detectar corrup\u00e7\u00e3o, mas n\u00e3o pode repar\u00e1-la, porque n\u00e3o h\u00e1 outra c\u00f3pia dos dados. A propriedade <strong>copies<\/strong> pode ser capaz de se recuperar de uma pequena falha, como um setor defeituoso, mas n\u00e3o fornece o mesmo n\u00edvel de prote\u00e7\u00e3o que o espelhamento ou RAID-Z. Come\u00e7ando com um pool que consiste em um \u00fanico disco vdev, use <kbd><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">zpool attach <\/mark><\/kbd>para adicionar um novo disco ao vdev, criando um espelho. Use tamb\u00e9m <kbd><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">zpool attach<\/mark><\/kbd> para adicionar novos discos a um grupo de espelhos, aumentando a redund\u00e2ncia e o desempenho de leitura. Ao particionar os discos usados \u200b\u200bpara o pool, replique o layout do primeiro disco no segundo. Use gpart backup e gpart restore para facilitar esse processo.<\/p>\n\n\n\n<p>No exemplo em docs.freebsd \u00e9 usado um exemplo para atualiar o disco \u00fanico (stripe) vdev ada0p3 para um espelho anexando ada1p3. L\u00e1, os seguintes comandos s\u00e3o executados:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>zpool status<\/li>\n\n\n\n<li>zpool attach mypool ada0p3 ada1p3<\/li>\n\n\n\n<li>gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 ada1<\/li>\n\n\n\n<li>zpool status<\/li>\n<\/ol>\n\n\n\n<p>Vamos ver eles com seus resultados<\/p>\n\n\n\n<pre>\n<b># zpool status<\/b>\n  pool: mypool\n state: ONLINE\n  scan: none requested\nconfig:\n\n        NAME        STATE     READ WRITE CKSUM\n        mypool      ONLINE       0     0     0\n          ada0p3    ONLINE       0     0     0\n\nerrors: No known data errors\n\n<\/pre>\n\n\n\n<pre>\n<b># zpool attach mypool ada0p3 ada1p3<\/b>\nMake sure to wait until resilvering finishes before rebooting.\n\nIf you boot from pool 'mypool', you may need to update boot code on newly attached disk _ada1p3_.\n\nAssuming you use GPT partitioning and _da0_ is your new boot disk you may use the following command:\n\n        gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 da0\n\n<\/pre>\n\n\n\n<pre>\n<b># gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 ada1<\/b>\nbootcode written to ada1\n\n<\/pre>\n\n\n\n<pre>\n<b># zpool status<\/b>\n  pool: mypool\n state: ONLINE\nstatus: One or more devices is currently being resilvered.  The pool will\n        continue to function, possibly in a degraded state.\naction: Wait for the resilver to complete.\n  scan: resilver in progress since Fri May 30 08:19:19 2014\n        527M scanned out of 781M at 47.9M\/s, 0h0m to go\n        527M resilvered, 67.53% done\nconfig:\n\n        NAME        STATE     READ WRITE CKSUM\n        mypool      ONLINE       0     0     0\n          mirror-0  ONLINE       0     0     0\n            ada0p3  ONLINE       0     0     0\n            ada1p3  ONLINE       0     0     0  (resilvering)\n\nerrors: No known data errors\n\n<\/pre>\n\n\n\n<pre>\n<b># zpool status<\/b>\n  pool: mypool\n state: ONLINE\n  scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:15:58 2014\nconfig:\n\n        NAME        STATE     READ WRITE CKSUM\n        mypool      ONLINE       0     0     0\n          mirror-0  ONLINE       0     0     0\n            ada0p3  ONLINE       0     0     0\n            ada1p3  ONLINE       0     0     0\n\nerrors: No known data errors\n\n<\/pre>\n\n\n\n<p>Em meu cen\u00e1rio, irei destruir o meuPool criado anteriormente  e criar outro apenas com um disco como vdev<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy meuPool\n[root@oraclelinux92 ~]# \n[root@oraclelinux92 ~]# zpool create  meuPool sdb\n[root@oraclelinux92 ~]# \n[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  sdb       ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p>Irei adicionar(attach) o disco sdc<\/p>\n\n\n\n<p>Veja que tive que mencionar o dispositivo sdb j\u00e1 existente e logo em seguinte o sdc que seria o novo<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool attach meuPool sdb sdc<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: resilvered 178K in 00:00:01 with 0 errors on Tue Aug 15 10:31:10 2023\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  mirror-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p>O comando abaixo \u00e9 \u00fatil se voc\u00ea inicializa o sistema operacional por essa parti\u00e7\u00e3o<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 da0<\/code><\/pre>\n\n\n\n<p>Quando adicionar discos ao vdev existente n\u00e3o \u00e9 uma op\u00e7\u00e3o, como no RAID-Z, um m\u00e9todo alternativo \u00e9 adicionar outro vdev ao pool. A adi\u00e7\u00e3o de vdevs fornece maior desempenho ao distribuir as grava\u00e7\u00f5es nos vdevs. Cada vdev fornece sua pr\u00f3pria redund\u00e2ncia. A mistura de tipos vdev como mirror(espelho) e RAID-Z \u00e9 poss\u00edvel, mas desencorajado. Adicionar um vdev n\u00e3o redundante a um pool contendo mirror ou vdevs RAID-Z arrisca os dados em todo o pool. A distribui\u00e7\u00e3o de grava\u00e7\u00f5es significa que uma falha do disco n\u00e3o redundante resultar\u00e1 na perda de uma fra\u00e7\u00e3o de cada bloco gravado no pool.<\/p>\n\n\n\n<p>ZFS distribui(stripe) os dados em cada um dos vdevs. Por exemplo, com dois vdevs espelhados(mirrored), isso \u00e9 efetivamente um RAID 10 que distribui as grava\u00e7\u00f5es em dois conjuntos de espelhos. O ZFS aloca espa\u00e7o para que cada vdev atinja 100% de capacidade ao mesmo tempo. Ter vdevs com diferentes quantidades de espa\u00e7o livre diminuir\u00e1 o desempenho, pois mais grava\u00e7\u00f5es de dados v\u00e3o para o vdev menos cheio.<\/p>\n\n\n\n<p>Ao conectar novos dispositivos a um pool de inicializa\u00e7\u00e3o, lembre-se de atualizar o c\u00f3digo de inicializa\u00e7\u00e3o(bootcode). Essa \u00e9 aquele \u00faltimo comando que mostrei logo acima e que disse que s\u00f3 seria necess\u00e1rio se o sistema operacional inicia em uma parti\u00e7\u00e3o com ZFS.<\/p>\n\n\n\n<p>Vamos adicionar um segundo disco. Antes vejamos  o status<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: resilvered 178K in 00:00:01 with 0 errors on Tue Aug 15 10:31:10 2023\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  mirror-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p>Agora, como meuPool est\u00e1 como espelhado(mirror) fa\u00e7o a seguinte forma a adi\u00e7\u00e3o para adicionar  o grupo espelho sdd e sde<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool add  meuPool mirror sdd sde<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: resilvered 178K in 00:00:01 with 0 errors on Tue Aug 15 10:31:10 2023\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  mirror-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\t  mirror-1  ONLINE       0     0     0\n\t    sdd     ONLINE       0     0     0\n\t    sde     ONLINE       0     0     0\n\nerrors: No known data errors<\/pre>\n\n\n\n<p>No cen\u00e1rio do passo a passo em docs.freebsd foi executado <strong>zpool add mypool mirror ada2p3 ada3p3<\/strong> e em seguida os comandos abaixo para definir bootcode:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 ada2<\/li>\n\n\n\n<li>gpart bootcode -b \/boot\/pmbr -p \/boot\/gptzfsboot -i 1 ada3<\/li>\n<\/ul>\n\n\n\n<p>em nosso ambiente de testes o bootcode n\u00e3o \u00e9 necess\u00e1rio.<\/p>\n\n\n\n<p>A remo\u00e7\u00e3o de vdevs de um pool \u00e9 imposs\u00edvel e a remo\u00e7\u00e3o de discos de um espelho \u00e9 exclusiva se houver redund\u00e2ncia restante suficiente. Se um \u00fanico disco permanecer em um grupo de espelhos, esse grupo deixar\u00e1 de ser um espelho e se tornar\u00e1 um stripe, arriscando todo o pool se o disco restante falhar.<\/p>\n\n\n\n<p>Removerei um disco de um grupo de espelhos com:<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool detach meuPool sdb<\/pre>\n\n\n\n<p>Veja,<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: resilvered 178K in 00:00:01 with 0 errors on Tue Aug 15 10:31:10 2023\nremove: Removal of vdev 3 copied 15K in 0h0m, completed on Tue Aug 15 12:19:52 2023\n\t120 memory used for removed device mappings\nconfig:\n\n\tNAME          STATE     READ WRITE CKSUM\n\tmeuPool       ONLINE       0     0     0\n\t  sdc         ONLINE       0     0     0\n\t  mirror-1    ONLINE       0     0     0\n\t    sdd       ONLINE       0     0     0\n\t    sde       ONLINE       0     0     0\n\nerrors: No known data errors<\/pre>\n\n\n\n<p>Para anexar novamente o sdb junto com o sdc voc\u00ea dever\u00e1 executar o comando abaixo mas prestando aten\u00e7\u00e3o em colocar o dispositivo que j\u00e1 existe(sdc) e logo ap\u00f3s ele o novo(sdb) que ser\u00e1 anexado.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool attach meuPool sdc sdb<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#1.3 Verificando o Status do Pool e Limpando Erros<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.3.1 Verificando o Status do Pool<\/h3>\n\n\n\n<p>O estado(status) do pool \u00e9 importante. Se uma unidade ficar off-line ou o ZFS detectar um erro de leitura, grava\u00e7\u00e3o ou dechecksum(soma de verifica\u00e7\u00e3o), a contagem de erros correspondente aumentar\u00e1. O status mostra a configura\u00e7\u00e3o e o estado de cada dispositivo no pool e o estado de todo o pool. A\u00e7\u00f5es a serem executadas e detalhes sobre o \u00faltimo scrub tamb\u00e9m s\u00e3o mostrados.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: resilvered 419K in 00:00:01 with 0 errors on Tue Aug 15 12:21:51 2023\nremove: Removal of vdev 3 copied 15K in 0h0m, completed on Tue Aug 15 12:19:52 2023\n\t120 memory used for removed device mappings\nconfig:\n\n\tNAME          STATE     READ WRITE CKSUM\n\tmeuPool       ONLINE       0     0     0\n\t  mirror-0    ONLINE       0     0     0\n\t    sdc       ONLINE       0     0     0\n\t    sdb       ONLINE       0     0     0\n\t  mirror-1    ONLINE       0     0     0\n\t    sdd       ONLINE       0     0     0\n\t    sde       ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.3.2 Limpando Erros<\/h3>\n\n\n\n<p>Ao detectar um erro, o ZFS aumenta as contagens de erro de leitura, grava\u00e7\u00e3o ou checksum(soma de verifica\u00e7\u00e3o). Limpa a mensagem de erro e redefine as contagens com o comando <kbd><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">zpool clear mypool<\/mark><\/kbd>. Limpar o estado de erro pode ser importante para scripts automatizados que alertam o administrador quando o pool encontra um erro. Sem limpar os erros antigos, os scripts podem n\u00e3o relatar mais erros.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool clear meuPool<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">1.4 Substituindo um Disco em funcionamento<\/h2>\n\n\n\n<p>Pode ser desej\u00e1vel substituir um disco por um disco diferente. Ao substituir um disco em funcionamento, o processo mant\u00e9m o disco antigo online durante a substitui\u00e7\u00e3o. O pool nunca entra em um estado degradado, reduzindo o risco de perda de dados. Executar<kbd><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"> zpool replace <\/mark><\/kbd>copia os dados do disco antigo para o novo. Ap\u00f3s a conclus\u00e3o da opera\u00e7\u00e3o, o ZFS desconecta o disco antigo do arquivo vdev. Se o novo disco for maior que o antigo, pode ser poss\u00edvel aumentar o zpool usando o novo espa\u00e7o. <\/p>\n\n\n\n<p>Para substituir um dispositivo fa\u00e7a <strong>zpool replace meuPool<\/strong> <strong>disco-a-ser-substitu\u00eddo  disco-novo<\/strong><\/p>\n\n\n\n<p>Por exemplo, se quisesse substituir o sde pelo sdf<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool replace meuPool  sde sdf<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">1.5 Trabalhando com Falhas em Disco<\/h2>\n\n\n\n<p>Quando um disco em um pool falha, o vdev ao qual o disco pertence entra no estado degradado. Os dados ainda est\u00e3o dispon\u00edveis, mas com desempenho reduzido porque o ZFS calcula os dados ausentes da redund\u00e2ncia dispon\u00edvel. Para restaurar o vdev para um estado totalmente funcional, substitua o dispositivo f\u00edsico com falha. O ZFS \u00e9 ent\u00e3o instru\u00eddo a iniciar a opera\u00e7\u00e3o de resilver. O ZFS recalcula os dados no dispositivo com falha a partir da redund\u00e2ncia dispon\u00edvel e os grava no dispositivo de substitui\u00e7\u00e3o. Ap\u00f3s a conclus\u00e3o, o vdev retorna ao status online.<\/p>\n\n\n\n<p>Se o vdev n\u00e3o tiver nenhuma redund\u00e2ncia ou se os dispositivos tiverem falhado e n\u00e3o houver redund\u00e2ncia suficiente para compensar, o pool entrar\u00e1 no estado de falha. A menos que dispositivos suficientes possam se reconectar, o pool se torna inoperante, exigindo uma restaura\u00e7\u00e3o de dados dos backups.<\/p>\n\n\n\n<p>Ao substituir um disco com falha, o nome do disco com falha muda para o GUID do novo disco. Um novo par\u00e2metro de nome para <kbd><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">zpool replace <\/mark><\/kbd>n\u00e3o \u00e9 necess\u00e1rio se o dispositivo de substitui\u00e7\u00e3o tiver o mesmo nome de dispositivo.<\/p>\n\n\n\n<p>Para testes, acabei destruindo o pool criado anteiormente e criei um novo contendo 2 discos espelhados,<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool destroy   meuPool<\/pre>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool create   meuPool  mirror sdb sdc<\/pre>\n\n\n\n<p>Vejamos o status<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  mirror-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdc     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<p>Irei remover o disco sdc e veremos que o status ficar\u00e1 como degradado porque h\u00e1 redund\u00e2ncia. Como estou usando o VirtualBox, coloquei o disco como hot-plug e desconectei pelo VirtualBox. Se voc\u00ea executar comandos como <strong>zpool detach meuPool sdb<\/strong> n\u00e3o dar\u00e1 certo. Veja: <a href=\"https:\/\/categoriaoutros.com.br\/?p=12835\">VirtualBox: O que \u00e9 Hot-Plug nas Configura\u00e7\u00f5es de Disco?<\/a><\/p>\n\n\n\n<p>Veja novamente o Status<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: DEGRADED\nstatus: One or more devices has been removed by the administrator.\n\tSufficient replicas exist for the pool to continue functioning in a\n\tdegraded state.\naction: Online the device using zpool online&apos; or replace the device with\n\t&apos;zpool replace&apos;.\n  scan: resilvered 345K in 00:00:01 with 0 errors on Wed Aug 16 13:40:55 2023\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     DEGRADED     0     0     0\n\t  mirror-0  DEGRADED     0     0     0\n\t    sdc     REMOVED      0     0     0\n\t    sdb     ONLINE       0     0     0\n\nerrors: No known data errors<\/pre>\n\n\n\n<p>Agora, vamos subsituir sdc que foi removido por sdd<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool replace  meuPool sdc sdd<\/pre>\n\n\n\n<p>Se voc\u00ea executar <strong>zpool status <\/strong>ver\u00e1 que estar\u00e1 sdd no lugar de sdc<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.6 Aplicando Scrub no Pool<\/h2>\n\n\n\n<p>Scrub vem de esfregar ou limpar e pool, como j\u00e1 sabemos, vem de piscina. Rotineiramente \u00e9 sempre bom fazer uma limpeza atrav\u00e9s da op\u00e7\u00e3o scrub do zpool. Pelo menos uma vez por m\u00eas \u00e9 bom fazer aplicar um scrub. A opera\u00e7\u00e3o de limpeza com scrub \u00e9 intensiva e reduzir\u00e1 o desempenho durante a execu\u00e7\u00e3o. Evite per\u00edodos de alta demanda ao agendar a depura\u00e7\u00e3o ou use <strong>vfs.zfs.scrub_delay<\/strong> para ajustar a prioridade relativa da depura\u00e7\u00e3o para evitar que reduza a velocidade de outras cargas de trabalho. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.6.1 Realizando Scrub<\/h3>\n\n\n\n<p>Execute <strong>zpool scrub meuPool <\/strong>para realizar a limpeza<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool scrub meuPool<\/pre>\n\n\n\n<p>Podemos ver no status do zpool o progresso ou quando foi realizado o \u00faltimo scrub.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool status\n  pool: meuPool\n state: ONLINE\n  scan: scrub repaired 0B in 00:00:01 with 0 errors on Thu Aug 17 12:12:38 2023\nconfig:\n\n\tNAME        STATE     READ WRITE CKSUM\n\tmeuPool     ONLINE       0     0     0\n\t  mirror-0  ONLINE       0     0     0\n\t    sdb     ONLINE       0     0     0\n\t    sdd     ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.6.2 Parando o scrub<\/h3>\n\n\n\n<p>Para cancelar uma opera\u00e7\u00e3o de limpeza, se necess\u00e1rio, execute <strong>zpool scrub -s meuPool<\/strong>.<\/p>\n\n\n\n<pre>[root@oraclelinux92 ~]# zpool scrub -s meuPool<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">1.7 Self-Healing ou autorrecupera\u00e7\u00e3o<\/h2>\n\n\n\n<p>Os checksums armazenadas com blocos de dados permitem que o sistema de arquivos se autorrecupere. Este recurso ir\u00e1 reparar automaticamente os dados cujo checksum n\u00e3o coincida com o registrado em outro dispositivo que faz parte do pool de armazenamento. Por exemplo, uma configura\u00e7\u00e3o espelhada com dois discos em que uma unidade est\u00e1 come\u00e7ando a funcionar mal e n\u00e3o pode mais armazenar os dados adequadamente. Isso \u00e9 pior quando os dados n\u00e3o foram acessados \u200b\u200bpor um longo per\u00edodo, como no armazenamento de arquivos de longo prazo. Os sistemas de arquivos tradicionais precisam executar comandos que verificam e reparam os dados como fsck(8). Esses comandos levam tempo e, em casos graves, um administrador precisa decidir qual opera\u00e7\u00e3o de reparo executar. Quando o ZFS detecta um bloco de dados com um checksum incompat\u00edvel, ele tenta ler os dados do disco espelhado. Se esse disco puder fornecer os dados corretos, o ZFS os fornecer\u00e1 ao aplicativo e corrigir\u00e1 os dados no disco com o checksum incorreto.<strong> Isso acontece sem qualquer intera\u00e7\u00e3o de um administrador do sistema durante a opera\u00e7\u00e3o normal do pool.<\/strong><\/p>\n\n\n\n<p>Um pool que consiste em um \u00fanico dispositivo n\u00e3o tem recursos de autocorre\u00e7\u00e3o. Um pool que consiste em um \u00fanico dispositivo n\u00e3o tem recursos de autocorre\u00e7\u00e3o. ZFS n\u00e3o requer fsck(8) ou programa de verifica\u00e7\u00e3o de consist\u00eancia do sistema de arquivos semelhante para detectar e corrigir isso e mant\u00e9m o pool dispon\u00edvel enquanto h\u00e1 um problema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o do meu post &#8220;usando comandos ZFS para gerenciar discos&#8221;<\/h2>\n\n\n\n<p>Nesse post denominado &#8220;usando comandos ZFS para gerenciar discos&#8221; vimos os principais comandos ZFS para termos uma ger\u00eancia e boa administra\u00e7\u00e3o dessa parte de infra que todo admin uma vez ou outra necessitar\u00e1 manusear. <\/p>\n\n\n\n<p>Fontes: <a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/zfs\/#zfs-differences\">docs.freebsd<\/a><\/p>\n\n\n\n<p>Veja tamb\u00e9m:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=3016\">Vendo Informa\u00e7\u00f5es do Sistema pelo CMD ou PowerShell<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=6587\">Calcule Online Capacidade do RAID que Planeja Criar<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=3518\">Windows: Redund\u00e2ncia de Discos no Windows Usando \u201cEspa\u00e7os de Armazenamento\u201d<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=3524\">Windows: Redund\u00e2ncia de Discos Usando o \u201cGerenciador de Discos\u201d<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=755\">O que \u00c9 AHCI e NVMe em Inform\u00e1tica?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=7919\">DRBD: Introdu\u00e7\u00e3o ao DRBD(Sistema de armazenamento replicado distribu\u00eddo) \u2013 Artigo 001<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/categoriaoutros.com.br\/?p=4956\">Tipos de Raids em Discos: Linear, RAID 0, RAID 1, RAID 5, RAID 4, RAID 5, RAID 6 e RAID 10<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos. No artigo denominado O que \u00e9 ZFS? Um sistema de arquivos Opensource ZFS \u00e9 muito mais que um sistema de arquivos, \u00e9 um gerenciador de volume e um sistema de armazenamento de&#8230;<\/p>\n<p class=\"more-link-wrap\"><a href=\"https:\/\/categoriaoutros.com.br\/?p=12571\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &ldquo;Usando Comandos ZFS para Gerenciar Discos&rdquo;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-12571","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usando Comandos ZFS para Gerenciar Discos - Categoria Outros<\/title>\n<meta name=\"description\" content=\"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/categoriaoutros.com.br\/?p=12571\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usando Comandos ZFS para Gerenciar Discos - Categoria Outros\" \/>\n<meta property=\"og:description\" content=\"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/categoriaoutros.com.br\/?p=12571\" \/>\n<meta property=\"og:site_name\" content=\"Categoria Outros\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/categoriaoutros\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-11T12:15:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-14T13:19:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/22\/FSC_Primergy_TX200_S2_0012.JPG\" \/>\n<meta name=\"author\" content=\"Categoria: Outros\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:site\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Categoria: Outros\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571#article\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571\"},\"author\":{\"name\":\"Categoria: Outros\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\"},\"headline\":\"Usando Comandos ZFS para Gerenciar Discos\",\"datePublished\":\"2023-08-11T12:15:51+00:00\",\"dateModified\":\"2023-10-14T13:19:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571\"},\"wordCount\":3761,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=12571#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571\",\"url\":\"https:\/\/categoriaoutros.com.br\/?p=12571\",\"name\":\"Usando Comandos ZFS para Gerenciar Discos - Categoria Outros\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\"},\"datePublished\":\"2023-08-11T12:15:51+00:00\",\"dateModified\":\"2023-10-14T13:19:25+00:00\",\"description\":\"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.\",\"breadcrumb\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=12571\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=12571#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/categoriaoutros.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Usando Comandos ZFS para Gerenciar Discos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"name\":\"Categoria Outros\",\"description\":\"Assuntos Diversos\",\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/categoriaoutros.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\",\"name\":\"Categoria Outros\",\"alternateName\":\"Categoria Outros\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"contentUrl\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"width\":400,\"height\":400,\"caption\":\"Categoria Outros\"},\"image\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/categoriaoutros\",\"https:\/\/twitter.com\/CategoriaOutros\",\"https:\/\/br.pinterest.com\/CategoriaOutros\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\",\"name\":\"Categoria: Outros\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"caption\":\"Categoria: Outros\"},\"sameAs\":[\"http:\/\/categoriaoutros.com.br\"],\"url\":\"https:\/\/categoriaoutros.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Usando Comandos ZFS para Gerenciar Discos - Categoria Outros","description":"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/categoriaoutros.com.br\/?p=12571","og_locale":"pt_BR","og_type":"article","og_title":"Usando Comandos ZFS para Gerenciar Discos - Categoria Outros","og_description":"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.","og_url":"https:\/\/categoriaoutros.com.br\/?p=12571","og_site_name":"Categoria Outros","article_publisher":"https:\/\/www.facebook.com\/categoriaoutros","article_published_time":"2023-08-11T12:15:51+00:00","article_modified_time":"2023-10-14T13:19:25+00:00","og_image":[{"url":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/22\/FSC_Primergy_TX200_S2_0012.JPG"}],"author":"Categoria: Outros","twitter_card":"summary_large_image","twitter_creator":"@CategoriaOutros","twitter_site":"@CategoriaOutros","twitter_misc":{"Escrito por":"Categoria: Outros","Est. tempo de leitura":"20 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/categoriaoutros.com.br\/?p=12571#article","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/?p=12571"},"author":{"name":"Categoria: Outros","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40"},"headline":"Usando Comandos ZFS para Gerenciar Discos","datePublished":"2023-08-11T12:15:51+00:00","dateModified":"2023-10-14T13:19:25+00:00","mainEntityOfPage":{"@id":"https:\/\/categoriaoutros.com.br\/?p=12571"},"wordCount":3761,"commentCount":2,"publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/categoriaoutros.com.br\/?p=12571#respond"]}]},{"@type":"WebPage","@id":"https:\/\/categoriaoutros.com.br\/?p=12571","url":"https:\/\/categoriaoutros.com.br\/?p=12571","name":"Usando Comandos ZFS para Gerenciar Discos - Categoria Outros","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/#website"},"datePublished":"2023-08-11T12:15:51+00:00","dateModified":"2023-10-14T13:19:25+00:00","description":"Nesse artigo iremos estar usando comandos ZFS para gerenciar discos de forma a utilizar recursos poderosos disponibilizados por esse excelente sistema de arquivos.","breadcrumb":{"@id":"https:\/\/categoriaoutros.com.br\/?p=12571#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/categoriaoutros.com.br\/?p=12571"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/categoriaoutros.com.br\/?p=12571#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/categoriaoutros.com.br\/"},{"@type":"ListItem","position":2,"name":"Usando Comandos ZFS para Gerenciar Discos"}]},{"@type":"WebSite","@id":"https:\/\/categoriaoutros.com.br\/#website","url":"https:\/\/categoriaoutros.com.br\/","name":"Categoria Outros","description":"Assuntos Diversos","publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/categoriaoutros.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/categoriaoutros.com.br\/#organization","name":"Categoria Outros","alternateName":"Categoria Outros","url":"https:\/\/categoriaoutros.com.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","contentUrl":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","width":400,"height":400,"caption":"Categoria Outros"},"image":{"@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/categoriaoutros","https:\/\/twitter.com\/CategoriaOutros","https:\/\/br.pinterest.com\/CategoriaOutros\/"]},{"@type":"Person","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40","name":"Categoria: Outros","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","caption":"Categoria: Outros"},"sameAs":["http:\/\/categoriaoutros.com.br"],"url":"https:\/\/categoriaoutros.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/12571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12571"}],"version-history":[{"count":17,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/12571\/revisions"}],"predecessor-version":[{"id":13872,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/12571\/revisions\/13872"}],"wp:attachment":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}