Blog Nerd do Liquuid

Storage ZFS em FreeBSD



Mais uma saga se inicia, a configuração de um servidor de dados rodando FreeBSD e ZFS. Faz tanto tempo que não uso FreeBSD que esqueci quase todos os macetes, mas pelo menos completei a instalação sem qualquer problema.

Aqui tenho uma máquina com 3 discos, um deles é IDE e possui 80GB de capacidade, os outros dois são SATA e tem 320 GB cada. A brincadeira é instalar o FreeBSD e montar uma partição gigante unindo os três discos , algo parecido com um split.

Logo de cara vi que não tenho bash instalado, CSH é um lixinho, e para instalar o BASH preciso de rede, então esse é o primeiro passo . Para ver quais placas de rede estão plugadas ao sistema use :

ifconfig

Dessa forma descobri que minha placa é vr0, como uso DHCP usei o seguinte comando para configurar minha rede :

dhclient vr0

Feito isso vamos instalar o bash :) No FreeBSD temos duas formas de instalar os programas, via ports e via pacotes binários. A oferta de pacotes via ports é mais abundante e flexivel, já os pacotes binários são mais rápidos de se obter. Como eu quero apenas o BASH vou usar o ports.

Usar o ports é fácil, se você sabe o nome do que procura use o :

whereis bash

Se não sabe vá em /usr/ports, e escolha a categoria do software que procuras, e dentro de cada um desses diretórios tem um diretório com o nome dos softwares, e o bash fica em /usr/ports/shells/bash. Uma vez dentro do diretório do bash basta dar o comando :

make && make install

Depois é só usar o comando chsh pra mudar o shell é se livrar do lixo do csh. :)

A parte boa é que o ZFS já vem com o FreeBSD, a ruim é que o suporte é experimental, nem sempre experimental quer dizer ruim... Mas só vou descobrir com o tempo heheh. No meu caso eu quero usar o resto do HD de 80 GB , e os dois HDs sata, para realizar essa mágica com o ZFS basta usar os comandos :

zpool create storage ad0s3 ad4 ad6

No meu caso tive que repetir o comando por causa de um warning dado pelo time do FreeBSD avisando que o ZFS ainda não está totalmente implementado. Mas aqui funcionou, totalizando 680 GB espalhados por dois discos e uma partição. E o sistema já montou o pool em /storage automaticamente.
Configuração do ZFS é isso mesmo, fazem LVM e raid parecerem piadas de mal gosto.

Agora temos que editar alguns arquivos, e devo dizer que o vi que vem no freebsd é um lixo, e se você , assim como eu não quer perder muito tempo compilando o VIM vamos instalar o pacote pronto, o comando é simples:

pkg_add -r vim

Basta substituir o "vim" pelo comando que você quer e tudo vai dar certo... ou não, no meu caso o pacote pronto do VIM exige a instalação completa do xorg, um completo desperdício de disco, já que nem monitor essa máquina via ter.

Para que nosso array de discos monte na incialização do sistema basta executar o comando :

 echo 'zfs_enable="YES"' >> /etc/rc.conf 

Como disse no início do post ZFS é experimental com o FreeBSD, então ele tem vários bugs já conhecidos, no caso do ZFS o mais grave é um que causa Kernel Panic se houver excesso de I/O, carinhosamente conhecido como “kmem_suballoc” . Pra resolver isso basta adicionar as seguintes linhas no /boot/loader.conf :

vm.kmem_size_max=”512M”
vm.kmem_size=”512M”
vfs.zfs.zil_disable=1

Se colocar mais memória doque seu computador possui ele vai crashar !

Agora é só botar o samba pra exportar o pool e já era ! Se o Mac OSX vier com uma implementação decente do ZFS, e aparentemente vai, o linux vai cair na irrelevância bwa ! ha ! ha ! ha !

Trolagens a parte, vou descrever brevemente porque o ZFS é o melhor sistema de arquivos em qualquer segmento:

  • Ele faz snapshots ! Vai fazer faxina no HD ou vai deixar seu sobrinho mexer no micro ? sem crise ! faz um snapshot e todos seus dados estão automaticamente backupeados !
  • Hd ta acabando, não tem mídia pra fazer backup ? Sem problemas, ativa a flag de compressão de dados e ganhe gigas de espaço sem fazer esforço
  • Precisa de mais partições ou de redimencionar o seu /home ? Sussa, é mais rápido do que ler essa linha
  • Comprou um HD novo ? É só espetar adicionar ao pool de discos e usar, não vai ter trabalho nem pra de particionar muito menos montar o disco novo !!!
  • Quer segurança nos dados, redundancia e velocidade ? Sussa, raidz faz isso pra você, é só ter mais de 2 discos

O único defeito do ZFS é que ele não é licenciado em GPL, então não pode ser incluido no kernel do linux com a mesma facilidade que foi absorvido pelos *BSDs ou OSX ... "Linux é livre, ZFS é livre, mas minha licença é melhor que a sua então não vou incorporar seu software" babaquice ? Sim e da grande ! Quem perde ? Todo mundo !

Ponto pra licença BSD.


1 comentários

TAGS : freebsd ports dhclient bash zfs pkg_add sysadmin

Instalando o MySQL5 no Leopard via ports



Se tivesse o sistema port do BSD para o linux com o tamanho do emerge ... O osx tem port, isso facilita muito na hora de instalar um servidor ou algo do tipo. Na real escolhi o caminha mais dificil, existe um pacote que com três cliques o Mysql é instalado e configurado na máquina, mas como eu quero emoção e customização optei a instalação via port.

Primeiro você deve escolher suas variants, com o comando :


port -v variants mysql5


Eu escolhi a flag 'server' , afinal não quero apenas as ferramentas :


port -v install mysql5 +server


Após instalado vem a aventura, iniciar o servidor... Como bom usuário mal acustumado do fedora, onde tudo simplesmente funciona , tentei me conectar com o servidor o resultado :


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (61)


Após verificar com o ps aux, vi que não tinha nada rodando, então dei o comando mysqld_safe5, que não funcionou mas pelo menos avisou, faltou criar o diretório,
/opt/local/var/db/mysql5/. Criei o diretório, arrumei as permissões. Tentei novamente e outro erro :


Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist


Esse erro eu resolvi copiando um arquivo de configuração dos exemplos :


cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf



E então mais outro erro :


030915 2:04:01 Fatal error: Can't open privilege tables: Can't find file:
'./mysql/host.frm' (errno: 13)


Esse eu corrigi com o comando :


mysql_install_db5 --user=mysql



E só então, pude usar meu :


mysqld_safe5 --user=mysql


Que funcionou beleza, impressionante como não tem praticamente nenhuma automação nesses pacotes do ports... 10 x 0 pro fedora :)




0 comentários

TAGS : macports osx fedora mysql error instalacao install

Macports Mini-Howto



MacOs X não é livre , mas sua base é, incluindo os compiladores e ferramentas de sistema em geral, a própria libc do sistema é aberta, assim como o kernel. Isso faz dele um sistema meio-livre e compativel com a maioria dos programas livres que existem na sua distribuição linux favorita, dentre eles o KDE e suas ferramentas o XFree86/Xorg e até mesmo o mplayer... Na verdade essa lista não termina, sério, tudo que é compativel com o linux roda em mac, até mesmo os drivers de hardware são compartilhados entre os sistemas.

Uma lista bem completa, e indispensável, de softwares de código aberto para o Mac pode ser vista em : http://www.opensourcemac.org/

Como eu falei, programas unix em geral são compatíveis com o Mac, na real o sistema Leopard recebeu uma certificação Unix legítima.... O linux não tem um certificado desses, além de : Unix -> Caldera -> SCO :) Em todo caso, o MacOs X segue os padrões Unix a risca, e isso garante que você vai rodar um apache, mysql, vim entre outros softwares projetados para sistemas Unix.

Em um mac você pode sem problema algum usar a trinca ./configure, make, make install para instalar seus programas favoritos.... Mas isso é chato e nada prático, os linux tem os pacotes RPM, DEB e TGZ, no mac tem os DEB mas o foco desse post é o Macports, antes conhecido como Darwinports.

O macports é derivado do sistema ports do freebsd, e funciona de forma parecida, ele puxa os fontes , aplica os patchs compila e instala tudo pra você.

Instalar é boiada, primeiro vc tem que pegar a versão mais recente do Xcode, ele
está no CD de instalação do MacOsX ou no site da apple.

Como o meu sistema é o Leopard, estou usando o XCode 3.0, e meu macports é versão 1.5.0.

http://svn.macosforge.org/repository/macports/downloads/MacPorts-1.5.0/MacPorts-1.5.0-10.5.dmg

No Então é só clicar duas vezes e seguir o wizard (next > next > finish)




É recomendavel instalar o X11 também, procure por ele no cd de instalação do mac.


Após instalar o macports, abra um terminal e crie o arquivo ~/.profile com o comando :


sudo nano ~/.profile


Com o conteúdo :

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export DISPLAY=:0.0


Feito isso feche o terminal (Command + Q) e abra de novo.

O primeiro comando que você vai usar sempre que for instalar algo novo será :


sudo port -v selfupdate


O argumento "-v" liga o modo verbose do comando, e o selfupdate busca no site oficial por atualização dos pacotes, uma espécia de yum updade uo apt-get update.

Você pode buscar por um pacote no banco de dados de duas formas, manualmente , no diretório :

/opt/local/var/macports/sources/rsync.macports.org/release/ports/audio/

Ou usando o comando ports :


greyfoxII:~ root# port search gimp
gimp-app aqua/gimp-app 2.4.0 Gimp.app application bundle
macclipboard-gimp aqua/macclipboard-gimp 0.7 Gimp <-> Mac clipboard
macfile-gimp aqua/macfile-gimp 0.1 "Show in Finder" Gimp plugin
gimp graphics/gimp 2.4 The Gimp - Batteries Included
gimp-gap graphics/gimp-gap 2.2.2 The Gimp Animation Package.
gimp-jp2 graphics/gimp-jp2 0.1 Gimp JPEG 2000 plug-in.
gimp-lqr-plugin graphics/gimp-lqr-plugin 0.3.0-6 Liquid Rescale Gimp plug-in.
gimp-user-manual graphics/gimp-user-manual 0.13 A multilingual user manual for the Gimp (broken).
gimp2 graphics/gimp2 2.4.2 The GNU Image Manipulation Program
icns-gimp graphics/icns-gimp 0.1 Gimp file format plug-in for Macintosh icon files (.icns)
p5-gimp perl/p5-gimp 2.0 Gimp Extensions/Plug-ins/Load and Save-Handlers in perl
gimp-print print/gimp-print 4.2.7 Print Plugin & Ghostscript (and CUPS) Driver




Agora vamos instalar um pacote. Assim como o ports original e o emerge do gentoo, você pode customizar o processo de compilação incluindo ou desativando recursos, para verificar os recursos extras disponíveis para o pacote

Por exemplo para o PHP5 o comando seria :


greyfoxII:~ root# port -v variants php5
php5 has the variants:
universal
darwin_6
darwin_7
darwin_8
macosx
apache
apache2
fastcgi
imap
tidy
mssql
snmp
macports_snmp
mysql3
mysql4
mysql5
postgresql
sqlite
ipc
pcntl
pear
sockets: Add socket communication functions




Para instalar o nosso pacote com os recursos que queremos mostrando na tela os progressos durante a contrução dos binários , use o comando :


sudo port -v install php5 +apache2 +postgresql +sqlite



Para listar os programas instalos pelo ports :


port installed



Para atualizar basta usar os comandos :


port selfupdate



Veja os pacotes obsoletos com :



port outdated



Para atualizar um pacote :


port upgrade pacote



Para atualizar tudo :


port upgrade outdated




É isso, simples, estável e funciona, viva o macports.

PS: MACOSX é um sistema operacional fechado, que atenta a sua privacidade e sua liberdade. Use linux e seja livre ;-)





3 comentários

TAGS : macports mac osx apple gimp linux port

Posts relacionados

Delicious/liquuid/ports
Storage ZFS em FreeBSD :: blog do liquuid
liquuid's post :: Instalando o MySQL5 no Leopar via ports