Pesquisar neste blog

sexta-feira, 11 de dezembro de 2009

Importando mensagens para o zimbra com zmlmtpinject


Olá Pessoal,
uma boa ferramenta para importar backup de mensagens ou importar aquelas mensagens de outro servidor de email no formato maildir podemos usar uma grande ferramenta chamada zmlmtpinject. Ao executá-la as mensagens irão ser alocadas em sua caixa de entrada.


Sintaxe do comando:
# su zimbra
$ zmlmtpinject -r usuario -s usuario@metodistadosul.edu.br /home/fulano/Maildir/cur/*

Você pode importar uma determinada mensagem assim como várias usando o asterisco.

sexta-feira, 18 de setembro de 2009

O que é CCMI (Capability Maturity Model Integration)

O CMMI é o mais recente modelo de maturidade para desenvolvimento de software do SEI (Software Engineering Institute - EUA) um dos maiores influenciadores em gestão de processos de software em todo o mundo.

Derivado principalmente dos modelos SW-CMM (CMM for software, voltado ao desenvolvimento de software básico, ou de infra-estrutura) e SE-CMM (CMM for System Engineering, voltado ao desenvolvimento de aplicações de software).

O CMMI surgiu da percepção de que software básico e aplicações são desenvolvidos em contextos integrados. Além disso, o novo modelo reforça aspectos relacionados à gestão de fornecedores e poderá assimilar outros processos futuramente.

A característica mais memorável dos CMM´s, a escala dos níveis de maturidade, mantém as mesmas classificações, mas essas são definidas mais radicalmente pelo modelo.

Sendo um modelo de referência de processos, o CMMI, como seus antecessores, não defini como o processo deve ser implementado, mas prescreve suas características estruturais e semânticas em termos de objetivos e do grau de qualidade com que o trabalho deve ser realizado.
Cada nível de maturidade possui uma caracterização bem distinta:

* Diz-se que o nível 0 (incompleto) corresponde a ausência de qualquer processo de desenvolvimento. Não se pode fazer qualquer asserção sobre desenvolvimentos futuros;

* Organizações de nível 1 (estruturado) possuem um processo mínimo de desenvolvimento, capaz de orientar as macro-tarefas no nível operacional;

* Organizações de nível 2 (gerenciado) têm capacidade de gerenciar um ciclo de desenvolvimento, isto é, um projeto. Costuma-se caracterizar o nível 2 pela capacidade de gerir projetos. A maioria das empresas brasileiras está buscando certificação nesse nível;

* Organizações de nível 3 (definido) são orientadas a processos. Além dos fluxos de atividades, gerenciam os aspectos organizacionais, técnicos e de integração de equipes e fornecedores em função da definição do processo;

* Organizações de nível 4 (gestão quantitativa) gerem o processo com métricas quantitativas através do tempo. Conseguem avaliar o desempenho dos vários ciclos de desenvolvimento e comparar seus indicadores, obtendo previsibilidade;

* Organizações de nível 5 (otimização) controlam a avaliam o processo quantitativamente, podendo intervir em suas especificação para otimizá-lo continuamente.
É o mais alto nível de maturidade definido pelo CMMI.

Motivação para adotar o CMMI

A dominância da tecnologia da informação tornou os softwares indispensáveis as organizações, gerando preocupações consideráveis com a qualidade desses produtos. A aceitação dos CMMs, que repetiu com o CMMI, fez da certificação por esses modelos uma referência universal de qualidade em desenvolvimento de software. A competição global ratificou o cenário, levando mais empresas a buscar suas certificações.

Dessa forma, o objetivo de muitas empresas, especialmente nos países me desenvolvimento, como o Brasil, tem sido obter certificações CMMI para atender a exigências explícitas do mercado.

Mais importante, entretanto, é compreender que um modelo de maturidade pode auxiliar organizações a operar e competir melhor, cumprindo com mais eficiência o seu objetivo essencial de viabilidade econômica e social.

Como chegar lá

Um gestor atento diria que uma certificação CMMI evidencia que a empresa usufrui de benefícios associados a um certo nível de maturidade. Consideramos, então, que o esforço para uma certificação consista em conseguir ser aprovado na auditoria (appraisal). Apesar de um tanto ingênua, essa visão ajuda a entender o processo.

Uma auditoria oficial do CMMI segue um método, o SCAMPI (Standard CMMI Appraisal Method for Process Improvement). Basicamente, o SCAMPI verifica as seguintes fontes de informações:

* Instrumentação aplicada ao processo (tecnologia, infra-estrutura, guias de referência, etc..)
* Entrevistas e questionários aplicados à equipe
* Apresentação da equipe para os auditores.
* Documentação gerada pelo processo (artefatos metodológicos em hardcopy ou softcopy)

A verificação é feita contra requisitos-chave, chamados de Practice Implentation Indicators, que compõe os ARC (Appraisal Requirement for CMMI).

A apresentação para a auditoria, portanto, trata de adequar o processo de desenvolvimento software/sistemas da área-candidata aos requisitos do SCAMPI (especificados no ARC).

quarta-feira, 16 de setembro de 2009

Lista de algumas Empresas CMMI no Brasil


7COMm SP 2005 Synchro PP&T CMMI

Alstom Transportes SP 2002 ISD CMM

AMS Tecnologia SP 2004 ISD CMM

Atech Tecnologias Críticas SP 2003 ISD CMM

Atos Origin SP 2004 ISD CMM

Brasília DF 2003 Procesix CMM

BRQ SP 2004 Trimentus CMMI

BSI Tecnologia PR 2004 ISD CMM

C.E.S.A.R PE 2003 ISD CMM

Citibank SP 2003
CMM

CPM SP 2005 ISD CMM

CPM SC 2005 ISD CMMI

CPqD SP 2003 ISD CMM

Credicard SP 1998 ISD CMM

CTIS DF 2005 ISD CMM

Dell RS 2003 ISD CMM

Disoft SP 2003 Procesix CMM

DRM SP 2005 ISD CMM

DTS Latin America SP 2003 Procesix CMM

e-Dablio RJ 2003 ISD CMM

FITec PE 2005 ISD CMM

Fortaleza CE 2003 Procesix CMM

G&P – Gennari & Peartree SP 2003 ISD CMM

General Motors SP 2005 ISD CMMI

Getronics SP 2005 Procesix CMM

HP SP 2005 ISD CMM

Inatel MG 2003 ISD CMM

Infoserver SP 2004 ISD CMM

Instituto Atlântico CE 2003 ISD CMM

Itaú SP 2005 ISD CMM

Logocenter SC 2005 ISD CMM

M.I. Montreal Informática RJ 2004 Procesix CMM

Matera Systems SP 2005 ISD CMMI

Microsiga Software SP 2005 Procesix CMMI

MSA Informática MG 2005 ESICenter CMMI

Nec do Brasil SP 2003 ISD CMM

Prime Informática SP 2005 Procesix CMM

Procwork SP 2005 ISD CMM

Recife PE 2002 ISD CMM

Relacional Consultoria RJ 2005 Liveware CMMI

Santander Banespa SP 2005 ISD CMM

SERPRO Salvador BA 2003 Procesix CMM

Spress Informática S/A MG 2005 ISD CMM

Tele Design SP 2002 ISD CMM

TSE DF 2005 Liveware CMMI

T-Systems SP 2005 ISD CMM

Unitech BA 2005 ISD CMM

Vixteam ES 2006 Liveware CMMI

Itautec
2008 ISD CMMI

LG
2008
CMMI

Relacional
2006 Liveware CMMI

Vorlans
2007 ISD CMMI

Embraer SP 2006 ISD CMMI

ZCR Informática BA 2006 ISD CMMI

Johnson & Johnson SP
Crest Consulting CMMI

Message RJ 2008 Crest Consulting CMMI

GSW
2008 Crest Consulting CMMI

Complex SP 2009 Crest Consulting CMMI

Cetil Sistemas de Informática SC 2009 ISD CMMI

CTIS PR 2007 ISD CMMI

META IT - 2007 - CMMI




Fonte: BlogCMMI

Como analisar a produtividade de nossa equipe?

Atualmente muitos falam sobre produtividade, mas sem compreender o que de fato é produtivo.

Vamos supor um exemplo:

Temos dois programadores muito bons, o Primeiro (programadorA) era conhecido na empresa como um dos mais rápidos. Foi passado para ele um programa de 20h (programa A). Ele terminou o programa em aproximadamente 7h (35% do tempo).

O segundo programador (programadorB) também era conhecido como muito bom, mas não tão bom quanto o programadorA. Foi passado para ele um programa de 16h (programa B). Ele terminou o programa em aproximadamente 11h (68%).

Se você tivéssemos que premiar alguém, quem você premiaria? Olhando esses números você não tem dúvidas de quem é o melhor, correto?

Esta é a análise feita pela maioria das pessoas, no entanto, os programas foram para a área de testes.

Quando retornaram da área de testes o programa A necessitava de várias correções e ajustes, já o programa B praticamente não teve erro.

Nas idas e vindas do programa A, utilizou-se mais 9h, ou seja, o programa dele não foi finalizado em 7h e sim em 16h.

Agora vamos refazer a análise.

  • programadorA– utilizou 80% do tempo
  • programadorB – utilizou 68% do tempo

Ambos tiveram uma excelente produtividade, mas analisando os dados da forma correta, consegue-se ver quem foi o mais eficiente quem teve a melhor produtividade naquele projeto.

Enfim, como dito, a primeira análise é a mais comum (e equivocada), mas devemos sempre avaliar todo o ciclo para ter certeza de que estamos avaliando o processo da forma correta.


terça-feira, 15 de setembro de 2009

PMI lança Comunidade de Práticas Ágeis na Agile2009

O Project Management Institute (PMI) lançou oficialmente a sua Comunidade de Práticas Ágeis na conferência Agile2009. A missão do grupo é: "Equipar os membros do PMI e com habilidades e conhecimentos de metodologias Ágeis" Mike Griffiths foi o responsável por fazer as coisas andarem, quando ele lançou um desafio ao PMI na Agile 2007, para que este formasse um grupo de trabalho específico para metodologias ágeis.

O grupo de voluntários que criou a Comunidade de Práticas Ágeis (CoP), aplicou práticas ágeis durante o trabalho de criação da própria organização. Eles trabalharam com iterações de 2 semanas e fizeram retrospectivas visando melhorar seus processos. Jesse Fewell, desempenhou um papel análogo ao Product Owner de uma equipe Scrum. Em uma entrevista gravada para o Project Shrink Podcast, Jesse deu um exemplo de como a equipe repriorizou seu"backlog" com o intuito de entregar mais valor rapidamente. O resultado foi a criação de uma wiki onde as pessoas puderam encontrar informações sobre o grupo, e sobre metodologias ágeis, mesmo antes de todo o trabalho administrativo de formação do grupo estivesse completo.

O que é um Gerente de Projetos Ágil? foi uma sessão interativa, apresentada por Pat Reed e Jesse Fewell, que explorou o papel do gerente de projetos em um contexto ágil.

Mike Cottmeyer apresentou O PMP Ágil: Ensinando novos truques a um cachorro velho, que examinou os processos e as áreas de conhecimento do PMI e como adaptá-los aos projetos ágeis.

No último dia de sessões oficiais, Jesse apresentou a história de como a Comunidade de Práticas Ágeis do PMI foi criada, no Growing PMI Using Agile (Melhorando o PMI usando metodologias ágeis) .

A equipe distribuída responsável por fazer da Comunidade de Práticas Ágeis do PMI uma realidade inclui:


Fonte: InfoQ

segunda-feira, 14 de setembro de 2009

Artigo Publicado no WSL2009 - Monitoramento de Taxa de Erros em Transmissão de Redes Usando Software Livre

Olá Pessoal,
como prometido estou disponibilizando meu artigo científico aprovado e apresentado no WSL2009. De 110 Trabalhos enviados foram aprovados apenas 24.

Overview

O artigo científico trata da análise, desenvolvimento e implementação de um plugin em C utilizando as APIs do SNMP e Nagios. O plugin tem por objetivo ajudar na prevenção de problemas físicos e lógicos e garantir uma boa qualidade do tráfego de rede.
O plugin por si só não consegue monitorar várias interfaces simultaneamente, então por exemplo: como vou descobrir quais interfaces de um switches de 48 portas podem estar recebendo pacotes com erro de crc? Bom para auxiliar o plugin que só monitora um determinada porta através de seu índice adquirido pela pesquisa usando o snmp criei dois scripts shell, um para varrer todas as portas de um determinado switch e gravar em um arquivo os registros do percentual de erros encontrados, índice das portas. O outro script usa um arquivo de texto como base a lista de todos os ips dos switches gerenciáveis. Para cada switch ele faz uma varredura e armazena os registros do percentual de erros encontrados nas portas, índices das portas. Com esses dados, ou seja, ao analisarmos o arquivos com os registros encontramos alguns dados relevantes como o ip do switch, a porta e o percentual de erro da parta. No meu caso, em portas em que o percentual era muito alto cadastrei-as no Nagios para monitoramento e fui atrás dos possíveis problemas. Parti das hipóteses físicas primeiramente e depois as lógicas caso o problema não era solucionado.

O intuito deste trabalho acadêmico é demonstrar o quão fácil é, mesmo que com pouco conhecimento em linguagem de programação criar uma ferramenta utilizando software livre que a cada dia está se difundindo mais e mais no mercado de TI.

Quero deixar esse material aos colegas do meio acadêmico e publico em geral que também queiram explorar esse campo para contribuir com o crescimento do Software Livre e a fortificação da comunidade open-source.


Monitoramento de Taxa de Erros em Transmissão de Redes Usando Software Livre
Marcos Abadi (Centro Universitário Metodista IPA-RS)
Carlos Henrique Cano (Centro Universitario Metodista IPA-RS) - Orientador
Rubem Fagundes (PUC-RS) - Co-orientador

http://www.fisl.org.br/10/www/wsl2009-aprovados

>> Download do Artigo fonte do plugin Aqui <<

sexta-feira, 4 de setembro de 2009

Como Criar e Gerenciar um Logical Volume Manager (LVM)


Mas o que é LVM?

LVM é um gerenciador de disco que trabalha em alto nível fornecendo uma nova forma de trabalhar com partições no sistema.

O LVM trabalha adicionando mais uma camada ao gerenciamento de disco, as partições criadas sobre o LVM podem ser redimensionadas. Podemos adicionar novos discos físicos quando o espaço em disco atual acabar, e melhor, não teremos que mover os dados de um disco para outro. Basta redimensionar as partições atuais.

Você pode usar o LVM em diversos discos ou apenas em um podendo deixar espaço livre para futuras adequações de espaço ou mover o espaço ocioso de uma partição para outra com pouco espaço.

Onde encontro?

As principais distribuições já trazem o suporte ao LVM instalado e ativado, inclusive as distribuições Fedora Core e RedHat já possuem em seus instaladores (Anaconda) gráficos, suporte a criação de unidades utilizando o LVM já no processo de instalação.

Overview do LVM

Na base de um sistema LVM temos os discos rígidos fisicamente conectados ao computador, depois temos as seguintes camadas.

PV (Physical Volume): Basicamente server para criar o UUID, é um identificador único para cada volume físico.

VG (Volume Group): Um VG é o agrupamento de vários PVs, você pode ter vários VGs também, porem se um VG estiver sem espaço e o outro VG tiver espaço de sobra você não poderá usar o espaço livre de um VG para aumentar o outro. Em instalações normais é necessário a criação de apenas um VG.

LV (Logical Volume): Os LVs, nesta camada é feita a formatação e montagem do sistema de arquivos no Linux. Essa é a única camada que realmente é acessível para o usuário.

Agora iremos ver os passos para criar um sistema de armazenamento baseados em LVM e pode ser divididos nas seguintes etapas lógicas.:

1 - Criação das partições

2 - Criação do Volume Físico
3 - Criação do grupo
4 - Criação dos volumes lógicos

1 - Criação das partições

Com um ou mais discos conectados podemos criar partições utilizando para isso o programa fdisk e definindo as partições como sendo do tipo 8e ou Linux LVM.

1.1 - fdisk /dev/hdc

The number of cylinders for this disk is set to 14593.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 1
First cylinder (1-14593, default 1):
Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-14593, default 14593):
Using default value 14593

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/hdc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 14593 117218241 8e Linux LVM

Aqui foi criado apenas um partição de um disco de 120Gb, só é necessário apenas uma única partição pois todo o gerenciamento será feito utilizando o LVM.

2.1 - Criando Physical Volume (PV)

Para criar um volume físico basta usar o seguinte comando:

# pvcreate /dev/hdc1
Physical volume "/dev/hdc1" successfully created

Você pode fazer isso com quantas partições você quiser, pode ser em discos separados ou no mesmo disco.

Para ver como ficou seu volume físico basta executar o seguinte comando:

# pvdisplay

--- NEW Physical volume ---
PV Name /dev/hdc1
VG Name
PV Size 111.79 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa

Notem que o VG Name está vazio, isso indica que o nosso volume físico ainda não participa de nenhum grupo, e na última linha podemos ver o PV UUID, esse número é que vai identificar o nosso volume físico dentro da estrutura do LVM.

3.1 - Criando Volume Group (VG)

Um grupo é a união de um ou mais volumes físicos, o comando para criar um grupo é o vgcreate, obrigatoriamente você deve especificar o nome do grupo e quais os volumes físicos que farão parte deste grupo.

# vgcreate backup /dev/hdc1
Volume group "backup" successfully created

Você pode especificar mais de um volume físico, por exemplo.

# vgcreate backup1 /dev/hdc1 /dev/hdc2 /dev/hdc3
Volume group "backup1" successfully created

Agora que criamos o nosso grupo vamos ver como ele ficou, para isso vamos usar o comando vgdisplay.


# vgdisplay
--- Volume group ---
VG Name backup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 111.79 GB
PE Size 4.00 MB
Total PE 28617
Alloc PE / Size 0 / 0
Free PE / Size 28617 / 111.79 GB
VG UUID rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Aqui temos diversas informação sobre o grupo, uma informação muito importante é Alloc PE / Size e Free PE / Size que respectivamente mostram quanto do espaço em disco do grupo está em uso e quanto está livre para ser alocado.

Se você executar o comando pvdisplay agora poderá notar algumas mudanças como informações sobre o nome do volume e outras sobre a alocação do volume físico, veja abaixo.

# pvdisplay
--- Physical volume ---
PV Name /dev/hdc1
VG Name backup
PV Size 111.79 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 28617
Free PE 26057
Allocated PE 2560
PV UUID jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa


4.1 - Criando Logical Volume (LV)

Para criar um volume iremos usar o comando lvcreate.

# lvcreate --name dados --size 10g backup
Logical volume "dados" created

Aqui criamos uma "partição" com o nome (--name dados) dados com o tamanho (--size 10g) de 10Gb no grupo backup.

O tamanho pode ser especificado usando g ou G para Gigas, m ou M para Megas, t ou T para Terabytes.

Para ver as informações sobre todos os volumes no seu sistema você pode utilizar o comando lvdisplay sem argumentos ou lvdisplay NOME_DO_GROPO.

# lvdisplay backup
--- Logical volume ---
LV Name /dev/backup/dados
VG Name backup
LV UUID pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
LV Write Access read/write
LV Status available
# open 0
LV Size 10.00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:7

Se você executar o comando vgdisplay poderá ver que o Alloc PE / Size e o Free PE / Size mudaram.

Alloc PE / Size 2560 / 10.00 GB
Free PE / Size 26057 / 101.79 GB

Agora ele informa que estamos usando 10Gb e ainda temos 101.79 Gb para usar.

Utilizando os volumes

Agora que já criamos um volume podemos trabalhar com ele como uma partição normal, a unica diferença e que ao invés de você acessar o /dev/hdc1 você irá acessar o /dev/NOME_DO_GRUPO/NOME_DO_VOLUME, por exemplo.

Aqui eu estou utilizando o ext3 como sistema de arquivo principal, porém eu sito observações sobre como fazer usando o reiserfs, particularmente achei o reiserfs mais pratico nas operações re mudança de tamanho do volume.

# mkfs -t ext3 /dev/backup/dados
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Observação: Para criar um volume formatado com reiserfs utilize o comando mkfs com a opção -t reiserfs.

Depois de criado o sistema de arquivos podemos montar e até mesmo adicinar no /etc/fstab.

# vi /etc/fstab
/dev/backup/dados /mnt/daos ext3 defaults 1 2

# mkdir /mnt/dados
# mount /mnt/daos

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/backup-daos 9.9G 151M 9.2G 2% /mnt/daos

Aqui eu editei o /etc/fstab e adicionei uma linha para a nova partição, criei o diretório e montei o diretório, também executei o comand df para mostrar o satus atual da partição, veja que o /dev/backup/dados foi automaticamente mapeado para a unidade /dev/mapper/backup-dados.

Se quiser ter mais partições basta repetir os passos anteriores.

Alterando os tamanhos

Agora que já temos uma partição já criada e funcionando é hora de mexer um pouco nela, vamos mudar o tamanho, aumentando, diminuindo, removendo o nosso volume.

Aumentando um Logical Volume

Como já vimos anteriormente a unidade /dev/backup/dados tem um total de 10Gb, vamos adicionar algum conteúdo e depois vamos aumentar para 50Gb.

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/backup-dados 9.9G 9.5G 0 100% /mnt/dados

O disco está completamente cheio, para aumenta o tamanho da unidade primeiro precisamos desmonta-la.

umount /mnt/dados

Agora temos que executar o comando lvresize e especificar o novo tamanho da unidade.

# lvresize --size 50g /dev/backup/dados
Extending logical volume dados to 50.00 GB
Logical volume dados successfully resized

A mensagem mostra que o volume foi modificado com sucesso, agora ele tem 50Gb, será?

Vamos monta-lo e usar o comando df para ver como ficou.

# mount /mnt/dados
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/backup-dados 9.9G 9.5G 0 100% /mnt/dados

Nada mudou? será que fizemos alguma coisa errada?

Claro que fizemos, somente executar o comando lvresize não resolve, temos alguns outros passos para executar, vamos fazer os passos que faltaram.

# umount /mnt/dados

Novamente desmontamos a unidade, agora vamos fazer o que faltou, primeiro execute o fsck com a opção -f para forçar uma verificação da integridade da unidade.

# fsck -f /dev/backup/dados
fsck 1.38 (30-Jun-2005)
e2fsck 1.38 (30-Jun-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/backup/dados: 2305/1310720 files (31.0% non-contiguous), 2512828/2621440 blocks

Se você não usar o -f o fsck não fará nenhuma verificação, agora vamos usar o comando resize2fs para unidades formatadas com o ext2 e ext3 ou o comando resize_reiserfs para unidades com reiserfs.

# resize2fs /dev/backup/dados
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/backup/dados to 13107200 (4k) blocks.
The filesystem on /dev/backup/dados is now 13107200 blocks long.

Observação: Se você estiver usando o sistema de arquivos reiserfs utilize o comando resize_reiserfs, com o reiserfs você não precisa executar o fsck antes de usar o resize_reiserfs.

# resize_reiserfs /dev/backup/dados
resize_reiserfs 3.6.19 (2003 www.namesys.com)

ReiserFS report:
blocksize 4096
block count 1310720 (524288)
free blocks 1302469 (516061)
bitmap block count 40 (16)

Syncing..done

resize_reiserfs: Resizing finished successfully.

Pronto, agora vamos montar a unidade e vamos usar o df para verificar o tamanho que ficou.

# mount /dev/backup/dados /mnt/dados
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/backup-dados 50G 9.5G 38G 21% /mnt/dados

Agora o nosso volume está com 50Gb, não tivemos nenhuma perda de dados nem problemas, se fosse um servidor essa operação leva poucos minutos e poderia facilmente ser feita no horario de almoço ou após o expediente sem a parada total da maquina.

Vamos agora aumentar em mais 1Gb o volume para mostar o uso da ferramenta lvextend e o que acontece se você executar o resize2fs antes de fazer um fsck.

# lvextend --size +1g /dev/backup/dados
Extending logical volume dados to 51.00 GB
Logical volume dados successfully resized

# resize2fs /dev/backup/dados
resize2fs 1.38 (30-Jun-2005)
/dev/backup/dados is mounted; can't resize a mounted filesystem!

Esqueci de desmontar para poder redimencionar.

# umount /dev/backup/dados

# resize2fs /dev/backup/dados
resize2fs 1.38 (30-Jun-2005)
Please run 'e2fsck -f /dev/backup/dados' first.

Não executei o fsck, vamos executá-lo conforme ele manda.

# e2fsck -f /dev/backup/dados
e2fsck 1.38 (30-Jun-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/backup/dados: 2305/6553600 files (31.0% non-contiguous), 2679872/13107200 blocks

Agora o volume está com 51Gb, bastante espaço, agora vamos voltar o tamanho dele para 50Gb.
Diminuindo um Logical Volume

Para dimuir um volume vamos usar as ferramentas lvresize, resize2fs e fsck, só que em ordem um pouco diferente.

Primeiro vamos desmontar o volume.

Agora vamos usar o comando resize2fs só que de forma um pouco diferente.

# resize2fs /dev/backup/dados 30G
resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/backup/dados to 7864320 (4k) blocks.
The filesystem on /dev/backup/dados is now 7864320 blocks long.

Depois de informar o dispositivo precisamos colocar o novo tamanho da unidade.

Observação: Se você estiver usando reiserfs você deve usar o comand resize_reiserfs, porém não precisa executar o fsck antes de fazer a redução do tamanho do volume.

# resize_reiserfs -s 3G /dev/backup/dados
resize_reiserfs 3.6.19 (2003 www.namesys.com)

O volume já foi reduzido só que o espaço liberado não foi devolvido para o grupo para que possa ser usado em outro volume, se voce executar o comando vgdisplay verá que ainda aparece como sendo utilizados 51Gb.

# vgdisplay
Alloc PE / Size 13056 / 51.00 GB

# lvdisplay backup
--- Logical volume ---
LV Name /dev/backup/dados
VG Name backup
LV UUID pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
LV Write Access read/write
LV Status available
# open 0
LV Size 51.00 GB
Current LE 13056
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:7

Para devolver o espaço para que ele possa ser usado novamente você vai precisar usar o comando lvresize e especificar o tamanho que o volume deve ter.

# lvresize --size 30G /dev/backup/dados
WARNING: Reducing active logical volume to 30.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce dados? [y/n]: y
Reducing logical volume dados to 30.00 GB
Logical volume dados successfully resized

Pronto agora o espaço estará disponivel para uso.

# lvdisplay backup
--- Logical volume ---
LV Name /dev/backup/dados
VG Name backup
LV UUID pPKBWV-yuCC-g6j3-w9lE-cQxB-DRUq-tYk073
LV Write Access read/write
LV Status available
# open 0
LV Size 30.00 GB
Current LE 7680
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:7


Vamos montar a unidade e verifica o tamanho que ela tem agora.

# mount /dev/backup/dados /mnt/dados

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/backup-dados 30G 9.5G 19G 34% /mnt/dados

Informação importante, todas as vezes que tentei reduzir o tamanho de um volume usando o lvreduce ou o lvresize antes do resize2fs não fiquei muito contente, tive perda total dos dados, veja o que acontece.

# lvreduce --size -10G /dev/backup/dados
WARNING: Reducing active logical volume to 20.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce dados? [y/n]: y
Reducing logical volume dados to 20.00 GB
Logical volume dados successfully resized

# e2fsck -f /dev/backup/dados
e2fsck 1.38 (30-Jun-2005)
The filesystem size (according to the superblock) is 7864320 blocks
The physical size of the device is 5242880 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort? no

Pass 1: Checking inodes, blocks, and sizes
Error reading block 5242882 (Invalid argument) while doing inode scan. Ignore error? no

Error while scanning inodes (2621440): Can't read next inode
e2fsck: aborted

O mais importante é que você faça um backup antes de efetuar essas operações.


Excluindo um Logical Volume

Essa operação é a mais simples de todas, usaremos apenas o comando lvremove.

# lvremove /dev/backup/dados
Do you really want to remove active logical volume "dados"? [y/n]: y
Logical volume "dados" successfully removed

Adicionando outro disco no Volume Group

Agora vamos adicionar um outro disco ao nosso volume backup que já existe, para essa operação vamos utilizar o comando pvcreate para criar o volume fisico e o vgextend para extender o nosso volume backup.
Criando o Phisical Volume

Vamos criar a partição em nosso outro disco.

# fdisk /dev/hdd

The number of cylinders for this disk is set to 14593.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hdd: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-14593, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-14593, default 14593): 14593

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/hdd: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdd1 1 14593 117218241 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Agora vamos criar o volume físico.

# pvcreate /dev/hdd1
Physical volume "/dev/hdd1" successfully created

Depois que volume for criado podemos ver todos os volumes físicos com o comando pvdisplay.

# pvdisplay
--- Physical volume ---
PV Name /dev/hdc1
VG Name backup
PV Size 111.79 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 28617
Free PE 28617
Allocated PE 0
PV UUID jC3Yby-Hjbl-0Xc1-akAR-nfeL-PoFw-1mODLa

--- NEW Physical volume ---
PV Name /dev/hdd1
VG Name
PV Size 111.79 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 5R1YzH-sbUP-y2Jn-E2DX-OF97-Opsm-tSMT2k

Adicionando o novo Physical Volume no Volume Group já existente

Depois que o volume físico estiver criado você vai precisar adiciona-lo ao grupo já existente.

Mas primeiro vamos utilizar o comando vgdisplay para ver a situação atual o grupo

# vgdisplay
--- Volume group ---
VG Name backup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 13
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 111.79 GB
PE Size 4.00 MB
Total PE 28617
Alloc PE / Size 0 / 0
Free PE / Size 28617 / 111.79 GB
VG UUID rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Agora vamos usar o comando vgextend para adicionar o novo disco ao volume já existente.

# vgextend backup /dev/hdd1
Volume group "backup" successfully extended

A operação é bem rápida e fácil, vamos ver como ficou.

# vgdisplay backup
--- Volume group ---
VG Name backup
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 14
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 223.57 GB
PE Size 4.00 MB
Total PE 57234
Alloc PE / Size 0 / 0
Free PE / Size 57234 / 223.57 GB
VG UUID rWTn7n-pZTt-rN5t-0W3e-TzQL-ODyN-xROa3N

Pronto, agora você já sabe as operações básicas para manutenção de volumes utilizando LVM.

Removendo um disco do volume

Para remover um disco do nosso volume já existe a operação tambem é bem simples, basta usar o comand vgreduce e informar qual a unidade que deve ser removida.

# vgreduce backup /dev/hdd1
Removed "/dev/hdd1" from volume group "backup"

Agora vamos remover as informações do volume físico do disco, para fazer isso vamos utilizar o comando pvremove.

# pvremove /dev/hdd1
Labels on physical volume "/dev/hdd1" successfully wiped

Agora é só remover a partição utilizando o fdisk.
Outros comandos úteis

Vamos mostrar apenas alguns comandos uteis para obter informações sobre a estrutura do LVM, existem muitos outros comando porém seria inviavel explicar todos eles aqui.
pvscan

# pvscan
PV /dev/hda2 VG vol0 lvm2 [18.53 GB / 10.28 GB free]
PV /dev/hdc1 VG backup lvm2 [111.79 GB / 61.79 GB free]
PV /dev/hdd1 lvm2 [111.79 GB]
Total: 3 [242.10 GB] / in use: 2 [130.32 GB] / in no VG: 1 [111.79 GB]

O pvscan mostra informações sobre os diversos volumes físicos existentes no sistema, informa o dispositivo o nome do grupo o espaço utilizado o espaço livre e o total de todos os volumes.

O dispositivo /dev/hdd1 do exemplo acima não pertence a nenhum grupo.
vgscan

# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vol0" using metadata type lvm2
Found volume group "backup" using metadata type lvm2

Obtem informações sobre os grupos existentes no sistema.
lvscan

# lvscan
ACTIVE '/dev/vol0/root' [992.00 MB] inherit
ACTIVE '/dev/vol0/tmp' [992.00 MB] inherit
ACTIVE '/dev/vol0/usr' [2.91 GB] inherit
ACTIVE '/dev/vol0/src' [992.00 MB] inherit
ACTIVE '/dev/vol0/var' [992.00 MB] inherit
ACTIVE '/dev/vol0/log' [992.00 MB] inherit
ACTIVE '/dev/vol0/swap' [512.00 MB] inherit
ACTIVE '/dev/backup/dados' [1.00 GB] inherit


Obtem informações sobre todos os volumes logicos existentes no sistema e exibe de forma resumida para você.

Referências

* http://tldp.org/HOWTO/LVM-HOWTO/
* http://sources.redhat.com/lvm/

Autor
Rodrigo Luis Silva
Atualizado por Marcos Abadi

quarta-feira, 10 de junho de 2009

Como conectar no MySQL do Zimbra


Olá pessoal, precisei esses dias conectar ao mysql do zimbra pois estou desenvolvendo uma ferramenta de backup/restore e como nunca tinha feito isso tive uma certa dificuldade pois o mesmo está configurado apenas para acesso localhost, então segue a dica abaixo para que deseja se aventurar e conhecer a estrutura de bases e tabelas do zimbra.
Passo 1 - Logue-se localmente no servidor onde está instalado o zimbra.
Passo 2 - Digite o comando su - zimbra para virar usuário zimbra e consequentemente poder logar no banco, pois como root ele não entra.
Passo 3 - Digite o comando mysql.
Passo 4 - Agora vamos criar um usuário a parte para acessarmos quaisquer bases do zimbra usando o segunte comando abaixo:
GRANT ALL PRIVILEGES ON *.* TO `zimbrauser`@`localhost` IDENTIFIED BY "minhasenha" WITH GRANT OPTION;
Passo 5 - Digite o comando exit para sair do banco;
Passo 6 - Agora o próximo passo é o segredo, vamos editar o arquivo de configuração do mysql que o zimbra usa com o seguinte comando:
# vim /opt/zimbra/conf/my.cnf
Passo 7 - Comente a linha chamada bind-address ficando assim #bind-address = localhost
Passo 8 - Salve a alteração e saia do arquivo.
Passo 9 - Agora depois de feita a alteração vamos fazer surtir efeito reinicializando o serviço digitando os seguintes comandos: #zmcontrol stop ; zmcontrol start
Passo 10 - Só para informar que as alterações efetuadas não enfuenciam em nada no funcionamento do zimbra. Outra coisa, é importante notar que o zimbra usa a porta 7306 para conexão com o banco e não a padrão 3306.

Use um cliente de sua preferência, no meu caso eu usei o Mysql Query Browser.

Abraço a todos.

segunda-feira, 8 de junho de 2009

terça-feira, 19 de maio de 2009

ITIL - Information Technology Infrastructure Library

Visão Geral

Começarei agora a falar sobre um assunto muito focado atualmente na área de tecnologia, as boas práticas do ITIL (Information Technology Infrastructure Library). O ITIL foi desenvolvido no final dos anos 80 pela Central Computer and Telecomunications Agency (CCTA), agora OGC, e tinha aproximadamente 40 livros. Na ocasião, o órgão desenhou 10 processos-chave para melhorar operações de empresas, aprimorar os níveis de serviços e cortar custos associados à downtime de rede e trabalhos manuais.

Quando foi apresentada a versão 2.0 do ITIL, entre os anos de 1999 e 2000, o número de livros foi reduzido para sete livros, chegando a 10 entre 2005 e 2006. Entre estes livros estava o livro ITIL para implantação em pequenas e médias empresas (ITIL Small-scale Implementation).

A versão 3.0 será composta por cinco livros que englobam estratégia, design, transição e operação de serviços e melhorias contínuas nos serviços.

Até a versão 2.0 o ITIL não trazia esboços sobre como aplicar os processos porque não existia um conjunto de diretrizes capaz de ser aplicado a múltiplas organizações. Esse conceito, no entanto, deve sofrer alterações na atualização, que deverá incluir temas mais específicos sobre como adequar os processos e melhorar a entrega e o gerenciamento de serviços de TI.

O núcleo do ITIL não muda, porém alguns conceitos foram revistos. Por exemplo, até a versão 2.0 o ITIL focava o alinhamento entre TI e negócios. Na versão 3.0 o foco será a integração entre TI e negócios.

Segundo seus autores, a tendência é que a TI passe a ser vista como Tecnologia de Negócios ao invés de Tecnologia da Informação. TI deverá adicionar valor ao negócio ao invés de apenas suportar os negócios.

A versão 3.0 também introduz o conceito de ciclo de vida do serviço (Service LifeCycle). Em resumo, este conceito aborda o serviço desde a identificação da sua necessidade, a estratégia do mesmo, o seu desenho (projeto), a sua implantação, a sua operação e quando for o caso a sua extinção. Isto se dará em situações em que um serviço prestado deixará de existir devido a uma mudança no negócio. Esta estratégia reforça ainda mais o ciclo de melhoria continua, também conhecido com ciclo de Deming ou ciclo PDCA (Plan, Do, Check, Act), ou seja, planejar, executar, verificar e agir.

Como já foi dito no inicio deste artigo, a nova bibliografia é composta por cinco livros:

  1. Service Strategy
  2. Service Design
  3. Service Transition
  4. Service Operations
  5. Continual Service Improvement

A seguir um resumo dos processos que cada um destes livros aborda no ITIL 3:

  1. Service Strategy - (Estratégia de Serviços): esse livro aborda principalmente as estratégias, políticas e restrições sobre os serviços. Inclui também temas como reação de estratégias, implementação, redes de valor, portfólio de serviços, gerenciamento, gestão financeira e ROI.



  2. Service Design - (Design dos Serviços): a abordagem nesse livro engloba políticas, planejamento e implementação. É baseado nos cinco aspectos principais de design de serviços: disponibilidade, capacidade, continuidade, gerenciamento de nível de serviços e outsourcing. Também estão presentes informações sobre gerenciamento de fornecedores e de segurança da informação.


  3. Service Transition - (Transição dos Serviços): o volume apresenta um novo conceito sobre o sistema de gerenciamento do conhecimento dos serviços. Também inclui abordagem sobre mudanças, riscos e garantia de qualidade. Os processos endereçados são planejamento e suporte, gerenciamento de mudanças, gerenciamento de ativos e configurações, entre outros.


  4. Service Operations - (Operações dos Serviços): operações cotidianas de suporte são o mote principal desse livro. Existe foco principal em gerenciamento de service desk e requisições de serviços, separadamente de gerenciamento de incidentes e de problemas, que também têm espaço.


  5. Continual Service Improvement – (Melhoria Contínua dos Serviços): a ênfase do volume está nas ações “planejar, fazer, checar e agir”, de forma a identificar e atuar em melhorias contínuas dos processos detalhados nos quatro livros anteriores. Melhorias nesses aspectos também levam aos clientes e usuários serviços aprimorados e que atendam às necessidades dos mesmos.

Bom, como não é um assunto novo e consequentemente muito discutido pelo meio tecnológico, irei citar várias fontes de diversos autores que nos auxiliaram a ter uma base completa de como implantar e gerenciar as melhores práticas em sua empresa.

sexta-feira, 15 de maio de 2009

Oracle 11g - Inicializando a Console do Oracle Interprise Manager

Olá pessoal, hoje vou deixar uma dica de como inicializar a console via web do Oracle 11g através dos seguintes passos baixo:

1) Startup db

Os procedimentos abaixo demostram como inicializar uma instância, ou seja, uma base de bados através do seu SID. Se caso você tinha várias instâncias, ou seja, várias bases você deve alterar o parâmetro ORACLE_SID de acordo com o nome da sua instância para incializá-la, repetir o mesmo procedimento abaixo para cada base.

[oracle@server ~]$ ORACLE_SID=oracle; export ORACLE_SID
[oracle@server ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 – Production on Sun Nov 9 22:52:26 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.

SQL> startup;
ORACLE instance started.
Total System Global Area 1389391872 bytes
Fixed Size 1299848 bytes
Variable Size 838863480 bytes
Database Buffers 536870912 bytes
Redo Buffers 12357632 bytes
Database mounted.
Database opened.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

2) listener start

Execute o comando abaixo e aguarde seu término.

[oracle@server ~]$ ORACLE_SID=oracle; export ORACLE_SID
[oracle@server ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.1.0.6.0 – Production on 09-MAI-2009 22:52:00
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Starting /home/oracle/app/oracle/product/11.1.0/db_1/bin/tnslsnr: please wait…
TNSLSNR for Linux: Version 11.1.0.6.0 – Production
System parameter file is /home/oracle/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
Log messages written to /home/oracle/app/oracle/diag/tnslsnr/isc/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.domain.net)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 11.1.0.6.0 – Production
Start Date 09-NOV-2008 22:52:03
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/app/oracle/product/11.1.0/db_1/network/admin/listener.ora
Listener Log File /home/oracle/app/oracle/diag/tnslsnr/isc/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.domain.net)(PORT=1521)))
The listener supports no services
The command completed successfully


3)Oracle Enterprise Manager start

[oracle@server ~]$ ORACLE_SID=oracle; export ORACLE_SID
[oracle@server ~]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0
Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.
https://oracle.domain.net:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ………… started.
——————————————————————
Logs are generated in directory /home/oracle/app/oracle/product/11.1.0/db_1/oracle.domain.net_oracle/sysman/log

4) Teste
browser : https://oracle.domain.net:1158/em/
oracle.domain.net : 172.10.10.10



quarta-feira, 13 de maio de 2009

Instalando o vmware ESXi 3.5 em um disco IDE

Olá pessoal, sei que não é muito comum fazer isso hoje em dia, mas nunca falta oportunidade de ocorrer, como no meu caso, o hardware que tinha disponível para instalar o VMware ESXi 3.5 tinha duas portas SATA 2 e duas IDEs, para não desperdiçar um dos dois hds de 500Gb que tinha para a instalação do sistema, usei um disco IDE apenas para o vmware ficando os outros dois livres.

Mas até ai tudo certo, quando coloquei o cd do vmware esxi, o mesmo inicializou direitinho, só que na hora que abriu a janelinha com as opções de disco para eu escolher, quem estava lá?, é claro só os dois discos SATA, não aparecia o disco IDE para eu selecionar. Então resolvi dar uma pesquisada na internet para ver se alguém já tinha feito essa proeza, rsrsrs.


Por padrão, se o vmware esxi não encontra suporte para os dispositivos na instalação, então a instalação para com uma mensagem: "Unable to find a supported device to write the VMware ESX Server 3i 3.5.0 image to."

Bom, para resolver esse problema podemos editar um script chamado TargetFilter.py, para reconhecer nosso dispositivo IDE como um dispositivo de instalação suportado. Você pode encontrar uma lista de dispositivos que o ESXi pode reconhecer aqui.

Bom, vamos aos passos de instalação para demostrar como resolver esse empasse:

Processo de Instalação

1) Ao inicializar o processo de instalação e o vmware não encontrar seu disco IDE, pressione as teclas ALT+F1 para acessar a console de instalação do ESXi. Será solicitado um login, uso o root. A senha para o usuário root é em branco. O processo abaixo assume que você já tenha um drive IDE instalado que o ESXi possa reconhecer. Você pode usar o comando lspci para exibir uma lista de dispositvos que o ESXi reconheceu e comparar com a lista de dispositivos. Você também pode rodar o comando fdisk -l para ver seu dispositivo IDE listado.

2) Após você ter acessado a console digite o seguinte comando: vi /usr/lib/vmware/installer/Core/TargetFilter.py (note que o caminho e o nome do arquivo são case-sensitive) .

3) Mova o cursos para baixo até encontrar a seção "def IDEFilter(lun)" e faça a seguinte alteração:

return interface.GetInterfaceType() == ScsiInterface.SCSI_IFACE_TYPE_IDE
para
return interface.GetInterfaceType() == ScsiInterface.SCSI_IFACE_TYPE_ISCSI

feita a alteração pressione ESC, depois :wq para salvar e sair.

4) Bom agora que vem o macete, após ter feito a alteração acima digite o comando install, você cairá na tela de instalação anterior (ALT+F2), não se preocupe, pressione as teclas (ALT+F1) novamente e aparecerá a nova tela de instalação com o suporte para seu disco IDE.

Resumindo.
Esse processo funcionou muito bem para mim, no seu caso pode não dar certo, verifique se seu dispositivo IDE é reconhecido pelo ESXi como informado nos procedimentos acima.

Boa SORTE.

segunda-feira, 11 de maio de 2009

Como alterar o tamanho dos blocos dos volumes no VMware ESXI

How do I change the block size ESXi

I just recently needed to change the block size of my ESXi installation so that I could utilize a larger-sized virtual machine. Since the bulk of a virtual machine is stored as a single file, the block-size imposes limitations on how big the machine can be, as follows:


Block
Size / Max VM Size

1 / 256 GB
2 / 512 GB
4 / 1024 GB
8 / 2048 GB

With ESXi you cannot change this during the install, but you can create a new volume afterwards to replace the datastore that is made with installation.

*******************************************************************************
***** CAUTION: following the steps below WILL remove all data in the existing datastore.
*******************************************************************************

First, log into your VMware Infrastructure client. Highlight the virtual host from the left pane (should be the only thing there, since this is a fresh install). Go to the configuration tab, and select "Storage" under the Hardware heading. To the right you will see your datastore, and a column labelled "device." Record the data from this column (mine was vmhba1:0:0:3). You will need this later.

  • 1) At the VMware console (where you see the machine's IP) press Alt - F1 to get to a new console window with some log information.
  • 2) Type "unsupported" (no quotes) and hit enter. You will not see the characters as you type them
  • 3) Enter the "root" password -- you are now at a commandline
  • 4) enter the following command: vmkfstools --createfs vmfs3 --blocksize 8M vmhba1:0:0:3
  • Replace the blocksize parameter with whatever you need (I used 2M, to get virtual machines up to 500ish gigs). Replace the vmhba1:0:0:3 with the name that you recorded earlier. All set!

sexta-feira, 17 de abril de 2009

Como montar um compartilhamento NFS no CENTOS

No cliente

# yum install portmap -y

Execute o rpcinfo -p
# service portmap start

Configurar para carregar na inicialização
chkconfig portmap on

Para montar a unidade nfs na inicialização
# vim /etc/fstab
nfshostname:/dados/drqueue /mnt/drqueue nfs rw,hard,intr 0 0

# mkdir /mnt/drqueue
# mount -t nfs 192.168.2.2:/dados/drqueue /mnt/drqueue



No servidor

# yum install nfs nfslock portmap -y

Configurar para carregar na inicialização
# chkconfig nfs on
# chkconfig nfslock on
# chkconfig portmap on



# vim /etc/exports
/dados/drqueue 192.168.2.0/255.255.255.0(rw,no_root_squash,async)

# vim /etc/hosts.allow
portmap: 192.168.2.0/255.255.255.0

Execute o comando exportfs para ver os mapeamentos
# exportfs




terça-feira, 7 de abril de 2009

Matando conexões de uma base no MSQLServer

Hoje precisei matar algumas conexões ativas em uma base de dados específica então o fiz. Geralmente isto é um processo cansativo, abrir o abrir o enterprise manager e matar cada processo ativo, um por um. Quando você tem uma ou duas conexões ativas é tranquilo, agora quando você tiver 10 conexões pode ser um processo irritante e cansativo. Então para ajudar nesta tarefa árdua aqui vai o script que busca todas as conexões ativas de uma dada base de dados e mata cada conexão.

--Colocar a base de dados em modo single_user

alter
database dbName set single_user with rollback immediate

-- Agora vamos realizar a tarefa de matar as conexões
declare @execSql varchar(1000), @databaseName varchar(100)
-- Set the database name for which to kill the connections
set @databaseName = 'MinhaDatabase'

set @execSql = ''
select @execSql = @execSql + 'kill ' + convert(char(10), spid) + ' '
from master.dbo.sysprocesses
where db_name(dbid) = @databaseName
and
DBID <> 0
and
spid <> @@spid
exec(@execSql)

--Agora vamos repor a base de dados para modo multi_user:

alter database dbName set multi_user with rollback immediate

Criando um script de backup para o SQL Server com data no nome do arquivo da base

Olá pessoal,
aqui vai uma dica de como criar arquivos de backup do sqlserver com a data no nome do arquivo, o que nos facilita muito, pois o sqlserver não nos permite isso usando o gerenciador de backups dele, ele apenas nos permite agendar um dump da base.

Bom o script que falo é um arquivo com instruções sql, onde vamos definir as seguintes variáveis:

  1. Setar nome da database na variável @databaseName
  2. Setar o caminho absoluto da pasta onde vai ser armazenado o backup na variável @backupDirectory
  3. Para testar rode o script pelo Query Analyzer.
Depois de executado o script será criado um arquivo com o seguinte formato: Database-07.04.2009.bak

Para agendar o script para rodar diariamente é só criar um new job e na aba steps, campo comand colar o conteúdo do script e pronto.

Ai vai o script:

-----------------------------------------------------------------
-- Backup database to file
-----------------------------------------------------------------
declare @backupFileName varchar(100), @backupDirectory varchar(100),
@databaseDataFilename varchar(100), @databaseLogFilename varchar(100),
@databaseDataFile varchar(100), @databaseLogFile varchar(100),
@databaseName varchar(100), @execSql varchar(1000)

-- Set the name of the database to backup
set @databaseName = 'MinhaDatabase'
-- Set the path fo the backup directory on the sql server pc
set @backupDirectory = 'caminho_absoluto_para_backup_directory' -- such as 'c:\temp\'

--
-- ATENÇÃO: DAQUI PARA BAIXO NÃO PRECISA MECHER EM NADA
--

-- Create the backup file name based on the backup directory, the database name and today's date
set @backupFileName = @backupDirectory + @databaseName + '-' + replace(convert(varchar, getdate(), 110), '-', '.') + '.bak'

-- Get the data file and its path
select @databaseDataFile = rtrim([Name]),
@databaseDataFilename = rtrim([Filename])
from master.dbo.sysaltfiles as files
inner join
master.dbo.sysfilegroups as groups
on
files.groupID = groups.groupID
where DBID = (
select dbid
from master.dbo.sysdatabases
where [Name] = @databaseName
)

-- Get the log file and its path
select @databaseLogFile = rtrim([Name]),
@databaseLogFilename = rtrim([Filename])
from master.dbo.sysaltfiles as files
where DBID = (
select dbid
from master.dbo.sysdatabases
where [Name] = @databaseName
)
and
groupID = 0

print 'Backing up "' + @databaseName + '" database to "' + @backupFileName + '" with '
print ' data file "' + @databaseDataFile + '" located at "' + @databaseDataFilename + '"'
print ' log file "' + @databaseLogFile + '" located at "' + @databaseLogFilename + '"'

set @execSql = '
backup database [' + @databaseName + ']
to disk = ''' + @backupFileName + '''
with
noformat,
noinit,
name = ''' + @databaseName + ' backup'',
norewind,
nounload,
skip'

exec(@execSql)

segunda-feira, 6 de abril de 2009

NAGIOS - Notificação para grupos de usuarios

Segue abaixo um esquema para notificação de usuários quando algum problema ocorre:


Geralmente temos a necessidade de notificar de forma individualizada, mas o acesso às informações pode ser feita por todos, então criamos da seguinte maneira:

No arquivo contacts foi criado:

define contact{
contact_name Administrador
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email [EMAIL PROTECTED]
}

define contact{
contact_name usuario1
service_notification_commands notify-null
host_notification_commands notify-null
}

define contact{
contact_name usuario2
service_notification_commands notify-null
host_notification_commands notify-null
}

define contact{
contact_name grupo-de-notificao-cpq-1
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email [EMAIL PROTECTED]
}

define contact{
contact_name grupo-de-notificao-cpq-2
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email [EMAIL PROTECTED]
}

No arquivo contactgroups foi criado:

define contactgroup{
contactgroup_name grupo-de-acesso
alias Profissionais que tem acesso
members administrador, usuario1, usuario2
}

define contactgroup{
contactgroup_name grupo-de-notificacao-cpd-1
alias Profissionais que sao notificados
members administrador, grupo-de-notificacao-cpd-1
}

define contactgroup{
contactgroup_name grupo-de-notificacao-cpd-2
alias Profissionais que sao notificados
members administrador, grupo-de-notificacao-cpd-2
}


No arquivo hosts foi criado:

define host{
use default
host_name server-cpd-1
alias servidor Linux CPD 1
address 10.10.10.1
}

define host{
use default
host_name server-cpd-2
alias servidor Linux CPD 2
address 10.10.20.1
}


No arquivo services foi criado:

define service{
use default
host_name server-cpd-1
service_description Porta LAN
check_command check_ifoperstatus!public!1
contact_groups administrador, grupo-de-notificacao-cpd-1, grupo-de-acesso
}

define service{
use default
host_name server-cpd-1
service_description Porta LAN
check_command check_ifoperstatus!public!1
contact_groups administrador, grupo-de-notificacao-cpd-2, grupo-de-acesso
}


O nagios manda mensagem para todos que são contatos do serviço, então na definição do usuário eu simplesmente criei o comando notify-null, o acesso é garantido pois ele faz parte do grupo de acesso, mas não recebe nada porque o comando manda a notificação para o lixo. Quem tem que receber notificação pertence ao grupo de notificação, mas recebem a mensagem pelo e-mail de grupo da empresa, evitando inclusive que o nagios tenha que enviar muitas mensagens, essa tarefa passa para o servidor de correio.


quarta-feira, 1 de abril de 2009

Resolvendo problemas de eco no Asterisk

Eco em sistemas de telefonia, como o ASTERISK, é o fenômeno no qual um assinante ouve o eco da sua própria voz após um curto período de tempo junto com a voz da pessoa do outro lado. Neste tutorial vamos dar algumas dicas de como evitar o eco em circuitos analógicos.

Existem, normalmente, duas fontes de eco nos sistemas de telefonia:

* Eco na rede, que é produzido pela interface entre os dois fios no assinante (um aparelho telefônico, por exemplo) e o sistema de transmissão de quatro fios nos entrocamentos da rede pública.
* Eco acústico, que é causado pelo retorno no nível do dispositivo, tal como o retorno do alto-falante no microfone.

Ambos os tipos podem ocorrer simultaneamente e com efeitos compostos. Embora o eco possa ser gerado dos dois lados da linha, o eco que tipicamente degrada a linha é usualmente gerado lado oposto(no lado remoto). Esta é uma informação muito importante, pois permite a identificação da fonte do eco. Em outras palavras, quem ouve o eco, normalmente está do lado oposto de onde ele foi gerado.
Reduzindo o eco em sistemas com ASTERISK.
Este processo se aplica para as placas analógicas da Digium e os bancos de canais analógicos da Xorcom. Ele não terá o mesmo efeito em placas de 1-FXO, nem em placas com sinalização digital.
A principal razão para a geração de eco é o descasamento de impedância. Impedância é a resistência do circuito aos sinais de corrente alternada, e ela muda com a freqüência. O primeiro passo, para reduzir o eco é casar as impedâncias. No ASTERISK isto é feito em dois passos:
1. Configure o país em (/etc/zaptel.conf coloque loadzone=br) para ajustar a impedância das portas FXO com as linhas da rede pública do seu país.
2. Faça uma sintonia fina do casamento de impedância usando o utilitário “fxotune” que fica dentro do diretório zaptel. Este programa envia um tom para a linha telefônica e espera para ouvir o nível de eco. Ele verifica o eco com diferentes parâmetros até encontrar uma combinação que produza menos eco. Após este processo o nível de eco a ser cancelado será menor.
O fxotune é executado em duas etapas: Na primeira você usa:
fxotune –i
Exemplo:
fxotune –i 0
(Use o digito 0 se você precisa discá-lo para pegar linha externa)
Nesta etapa o sistema detecta o descasamento de impedâncias e salva o arquivo /etc/fxotune.conf
Na segunda etapa você usa:
fxotune –s
Nesta etapa o sistema lê os dados do fxotune.conf e aplica a placa. O fxotune –s tem de ser executado sempre na inicialização da máquina logo depois dos drivers serem carregados. Você pode encontrar mais informações usando man fxotune.
Cancelamento de eco
O restante de eco deve ser cancelado usando o cancelador de eco por software do ASTERISK. Se mesmo após estes procedimentos não for possível cancelar o eco, poderá ser necessário usar uma das placas analógicas, lançadas recentemente, tal como a Digium TDM410, que possue placa canceladora de eco e permite um cancelamento com maior amplitude.
O cancelamento de eco é feito por um código de processamento de sinais que compara a voz digital que é enviada com a voz que é recebida. Quando um padrão é identificado, o processamento de sinais subtrai este padrão do sinal de saída, produzindo um sinal livre de eco. O cancelador de eco por software é ativado no arquivo de configuração Zapata.conf

* echocancel=yes
* echotraining=Yes

Em resumo, não é tão simples se ver livre do eco em sistemas analógicos. Se você tiver sorte sua linha vai estar perfeita e sem eco. Se tiver enfrentando problemas com eco, tente o fxotune e depois ative o cancelador de eco. Se mesmo assim você ainda tiver eco, você pode tentar uma das placas de cancelamento de eco. Cabe lembrar que este procedimento só é válido para linhas analógicas.

Fonte:
Autor: Flavio Eduardo.

Lendo um arquivo passado como argumento e mostrando em C

#include stdio.h
#include conio.h
#include stdlib.h
#include string
#include iostream




using namespace std;


int main(int argc, char *arquivo[])
{
if (argc < 2)
{
printf("Falta o parametro caminho + nome do arquivo!!");
exit(0);
}

char str[255];
FILE *arq;
char *endereco;
endereco = arquivo[1];
printf("Arquivo: %s\n",arquivo[1]);

arq=fopen(endereco,"r");
printf("\n");
if(arq)
{
while(!feof(arq))
{
fgets(str,255,arq);
printf(" %s",str);
}
}

fclose(arq);
printf("\n\n");

system("pause");

return 0;
}

terça-feira, 31 de março de 2009

Copiando conteúdo entre arquivos em C

#include cstdlib
#include iostream
#include stdio.h

int main()
{
char str[255];
FILE *arq=fopen("c:\\arquivo1.txt","r");
FILE *arqnovo=fopen("c:\\arquivo2.txt","w");
if(arq&&arqnovo)
{
while(!feof(arq))
{
fgets(str,255,arq);
fputs(str,arqnovo);
}
}

fclose(arq);
printf("\n\n");
system("PAUSE");
return EXIT_SUCCESS;
}

Ler o conteúdo de um arquivo em C

#include cstdlib
#include iostream
#include stdio.h

int main()
{
char str[255];
FILE *arq;
char endereco[300];
printf("Digite o endereco do arquivo: ");
gets(endereco);
arq=fopen(endereco,"r");
printf("\n");
if(arq)
{
while(!feof(arq))
{
fgets(str,255,arq);
printf(" %s",str);
}
}

fclose(arq);
printf("\n\n");
system("PAUSE");
return EXIT_SUCCESS;
}

sexta-feira, 20 de março de 2009

como ativar o ssh no VMware ESXi

HOWTO: ESXi and SSH

I’ve noticed many of the hits on my blog are related to ESXi. One of the most asked questions is how can I SSH to an ESXi hosts? Looking at my wordpress stats, this is also one of the top searches.

By default this isn’t possible. But there’s a way to get this working, just do the following:
  1. Go to the ESXi console and press alt+F1
  2. Type: unsupported
  3. Enter the root password
  4. At the prompt type “vi /etc/inetd.conf”
  5. Look for the line that starts with “#ssh” (you can search with pressing “/”)
  6. Remove the “#” (press the “x” if the cursor is on the character)
  7. Save “/etc/inetd.conf” by typing “:wq!”
  8. Restart the management service “/sbin/services.sh restart”

Done!



Source: yellow-bricks


Mapeando os Papéis do Desenvolvimento de Software Tradicional para o Scrum

Muitas organizações que tem embarcado na adoção do caminho Ágil, tem que enfrentar o desafio do mapeamento dos papéis do desenvolvimento de software para os três papéis que o Scrum fornece. Os Papéis tradicionais como o Gerente de Produto, Gerente de Projeto, Analista de Negócios, Designer, DBA etc. não mapeiam os papéis definidos pelo Scrum. Em uma série de visões, Mike Cottmeyer tenta efetivamente mapear os papéis para o Scrum.

Mike sugeriu que os papéis relacionados ao 'Scrum Master' e ao 'Scrum Team' são relativamente fáceis de preencher.

O Gerente de Projeto poderá se encaixar no papel de um Scrum Master, entretanto, isso envolve uma mudança de mentalidade. De acordo com ele:

Os Scrum Masters são facilitadores de processos e dão suporte para o time. Os Gerentes de Projeto são normalmente responsáveis por gerenciar o time e garantir que o tempo, custo e o escopo sejam equilibrados.

Os Scrum Masters não tem autoridade sobre o time. Os Scrum Masters atuam mais como serventes do time... O Gerente de Projeto é mais como um chefe.

Do mesmo modo o 'Scrum Team' deve envolver todos que estão envolvidos no levantamento pesado de construção do produto.

O time de desenvolvimento, os caras da base de dados e o QA podem provavelmente ser trabalhados muito bem no papel de Membro do Time. Estas pessoas tem responsabilidade direta pelo design, construção e teste do código.

Uma vez que os papéis acima são mapeados há ainda muitos papéis como Analista de Negócios, Analistas de Sistemas, especialistas em Experiência de Usuários, etc, que precisam ser mapeados para os papéis do Scrum. De acordo com Mike, todos esses papéis poderiam potencialmente deslizar para o papel de um Product Owner.

O Product Owner é o Gerente de Projeto, o Analista de Negócios, o Designer do Sistema, o Arquiteto com Experiência de Usuário e cada grupo de Negócios... todos transformados em um. O papel é deve realmente ser onipotente e onipresente.

No entanto, Mike reconhece que este é um grande papel em si. Então, ele sugeriu que em vez de uma pessoa só preencher todos esses papéis, poderia ser um Time do Product Owner onde muitas pessoas coordenassem juntas. O time poderia incluir

  • Gerente de Produto - Trabalha com os stakeholders, identifica requerimentos e ajusta as prioridades.
  • Gerente de Projeto - Mantém uma visão geral de todos os objetivos. Gerencia recursos, investimentos, dependências externas etc.
  • Analista de Negócio - Responsável por documentar os critérios de aceitação e documentar as conversações em torno da estória de usuário. Principal ponto de contato para o esclarecimento dos requerimentos durante o sprint.
  • Designer - Prepara alguns screenshots, wireframes, etc.

Assim, em vez de trabalhar isoladamente, o Product Owner interage com vários outros papéis e ajuda a trazer seus conhecimentos coletivos e expertise para definir o contexto correto e fornecer coordenação.

Assim, agrupando papéis eficientemente, os papeis tradicionais podem caber nos três papéis sugeridos pelo Scrum. A chave é mapeá-los no lugar correto onde eles adicionariam valor para o time inteiro.


Fonte:
Postado por Vikas Hazrati, traduzido por Flávia Castro de Oliveira em 19 Mar 2009 02:14 PM Postado por Vikas Hazrati, traduzido por Flávia Castro de Oliveira em 19 Mar 2009 02:14 PM