quinta-feira, abril 10, 2008

Windows Server 2003 pedindo senha em compartilhamento...

Verifique as diretivas de segurança.

Iniciar > Executar > GPEDIT.MSC

Navegue em "Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options" e encontre a diretiva "Accounts: Limit local account use of blank passwords to console logon only" (Contas: limite o uso de senhas em branco apenas ao console (algo assim)). Se estiver habilitado (enabled) entao o servidor nao permitirá que o usuário acesse uma pasta do servidor sem se identificar (entrar com nome e senhas em branco). Desabilite isto e provavelmente ira acessar a pasta. Se nao acessar, verifique suas configurações de firewall do Windows (compartilhamento de arquivos) e também se o usuário existe.

quarta-feira, abril 09, 2008

LVM - Gerenciamento de Volumes Lógicos


1. Introdução

A. O que é LVM

LVM - é o acrônimo para Gerenciador de Volumes Logicos (Logical Volume Manager) e foi desenvolvido por Heinz Mauelshagen para o GNU/Linux, suportado pelo kernel a partir da série 2.4.

Com o LVM podemos:

  • controlar tamanhos de partição: é possível redimensionar o tamanho de partições facilmente, simplesmente diminuindo ou aumentando o tamanho de uma partição.
  • adicionar discos à uma partição: por exemplo, suponha que uma partição /home se tornou insuficiente para comportar os dados dos usuários de sua empresa. Com LVM você poderia "adicionar" mais espaço à partição, simplesmente fornecendo mais espaço físico através de um novo disco rígido ou outra nova partição.
  • realizar backups completos (snapshots): um recurso também bastante interessante é realizar o backup completo de uma partição inteira em um arquivo.

Nota: O LVM permite flexibilidade de gerenciamento do espaço do seu sistema, porém não fornece nenhum tipo de redundância - no sentido de aumentar a disponibilidade de seu sistema. Iremos abordar este assunto mais adiante, através de outra tecnologia, denominada RAID.

B. O que é Gerenciador de Volumes Logicos (LVM)?

O LVM adiciona um sistema de discos e partições virtuais ao GNU/Linux para dar ao administrator maior flexibilidade no gerenciamento de espaço de partições, através de: redimensionamento de partições, inclusão exclusão de discos inteiros ou partições físicas, etc...

C. Como funciona?

Por ser um módulo do kernel, o LVM adiciona uma camada adicional entre os periféricos físicos e a sua interface de E/S. Ao contrário dos esquemas de particionamento convencionais, onde discos são divididos em partições de tamanho fixo, o LVM permite ao usuário considerar discos, também conhecidos como Volumes Físicos (PV, Phisical Volume), como um volume de armazenamento de dados, consistindo de extensões de tamanhos iguais.

Isto nos permite concatenar partições ou discos completos ou mesmo múltiplos dispositivos para formar um sistema de armazenamento também conhecido como VG (Volume Group), com sua unidades de alocação também chamadas de Physical Extents (PE).

Um sistema de LVM compõe-se de grupos de volumes físicos, organizados em Grupos de Volumes(VG). Um grupo de volume pode consistir de um ou mais volumes físicos. Pode haver mais de um grupo de volume no sistema. Uma vez criado, o grupo de volume, e não o disco, é a unidade básica de armazenamento de dados (um disco virtual compondo-se de um ou mais discos físicos).

O espaço em disco disponivel é representado por um Grupo de Volume, podendo ser alocado em partições virtuais chamados Volumes Lógicos (LV) de qualquer tamanho, podendo ser utilizado para armazenar arquivos ou mesmo para um dispositivo de troca (swap).

D. Terminologia:

O LVM vem com vários termos que precisam ser entendidos para não haver problemas com os sistemas de arquivos. Veremos agora esta terminologia utilizada pelo LVM. Você deve usar a palavra física com um pouco de cuidado; de qualquer forma, inicialmente ela será vista como sendo um simples disco rígido, ou uma partição. Por exemplo, /dev/hda, /dev/hda2, /dev/sda.

Um PV não é nada mais que um meio físico com alguns dados administrativos adicionados a ele - uma vez que adicione-se estes dados, o LVM irá reconhecê-los como proprietários das Extensões Físicas.

Extensões Físicas são como blocos de um sistema de arquivos realmente grandes, muitas vezes com um tamanho na casa dos megabytes. PEs podem ser atribuídas a um Grupo de Volumes.

Um VG é composto por um determinado número de Extensões Físicas. Deste Grupo de volumes, PEs podem ser atribuídas a um Volume Lógico.

Um Volume Lógico (LV) é o resultado final de todo o trabalho, e é aqui que as informações são armazenadas. Ele é um dispositivo de bloco funcional equivalente a uma partição. É sobre o Volume Lógico que serão criados os sistemas de arquivos.

O formato do sistema de arquivos pode ser de vários tipos: o ext2 padrão, o ext3, ReiserFS, etc. Para o usuário, não há diferença entre uma partição regular e um Volume Lógico.

E. Diagrama de um sistema LVM:

esquemalvm.gif

No caso do nosso esquema acima, temos:

PV1 é uma partição de 500MB PV2 é uma partição de 500MB VG é o grupo de nome VG00 LV1 é uma partição virtual. VGDA é o arquivo responsavel por guardar os metadados.

2. Preparando o sistema para uso do LVM:

Atualmente as distribuições menos populares como Debian e Slackware não possuem em sua instalação suporte a LVM, ou seja, para a grande maioria das distribuições o LVM é aplicavel no ato da instalação do Sistema Operacional utilizando ferramentas de instalação como o Anaconda.

Resumidamente, a implantação do LVM em um sistemas ja instalado, consiste nos seguintes passos:

  1. Preparação do disco-rigido;
  2. Atualização do arquivo /etc/modules.conf
  3. Criação da imagem initrd.

nota: A Distribuição Conectiva a partir da versão 8.0 já disponibilizou a opção de instalação sobre partições LVM, outras distribuições, como por exemplo, Mandrake 8 e Slackware 9.1, ainda não haviam disponibilizado tal opção, as distribuições Red Hat 9, Fedora Core 1 e RedHat Enterprise 3.0 possuem suporte a LVM no ato da instalação.

A. Preparando o disco:

Com o LVM, podemos utilizar parcial ou totalmente um disco rígido. Utilizando sua ferramenta de particionamento preferida (fdisk, cfdisk, parted etc...) crie as partições que serão utilizadas para o LVM, informando o tipo 8e – Correspondente ao código padrão para o Linux LVM.

Como exemplo crie as seguintes partições:

/dev/hda5 – 256MB
/dev/hda6 – 256MB

Não reinicie o sistema ainda.

Nota: Nas distros atuais como Fedora Core 1, RedHat 9, RedHat Enterprise 3.0 AS, não é necessário reiniciar o computador, pois o sistemas de arquivos que iremos trabalhar não necessita que o mesmo seja reiniciar para fixar as alterações, como é o caso de partições tipo NTFS e VFAT.

B. Atualizando o modules.conf:

Em seguida devemos atualizar o arquivo /etc/modules.conf, insira as seguintes linhas em seu modules.conf:

alias block-major-58 lvm-mod alias char-major-109 lvm-mod

Nota: O porquê desta configuração é pouco documentada, informações não-oficiais obtidas em listas de discussão sugerem que este alias é necessário para as ferramentas LVM encontrem o código "major" de dispositivos de bloco LVM - valor 58, conforme o nome block-major-58 - e de dispositivos de caractere LVM - valor 109, conforme o nome char-major-109. Comprove estes números, executando o comando 'ls -l /dev/lvm' quando o LVM estiver em funcionamento.

Nota 2: Nas distribuições, Fedora core 1, RedHat 9, e o Enterprise 3.0 AS, não necessitam dessa configuração.

C. Atualizando seu initrd:

Essa parte é necessária para que o kernel carregue os módulos LVM antes de acessar os dispositivos LVM. Para se criar este arquivo temos duas formas, a mais fácil, que nem sempre funciona em sistemas baseados em Red Hat, é executando o comando:

# lvmcreate_initrd

Com este comando ele automaticamente irá criar e sobrescrever o initrd que esta dentro do diretorio /boot.

A segunda forma é recomendado em sistemas baseados em Red Hat:

# mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r)

Este comando irá sobrescrever seu initrd original por um novo contendo os módulos responsáveis por inicializar o LVM.

Nota: Nas distribuições Fedora core 1, RedHat 9, e o Enterprise 3.0 AS, não mais necessita que seja criado um initrd atualizado.

Atualizando o LILO

Se você é usuário de alguma distribuição baseada em Red Hat, verifique se há algo semelhante a esta opção em seu lilo.conf, necessária para a correta inicialização de seu sistema:

prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32

image=/boot/vmlinuz-2.4.20-8
label=linux
initrd=/boot/initrd-2.4.20-8.img
root=/dev/hda2 # é necessário que esta linha exista em seu lilo.conf
read-only

Feitas as devidas alterações execute o comando lilo para fixar as alterações.

Atualizando o GRUB

Caso utilize o GRUB verifique se o caminho para o initrd esta correto e se seu nome esta correto como no exemplo abaixo:

boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ --useLilo
initrd /initrd-2.4.20-8.img

Feitas as devidas alterações execute o seguinte comando para que os dados seja corretamente gravador: grub-install /dev/hda

Nota: Nas distribuições Fedora core 1, RedHat 9, e o Enterprise 3.0 AS, não mais necessita que seja configurado o arquivos de boot.

D. Conhecendo as ferramentas:

O LVM já é um sistema bem maduro, não temos de nos preocupar com falhas vindas dele, temos apenas de ficar de olhos nas novas versões do seu conjunto de utilitários, agora na versão 1.0.8.

Vamos conhecer alguns dos utilitários que acompanham esta sistema.

pvcreate – Utilizado para inicializar as partições informando ao sistema que a partição esta pronta para ser utilizada em um VG

vgscan – Usado para atualizar o arquivo de metadados.

vgcreate – Utilizado para criar um novo VG usando as partições inicializadas pelo comando pvcreate.

lvcreate – Comando usado para criar partições virtuais conhecidas tambem como LV.

pvmove - Usado para mover dados entre discos ou partições.

lvextend - Utilizado para adicionar mais espaço a um LV.

lvreduce - Usando para reduzir o espaço de uma LV.

vgreduce - Usado para remover uma partição ou disco de um VG existente.

vgextend - Usado para adicionar um disco ou partição em um VG existente.

Estes são os utilitários básicos para a criação de um sistemas LVM funcional, mais à frente vocês irão conhecer outras ferramentas para manutenção de um sistemas de arquivos LVM.

1 - Outras ferramentas

Outras ferramentas que serão de alguma forma relacionadas a criação e manutenção e testes de nosso sistema de arquivos:

fdisk - Usado para particionar o disco e/ou trocar os id's da partição.

cfdisk - Mesma função do fdisk, mas usa uma interface console para auxiliar na criação e manutenção das partições de forma facilitada.

mkfs - Usado para formatar uma partição.

dd - É um verdadeiro canivete suiço, com ele podemos fazer imagem de discos, copiar (rawrite), fazer converção de tabelas etc...

3. Criando os volumes logicos:

A criação é algo bem simples de ser feito desde que todas as recomendações tenham sido seguidas:

A. Inicializando os discos:

Vamos inicializar algumas partições /dev/hda5 e /dev/hda6 que foram criadas anteriormente:

# pvcreate /dev/hda5 /dev/hda6 

Para se verificar se foram inicializados corretamente execute o comando pvdisplay para as duas partições físicas:

# pvdisplay /dev/hda5
pvdisplay -- "/dev/hda5" is a new physical volume of 4.67 GB

B. Criando o Volume Group (VG):

A criação do VG é o mesmo que a criação do disco virtual, onde iremos adicionar os PVs que inicializamos no processo anterior:

# vgcreate vg00 /dev/hda5 /dev/hda6 

Para se verificar se foi criado corretamente utilize vgdisplay:

# vgdisplay       #Uma tela semelhante a esta deve aparecer:

--- Volume group ---
VG Name vg00
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 1
Act PV 1
VG Size 4.66 GB
PE Size 4 MB
Total PE 1193
Alloc PE / Size 0 / 0
Free PE / Size 1193 / 4.66 GB
VG UUID A0rW6L-iJAS-AI1q-oPGy-WQx1-fZ6w-jFoGKK

C. Criando as LVs ou partições virtuais:

A partir de agora você irá criar uma partição virtual que poderá ser formatada e utilizada, também podendo ser redimensionada para mais ou menos:

Vamos inicialmente criar uma pequena partição virtual:

# lvcreate -L 512M -n teste_1 vg00

Vejamos suas opções:

-L Espaço que seá alocado para a partição virtual -n Nome que sera dado a particão virtual vg00 É o nome que foi dado para o nosso disco virtual, podendo ser outro.

Agora vamos formatar nossa partição virtual com suporte a Journal para obtermos uma maior confiabilidade:

# mke2fs -j /dev/vg00/teste_1

Agora vamos testar nossa partição:

Crie um diretorio lvm dentro de /mnt e monte sua partição:

# mkdir /mnt/lvm
# mount /dev/vg00/teste_1 /mnt/lvm

Agora vamos criar um arquivo dentro do diretorio lvm:

# dd if=/dev/zero of=/mnt/lvm/arquivo bs=1k count=4096

Execute um df -h e veja que a partição esta montada e quanto de espaço livre temos na mesma.

D. Redimensionando as partições:

Para redimensionar-mos nossa partição virtual temos que primeiro desmonta-lá, assim evitando danos a nossa partição, para proceder podemos utilizar o utilitário e2fsadm ou utilizar os que vem junto com o pacote de utilitarios do LVM, o lvredure e lvextend.

Os exemplos serão dados com ambos os comandos:

# umount /dev/vg00/teste_1

Agora vamos adicionar mais 500MB a nossa partição:

# e2fsadm -L+500M /dev/vg00/teste_1

ou

# lvextend -L+500 /dev/vg00/teste_1

Agora vamos reduzir nossa partição virtual em 200M, para fazermos isso iremos utilizar os mesmos comandos acima, somente trocando o sinal e o valor:

# e2fsadm -L-200M /dev/vg00/teste_1

ou

# lvreduce -L-200M /dev/vg00/teste_1

Vejamos suas opções:

-L Usado para informar o tamanho: +500 indica adição -500 indica redução do volume, válido para ambos os comandos.

/dev/vg00/teste_1 Partição virtual que irá ter espaço aumentado ou reduzido.

E. Adicionando novos discos a um VG:

O LVM não esta limitado ao disco que foi instalado inicialmente no seu sistema, podemos adicionar novos discos ou partições ao VG:

Para adicionar um novo disco ou parte dele execute:

# vgextend vg00  /dev/hda6

Com este comando iremos adicionar uma nova partição (hda6) ao nosso VG de nome vg00.

F. Removendo um partição ou disco do VG:

O processo de remoção de um disco ou partição é bem simples, normalmente é feito quando necessitamos trocar um dos discos do VG por outros de maior tamanho. Como o LVM trabalha distribuindo os dados dentro do VG, ao retirar uma partição ou disco automaticamente ele irá redistribuir os dados nos discos ou partições ainda disponiveis no VG. Para tanto é necessário que o sistema ainda possua espaço, vamos a um exemplo:

Nosso VG é composto por duas partições /dev/hda5 /dev/hda6, o tamanho de nosso VG é de aproximadamente 512MB ambos os PVs de nosso VG possuem 256 MB, queremos remover o PV /dev/hda5 do nosso grupo para fazer isso temos de desmontar o sistema de arquivos e executar o seguinte comando:

# vgreduce vg00 /dev/hda5
vgreduce -- ERROR: can't reduce volume group "vg00" by used physical volume "/dev/hda5"

Caso tenhamos recebido este erro, devemos primeiro desocupar nosso disco ou partição para que o mesmo seja removido, para tal, utilizaremos o comando pvmove /dev/hda5, os dados entao serao movidos para areas livres nos outros discos.

# vgreduce vg00 /dev/hda5
vgreduce -- doing automatic backup of volume group "vg00"
vgreduce -- volume group "vg00" successfully reduced by physical volume:
vgreduce -- /dev/hda5

Mas se sua saida foi a do exemplo acima é que correu tudo bem, e a partição foi removida com sucesso do vg00.

nota: vgremove é utilizado para remover um VG, portanto não confunda.

G. Removendo um Volume Lógico:

Podemos tambem remover a qualquer hora uma partição virtual para tanto execute o seguinte comando, mas tenha certeza do que está fazendo, pois este processo não permite recuperação de seus dados uma vez realizado:

# lvremove /dev/vg00/teste_1

nota: somente será possível remover um volume lógico, se o mesmo estiver desmontado!

Usando o SSH para conectar em um banco MySQL remoto

Túnel

Hoje precisei conectar direto no banco de dados do meu site, para começar a fazer o processo de incluir tags e URLs mais descritivas para os meus posts. Eu poderia usar um programa em Ruby usando o ActiveRecord para fazer isso, mas iria gerar uma enxurrada de posts novos no feed, e não seria legal. Decidi conversar diretamente com o banco de dados.

O problema é que o hosting não deixa conectar remotamente a não ser que se configure explicitamente os usuários e IPs remotos permitidos, e com IP dinâmico não fica uma coisa muito legal. O interessante é que temos a opção de usar um túnel SSH para fazer o serviço. Para criar o túnel (lembrem-se, eu uso GNU/Linux) é só usar o seguinte comando:

ssh -L 3307:mysql.host.com:3306 user@host.com

Onde 3307 é a porta por onde vou conectar localmente o túnel, host.com é o seu host e user é o usuário que vai conectar no host. Depois de executado esse comando, ele irá conectar no host normalmente como uma sessão SSH, mas criará o túnel. Para conectar no túnel, vamos usar:

mysql -u user -p -P 3307 -h 127.0.0.1 database

Onde user é o usuário do banco de dados, 3307 é a porta local do túnel que criamos e database é o nome do banco de dados. A partir desse momento, estamos conectados com o banco de dados remoto usando a autenticação e conexão do túnel SSH. Fica a dica de como conectar no túnel usando Ruby:

con = DBI.connect("DBI:Mysql:database=banco;host=127.0.0.1;port=3307","user","pass") 


Por http://www.eustaquiorangel.com/posts/usando_o_ssh_para_conectar_em_um_banco_mysql_remoto

sexta-feira, abril 04, 2008

Virtualização com XEN

O que é Virtualização de Servidor ?
É o conceito de dividir “distribuir” recursos de um único servidor em diversas instâncias, emulando vários sistemas operacionais simultaneamente em um único servidor físico. Esse conceito de virtualização surgiu na época dos computadores de grande porte (mainframe) que rodavam várias instâncias de um sistema operacional, cada qual atendendo a um usuário ou finalidade específica.

Vantagens da Virtualização

» Facilidade de administração ;
  • » Consolidação de servidores (redução do numero de servidores físicos) ;
  • » Isolamento de serviços, minimizando danos ;
  • » Total isolação entre as máquinas virtuais ;
  • » Simplificação na migração ;
  • » Rápida instalação das maquinas virtuais ;
  • » Backup das Maquinas Virtuais (ajudam na reprodução de situações) ;
  • » Aplicação portável, flexibilidade com hardware ;
  • » Consolida carga dos servidores ;
  • » Automatiza e consolida testes de softwares e ambientes de desenvolvimento ;

Economia com a Virtualização

» Aquisição ou aluguel de equipamentos ;

» Espaço em Rack ;

» Colocation ;

» Consumo de Energia ;

» Downtime ;

» Administração (Suporte) ;

O que é o XEN ?

XEN é um emulador de máquina virtual, desenvolvido e mantido pela Universidade de Cambridge, capaz de emular a execução de diversos sistemas operacionais com 100 % de suas características em um único servidor, com isolamento e controle total entre as máquinas virtuais.

Características e Recursos do XEN

  • Gerenciamento dinâmico de memória - Controle automático de alocação de memória entre as máquinas virtuais , evitando o uso de swap.

  • Scheduler BVT – Balanceamento de CPU para cada máquina virtual no processador central. o XEN toma decisões de balanceamento de carga otimizando o processamento, se uma máquina virtual estiver ociosa o XEN transfere a carga do processador para uma outra máquina virtual, conforme o peso atribído para cada máquina virtual.

  • Transferência de disco e partições para as máquinas virtuais: com o XEN é possível exportar dispositivos (HD,s partições, etc..) para as máquinas virtuais de forma simples e segura, através dos protocolos de rede padrão (NFS, iSCSI,NBD, etc.)

  • VBD : No XEN é possível transformar espaço livre, partição , LVM e NFS em discos rígido para as máquinas virtuais.

  • Migração de Maquina Virtual para Maquina Real : XEN realização a migração de máquinas virtuais, para um máquina física em tempo real, não havendo a necessidade de parar ou reinicializar sua máquina ou serviço.

  • FuncionalidadePAUSE : Interrompe um máquina virtual e permanece pronto para continuar
    SAVE : Salva o estado da máquina virtual em arquivo que pode ser restaurado do ponto aonde parou ou em outra máquina / servidor.

Como funciona a emulação de sistemas operacionais do XEN ?

O XEN torna o seu Sistema Operacional um hospedeiro de maquinas virtuais, o XEN reserva memória para emular um nova instância do Kernel , para cada maquina virtual criada, esse novo kernel procura pelo init na partição que foi disponibilizada para o novo sistema operacional, como sendo a raiz e inicia-o, este init monta as partições , chama os processos adequados a cada runlevel e uma nova instância (Sistema Operacional) será executado . Seu servidor terá mais de um Sistema Operacional executando paralelamente na mesma máquina, pois um segundo kernel foi instanciado na forma de processo.