Freebsd 7 GEOM + ZFS
Total Page:16
File Type:pdf, Size:1020Kb
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 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. 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 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! 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 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: 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. roundrobin 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 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 roundrobin 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.) 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.