30 de julho de 2012

IBM PowerVM: comando do VIOS, cfgdev, mostra erro "0514-061 Cannot find a child device"

Quando estamos configurando um Virtual IO Server (VIOS) sempre rodamos o comando 'cfgdev', afinal de contas é o comando que irá configurar nossos dispositivos e reconhecer novos dispositivos. 

Um erro que já vi acontecer algumas vezes é o seguinte: 0514-061 Cannot find a child device

Esse erro não denota um erro no comando 'cfgdev' em si, mas sim uma saída de erro de algum comando invocado pelo 'cfgdev'.

Abaixo podemos ver que a mensagem de erro está atrelada ao comando 'cfgefscsi -l fscsi1

Method error (/usr/lib/methods/cfgefscsi -l fscsi1 ):
        0514-061 Cannot find a child device.

A mensagem '0514-061 Cannot find a child device', neste caso, significa que provavelmente o cabo de fibra da placa 'fscsi1' não está conectado e o sistema não foi capaz de detectar as LUNs ou a SAN na qual esta placa está conectada. 

Isso pode ser tanto um problema de cabo desconectado como também de zoneamento SAN não configurado propriamente.

Para resolver o problema, verifique que o cabeamento está feito corretamente e/ou que a configuração de zoneamento da SAN na qual este cabo está conectado está feito corretamente.

Esta mensagem de erro, entretanto, não significa que o seu VIOS está configurado errado. Porém, se há uma placa 'fscsi1', e o comando está dando erro, provavelmente a redundância no acesso à sua SAN está comprometido (já que o cabo ou o zoneamento podem estar com problema).

26 de janeiro de 2012

Nova interface gráfica do Ubuntu 12.04 LTS: Head-Up Display

Eu mexo com computadores desde 1988. Me lembro bem das telas de fósforo (as verdes e pretas) e me lembro bem os primeiro jogos coloridos que eram em CGA (hehehe, tenho certeza que muitos nem vão saber o que significa CGA!).

Ou seja, eu sempre estive mexendo com interfaces gráficas há muito tempo (se bem que quando criança eu comprava umas revistinhas de ficção científica que ao final tinha sempre um joguinho para a gente digitar na linha de comando e rodar - tudo óbvio programado em BASIC). E sempre eu reclamo de que toda hora temos que mexer no mouse, ou repetir tarefas para executar as coisas mais básicas. E eu sempre achei que voz era a solução: que falar com o computador ia resolver tudo.

Bom, por enquanto não apareceu uma interface de voz que tenha me agradado. Eu até usei durante um tempo o IBM ViaVoice (que foi vendido para outra empresa - Nuance - e o produto se chama Dragon Dictate) mas o programa nunca entendia bem o que eu falava, apesar de que já era um adianto quando precisar digitalizar grandes documentos (veja que isso é antes de termos um OCR adequado!). Infelizmente não funcionava tão bem para gerenciar o desktop.

Fora estes problemas, sempre tivemos o problema de padronização. Ninguém padroniza nada quando se fala de programação e organização de interfaces gráficas. Aliás, a padronização que existe é não padronizar nada :)

Mas por quê eu estou falando essas coisas todas? Eis que temos o Ubuntu, um sistema operacional baseado em Linux (Debian pra ser mais preciso), que vem tomando uma boa fatia do mercado (sim, a Microsoft tem ficado um pouco pra trás mas nada que eles precisem se descabelar por isso ainda). Em sua última versão oficial (11.04 LTS - na data deste 'post') o Ubuntu mudou bastante sua interface gráfica. E agora anuncia que para sua futura versão (12.04 LTS) vai mudar novamente e, aparentemente, a nova mudança será um pouco mais radical (principalmente para os nossos amigos que usam Windows).


O uso de uma interface Unity, ao invés do clássico GNOME ou KDE, no Ubuntu já trouxe um certo rebuliço ao mundo dos desktops, mas é uma interface que é fácil de aprender mesmo para aqueles que nunca usaram um sistema Linux. Além disso, é uma interface mais "cool", "elegante", "bonita", "inovadora". Enfim, é, na minha opnião, finalmente uma maneira diferente de usar o desktop (não que seja algo que ninguém nunca fez, leia-se Apple e seu Mac OS). E que bom que alguma empresa, que tem conquistado o mercado e tenha uma fatia crescente de participação, está fazendo algo para mudar o nosso paradigma atual de interfaces gráficas.

Obviamente a Microsoft não está atrás nesta corrida. O Windows 8 deverá vir com uma grande reforma em sua interface gráfica (muitos alegam que seja porque a Microsoft está querendo entrar cada vez mais no mundo dos tablets e está tentando integrar desktop e tablet - mas esse é um papo para outro 'post').

Seja Linux ou Windows ou Mac OS, eu estou louco para ver uma nova interface gráfica. A do Ubuntu será chamada de Head-Up Display (HUD).

Não sou muito adepto de colocar um sistema beta rodando em meu laptop de trabalho, mas estou quase detonando tudo aqui e instalando um Ubuntu 12.04 Beta só para poder brincar com esta interface nova!

Se o desenvolvimento desta interface for para frente, teremos melhorias tais como:
  1. Melhor reconhecimento da voz para interagir com o desktop (vide que atualmente temos processador suficientemente potente para lidar com melhores algoritmos de reconhecimento de voz);
  2. Facilidade no uso dos aplicativos, uma vez que o famoso "menu" sumirá e as funções poderá ser facilmente oferecidas através de buscas (à la google quando lhe oferece algumas sugestões quando você começa a digitar a pesquisa);
  3. Simplificação do uso do desktop, uma vez que o Ubuntu já oferece, em sua interface atual, um sistema que se "lembra" das tarefas mais utilizadas, documentos mais acessados, sites mais visitados, e etc, e lhe oferece como sugestão estes itens que são mais utilizados no dia-a-dia;
  4. Solução do problema de padronização: não precisaremos mais saber se as "Preferências" de um programa ficam dentro do menu "Opções" ou do menu "Editar" ou até dentro de "Arquivo".

Estas são somente algumas das melhorias que veremos. Obviamente que, além disso, também será mais fácil para pessoas deficientes auditivas, visuais ou físicas utilizarem o computador, pois a idéia é que a interação do usuário com o desktop requeira cada vez menos o uso de um teclado ou a extensiva digitação de comandos (adicione uma tela multi-touch à um sistema destes e "adeus" teclado e mouse).

Conclusão: que venha o Ubuntu 12.04 e espero que a Cannonical continue investindo neste tipo de melhoramento do desktop. Afinal de contas, precisamos de mais concorrentes neste mundo desktop e, da minha parte, sou louco para ver o Linux realmente competindo com o Windows e o Mac OS. Acredito que a interface gráfica é a parte que ainda precisa ser desenvolvida para que o Linux seja aceito como um Mac OS ou Windows (afinal o Mac OS nada mais é do que um sistema baseado em *NIX com uma bela interface gráfica)

7 de outubro de 2011

Script, "oneliner", para teste de performance de sistemas de arquivos distribuidos

Muitos de vocês já devem ter se deparado com sistemas de arquivos distribuídos. Diferente de sistemas de arquivos locais, como ext3, NTFS, XFS, JFS, Fat32, e etc, os sistemas de arquivos distribuídos (ex: IBM GPFS, PanFS, PVFS2) se utilizam de vários servidores conectados à um disco comum entre eles (ou cada um à um disco dedicado) e conseguem atingir níveis de performance muito maiores que os esperados por sistemas de arquivos tradicionais (até mesmo quando comparando com sistemas como NFS e CIFS).

Existem muitas soluções que se beneficiam destes sistemas de arquivos, tais como: SAP Netweaver, SAP BW Accelerator, Web Servers (apache, tomcat, etc), e-mail (Exchange, Lotus Notes), Servidores de Arquivos, Computação de Alta Performance (HPC), Computação em Nuvem (Cloud Computing) e etc.

Costumeiramente, quando estou trabalhando em um cliente e quero demonstrar a performance deste sistema, uso um script básico para gerar uma carga neste sistema de arquivos. No mundo Linux temos uma terminologia que, quando escrevemos um mini-script na linha de comando, e não em um arquivo, chamamos, em inglês, de "oneliner script", ou seja, "script em uma linha".

Para podermos rodar este script que uso, basta:

1. Criar um arquivo com a lista de servidores (aqui será o nodes.list) e copiá-lo para os outros servidores

2. Garantir que há comunicação entre eles sem a necessidade do uso de senha para um usuário (veja no meu outro post como fazer isso)

3. Garantir que o sistema de arquivos distribuídos está montado (aqui será o diretório /gpfsFS1)

4. Rodar o script abaixo:

# for i in `cat /tmp/nodes.list`; do ssh -f $i 'for j in `cat /tmp/nodes.list`; do ssh -f $j dd if=/dev/urandom of=/gpfsFS1/$j.$(hostname).wrk bs=1048576 count=4000 ; done' ; done

onde temos:
if=/dev/urandom   :   o local onde vamos buscar informações para gerar um arquivo de teste. Pode ser também o /dev/zero, se quiser, ou /dev/random

of=/gpfsFS1/         :   o local onde vamos gravar os arquivos de teste. Importante que seja o diretório onde o seu sistema de arquivos paralelo está montado

bs=1048576          :    o tamanho do block size do seu sistema de arquivos. Aqui coloquei como 1M (ou 1048576 bytes)

count=4000          :     a quantidade de block sizes que iremos gravar, aqui sendo 4000. Ou seja, block size * count = tamanho do arquivo final. No caso acima, 1048576 * 4000 = 4Gbytes

O script irá ler o arquivo nodes.list e executar, para cada linha (cada servidor), um outro loop. Neste loop aninhado, ele irá, a partir de cada servidor da lista, acessar o outro servidor e mandar escrever um arquivo de 4GBytes no diretório do sistema de arquivos distribuídos.

Veja que, como há um loop aninhado, serão escritos muitos arquivos ao mesmo tempo e todos terão um total de 4Gbytes, ou seja, dependendo da quantidade de servidores que você tiver na lista o tamanho total de uso do sistema de arquivos poderá ser bem grande.

O paramêtro -f do ssh diz que é para cada interação ssh acontecer imediatamente e não esperar o término da execução do comando para voltar ao prompt. Ou seja, ao enviar o comando o ssh já irá retornar ao prompt fazendo com que o loop já envie o próximo comando sem esperar que o primeiro seja concluído. Dessa forma teremos, em paralelo, todos os processos escrevendo ao mesmo tempo e estressando o nosso sistema de arquivos paralelo.

Para medir a performance do sistema, use a sua ferramenta de análise preferida (seja uma linha de comando como o 'sar -b' - do pacote sysstat - ou seja uma ferramenta gráfica - por exemplo IBM Tivoli Monitoring).

obs: depois eu escrevo um post sobre como monitorar e analisar a performance de sistemas de arquivos, e como otimizá-los. ;)

19 de setembro de 2011

Resetando a contagem de alocação (alloc_count) no NIM

Muitas vezes já me deparei com este "problema" ao usar o NIM: um recurso aloca um lpp_source e por algum motivo não consegue desalocar este lpp_source, deixando o mesmo com alloc_count=1.

root@xcat01 # lsnim -l aix6106_lpp_source
aix6106_lpp_source:
   class       = resources
   type        = lpp_source
   arch        = power
   Rstate      = ready for use
   prev_state  = verification is being performed
   location    = /install/nim/lpp_source/aix6106_lpp_source
   simages     = yes
   alloc_count = 1
   server      = master

Uma vez que isso acontece, e tenta-se fazer alguma operação neste lpp_source, por exemplo adicionar novos pacotes, um erro é retornado dizendo que o recurso já está alocado para outro cliente.

xcat01@root # nim -o update -a packages=rsync-3.0.6-1.aix5.3.ppc.rpm -a source=/opt/media/xcat-dep/6.1 aix6106_lpp_source

0042-001 nim: processing error encountered on "master":
   0042-061 m_update: the "aix6106_lpp_source" resource is currently
        allocated for client use


Enquanto este erro acontecer não será possível, por exemplo, adicionar novos pacotes ao seu lpp_source. Uma alternativa que se pode usar para resolver este problema é tentar achar o recurso que está usando este lpp_source e desalocar o lpp_source deste recurso. Para isso basta fazer:

lsnim -l $CLIENT

onde $CLIENT é o nome do cliente que você suspeita que está alocando o recurso, e ver se ele está alocando o recurso (para analisar todos os seus clientes, sugiro criar um script para recursivamente analisar todos).

Ao verificar qual cliente está alocando o lpp_source pode-se desalocar o recurso da seguinte maneira:

nim -o deallocate -a force=yes $CLIENT

E com isso podemos voltar a fazer operações no lpp_source.

Outra maneira é forçar o reset do alloc_count para zero. Para isso precisamos usar um comando que é pouco conhecido (m_chattr):

#  /usr/lpp/bos.sysmgt/nim/methods/m_chattr -a alloc_count=0 aix6106_lpp_source

E com isso teremos forçado o reset do contador e agora podemos voltar a fazer operações em cima deste recurso.

root@xcat01 # lsnim -l aix6106_lpp_source
aix6106_lpp_source:
   class       = resources
   type        = lpp_source
   arch        = power
   Rstate      = ready for use
   prev_state  = verification is being performed
   location    = /install/nim/lpp_source/aix6106_lpp_source
   simages     = yes
   alloc_count = 0
   server      = master

xcat01@root # nim -o update -a packages=rsync-3.0.6-1.aix5.3.ppc.rpm -a source=/opt/media/xcat->

/install/nim/lpp_source/aix6106_lpp_source/RPMS/ppc/rsync-3.0.6-1.aix5.3.ppc.rpm

O NIM é um recurso muito interessante e útil do ambiente AIX, então espero que esta dica ajude-os a se tornar um pouco mais "expert" nessa ferramenta :)

14 de abril de 2011

Desenvolvendo sua carreira em IT: parte 1

O intuito desta série não é, de forma alguma, "empurrar goela abaixo" um caminho de desenvolvimento de uma carreira em IT. Na verdade, esta série é mais para que eu possa compartilhar, com quem queira, alguns dos caminhos que eu venho tomando para o desenvolvimento da minha carreira em IT.

Logo de início, a primeira dica, você tem que decidir o que quer para os próximos anos que vem pela frente. Quando se está iniciando a carreira (nos primeiros 5 anos, geralmente) é difícil querer definir uma estratégia para os próximos 10 a 15 anos porque, normalmente, não se tem a experiência necessária para definir isso (experiência aqui significando visão do tamanho e diversidade deste mercado!).

Então o conselho é o seguinte: tente imaginar metas para a sua vida em um futuro próximo, digamos nos próximos 2 a 3 anos. Imagine se quer ser um desenvolvedor de software, ou um arquiteto de sistemas, ou um administrador de redes e/ou servidores, e etc. Uma vez que fizer isso, dê foco às certificações da sua área. Exemplo: se for uma administração de redes vá fazer um CCNA e/ou CCNP, se for administrador de servidores faça um MCSA e LPIC-2, e assim por diante.

Além de pensar na carreira em si, também pense nos seus objetivos pessoais. Muitas vezes focamos tanto na carreira que não nos damos conta de que abdicamos nossa vida pessoal pelo desenvolvimento da nossa carreira. Para alguns, isto não é tão problemático. Para outros, isso é um caos! Ou seja, tente entender qual é o balanço adequado entre o seu "eu" pessoal e o seu "eu" profissional. Isto é importante pois, como em todos trabalhos, você será cobrado, exigido, pressionado, e essa tensão toda pode explodir no seu lado pessoal. O problema é que isso pode levar uma pessoa a entrar em depressão e atrapalhar não só a vida privada, mas também a profissional. E uma vez que isso acontece, se não for identificado devidamente e procurada uma ajuda para sair deste turbilhão, tanto a sua vida privada como a profissional irão ficar estagnadas ou até regredir.

Então, palavras chaves: foco e objetivo. Tenha metas claras. Se não souber, ou estiver com dificuldades de definir, procure ajuda com os amigos, seus pais, e também com os colegas de trabalho e gerentes da compania. O importante é conversar com pessoas que estejam em momentos, passos, fase, posições, mais avançadas do que a que você se encontra hoje. Lembre-se: essas pessoas em algum momento tiveram que passar por onde você está hoje, e irão entender a sua posição. Além disso, você será respeitado por estar querendo se desenvolver e crescer, e isso também irá lhe ajudar no seu caminho para atingir o seu objetivo.

Nos próximos posts vou tentar mostrar alguns caminhos que eu tomei para chegar na posição que estou hoje. Depois vou tentar consolidar algumas idéias e objetivos que estou pensando para o desenvolvimento do futuro da minha carreira.

Espero que este post veja a ajudar aos leitores!