FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por...

34
FreeBSD 7 – GEOM + ZFS FreeBSD 7 GEOM + ZFS Truques com Discos usando o GEOM & O poderoso sistema de arquivos da SUN, o ZFS Serviço Técnico de Informática Faculdade de Ciências e Letras do Campus de Araraquara Universidade Estadual Paulista – Júlio de Mequita Filho

Transcript of FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por...

Page 1: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

 

 

FreeBSD 7 GEOM + ZFS

 

 

Truques com Discos usando o GEOM 

O poderoso sistema de arquivos da SUN, o ZFS 

               

Serviço Técnico de Informática Faculdade de Ciências e Letras do Campus de Araraquara Universidade Estadual Paulista – Júlio de Mequita Filho 

Page 2: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Hardware VS. Software RAID 

Um dos maiores requisitos quanto se deve armazenar dados importantes é a utilização de  RAID,  ou  Redundant  Array  of  Independed  Disks  –  Conjunto  Redundante  de  Discos Independentes. O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID chamados Controladores RAID. A maioria dos sistemas de RAID via Hardware são muito estáveis, e normalmente a maneira mais eficiente de gerenciar um RAID. O problema  com o RAID por Hardware  é  que diferentes  controladoras  gravam dados nos discos em formatos diferentes. Se sua controladora apresentar problemas, você não poderá  trocá‐la  por  uma  controladora  diferente,  ela  poderá  não  reconhecer  os  dados nos discos. Então você sempre terá que ter a sua disposição uma controladora idêntica no caso de uma falha. O RAID por Software é gerenciado pelo Sistema Operacional, o qual decide como deve ser  armazenado  os  dados  nos  discos.  Comparado  com  o  RAID  por  Hardware,  este método apresenta um pequeno aumento na carga do sistema, mas requer equipamentos mais  baratos.  E  você  não  corre  o  risco  de  perder  seus  dados  por  não  encontrar  uma controladora identifica quando houver algum problema. 

 

             

Page 3: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

GEOM – Modular Disk Transformation Framework 

GEOM STRIPE – RAID 0 

O gstripe(8) é utilizado para fazer RAID 0 entre dois ou mais disco. O RAID 0 conhecido como, Striping, é um método utilizado para combinar alguns discos em um único grande volume. Na grande maioria das vezes isto é feito através de uma controladora, porém o gstripe(8) permite o que o mesmo seja feito via software.  

  A gravação é feita como se todos os discos que formam o array fossem somente um, por exemplo, em uma gravação, os dados serão distribuídos por todos os discos do RAID, se um arquivo de 265k  for gravado em um RAID 0 de 4 discos, o dado será dividido em quatro  partes  de  64k  que  serão  gravadas  uma  em  cada  disco.  Assim  aumentando  a velocidade de I/O e o tamanho de uma unidade.  

Utlizando 

 Para  utilizar  o  gstripe(8)  precisamos  adicionar  a  linha  abaixo  no  arquivo  de configuração do kernel. E depois construir o novo kernel.  

options  GEOM_STRIPE 

   

Page 4: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Outra opção é carregar o módulo dinâmico do kernel, para isto adicione a linha abaixo no seu /boot/loader.conf 

geom_stripe_load="YES" 

 Ou  então,  podemos  ativar  o  gstripe(8)  temporáriamente  carregando  o  modulo  do kernel:  

# kldload geom_stripe 

 

Utilizando o gstripe 

 O primeiro argumento do gstripe(8) diz a ação que ele deve tomar. Vamos ver eles abaixo:   

• create 

Esta  opção  tem  a  sintaxe  mínima  "gstripe  create  nome  dispositivo1 dispositivo2"  onde  “nome”  é  o  nome  do  novo  dispositivo  que  será armazenado  em  /dev/stripe  e  dispositivosX  são  os  dispositivos  de armazenamento que serão utilizados. Este é o modo manual de criar uma configuração, isto é, cada vez que você deseja criar o dispositivo, você terá que executar o gstripe(8). Se  o  módulo  geom_stripe.ko  não  estiver  sido  carregado,  ele  será carregado. Esta opção aceita algumas flags que veremos abaixo:  

­s stripesize 

Especifica  o  tamanho  do  bloco  em  que  as  informações  serão divididas, o número deve ser um múltiplo do maior setor de todos os discos. 

 Vamos ver um exemplo abaixo, para criarmos o diretório /home. Vamos criar o dispositivo, criar o sistema de arquivos e montar.  

# gstripe create st0 /dev/da0 /dev/da1

 NOTA: Os discos ou partições devem ter o mesmo amanho! 

 

Page 5: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• label 

Esta é a maneira automática de criar um dispositivo. A sintaxe é a mesma do  create,  somente  alterando o  create  para  o  label.  Neste  caso,  a  flag  ­s também  é  aceita.  Deste  modo,  depois  que  o  dispositivo  é  criado,  as informações  serão  reconhecidas  automaticamente  pelo  sistema,  assim  é possível  adicionar uma entrada no  fstab  com o dispositivo  criado, neste caso o /dev/stripe/st0. 

 

# gstripe label st0 /dev/da0 /dev/da1  

# bsdlabel ­wB /dev/stripe/st0 

# newfs /dev/stripe/st0a  

# mount /dev/stripe/st0a /home 

 Para  adicionar uma entrada para  este dispositivo no  fstab,  para montar em /home, adicione a seguinte linha no /etc/fstab: 

 

# echo  /dev/stripe/st0a /home  ufs   rw  2  2 >> /etc/fstab 

 

• stop 

Desliga um array, esta opção deve ser seguida pelo nome do array a ser desligado, este comando não mexe nos meta dados do array. 

 

# gstripe stop st0 

 

• clear 

Limpa os meta dados de um dos dispositivos que formam o array.  

# gstripe clear /dev/da0 

 

• dump 

Cria um backup dos meta‐dados do array.  

# gstripe dump /dev/da0 

 

Page 6: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

GEOM MIRROR – RAID 1 

RAID 1 ou Mirroring (Espelhamento) é uma técnica utilizada para fazer redundância de discos, isto é, manter dois discos iguais, assim se um vier a falhar o outro estará pronto para assumir o seu lugar. Na prática, por exemplo, seria ter dois HDs A e B, iguais, sendo que só utilizaremos o espaço de um, no caso o de A, quando utilizamos o RAID1 tudo o que  é  gravado  no  disco  A  será  também  gravado  no  disco  B,  assim  se  o  A  parar  o  B assume seu lugar, como se nada tivesse acontecido. O  gmirror(8)  permite  fazer  espelhamento  tanto  de  um  disco  inteiro  quando  de  uma partição ou slice. Depois  que  as  unidades  forem  espelhadas,  todos  os  componentes  são  detectados  e configurados  automaticamente,  a  sincronização  de  dados  também.  Para  isto  os meta‐dados (informações sobre o espelhamento) sempre serão armazenados em disco.  

Utilizando 

 Para  utilizar  o  gmirror(8)  precisamos  adicionar  a  linha  abaixo  no  arquivo  de configuração do kernel. E depois construir o novo kernel.  

options  GEOM_MIRROR 

 Outra opção é carregar o módulo dinâmico do kernel, para isto adicione a linha abaixo no seu /boot/loader.conf:  

geom_mirror_load="YES” 

 Ou  então,  podemos  ativar  o  gmirror(8)  temporáriamente  carregando  o  modulo  do kernel:  

# kldload geom_mirror 

 

Utilizando o gmirror 

 O primeiro argumento do gmirror(8) diz a ação que ele deve tomar. Vamos ver eles abaixo:   

Page 7: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• label 

Cria  um  espelhamento,  e  tem  a  sintaxe  "gmirror  label  [‐hnv]  [‐b Algoritimo]  [‐s  slice]  nome  dispositivo  ...",  pode‐se  colocar  um  ou  mais dispositivos. A ordem em que os nomes dos dispositivos são especificados é importante, pois, a prioridade dos componentes é baseada nesta ordem. Quando  um  dispositivo  é  criado,  ele  ficará  acessível  no  diretório /dev/mirror/nome.  Vamos  ver  abaixo  as  flags  disponíveis  para  este comando.  

­b algoritmo Especifica  o  algoritmo  de  balanceamento,  sendo  um  dos algoritmos abaixo: 

load Executa operações de leitura do componente com menor carga 

prefer Executa operações de leitura do componente com maior prioridade. 

round­robin Utiliza um algoritmo circular para escolher de onde ler. 

split Divide as requisições entre os discos, este é o padrão. 

­n Desativa  a  auto  sincronização  de  componentes "envelhecidos" 

­s tamanho Quando  utilizando  o  algoritmo  de  balanceamento  split,  e uma requisição de leitura for maior ou igual ao "Tamanho" especificado aqui, a leitura no disco será dividida em parte do  tamanho  de  "Tamanho"  e  cada  parte  será  lida  de  um disco diferente. 

 Vejamos abaixo um exemplo, iremos fazer o espelhamento em dois discos, na  instalação  do  FreeBSD.  Iremos  utilizar  dois  discos  iguais,  localizados em  /dev/da0  e  /dev/da1,  como  podemos  ver,  os  dois  são  SCSI.  Iremos instalar  o  FreeBSD  no  disco  da0.  A  configuração  será  feita  durante  a 

Page 8: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

instalação do sistema. Após  instalar e configurar o sistema, não reinicie, vá para um terminal que foi aberto com Alt+F4. Quando entramos neste terminal,  normalmente executamos o  tcsh, mas vamos ao que  interessa, vamos criar o mirror com o algoritmo round‐robin e nomeá‐lo como gm0. OBS: O  primeiro  comando  é  só  um  ajuste  para  possibilitar  a  criação  do mirror, o comando que realmente cria o mirror é o segundo.  

# sysctl kern.geom.debugflags=16 

# gmirror label ­v ­b round­robin gm0 /dev/da0 

 Para  tudo  funcionar,  devemos habilitar  o  suporte  ao  gmirror  no  kernel, aqui optaremos por carregar o módulo durante a inicialização, mais tarde, se  você  preferir,  pode  compilá‐lo  estaticamente  no  kernel.  Para  isto execute o seguinte comando:  

# echo geom_mirror_load="YES" > /boot/loader.conf 

 Agora  o  dispositivo  será  reconhecido durante  a  inicialização do  sistema automaticamente.  Agora  vamos  ajustar  nosso  fstab  para  utilizar  o dispositivo. Os nossos discos e partições agora devem se acessados dentro do diretório /dev/mirror/, em nosso caso,  /dev/mirrot/gm0[...]. Edite o seu  /etc/fstab  substituindo  o  /dev/da0...  por  /dev/mirror/gm0...,  por exemplo:  O arquivo antigo:  

/dev/da0s2b             none            swap    sw              0       0 

/dev/da0s3a             /               ufs     rw              1       1 

 Ficará:  

/dev/mirror/gs0s2b             none            swap    sw              0       0 

/dev/mirror/gs0s3a             /               ufs     rw              1       1 

 Pronto,  agora  volte  para  o  sysinstall  apertando  em  Alt+F1,  e  reinicie  o computador.  (Calma  não  terminamos  ainda, mas  antes  de  terminarmos devemos ver mais algumas opções.) 

Page 9: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• insert 

Esta opção tem a sintax “gmirror insert [‐hiv] [‐p priority] name prov” ... e serve para adicionar mais um disco ao espelhamento. Depois de inserido o  novo  disco  no  RAID  1  ele  é  sincronizado  com  os  outros  disco.  As possíveis flags são:  

­h Grava o de forma fixa o nome do provider nos meta dados 

­i Marca o componente inativo após a sincronização 

­p priority Especifica a prioridade do novo componente 

 Agora  iremos  continuar  o  nosso  exemplo,  Após  reiniciar  o  computador, durante  a  inicialização,  antes  da  checagem de  disco,  as  seguintes  linhas provavelmente apareceram na sua tela.  

GEOM_MIRROR: Device gm0 created (id=2125638583). 

GEOM_MIRROR: Device gm0: provider da0 detected. 

GEOM_MIRROR: Device gm0: provider da0 activated. 

GEOM_MIRROR: Device gm0: provider mirror/gm0 launched. 

GEOM_MIRROR: Device gm0 already configured. 

Mounting root from ufs:/dev/mirror/gm0s1a 

 Isto  nos  mostra  que  o  dispositivo  foi  reconhecido.  Se  estas  mensagens apareceram  e  o  sistema  iniciou,  vamos  continuar  nosso  exemplo  e criarmos efetivamente o nosso RAID 1. Para isto abra um terminal como root e execute o seguinte comando:  

# gmirror insert gm0 /dev/da1 

GEOM_MIRROR: Device gm0: provider da1 detected. 

GEOM_MIRROR: Device gm0: rebuilding provider da1. 

     

Page 10: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Agora temos o RAID 1, o comando acima  inseriu o dispositivo /dev/da1 no  RAID  e  a  partir  de  agora  os  dados  entre  os  dois  discos  serão sincronizados  e  eles  começarão  trabalhar  em  conjunto.  Para  ver  como está a sincronização execute:  

# gmirror list 

 Este comando trará a saída de status dos discos. 

 • clear 

Esta opção  tem a  sintax  “gmirror  clear dispositivo”  dispositivo,  limpa os meta dados do dispositivo, assim todas as  informações "sobre" o mirror são apagadas de um disco, por exemplo.  

# gmirror clear /dev/da0 

 Irá limpar as informações do mirror do dispositivo /dev/da0.  

• configure 

Esta opção tem a sintax “gmirror configure [‐adhnv] [‐b balance] [‐s slice] name”  e  tem  como  configurar  ou  reconfigurar  um  dispositivo.  Por exemplo, troca o algoritmo de balanceamento. Veremos abaixo algumas das possíveis flags:  

­a Liga  a  auto  sincronização  dos  discos  com  dados "envelhecidos", por exemplo, se um disco "cair" e voltar ele será sincronizado automaticamente. 

­b Altera o algoritmo de balanceamento. 

­d Não  grava  o  de  forma  fixa  o  nome  do  provider  nos meta dados 

­h Grava o de forma fixa o nome do provider nos meta dados    

Page 11: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

­n Desliga  a  auto  sincronização  dos  discos  com  dados "envelhecidos", por exemplo, se um disco "cair" e voltar ele será sincronizado automaticamente. 

­s slice Especifica  o  tamanho  do  bloco  que  as  informações  serão divididas no algoritmo de balanceamento split. 

 Esta função pode ser utilizada com o nosso exemplo acima. No exemplo o algoritmo utilizado foi o round‐robin, com o configure poderemos altera‐lo para o split, como no exemplo abaixo:  

# gmirror configure ­b split gm0 

 • rebuild 

Esta opção tem a sintax “gmirror rebuild [‐v] name prov ...” E serve para recarregar  o  espelhamento,  ele  só  tem  motivo  para  ser  utilizado,  se  a sincronização de algum dispositivo foi desligada. Vamos ver o exemplo, se o disco /dev/da1 foi desconectado do RAID por algum  motivo,  e  ele  voltar  depois,  o  comando  rebuild  irá  fazer  a sincronização dos dados, como no exemplo abaixo.  

# gmirror rebuild gm0 /dev/da1 

  

• remove 

Esta opção tem a sintax “gmirror remove [‐v] nome disco ...” e serve para remover  um  componente  do  mirror  e  limpar  seus  meta  dados.  Como exemplo, iremos retirar o disco /dev/da1 do nosso RAID:  

# gmirror remove gm0 da1 

       

Page 12: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• deactivate 

Esta opção  tem a  sintaxe  “gmirror deactivate  [‐v] name prov  ...”  e  serve para  desativar  um  componente,  assim,  ele  não  será  automaticamente reconhecido quando ligado ao sistema. Como  exemplo,  vamos  desativar  o  dispositivo  /dev/da1  do  nosso exemplo:  

# gmirror deactivate gm0 da1 

 • activate 

Esta opção tem a sintaxe “gmirror activate [‐v] nome disco ...” e serve para ativar um componente que foi desativado anteriormente. Como exemplo, vamos reativar o dispositivo /dev/da1 do nosso exemplo:  

# gmirror activate gm0 da1 

 A partir deste momento os dados dos dois discos serão sincronizados. 

 • forget 

Esta opção tem a sintaxe “gmirror forget” nome e serve para esquecer os componentes que não estão conectados. Por exemplo, se desconectarmos o da1, poderemos utilizar o forget. Como no exemplo abaixo:  

# gmirror deactivate gm0 da1 

# gmirror forget gm0 

# gmirror activar gm0 da1 

GEOM_MIRROR: Cannot add disk da1 to gm0 

Como podemos ver o dispositivo da1 não pode mais  ser  ligado ao  gm0, para  ele  ser  inserido  novamente  no  RAID,  a  opção  insert  deve  ser utilizada. 

        

Page 13: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• stop 

Esta  opção  tem  a  sintaxe  “gmirror  stop  nome”  e  serve  para  parar  um dispositivo,  por  exemplo,  antes  do  dispositivo  ser  retirado.  Esta  opção ainda possui a flag ­f que serve para forçar a parada do dispositivo. Como exemplo  vamos  parar  o  nosso  dispositivo  de  exemplo,  claro  que  para pará‐lo devemos forçar a saída, para isto utilize a flag –f: 

 

# gmirror stop –f gm0 

 Se  você está  executando os mesmos exemplos,  o  seu  sistema acabou de reiniciar!  

 • dump 

Esta  opção  tem  a  sintaxe  “gmirror  dump  disco”  e  serve  para  fazer  um "dump" dos meta dados do disco. Exemplo: 

 

# gmirror dump /dev/dad1 

                   

Page 14: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

GEOM CONCAT – JBOD – O concatenador de discos 

O gconcat(8) serve para concatenar discos (JBOD – Just a Bunch of Disks), isto é, juntar dois discos relativamente pequenos e formar um grande disco. Isto é muito útil quando se precisa de um grande volume, e isto também entra no nível de RAID 0, só que sem as questões  de  striping,  isto  é,  os  dados  não  ficarão  divididos  paralelamente  nos  dois discos.  Esta  forma  é  uma  das mais  simples  de  se  utilizar  o  geom(4).  Outro  beneficio deste método, é que pode se utilizar discos de tamanhos diferentes.  

Utilizando 

 Para  utilizar  o  gconcat(8),  precisamos  adicionar  a  linha  abaixo  no  arquivo  de configuração do kernel. E depois construir o novo kernel.  

options  GEOM_CONCAT 

 Uma  outra  opção  é  carregar  o módulo  dinâmico  do  kernel,  para  isto  adicione  a  linha abaixo no seu /boot/loader.conf:  

geom_concat_load="YES" 

 Ou  então,  podemos  ativar  o  gconcat(8)  temporáriamente  carregando  o  modulo  do kernel:  

# kldload geom_concat 

 

Utilizando o gconcat 

 A concatenação de discos pode ser feita de duas maneiras, de forma manual, onde todas as  vezes  que  um  disco  concatenado  for  utilizado  ele  deve  ser  criado,  ou  de  forma automática, onde todas as configurações do concatenamento ficarão gravadas em meta dados  nos  discos,  assim,  toda  vês  que  o  disco  for  conectado  ao  sistema  ele  será reconhecido  automaticamente.  Abaixo  veremos  como  fazer  estas  duas  formas.  Após concatenado  o  dispositivo  ficará  acessível  dentro  do  diretório  /dev/concat/$Nome onde Nome é o $Nome do dispositivo. O primeiro argumento do gconcat(8) diz a ação que ele deve tomar. Vamos ver eles abaixo. 

Page 15: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

 • create 

Esta opção tem a sintaxe “gconcat create [‐v] nome disco disco...”, e esta é a forma manual de se criar um disco concatenado. Como exemplo iremos concatenar dois  disco,  /dev/da0  com 4 Gb  e  /dev/da1  com 10 Gb,  logo após iremos criar o novo sistema de arquivos e montar sobre o diretório /mnt: 

 

# gconcat create gc0 /dev/da0 /dev/da1 

# newfs /dev/concat/gc0 

# mount /dev/concat/gc0 /mnt 

 • label 

Esta opção tem a sintaxe “gconcat label [‐v] nome disco disco...”, e esta é a forma  automática  de  se  criar  um  disco  concatenado.  Iremos  fazer  o mesmo  exemplo  acima,  porém  iremos  criar  de  forma  automática  e adicionarmos a entrada no /etc/fstab: 

 

# gconcat label gc0 /dev/da0 /dev/da1 

# newfs /dev/concat/gc0 

# echo  /dev/concat/gc0    /mnt  ufs   rw  2  2 >> /etc/fstab 

 • stop 

Esta opção tem a sintaxe “gconcat stop [‐fv] nome” e serve para parar um disco  concatenado.  A  flag  ­f  serve  para  forçar  a  parada,  como  exemplo, vamos parar o nosso exemplo:  

# gconcat stop gc0 

 • clear 

Esta opção tem a sintaxe “gconcat clear [‐v] disco” e serve para remover os meta  dados  de  um  dos  discos,  como  por  exemplo,  iremos  utilizar‐lo com o disco /dev/da1: 

 

# gconcat clear /dev/da1 

  

Page 16: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• dump 

Esta  opção  tem  a  sintaxe  “gconcat  dump  disco”  e  serve  para  fazer  um "dump" dos metas dados do disco. Exemplo:  

# gconcat dump /dev/da1 

                              

Page 17: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

GEOM GATE – Exportando e importando dispositivos via rede 

O GEOM GATE é composto de duas  ferramentas: o ggatec(8) e o ggated(8), que  fazem possíveis  a  exportação  e  importação  de  dispositivos  de  armazenamento  via  rede.  O ggated(8)  é  o  servidor,  ele  ficará  no  computador  que  contém  o  dispositivo  real,  já  o ggatec(8) ficará do lado do cliente e será responsável por criar o dispositivo no cliente. Bom mas qual a vantagem do GEOM GATE sobre o NFS? O NFS não cria um dispositivo na maquina  cliente,  assim  é  impossível  aplicar  as  outras  regras  do  GEOM  sobre NFS, como  exemplo,  com  o  GEOM  GATE  é  possível  criar  RAID  1  em  rede,  ou  até  mesmo utilizar  um  disco  remoto  em  um  pool  do  ZFS.  Para  este  exemplo  ficar  "rico"  iremos exportar  via  rede  o  dispositivo de  JBOD que  criamos no  exemplo  anterior,  porém ele pode ser feito com qualquer dispositivo.  

ggated(8) – O servidor de dispositivos 

 O ggated(8) é responsável pelo lado do servidor do GEOM GATE, basicamente ele lê um arquivo  de  configuração,  que  por  padrão  é  /etc/gg.exports.  Este  arquivo  tem  uma sintaxe simples, são basicamente três colunas, descritas abaixo:  EndereçoDoCliente Acesso Dispositivo Local

 Em endereço do cliente podemos colocar o nome do computador, um endereço de IP ou “endereço de rede/Mascara da rede”, em “Acesso” temos três opções, RW para Leitura e Escrita, RO para Somente Leitura e WO para Somente Escrita, e para o dispositivo é o caminho  do  dispositivo  como  /dev/da0s1d.  O  arquivo  pode  ter  quantas  entradas  for necessário.  Para  nosso  exemplo,  onde  exportaremos  o  dispositivo  /dev/concat/gc0 utilizaremos o seguinte arquivo.  10.0.0.0/8 RW /dev/concat/gc0

 Agora é  só executarmos o ggated(8)  e  está pronto,  o  ggate por padrão utiliza a porta 3080  tcp de todas as suas  interfaces. Esta porta deve ser  liberada em seu firewall, ou protegida, como desejar.  

# ggated 

# echo $?  

Page 18: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

No  exemplo  acima  vimos  que  o  ggated(8)  retornou  0,  então  ele  está  funcionando corretamente, caso ele retorne 1, um erro ocorreu, e provavelmente seja o arquivo de configuração  ou  a  porta  já  esteja  em  uso,  provavelmente  por  outro  processo  do ggated(8).  O ggate(8) possui algumas flags, veremos elas abaixo:  

­a endereço Especifica o endereço para escutar as conexões 

­n Não utiliza TCP_NODELAY 

­p porta A porta que ele irá escutar conexões. 

­R rcvbuf Tamanho do buffer de recebimeto. O padrão é 131072 (128kB). 

­S sndbuf Tamanho do buffer de envio. O padrão é 131072 (128kB). 

­v Executa  em  primeiro  plano,  assim  exibindo  informações  de  debug  na saída padrão 

 Considerações:  Os  dispositivos  exportados  não  podem  ser  montados  localmente,  e  a velocidade  dos  dispositivos  importados  nos  clientes  ficará  reduzida  pela  conexão  de rede e pelo geom gate utilizar TCP, as conexões não são criptografadas! Nota: é possível manter apenas uma única conexão simultânea com o GEOM GATE.  

ggatec(8) – O cliente de dispositivos 

 O ggatec(8), como dito anteriormente é o cliente do ggated(8). Ele tem uma sintaxe mais parecida com as outras opções do GEOM. Ele precisa de um servidor ggated(8) para se conectar. Os dispositivos criados pelo ggatec(8)  ficarão sobre o diretório /dev/ggate# onde # é o número do dispositivo, iniciando de 0.     

Page 19: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Utilizando 

 Para  utilizar  o  ggatec(8)  precisamos  adicionar  a  linha  abaixo  no  arquivo  de configuração do kernel. E depois construir o novo kernel.  

options  GEOM_GATE 

 Outra opção é carregar o módulo dinâmico do kernel, para isto adicione a linha abaixo no seu /boot/loader.conf:  

geom_gate_load="YES" 

 Ou então, podemos ativar o ggatec(8) temporariamente carregando o modulo do kernel:  

# kldload geom_gate 

 

Utilizando o ggatec 

 O primeiro argumento do ggatec(8) diz a ação que ele deve tomar. Vamos ver eles abaixo:  

• create 

Esta  opção  tem  a  sintaxe  “ggatec  create  Servidor  Dispositivo”, basicamente  ela  cria  o  dispositivo  /dev/ggate0  se  este  for  o  primeiro dispositivo montado, caso não seja, o valor 0 vai ser incrementado em um. Esta opção possui várias flags, as veremos abaixo:  

­n Não utiliza TCP_NODELAY 

­v Em modo verbose 

­o ro | wo | rw O modo  de Montagem,  respectivamente,  Somente  Leitura, Somente Escrita e Leitura e Escrita. 

­p porta 

A porta que o servidor está escutando  

Page 20: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

­q queue_size Tamanho  da  fila  de  requisições  de  I/O  que  podem  ser enfileiradas 

­R rcvbuf Tamanho  do  buffer  de  recebimento.  O  padrão  é  o  do servidor. 

­S sndbuf Tamanho do buffer de envio. O padrão é o do servidor. 

­s sectorsize Tamanho  do  setor,  caso  não  seja  especificado  o  valor padrão de 512k vai ser utiliziado 

­t timeout Tempo  de  Timeout,  por  padrão  0,  que  significa  timeout infinito 

­u unit Especifica  o  número  da  Unidade,  aquele  número  do dispositivo /dev/ggateNumero  

Como  exemplo  vamos  criar  o  dispositivo  do  exemplo  do  ggated(8),  e monta‐lo em /mnt:  

# ggatec create 10.0.13.146 /dev/concat/gc0 

# mount /dev/ggate0 /mnt 

 • rescue 

Esta opção tem a sintaxe mínima “ggatec rescue ‐u NumeroDoDispositivo Servidor  Dispositivo”  e  serve  para  recuperar  um  dispositivo  que  foi perdido, por exemplo em uma falha na rede. Esta opção aceita as flags ­n, ­v, ­o, ­p, ­R e ­S descritas anteriormente. Como exemplo, suponhamos a rede  caiu  e  o  dispositivo  anterior  foi  perdido,  para  recuperarmos, executaremos o exemplo abaixo. 

 

# ggatec rescue ­u 0 10.0.13.146 /dev/raid3/gr0 

     

Page 21: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• destroy 

Esta opção  tem a sintaxe  “ggatec destroy  ‐u NumeroDaUnidade” e serve para destruir uma unidade. Esta opção conta com a flag ­f que serve para forças  a  destruição  do  dispositivo.  Por  exemplo,  vamos  destruir  o exemplo  que  construímos,  como  ele  está  montado  sobre  /mnt  vamos forçar sua destruição. 

 

# ggatec destroy ­u 0 ­f 

 • list 

Esta opção tem a sintaxe “ggatec list” e serve para mostrar os dispositivos montados, porem se utilizado a opção ­u mostra somente o dispositivo e a opção  –v  traz  em  modo  verbose.  Como  exemplo  vamos  exibir  as informações sobre o dispositivo numero 0. 

 

# ggatec list ­v ­u 0  NAME: ggate0

info: 10.0.13.146:3080 /dev/concat/gc0

access: read-write

timeout: 0

queue_count: 0

queue_size: 1024

references: 1

mediasize: 4008393728 (3.7G)

sectorsize: 1024

mode: r0w0e0

 

 

 

 

 

 

 

 

 

 

 

 

Page 22: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

ZFS – O poderoso sistema de arquivos da SUN 

Notas sobre o ZFS 

Devido a maneira  como o ZFS  foi  implementado  (também no Solaris)  ele  requer uma grande quantidade de memória para funcionar adequadamente, e no FreeBSD ele utiliza o  espaço  de  memória  do  Kernel,  o  qual  normalmente  é  bem  reduzido  comparado  a memória total do sistema. Então devemos realizar algumas otimizações para que o ZFS funcione adequadamente, e também é altamente recomendável que seja utilizada uma plataforma de 64 bits, apesar do ZFS também funcionar em 32 bits. Por padrão, o espaço de endereçamento de memória reservado para o kernel é de no máximo  300Mb,  o  que  é  muito  baixo  para  o  ZFS.  Se  você  manter  este  padrão, eventualmente  você  receberá  um  kernel  panic  com  a  seguinda  mensagem  no /var/log/messages:  Apr 7 21:09:07 nas savecore: reboot after panic: kmem_malloc(114688): kmem

_map too small: 324825088 total allocated   Para aumentar este valor, acrescente as duas linhas baixo em seu /boot/loader.conf (em um sistema com no mínimo 4Gb de RAM):  

vm.kmem_size="1536M" vm.kmem_size_max="1536M"

 E  para  melhorar  a  performance  você  pode  aumentar  o  valor  do  “kern.maxvnodes” (/etc/sysctl.conf)  se  você  tiver  bastante  RAM  para  isto  (ex.  400000  para  2GB).  E monitore o valor de vfs.numvnodes durante produção para ver se ele se estabiliza.           

Page 23: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Você pode utilizar o script abaixo em seu periodic para monitor o uso da memória do Kernel:  #!/bin/sh -

TEXT=`kldstat | tr a-f A-F | awk 'BEGIN {print "ibase=16"}; NR > 1

{print $4}' | bc | awk '{a+=$1}; END {print a}'`

DATA=`vmstat -m | sed 's/K//' | awk '{a+=$3}; END {print a*1024}'`

TOTAL=`echo $DATA $TEXT | awk '{print $1+$2}'`

echo Summarize of kernel memory utilization:

echo " TEXT = $TEXT, "`echo $TEXT | awk '{print $1/1048576 " MB"}'`

echo " DATA = $DATA, "`echo $DATA | awk '{print $1/1048576 " MB"}'`

echo " TOTAL = $TOTAL, "`echo $TOTAL | awk '{print $1/1048576 " MB"}'`

                        

Page 24: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Usando o ZFS 

Antes de tudo, devemos habilitar o ZFS na inicialização do sistema, para isso, acrescente a linha abaixo em seu /etc/rc.conf:  

zfs_enable=”YES” 

 Agora quando o FreeBSD for inicializado, esta mensagem será apresentada:  

This module (opensolaris) contains code covered by the 

Common Development and Distribution License (CDDL) 

see http://opensolaris.org/os/licensing/opensolaris_license/ 

WARNING: ZFS is considered to be an experimental feature in FreeBSD. 

ZFS filesystem version 6 

ZFS storage pool version 6 

 Apesar  do  ZFS  ser  experimental  no  FreeBSD,  ele  já  foi  amplamente  testado,  e  e  já  é muito utilizado.  Agora podemos começar a testar os recursos oferecidos pelo ZFS.  

Criado um POOL de discos 

 Para criar um pool de discos, um simples comando basta:  

zpool create datastore [tipo] /dev/da0 /dev/da1 /dev/da2 /dev/da3 

 datastore será o nome do nosso pool. tipo é o tipo de pool que será criado. Ele é opcional, e os tipos existentes são: 

nenhum – JBOD – igualmente o que já foi citado anteriormente no GEOM mirror – O mesmo que o GEOM MIRROR ou RAID 1 raidz – Uma implementação melhorada do RAID 5 raidz2 – O mesmo que o raidz, porém este utiliza 2 discos como paridade. spare  –  Discos  de  reserva,  deixados  disponíveis  para  quando  for  preciso  um novo disco  (no caso da falha de algum em uso) 

  

Page 25: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

ZPOOL MIRROR 

Para criarmos uma redundância do tipo RAID 1 utilizando o ZFS e 4 discos SCSI usamos os comandos:  

zpool create datastore mirror /dev/da0 /dev/da1 /dev/da2 /dev/da3 

 ZPOOL RAIDZ 

Utilizando  o  RAIDZ  ganhamos  bastante  em  performance  e  em  redundância  de  disco. Com os mesmos 4 discos SCSI, utilizamos os comandos:  

zpool create datastore raidz /dev/da0 /dev/da1 /dev/da2 /dev/da3 

 Como  o  RAIDZ  é  baseado  em  RAID  5,  a  utilização  de  discos  é  muito  semelhante, devemos ter no mínimo 3 discos, e é recomendável no máximo 9 discos por POOL.  Mas o que podemos fazer quando temos mais do que 9 discos, por exemplo 15 discos?  Criamos 3 pools de raidz dentro de 1 pool normal (JBOD) Para isso:  

zpool  create datastore  raidz  /dev/da0  /dev/da1  /dev/da2  /dev/da3  /dev/da4  raidz 

/dev/da5  /dev/da6  /dev/da7  /dev/da8  /dev/da9  raidz  /dev/da10  /dev/da11 

/dev/da12 /dev/da13 /dev/da14 

              

Page 26: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Podemos visualizar o array da seguinte forma:  

# zpool status 

  pool: datastore 

 state: ONLINE 

 scrub: none requested 

config: 

 

        NAME    STATE     READ WRITE CKSUM 

        datastore  ONLINE       0     0     0 

          raidz    ONLINE       0     0     0 

            da0    ONLINE       0     0     0 

            da1    ONLINE       0     0     0 

            da2    ONLINE       0     0     0 

            da3    ONLINE       0     0     0 

            da4    ONLINE       0     0     0 

          raidz    ONLINE       0     0     0 

            da5    ONLINE       0     0     0 

            da6    ONLINE       0     0     0 

            da7    ONLINE       0     0     0 

            da8    ONLINE       0     0     0 

            da9    ONLINE       0     0     0 

          raidz    ONLINE       0     0     0 

            da10    ONLINE       0     0     0 

            da11    ONLINE       0     0     0 

            da12    ONLINE       0     0     0 

            da13    ONLINE       0     0     0 

            da14    ONLINE       0     0     0 

 

errors: No known data errors

 O mesmo pode ser feito quando utilizamos discos de tamanhos diferentes, por exemplo, 4 discos SATA‐2 de 750Gb e 4 discos SATA‐2 de 1TB.  Isso porque como no RAID 5, o RAIDZ exige que todos os discos do array sejam do mesmo tamanho.  Podemos criar 2 arrays, cada um com os discos iguais, dentro de uma pool.  

Page 27: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

Parâmetros do ZPOOL 

Além do “zpool create ...” outros parâmetros são aceitos, exemplo:  

• add 

Adiciona um novo dispositivo ao pool especificado. Sintaxe “zpool add pool tipo dispositivo”. Exemplo:  

# zpool add datastore raidz /dev/da15 

 • destroy 

Destrói  o  pool  especificado.  Este  comando  tenta  desmontar  todos  os pontos de montagem dentro deste pool, e também libera os discos. Sintaxe “zpool destroy pool” Exemplo:  

# zpool destroy datastore 

 • list 

Lista os pools e a situação deles, assim como o espaço utilizado. Sintaxe: “zpool list” Exemplo:  

# zpool list 

NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT 

datastore              2.72T    320G   2.41T    11%  ONLINE     ­ 

 • remove 

Remove o dispositivo especificado. Este comando, somente remove discos com “hot spare” ou que pertencem ao RAIDZ1 ou RAIDZ2. Para remover discos de um MIRROR, utilize: “zpool detach”. Sintaxe: “zpool remove pool dispositivo” Exemplo:  

# zpool remove datastore /dev/da15 

 

 

Page 28: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• iostat 

O parâmetro mais  importante para  se monitorar a performance do ZFS, este  parametro  exibe  as  estatísticas  de  entrada  e  saída  do  pool especificado. Se  for especificado um  intervalo de  tempo,  será exibido a estatística até que CTRL+C seja pressionado. Sintaxe: “zpool iostat [­v] [pool] [interval]” Exemplo:  

# zpool iostat 

               capacity     operations    bandwidth 

pool         used  avail   read  write   read  write 

­­­­­­­­­­  ­­­­­  ­­­­­  ­­­­­  ­­­­­  ­­­­­  ­­­­­ 

datastore    320G  2.41T      4     30   412K   532K 

 • status 

Exibe informações detalhadas sobre a situação do pool. Se nenhum pool for especificado, é exibido de todos os pools do sistema. Sintaxe: “zpool status [pool]” Um exemplo já foi mostrado anteriormente.  

• offline 

Torna o dispositivo especificado offline. Enquanto um dispositivo estiver offline,  nenhuma  tentativa  de  leitura  ou  gravação  será  realizada  para  o mesmo. Sintaxe: “zpool offline [­t] pool dispositivo” A  flag  –t  especifica  que  o  modo  offline  é  temporário,  ou  seja,  até  o próximo reboot. Exemplo:  

# zpool offline datastore /dev/da4 

 • online 

Ative um dispositivo que foi desativado pelo comando offline. Sintaxe: “zpool online pool dispositivo” Exemplo:  

# zpool online datastore /dev/da4 

Page 29: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• clear 

Limpa  as  mensagens  de  erro  em  um  pool.  Se  nenhum  pool  for especificado, todas as mensagens de erro serão limpas. Sintaxe: “zpool clear [pool] [dispositivo]” Exemplo:  

# zpool clear datastore /dev/da8 

 • attach 

Anexa um novo dispositivo a um pool já existente. Sintaxe: “zpool attach pool dispositivo novo_dispositivo” Exemplo:  

# zpool attach datastore /dev/da4 /dev/da15 

 • detach 

Remove o dispositivo especificado do pool. A operação não será realizada se não houver replica dos dados deste dispositivo. Sintaxe: “zpool detach pool dispositivo” Exemplo:  

# zpool detach datastore /dev/da15 

 • replace 

Troca  um  dispositivo  por  um  novo.  Este  parametro  é  equivalente  a adicionar um novo dispositivo com attach, esperar a sincronização, e em seguinda remover o dispositivo antigo com detach. Sintaxe: “zpool replace [–f] pool dispositivo_antigo dispositivo_novo” Exemplo:  

# zpool replace datastore /dev/da4 /dev/da15 

      

Page 30: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

• scrub 

Inicia uma normalização dos dados no pool. A  normalização  examina  todos  os  dados  no  pool  especificado  para verificar  se os  checksums estão  corretos. Para dados  replicados  (mirror ou  raidz),  o  ZFS  repara  automaticamente  qualquer  inconsistência encontrada durante a normalização. O comando “zpool status” reporta o progresso da normalização e exibe um resultado da normalização quando esta terminar. Sintaxe: “zpool scrub [­s] pool” A flag –s para a normalização. Exemplo:  

# zpool scrub datastore 

 • history 

Exibe um historico de comandos do pool especificado. Sintaxe: “zpool history [pool]” Exemplo:  

# zpool history 

                

Page 31: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

O comando ZFS 

Dentro  do  ZFS  podemos  criar  novos  pontos  de  montagem,  snapshots,  clones  de snapshots, compartilhar via NFS, e comprimir pontos de montagem. Para isso utilizando o comando “zfs parametro ponto_de_montagem”. Vejamos abaixo alguns parâmetros aceitos pelo ZFS:  

• create 

Cria um novo ponto de montagem dentro do pool. Sintaxe: “zfs create pool/ponto_de_montagem” Exemplo:  

# zfs create datastore/backups 

# df 

Filesystem                    Size    Used   Avail Capacity  Mounted on 

datastore                     1.8T      0B    1.8T     0%    /datastore 

datastore/backups             1.8T      0B    1.8T     0%    /datastore/backups 

 • set 

Através deste parâmetro, informamos várias opções para o ZFS. o compression 

Com o set compression, podemos definir níveis de compressão em um  ponto  de  montagem,  utilizando  o  GZip  com  10  niveis  de compressão (0 – nenhum, 9 – máximo). Sintaxe: “zfs set compression=gzip pool/ponto_de_montagem” Exemplo:  

# zfs set compression=gzip­9 datastore/backups 

 o copies 

Se  tivermos  dados  muito  importantes,  que  desejamos  ter  várias copias  espalhadas  pelo  pool,  podemos  definir  atravez  deste parametro. Sintaxe: “zfs set copies=quantidade pool/ponto_de_montagem” Exemplo:  

# zfs set copies=3 datastore/backups 

  

Page 32: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

o checksum 

Com  este  parâmetro  podemos  desabilitar  a  verificação  de integridade de dados (que é habilitada por padrão). Sintaxe: “zfs set checksum=off pool/ponto_de_montagem” Exemplo:  

# zfs set checksum=off datastore/backups 

 o atime 

Com o atime, podemos desativar a marcação do horário de acesso a arquivos. Em certos cenários isso pode ser desejado. Sintaxe: “zfs set atime=off pool/ponto_de_montagem” Exemplo:  

# zfs set atime=off datastore/backups 

 o sharenfs 

Quando  queremos  compartilhar  um  ponto  de montagem  através da rede, podemos usar este parâmetro. Sintaxe: “zfs set sharenfs=on pool/ponto_de_montagem” Ou: “zfs set sharenfs=“opções do nfs” pool/ponto_de_montagem” Exemplo:  

#  zfs  set  sharenfs=“­maproot=root  –alldirs  –network  10.0.0.0” 

datastore/backups 

 Para  que  o  NFS  funcione  corretamente,  o  servidor  deve  estar ativado no /etc/rc.conf. Para isso adicione as linhas baixo:  

rpcbind_enable="YES" 

rpc_lockd_enable="YES" 

rpc_statd_enable="YES" 

nfs_server_enable="YES" 

 Nota:  com o  compartilhamento  via NFS do  ZFS,  não  é  necessário reiniciar  o  daemon  do  mountd  quando  um  novo  ponto  de montagem for compartilhado ou deixar de ser compartilhado. 

Page 33: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

 Com o comando “mount” é possível ver o estado da exportação NFS do ZFS:  

# mount 

datastore/backups  on  /datastore/backups  (zfs,  NFS  exported, 

local) 

 Assim como o “showmount –e”:  

# showmount –e 

Exports list on localhost: 

/datastore/backups        10.0.0.0 

 • snapshot 

Criar snapshots é um dos mais importantes recursos do ZFS. Você pode criar um ponto para restauração do ponto de montagem antes de realizar alterações no mesmo. Sintaxe: “zfs snapshot pool/ponto_de_montagem@nome_do_snapshot” Exemplo:  

# zfs snapshot datastore/backups@20081101 

 • rollback 

Você pode voltar ao estado que estava o ponto de montagem no momento em que o snapshot foi criado utilizando este parâmetro. Sintaxe: “zfs rollback pool/ponto_de_montagem@nome_do_snapshot” Exemplo:  

# zfs rollback datastore/backups@20081101 

 • destroy 

Apaga um snapshot criado com o comando “zfs snapshot”. Sintaxe: “zfs destroy pool/ponto_de_montagem@nome_do_snapshot” Exemplo:  

# zfs destroy datastore/backups@20081101 

Page 34: FreeBSD 7 GEOM + ZFS · O FreeBSD suporta tanto RAID por Hardware como por Software. RAID por Hardware é gerenciado por uma controladora SCSI, e por adaptadores que provêem RAID

FreeBSD 7 – GEOM + ZFS

 • clone 

Por  definição,  um  snapshot  é  somente‐leitura.  Não  pode  ser  feito alterações  em  um  snapshot.  Mas  quando  isso  é  necessário,  você  pode criar  um  clone  do  snapshot,  e  utilizar  este  clone  como  se  fosse  o verdadeiro ponto de montagem. Sintaxe:  “zfs  clone  pool/ponto_de_montagem@nome_do_snapshot pool/novo_ponto_de_montagem_do_clone” Exemplo:    

# zfs clone datastore/backups@20081101 datastore/backups_clone 

 Nota:  Ao  criar  um  clone  de  um  snapshot,  o  espaço  em  disco  não  é utilizado.  Apenas  as  modificações  realizadas  dentro  do  clone  serão gravadas  no  disco.  Assim  você  pode  ter  8GB  de  dados  dentro  do datastore/backups, e se você modificar 10MB de arquivos dentro do clone (datastore/backups_clone), o espaço em disco utilizado pelo clone será de apenas 10MB.  

• promote 

Um clone de um snapshot criado com o comando “zfs clone ...” sempre terá uma  união  direta  com  o  snapshot,  você  não  poderá  apagar  o  snapshot enquanto  o  clone  estiver  ativo.  Porém,  você pode  “promover”  o  clone  a um  ponto  de  montagem  verdadeiro  com  o  parâmetro  promote.  Será realizada  uma  cópia  dos  dados  existentes  dentro  do  snapshot  com  as modificações  já  feitas no clone, e o clone promovido passará a ocupar o espaço em disco real. Sintaxe: “zfs promote pool/ponto_de_montagem_do_clone” Exemplo:  

# zfs promote datastore/backups_clone