domingo, 6 de maio de 2012

Virtualização?!?!

        Introdução

          Quando ouvi falar de virtualização, achei que era coisa de filme de ficção cientifica, pensei tambem que era mais uma moda passageira, pois no mundo da informatica tivemos muitas modas e modistas, essas pessoas transformavam pequenos conceitos na "solução para falta de agua no mundo", exageros a parte são pessoas que classifico como bons propagandistas pois vendem bem uma ideia que nunca fora testada por eles ( acho que esse pessoal estão na profissão errada), fora isso, percebi que não era modismo quando tive o meu primeiro contato com o VMWARE, na época quando usava dual boot na minha maquina, WinXP e Slack 12.1, confesso que utilizei ele pirata por alguns meses, até aí tudo bem, depois conheci o VirtuaBox, esse é livre, além de ter removido o WinXP da minha maquina foi junto o VMWARE, adotei literalmente a filosofia de não usar mais nada pirata na minha maquina pessoal.
           Voltando ao assunto principal, o meu maior interesse pelo assunto foi quando na empresa onde trabalho adquiriu um servidor bi-processado com cada processador de 2 núcleos e 4GiB de Memória, então pensei que seria um desperdício de maquina usando ela para somente servir um sistema com banco-de-dados firebird, além do mais após ter lido um artigo da revista Linux Magazine sobre TI Verde ( 49, Dezembro de 2008) daí a minha consciência ficou pesada, pois resolvi fazer uma analise no bicho e percebi que nele tinha uma media de 75 usuário conectados simultaneamente, seu pico máximo foi de 120 usuários, apesar disso nunca chegou a usar nem 10% do segundo processador, eis que li mais uma vez o artigo e vi que a melhor solução era virtualizar ou em outras palavras transformar um servidor de grande porte trabalhar por mais de um, por exemplo: pegar esse servidor e fazer ele rodar por 4 servidores, isso seria a melhor forma de-se utilizar os recursos desse servidor pois assim estaria usando toda a sua performance, economizando em Hardware, pois não seria necessário adquirir mais maquinas, economia de energia, economia de ar-condicionado, pois não seria necessário dimensiona-lo para mais frio, facilidade de gerencia e backup e recuperação de problemas muito mais fácil, esses conceitos mencionados serão papo para outros artigos.
           Apesar de tudo isso que disse anteriormente a virtualização é um assunto antigo começou com a IBM na década de 60, e vem crescendo muito nos dias de hoje, temos soluções abertas, proprietárias de diversas modalidades.

          Diferença entre Virtualização e Emulação.

          Emulação: Normalmente nesse processo, os programas criam uma camada entre o Sistema Operacional e o programa a ser emulado, não criando um ambiente virtual completo, essa camada cria uma espécie de ambiente com bibliotecas para o programa rodar normalmente, esse programa a ser rodado normalmente é de outra plataforma como por exemplo do Windows rodando no Linux.

        O que é virtualização.

          Virtualização, basicamente, é a técnica de separar Aplicação e Sistema Operacional dos componentes físicos. Por exemplo, uma Máquina Virtual possui Aplicação e Sistema Operacional como um Servidor Físico, mas estes não estão vinculados ao Hardware e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um Sistema Operacional em um determinado Hardware. Com Virtualização de Aplicação ou Apresentação, estas aplicações pode rodar em um servidor ou ambiente centralizado e ser portada para outros Sistemas Operacionais e Hardwares.
Fonte: http://pt.wikipedia.org/wiki/Virtualiza%C3%A7%C3%A3o

Tipos de Virtualização.

Simulação: quando utilizado em TI significa imitar um processo ou uma operação do mundo real.

Emulação: mais uma vez este termo quando aplicado em TI significa reproduzir as funções de um determinado ambiente. Um exemplo fácil de assimilar são os emuladores de fliperama ou videogames antigos.

Virtualização: abstrair as características físicas de uma maquina.

Em computação, virtualização é um termo genérico utilizado para se referir da abstração dos recursos do computador. Uma boa definição seria: “uma técnica para mascarar as características físicas dos recursos do computador de forma que outros sistemas, aplicações ou usuários finais possam interagir com tais recursos”.

Existem algumas definições que são importantes quando falamos de virtualização:
Hypervisor
-
Constitui o componente principal que gerencia as maquinas virtuais hospedadas por ele.

Virtualização Completa (Full Virtualization)- Um sistema operacional Guest não-modificado sendo executado em um  Hypervisor. Na virtualização completa o Hypervisor mascara completamente a virtualização para o SO Guest para obter o máximo de facilidade de utilização.
Para-virtualização (Para-virtualization / Enlightenment)
- Um sistema operacional modificado sendo executado em um hypervisor. Na para-virtualização o SO Guest e o Hypervisor colaboram para obter o máximo em desempenho.

Virtualização de Aplicação
- Um método para mascarar e executar aplicações em um SO ou vindo de um SO, tanto local quanto via rede através de streaming

Virtualização de Apresentação
- Neste modelo de virtualização apenas a camada de apresentação de um aplicativo é executada na maquina cliente. O processamento e uso de memória ficam no servidor que estiver provendo esta modalidade de virtualização

Hosted Virtualization
- Uma  virtualização de aplicação, que executa um SO não-modificado , executando no topo de um sistema operacional padrão.

Hardware Virtualization Assistance
- Melhoramentos no processador que suportam guests não-modificados (full virtualization)
-  Intel-VT / AMD-V
Fonte: http://www.baboo.com.br/conteudo/modelos/Virtualizacao-Parte-1_a34531_z0.aspx 

Agora basta vocês escolher o que te serve melhor.


Instalar impressora Multifuncional Epson Stylus CX3500

            Introdução

          Tenho duas impressoras uma Epson Stylus CX3500 que é multifuncional e uma HP 3820, eu usava mais a HP, até que surgiu a necessedade de usar o scanner da Epson, como eu só usei ela quando tinha Windows instalado no meu micro, então resolvi reativar a impressora, cá entre nós a qualidade de impressão da Epson é superior a da HP, outra, porque a HP quebrou, pois ela tem um defeito de fabrica que quebra uma engrenagem do kit de limpeza, mais isso é assunto para outro artigo.

          Requisitos
           Todo o procedimento foi feito no Slackware 13.1

          Tenha os seguintes pacotes instalados:
          CUPS:
          XSANE:



http://localhost:631

no seu navegador e seguindo as instruções que não vou detalhar aqui.


Configurando o scanner

Como esta impressora é um modelo relativamente novo, o scanner do modelo Stylus CX3500 ainda não é reconhecido, mas o da Stylus CX3200 já é, por isso tudo que devemos fazer é identificar a diferença entre a CX3500 e a CX3200 e alterar dois arquivos. Vamos lá.

Para identificar sua impressora (pode ser uma multifuncional de qualquer marca), digite como root, ou no caso do Ubuntu usando o sudo:

$ sudo lsusb

Isto deve dar uma resposta, mostrando os periféricos USB conectados no computador, no caso de uma Stylus CX3500 existirá uma linha parecida com esta:

Bus 002 Device 001: ID 04b8:080e

O que nos interessa é o endereço ID, que neste caso é o 04b8:080e

Agora é necessário editar o arquivo /etc/hotplug/usb/libsane.usermap. Neste arquivo procure pela linha que identifica um modelo próximo ao de sua impressora (no nosso caso a Stylus CX-3500):

# Epson Corp.|Stylus CX3200
libusbscanner             0x0003      0x04b8   0x0802    0x0000       0x0000    0x00         0x00            0x00            0x00            0x00    0x00               0x00000000

E então copie estes dados para o fim do arquivo e altere para:

# Epson Corp.|Stylus CX3500
libusbscanner             0x0003      0x04b8   0x080e    0x0000       0x0000    0x00         0x00            0x00            0x00            0x00    0x00               0x00000000

Note que as únicas alterações feitas foram mudar de CX3200 para CX3500 e 0x0802 para 0x080e, conforme identificamos com o comando lsusb. Caso sua impressora seja de outra marca, identifique um modelo próximo a sua e faça o mesmo procedimento, digitando o resultado de seu lsusb nos campos correspondentes.

Agora edite o arquivo /etc/sane.d/epson.conf e comente (ponha um # no início da mesma) a linha "scsi EPSON", ficando "#scsi EPSON" e altere a linha "usb" para "usb 0x04b8 0x080e". Caso sua impressora seja outra, veja o resultado do lsusb novamente. Não sei se este passo é realmente necessário, mas eu o executei e a minha CX-3500 está funcionando perfeitamente. Caso queira, pode tentar sem a alteração deste arquivo e caso não funcione, alterá-lo depois do boot.

Agora é só abrir o XSane e testar e usar.


Mysql, comando via console, a saga continua! parte 3

Quando eu administrava os servidores de uma empresa que eu trabalhava, 
certo dia uma parte do site parou de funcionar, quando vi foi uma tabela 
que corrompeu (não me pergunte como!), depois de uma busca na 
internet consegui montar o seguinte material:
 
comando para reparar uma tabela: 
 
# mysqlcheck -h localhost -p database tabela --auto-repair
 


Usei o mysqlcheck pra ver o status das tabelas, e também reparar. Nesse documento tem detalhados os procedimentos:
Resumindo o conteúdo do link acima, normalmente o mysqlcheck -c nomedobanco já faz o check. e o mysqlcheck -r nomedobanco repara.
Tem casos onde o root não tem acesso ao banco, aí tem que usar a seguinte sintaxe:

# mysqlcheck -c -u nomedousuario -p –databases nomedobanco

O parametro -p é pra solicitar a senha.
Caso tenha algum banco que não está ok, o resultado desse comando já vai informar o banco, e a tabela com problema. Depois é só executar o mesmo comando alterando -c por -r de repair

mysqlcheck -r -u nomedousuario -p –databases nomedobanco



Abaixo segue um artigo semelhante:

 http://portugalcode.com/index.php?topic=326.0
Autor: @Scroll

Já se tornou um hábito: DBF corrompe. O que muitos não sabem é que os DBF do Visual Fox Pro sobre DBC são muito mais seguros que os DBF em clipper, ainda mais se usando buferização e transações. Mas mesmo assim, os DBF trafegam pela rede, e uma rede mal projetada conseqüentemente fará com que os problemas aconteçam.

Um dia o programador resolve migrar para a arquitetura client/servidor e escolhe por motivos diversos o MySql. Um ótimo banco, mas com o passar do tempo verifica que servidores resetados, problemas no HD e muitas outras coisas fazem com que os arquivos do MySql também corrompam.

O problema é que normalmente você terá que acessar algum font-end do Mysql e rodar uma rotina de reparação do banco de dados. É um processo simples, mas que muitas vezes torna-se complicado porque quem esta na outra ponta é um usuário básico, e acaba-se tomando um grande tempo do suporte para resolver.

O que alguns programadores não sabem é que esse reparo do banco é na verdade um comando nativo do MySql que pode ser dado diretamente pela linguagem de programação, fazendo com que a manutenção no banco MySql possa ser quase transparente para o usuário.

A sintaxe do comando é simples:

Repair table

Mas como saber qual a tabela que esta com problema, e também como saber se ela esta com problemas?

Se uma tabela não esta funcionando corretamente o comando SQL retorna erro e na captura desse erro sempre terá a inscrição MYI (comigo sempre), com isso em mãos podemos fazer na nossa rotina de tratamento dos comandos SQL que ao verificar este erro faça uma manutenção em todo o banco para repará-lo no momento que ocorre o erro. Veja o seguinte processo:
Código:
Function executa_sql

Parameters m.lcsql As String

Local m.lnSucesso As Integer

m.lnSucesso=SQLExec(m.IDSQL,m.lcsql)

If m.lnSucesso=-1

      =Aerror(laErroSQL)

      If "MYI" $ Upper(m.laErroSQL(1,3))

            =Messagebox("O banco necessita de manutenção neste momento, 
aguarde até o final do processamento.")

            SQLExec(m.IDSQL,"show tables from ","cReparar")

            Select cReparar

            Scan All

                  Wait Window At 0,0 "Verificando tabela "+Padl(Recno("cReparar"),4,"0")+" 
de "+Padl(Reccount("cReparar"),4,"0") Nowait Noclear

                  SQLExec(This.Id,"REPAIR TABLE "+Alltrim(cReparar.tables_in_))

            Endscan

            Wait Clear

            =Messagebox("Verificação completa.")

            executa_sql(m.lcExec)

      Endif

Endif

Endfunc


Agora quando a mensagem de erro de tabelas do MySql for detectada o processo repara automaticamente o banco. Note que chamamos a função de forma recursiva para que o comando que falhou agora possa ser executado com sucesso.

Mysql, administração via console parte 4

Fazendo Backup de Tabelas Mysql



Ensino aqui como fazer um backup de segurança de suas tabelas mySQL.

É muito simples, entre no shell do Mysql e digite o comando SQL: 

MYSQL> BACKUP TABLE tabela TO '/diretorio/de/destino'

No diretório escolhido será criado um arquivo chamado tabela.myd.





























É muito simples, mas antes note que:
  • esse comando só funciona com tabelas do tipo MyISAM.
  • o MySQL não sobrescreverá uma tabela existente.
Mas vamos lá.

O comando é:

MYSQL> RESTORE TABLE tabela FROM 'diretorio_onde_esta_copia'

Espero que isso complete as necessidades de backup de todos vocês.

sexta-feira, 4 de março de 2011

Gerênciador de Redes Wireless, no Slackware

      Tenho alguns amigos que dias atraz quebravam a cabeça para conectar um Notebook em uma rede sem-fio, tentaram de tudo ou quase de tudo...rsrsrs, até que eu resolvi fazer-lhes uma visita, deparo com o sofrimento alheio, eis que vos apresento Wicd.
      Wicd é um utilitário para gerência de redes sem e com fio, dentro do DVD do Slackware ele fica dentro do diretorio extra/wicd, o pacote está pronto é só usar o famoso installpkg e usar, ele fica dentro de MenuK/Internet.


      Soluções simples para problemas complexos!


     Até a proxima, que a força esteja conosco!

segunda-feira, 11 de outubro de 2010

Instalar Grub no Slackware 13.1

Introdução

           Eu não me importava com o Gerenciador de boot, pra mim tanto fazia qual fosse, até que um dia eu comecei a aprender virtualização com Xen, pois é uma exigencia do mesmo para funcionar, eis que entrei em mais uma odisséia, pois o Grub é uma confusão de versões e documentação, até que descobri que no DVD de instalação do Slackware na seção extra contem um pacote pré-compilado com um utilitário de configuração. Eis que abaixo demonstro como instalar.

PS: É opcional a desinstalação do LILO, pois o Grub depois de instalado assume o lugar do LILO.


Pacotes

              grub-0.97-i486-9.txz (que está dentro do DVD de instalação, na seção extra)


Instalação


          Ao instalar o Grub, temos junto com ele uma ferramenta que é uma mão na roda para configura-lo que é o grubconfig que funciona igual a liloconfig, porem, iremos apenas abordar a grubconfig. Abaixo segue a instalação passo-a-passo:

             Primeiro monte o DVD:
             # mount /dev/hdb /mnt/dvd
             Depois entre no diretório necessário:
             # cd /mnt/dvd/extra/grub
             Instale o pacote .txz
             # installpkg grub-0.97-i486-9.txz

        
             Feito isso o Grub está instalado, agora vamos configura-lo, como exemplo temos o cenário abaixo:

            /dev/sda - hd aonde está instalado o sistema;
            /dev/sda1 / (bootavel);
            /dev/sda2 /home;
            /dev/sda3  linuxswap.

            Para mais informações sobre o paticionamento do seu hd, use:
            # fdisk -l


           Então no console digite:
           # grubconfig
           Abrirá um assistente com duas opções, sendo elas a opção Simples e Expert, iremos escolher a Expert.

           Abaixo tem uma sequência de imagens é só segui-las que não tem problemas:


                                 Tela inicial do grubconfig.



                                 Instalação dos Headers do Grub.



                                  Escolha da resolução do terminal.




                                  Local onde será instalado o arquivo de inicialização do grub.



                                  Aqui você digita em qual HD será instalado o Grub.

                                
                           


                                  Aqui você digita em qual partição do HD está o /boot.




                                  Agora vamos iniciar a adição de uma partição Linux, note que há possibilidade de adicionar uma Windows também.
            



                                  Note que foi escolhida a primeira e que ela tem um * na frente que significa que ela é bootável.




                                  Aqui você escolhe o nome que irá aparecer no menu.




                                  Aqui você escolhe qual imagem de kernel para inicialização, de preferência deixe igual ao da imagem acima.
                                 


                                  Aqui são parâmetros extras, se tiver algum coloque, caso contrario deixe em branco.





                                  Essa escolha faz a instalação final.
                              




                                  Se aparecer essa tela é porque deu tudo certo.


Para lembrar esses passos foram executado no Slackware, não foi testado em outra distro, portanto antes de fazer qualquer instalação faça um teste antes no VirtualBox.


Que a força esteja conosco!


Até o próximo.

        
         

domingo, 19 de setembro de 2010

Compiz-fusion no Slackware 13 parte 2

 Compiz-fusion no Slackware 13 parte 2


Nesta segunda parte, iremos ver uma parte muito importante para o bom funcionamento do Compiz, no exemplo abaixo, adicione as seguintes linhas no seu xorg.conf.

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "AIGLX" "True"
    Option         "Xinerama" "0"
EndSection


Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 7300 SE/7200 GS"
    BusID          "PCI:1:0:0"
    Option         "NvAGP" "1"
    Option         "AddARGBGLXVisuals" "true"
    Option         "XaaNoOffscreenPixmaps" "true"
    Option "TwinView" "TRUE"
    Option "metamodes" "CRT: 1280x1024 +0+0, TV: 1024x768 +0+0"
    Option "MetaModes" "1024x768, 10248x768"
    Option         "TwinViewOrientation" "Clone"
    Option         "SecondMonitorHorizSync" "31-50"
    Option         "SecondMonitorVertRefresh" "60"
    Option         "TVStandard" "NTSC"
    Option         "TVOutFormat" "SVIDEO"
    Option         "ConnectedMonitor" "CRT,TV"
EndSection

Section "Screen"

# Removed Option "TwinView" "1"
# Removed Option "metamodes" "CRT: 1024x768 +0+0, TV: 1024x768 +0+0"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    #Option         "NvAGP" "1"
    Option         "RenderAccel" "true"
    Option         "AllowGLXWithComposite" "true"
    Option         "DisableGLXRootClipping" "True"
    Option         "AddARGBGLXVisuals" "True"
    #Option         "TwinView" "0"
    #Option         "TwinViewXineramaInfoOrder" "CRT-0"
    #Option         "metamodes" "1280x1024 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "Enable"
EndSection

Nas tela do Configurador do Compiz, deixe a seção Gerenciamento de Janela, igual abaixo:





É seguir os passos acima que o mesmo funcionará, se não funcionar, deixe um comentário que tentarei ajuda-lo.