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

Arrumando o KDE 3.5 no gentoo



Depois de ter testado o KDE4 no gentoo, senti na pela que realmente o ambiente gráfico não está pronto, nem para o usuário final nem para ninguem. KDE 4 só faz bonito nos screenshots, mas eu estou de saco cheio do GNOME...

Quando abandonei o fedora fiz alguns hacks no portage para manter tanto a versão 4 quanto a versão 3 do KDE. O problema é que depois que desfiz o hack, ao tentar instalar alguns pacotes faltosos tive o seguinte erro :


[blocks B     ] kde-base/kcontrol:3.5 (is blocking kde-base/kdebase-3.5.9-r3)

Nada demais, apenas os ebuilds monoliticos do portage conflitando com os ebuilds fragmentados, a solução foi a seguinte :


emerge kdebase-startkde

Isso resolveu meu problema... Agora só resta a dúvida, qual será o futuro do KDE ? Eu compartilho parte da opinião do Kov (alias, saudades docê fí)... Será que o KDE 4 realmente foi um tiro no pé ? Vou ter que aguentar a auto-rejeição do GNOME e seus aplicativos até quando ? Bah...


0 comentários

TAGS : kde4 gnome gentoo portage emerge

xeyes ? O que pega é o cubocc



Fantastico, clique na imagem abaixo e quando a japinha aparecer mexa o mouse :

Eu to pasmo, olha esse aqui


0 comentários

TAGS : japinha xeyes cubocc 3d motionportrait

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

Diário de um analista de suporte



Texto bem engraçado, tirei do site do Gustavo Picoloto, o original está aqui
Segunda
8:05am
Usuario chama dizendo que perdeu a password. 
Eu disse a ele para usar um utilitario de recuperacao de senhas chamado
FDISK. Ignorante, ele me agradeceu e desligou. 
Meu Deus! E a gente ainda deixa essas pessoas votarem e dirigirem?
 
8:12am 
A Contabilidade chamou para dizer que nao conseguiam acessar a base de
dados de relatorios de despesas. 
Eu dei a resposta Padrao dos Administradores de Sistema #112: "Engracado...
Comigo funcionou...". 
Deixei eles pastarem um pouco enquanto eu desconectava minha cafeteira do
No-Break e conectava o servidor deles de volta. 
Sugeri que eles tentassem novamente. Ah... Mais um usuario feliz...

8:14 am
O Usuario das 8:05 chamou dizendo que recebeu a mensagem: Erro no acesso ao
drive 0. 
Disse a eles que isso era problema de SO e: transferi a ligacao para o
microsuporte.

11:00 am
Relativamente calmas, as ultimas horas. 
Decidi reconectar o telefone do suporte para ligar pra minha namorada. 
Ela disse que os pais dela virao pra cidade nesse fim-de-semana. 
Pus ela "em-espera" e transferi a ligacao para o almoxarifado. 
Que e' que ela esta' pensando? 
Os torneios de "Doom" e "Myst" sao neste fim-de-semana!

12:00 pm
almoco.

15:30 pm
Retorno do almoco.

15:55 pm
Acordei da soneca. 
Sonhos ruins me dao tremores. 
Empurrei os servidores sem razao.
 Voltei pra soneca.

16:23 pm
Outro usuario liga. 
Quer saber como mudar fontes em um formulario.
Perguntei que chip eles estao usando. 
Falei pra eles ligarem novamente quando descobrirem.

16:55 pm
Resolvi rodar a macro "Criar Salvar/Replicacao de Conflitos" para que o
proximo turno tivesse algo a fazer...

Terca
8:30 am
Terminei a leitura do log de suporte da noite anterior. Pareceram ocupados.
Tempos terriveis com Salvar/Replicacao de Conflitos..

9:00 am
Gerente de suporte chega. Quer discutir minha atitude. Cliquei no
PhoneNotes SmartIcon. "Adoraria, mas estou ocupado. ", gritei enquanto
pegava as linhas de suporte, que (misteriosamente) acenderam.

9:35 pm
O chefe da equipe de P&D precisa de ID para novos empregados. 
Disse ele que precisava do formulario J-19R=3D9C9DARRK1. 
Ele nunca tinha ouvido falar de tal formulario. 
Disse a ele que estava no banco de dados de FORMULARIOS ESPECIAIS. 
Ele nunca ouvira falar de tal banco de dados. 
Transferi a ligacao para o almoxarifado.

10:00 am
Ana ligou pedindo um novo ID. 
Eu disse que precisaria da matricula, nome de depto, nome do gerente e
estado marital. Rodei @DbLookup nos bancos de dados de Controle de Doencas
e nao achei nada. 
Disse a ela que o novo ID estaria pronto de noite. 
Relembrando as licoes de "Reengenharia para Parceria de Usuarios",
ofereci-me para entregar pessoalmente em sua casa.

10:07 am
O cara do almoxarifado passou por aqui dizendo que estava recebendo
ligacoes estranhas ultimamente. Ofereci a ele um treino em Notes. Comecando
agora. Deixei ele olhando a console enquanto sai' para fumar.

13:00 pm
Voltei da pausa para o cigarro. O almoxarife disse que os telefones ficavam
tocando demais, entao ele transferia as ligacoes pra moca da cafeteria.
Comeco a gostar desse cara.

13:05 pm
Grande Comocao! Gerente de suporte cai num buraco aberto onde eu tinha
tirado os tacos, na frente da porta do seu escritorio. Falei pra ele da
importancia de nao entrar correndo na sala do computador, mesmo que eu
grite "Meudeus -- Fogo!!"

14:00 pm
A secretaria juridica liga e diz que perdeu a password. Pedi a ela que
cheque sua bolsa, chao do carro e no banheiro. Disse que provavelmente caiu
das costas da maquina. Sugeri que ela ponha durex em todas as entradas de
ar que ela ache no PC. Grunhindo, ofereci-me para lhe dar nova ID enquanto
ela colava os durex...

14:49 pm
O almoxarife voltou. Quer mais aulas. Tirei o resto do dia de folga.

Quarta
8:30 am
Detesto quando os usuarios ligam pra dizer que o chipset nao tem nada a ver
com fontes em um formulario. Disse a eles "claro, voces deviam estar
checando o "bitset" e nao "chipset". Usuario bobo pede desculpa e desliga.

9:10am
Gerente de suporte, com o pe engessado, volta ao escritorio. Agenda um
encontro comigo para 10:00am. Usuario liga e quer falar com o gerente de
suporte sobre terriveis socorros na mesa de suporte. Disse a eles que o
gerente estava indo a uma reuniao. As vezes a vida nos da' material...

10:00 am
Chamei o Luiz do almoxarifado pra ficar no meu lugar enquanto vou no
escritorio do gerente. Ele disse que nao pode me demitir, mas que pode
sugerir varios movimentos laterais na minha carreira. A maioria envolvida
com implementos agricolas no terceiro mundo. Falando nisso, perguntei se
ele ja' sabia de um novo bug que pega texto indexado dos bancos de dados e
distribui aleatoriamente todas as referencias.
A reuniao foi adiada...

10:30 am
Disse ao Luiz que ele esta' se saindo muito bem. Ofereci-me para mostra-lo
o sistema corporativo de PBX algum dia...

11:00 am
almoco.

16:55 pm
retorno do almoco.


17:00 pm
Troca de turno. Vou pra casa.

Quinta
8:00 am
Um cara novo (Jonas) comecou hoje. "Boa sorte", disse a ele.
Mostrei-lhe a sala do servidor, o armario de fios e a biblioteca tecnica.
Deixei-o com um PC-XT. Falei pra ele parar de choramingar. O Notes rodava
igual, tanto em monocromo quanto em cores.

8:45 am
Finalmente o PC do novato deu boot. Disse a ele que iria criar novo usuario
pra ele.
Setei o tamanho minimo de password para 64. Sai' pra fumar.

9:30 am
Apresentei o luiz ao Jonas. "Boa Sorte", comentou o Luiz. Esse cara nao e'
o maximo?

11:00 am
Ganhei do Luiz no domino. Luiz sai. Tirei o resto das pecas da manga
("tenha sempre backups").
Usuario liga, diz que servidor de contabilidade esta' fora do ar.
Desconecto o cabo Ethernet da antena do radio (melhor recepcao) e ligo de
volta no hub. 
Disse a ele que tentasse novamente. Mais um usuario feliz!

11:55 am
Expliquei ao Jonas a politica corporativa 98.022.01 
"Sempre que novos empregados comecam em dias que terminam em 'A' estao
obrigados a prover sustento e repouso ao analista tecnico senior do seu
turno"
Jonas duvida. Mostrei o banco de dados de "politicas corporativas".
"Lembre-se, a pizza e' de peperoni, sem pimenta!", gritei enquanto Jonas
pisa no taco solto ao sair.


13:00 pm
Oooooh! Pizza me da' um sono...

16:30 pm
Acordo de uma soneca refrescante. Peguei o Jonas lendo anuncios de emprego.

17:00 pm
Troca de turno. Desligo e ligo o servidor varias vezes (Teste do botao
ON-OFF...). Ate' amanha...

Sexta Feira
8:00 am
Turno da noite continua tendo problemas para trocar unidade de forca do
servidor.
Disse a eles que estava funcionando direito quando sai.

9:00 am
Jonas nao esta aqui ainda. Decidi que deveria comecar a responder as
chamadas eu mesmo.

9:02 am
Chamada de usuario. 
Diz que a base em Sergipe nao consegue replicar.
Eu e Luiz determinamos que e' problema de fuso horario. 
Mandei eles ligarem para Telecomunicacoes.

9:30 am
Meu Deus! Outro usuario! Eles sao como formigas, Dizem que estao em Manaus
e nao conseguem replicar com Sergipe. 
Falei que era fuso horario, mas com duas-horas de diferenca. 
Sugeri que eles ressetasse o time no servidor.

10:17 am
Usuario do Espirito Santo liga. 
Diz que nao consegue mandar mail pra Manaus. 
Disse pra eles setarem o servidor para 3 horas adiantado.

11:00 am
E-mail da corporacao diz para todos pararem de ressetar o time dos
servidores. 
Troquei o "date stamp" e reenviei para o Acre. 

11:20 am
Terminei a macro @FazerCafe. Recoloquei o telefone no gancho.

11:23 am
O Acre liga, perguntando que dia e' hoje. 

11:25 am
Gerente de suporte passa pra dizer que o Jonas pediu pra sair.
"Tao dificil achar boa ajuda...", respondi. 
O gerente disse que ele tem um horario com o ortopedista essa tarde e
pergunta se eu me impor em substitui-lo na reuniao semanal dos
administradores. "No problems",  eu respondo.

11:30 am
Chamo Luis e digo que a oportunidade bate `a sua porta e ele e' convidado
para um encontro essa tarde.
"Claro, voce pode trazer seu jogo de domino", digo a ele.

12:00 am
almoco:

13:00 pm
Comeco backups completos no servidor unix. Redireciono o device para NULL
para o backup ser mais rapido.

13:03 pm
Backup semanal completo. Cara, como eu gosto da tecnologia moderna!

14:30 pm
Olho o banco de dados de contatos de suporte. 
Cancelo o compromisso de 2:45pm. 
Ele deve ficar em casa descansando.

14:39 pm
Outro usuario ligando. 
Diz que quer aprender a criar um documento de conexao. 
Digo a ele para rodar o utilitario de documentos CTRL-ALT-DEL
Ele disse que o PC rebootou. Digo a ele para chamar o microsuporte. 

15:00 pm
Outro usuario (novato) liga. Diz que a macro periodica nao funciona.
Disse a ele para incluir a macro @DeleteDocument no final da formula e
prometi a ele mandar-lhe o anexo do manual que indica isso.

16:00 pm
Acabei de trocar a cor de frente de todos os documentos para branco.
Tambem setei o tamanho da letra para 2 nos bancos de dados de ajuda.

16:30 pm
Um usuario liga pra dizer que nao consegue ver nada em nenhum documento.
Digo a ele para ir no menu Edit, opcao Select all, e apertar a tecla Del e
depois refresh. 
Prometi mandar-lhe a pagina do manual que fala sobre isso.

16:45 pm
Outro usuario liga. Diz que nao consegue ver os helps dos documentos.
Digo a ele que irei consertar. Mudei a fonte para WingDings.

16:58 pm
Conectei a cafeteira no hub Ethernet pra ver o que acontece...
Nada... (muito serio).

17:00 pm
O turno da noite apareceu. Digo a eles que o hub esta' agindo estranho 
Desejo um bom fim-de-semana.




0 comentários

TAGS : gustavo picoloto fun analista suporte diario geek nerd fdp

Posts relacionados

Delicious/liquuid/port
liquuid's post :: Macports Mini-Howto