Compactados auto-extratores com bash script e tar

Artigo retirado do site Dicas-L da Unicamp

Colabora??o: Marcelo Criscuolo

Recentemente me deparei com o problema de
criar um arquivo compactado que fosse capaz de se
“auto-descompactar” e realizar algumas outras “tarefinhas
burocr?ticas”. Lembrei-me ent?o que o instalador do J2SDK
da Sun para Linux ? um shell script e resolvi descobrir
como ele era feito. A solu??o ? bem elegante e simples de
ser implementada, trata-se de criar um arquivo composto por
um shell script no in?cio e o arquivo compactado (bin?rio)
no final.

Suponhamos que voc? deseja compactar todo o diret?rio
basedados que cont?m scripts SQL e envi?-lo para algu?m
de maneira que seja necess?rio apenas um comando como
./atualizar-base.sh para o arquivo seja descompactado
e a base seja atualizada com base nos arquivos contidos
no diret?rio.

Para come?ar, o velho tar resolve a primeira parte
do problema:

tar cvzf basedados.tar.gz basedados/“

Agora precisamos do script que vai fazer o “trabalho sujo”,
o atualizar-base-codigo.sh:

#!/bin/bash

# extraindo o arquivo
tail -n +XX $0 > basedados.tar.gz # linha IMPORTANTE

# Descompactando o arquivo extra?do
tar xzf basedados.tar.gz

# Arquivo descompactado, hora de rodar os scripts
for i in basedados/*; do
echo “Rodando o script $i”
# Aqui voc? poderia rodar os scripts. Por exemplo,
# se a base da dados fosse Postgres voc? poderia
# fazer: psql -U usuario base -c “\i $i” , para
# rodar todos os scripts do diret?rio
done

exit 0 # outra linha IMPORTANTE

? hora de fazer o nosso trabalho sujo agora:

Vamos contar as linhas do arquivo:

wc -l atualizar-base-codigo.sh“

Preste aten??o ?s linhas marcadas com IMPORTANTE.

Nesse caso o wc retorna 18, re-edite o arquivo e
substitua o XX da primeira linha marcada como importante
por 19 (18+1), salve o arquivo sem adicionar mais nenhuma
linha. Vamos juntar tudo agora:

cat atualizar-base-codigo.sh basedados.tar.gz > atualizar-base.sh“

Pronto! Concatenamos um arquivo texto e um bin?rio!

O tail extrai as linhas finais de um arquivo, mas
quando o n?mero de linhas ? precedido pelo sinal + ele
extrai todo o final do arquivo, daquela linha em diante
(veja man tail), ? esse o papel do -n +19.

No nosso exemplo, o tail vai extrair o final do pr?prio
shell script (a vari?vel $0 ? expandida para o nome
do arquivo atual) a partir da linha 19, que corresponde ao
arquivo basedados.tar.gz contenado a ele anteriormente.

Por o ?ltimo, o > basedados.tar.gz ? respons?vel
por escrever a sa?da do tail num arquivo ao inv?s de
escrever na tela.

O arquivo ? descompactado com o tar na linha seguinte
e o seu conte?do ? processado pelo for.

Finalmente, na segunda linha marcada com IMPORTANTE,
tem-se o exit 0; esse comando serve para dizer ao
bash que pare de interpretar o script antes de atingir
os dados bin?rios.

Um aviso importante: n?o edite mais o arquivo gerado
pelo cat pois se o editor colocar um EOF no final
o seu arquivo compactado ser? corrompido. ? por isso que
se usa o arquivo atualizar-base-codigo.sh para fazer
a edi??o.

Outra coisa legal que d? pra fazer com isso ? gerar
patches auto-aplic?veis. Ao inv?s de concatenar o
arquivo com um compactado voc? concatena com a sa?da do
diff (o patch). Neste caso o exit 0 tamb?m
? essencial, pela mesma raz?o citada anteriormente, mas
agora o arquivo gerado pode ser editado, j? que um EOF
a mais ou a menos n?o faz diferen?a para o patch. ;-)

Fazendo um Check-list nos Servi?os do Sistema

Artigo retirado do site Dicas-L da Unicamp

Configurar servi?os hoje em um sistema Linux, n?o ? mais t?o complicado como antigamente. Muitos servi?os, depois de instalado j? saem funcionando com a sua configura??o padr?o, ou muitos j? vem instalados no sistema. Embora quando pensamos em seguran?a j? ? assumido que n?o devemos colocar um servi?o em produ??o com configura??es padr?es sem que as mesmas sejam testadas pensando nos principios de seguran?a.

Mas o que muitos administradores iniciantes e at? mesmo experientes n?o sabem tirar proveito de ferramentas cl?ssicas para checar se o servi?o est? funcionando corretamente, verificar em qual porta ele est? trabalhando, se ele est? recebendo requisi??es corretamente e at? mesmo, em alguns casos, ver se nenhum invasor fez algo em seu sistema que possa prejudica-lo, para isso mostrarei alguns comandos que podem formar o que costumo chamar de Check-List.

Primeiramente temos que saber a qual porta determinado servi?o est? associado. Podemos ver algumas portas padr?es do sistema no arquivo /etc/services. Exemplo de algumas portas

# cat /etc/services
# cat /etc/services | grep -i ssh
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp

Ap?s termos uma no??o das portas em que os servi?os rodam, podemos utilizar um comando chamado netstat. Esse comando vai nos fornecer algumas informa??es sobre os servi?os de rede do nosso sistema. ? v?lido lembrar que encontramos implementa??es do netstat em outros sistemas operacionais e n?o necess?riamente as op??es e mesmos os recursos s?o implementados da mesma forma.

# netstat -nlt

-n : Op??o para fazer o netstat n?o resolver os IP’s para nomes.
-l : Listar os Sockets que est?o Ouvindo(Listen), ou seja, que est?o prontos para receber uma conex?o.
-t : Listar somente os Sockets no protocolo TCP. Poderiamos utilizar o -u para protocolos UDP.

Com isso podemos ver v?rias informa??es sobre os Sockets que est?o aguardando conex?es. Exemplo:

Proto Recv-Q Send-Q Endere?o Local Endere?o Remoto Estado
tcp 0 0 0.0.0.0:22 0.0.0.0:* OU?A

Proto ? o protocolo que este Socket est? trabalhando. No Endere?o Local vemos que a porta 22 pode responder a qualquer interface de rede no sistema (0.0.0.0:22), no Endre?o Remoto mostra que n?o h? nenhuma conex?o relacionada ? aquela porta e que no Estado ela est? em OU?A, ou seja, aguardando conex?es.

Poderiamos utilzar o netstat com o -a tamb?m, no lugar do -t para vermos todos os Sockets tanto os que est?o ouvindo, que n?o est?o ouvindo e os Estabelecidos, que v?o ser muito importantes. Nos Estabelecidos podemos ver em qual interface o servi?o est? conectado e a qual porta e de onde est? vindo a conex?o.

# netstat -nat
Proto Recv-Q Send-Q Endere?o Local Endere?o Remoto Estado
tcp 0 0 192.168.0.1:32778 200.123.123.123:143 ESTABELECIDA
tcp6 0 0 ::ffff:192.168.0.1:22 ::ffff:192.168.0.8:32796 ESTABELECIDA

Agora que sabemos quais sockets est?o dispon?veis, podemos ver qual processo(servi?o) est? rodando nesse socket com o comando fuser.

# fuser -v 22/tcp
-v: Modo Verbose
USER PID ACCESS COMMAND
22/tcp root 3943 f…. sshd

Com ele podemos ver qual usu?rio est? rodando o processo, o PID que ? o n?mero do processo e o programa que est? rodando que nesse caso ? o sshd. Para cada processo que est? rodando, o sistema cria um diret?rio com PID dele no /proc, onde podemos obter algumas informa??es do processo, um deles ? o arquivo cmdline que mostra o caminho completo do programa, nos mostrando assim que aquele programa ? ele mesmo e n?o um program forjado.

# cat /proc/3943/cmdline
/usr/sbin/sshd

Outra ferramenta que poderiamos utilizar ? a lsof, que vai nos mostrar informa??es parecidas com a do netstat e a fuser, s? que em uma ?nica ferramenta. A lsof mostrar? os Socktes que est?o Ouvindo, que est?o Estabelecidos e entre outros, e nos mostrar? tamb?m o usu?rio, o PID e o programa que est? rodando, ou seja, poderiamos dizer que a lsof ? uma jun??o da netstat e a fuser. Por?m a lsof n?o vem instalada em todas as distro Linux, sendo necess?rio instala-l? via pacotes ou pelo source.

# lsof -i

-i : Listar? todos os processos ou arquivos relacionados a uma interface de rede, se n?o for especificado uma interface de rede, como fizemos ele mostrar? do todas as interfaces.

firefox-b 4652 user 36u IPv4 22723 TCP 192.168.0.1:38138->64.233.161.19:www (ESTABLISHED)
ssh 8342 root 3u IPv4 100376 TCP 192.168.0.1:54751->192.168.0.8:ssh (ESTABLISHED)

Uma coisa que muitos administradores tamb?m esquecem de olhar s?o os Raw Sockets, que s?o os Sockets que n?o dependem de um protocolo espec?fico, permite acesso direto a protocolos de baixo n?vel como ICMP, TCP, UDP, e IP, mais considerados por muitos como como um potencial foco de problemas de seguran?a devido ao fato que poucos administradores verificam as atividades de Raw Sockets de seus sistemas.

Podemos ver se existe algum Raw Socket aberto no nosso sistema utilizando o netstat com uma outra op??o.

# netstat -nlw
-w : Lista os Raw Sockets.

Provavelmente n?o ter? nenhum aberto, ent?o retorna um resposta vazia. Mas devemos ter muito cuidado com os Raw Sockets pois muitas BackDoors mais modernas utilizam o Raw Socket para abrir o seu sistema sem depender de um protocolo. O hping pode ser utilizado como uma BackDoor em seu sistema aproveitando-se do Raw Socket para poder executar comandos remotamente em seu sistema. Veja mais detalhes na documenta??o do hping.

Sa?da de uma respota positiva, utilizando o netstat para listar os Raw Sockets.

Proto Recv-Q Send-Q Endere?o Local Endere?o Remoto Estado
raw 0 0 0.0.0.0:255 0.0.0.0:* 7

E um ?ltimo programa que podemos utilizar ? o nmap que ? um poderoso programa para varreduras de portas ,nesse caso vamos ter a possibilidade de fazer uma an?lise interna ou externa do nosso sistema para vermos quais portas/servi?os est?o dispon?veis. O nmap n?o vem por padr?o nas distribui??es Linux, sendo necess?rio instala-lo. Ent?o de uma outra m?quina podemos fazer o seguinte teste.

Para Portas TCP.

# nmap -sT 192.168.0.1

-sT : Varredura de portas TCP completas.
192.168.0.1 -> Seu IP.

PORT STATE SERVICE
9/tcp open discard
13/tcp open daytime
21/tcp open ftp
22/tcp open ssh

Ou podemos testar localmente.

# nmap -sT localhost

# nmap -sT -p 22 localhost

PORT STATE SERVICE
22/tcp open ssh

Para Portas UDP

# nmap -sU 192.168.0.1

-sT : Varredura de portas TCP completas.
192.168.0.1 -> Seu IP.

PORT STATE SERVICE
9/udp open|filtered discard
53/udp open|filtered domain
111/udp open|filtered rpcbind

Ou podemos testar localmente.

# nmap -sU localhost

# nmap -sU -p 53 localhost

PORT STATE SERVICE
53/udp open|filtered domain

Ou ainda olhando as portas TCP e UDP simultaneamente

# nmap -sU -sT 192.168.0.1

Em alguns casos o uso do Nmap pode ser interessante para fazer o checklist de todas as portas ativas no servidor.

# nmap -sU -sT -F 192.168.0.1

-F: Todas as portas decladas no services

Ou olhar porta a porta at? 65535

# nmap -sU -sT -p- 192.168.0.1

Sendo assim conseguiremos ver todas as portas que est?o dispon?veis em nosso sistema.

Podemos ver tamb?m os banners dos servi?os que est?o rodando. Que para um invasor pode ser um informa??o preciosas.

# nmap -sV 192.168.0.1

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.8.1p1 (protocol 2.0)
25/tcp open smtp Exim smtpd 4.50
111/tcp open rpcbind 2 (rpc #100000)
113/tcp open ident OpenBSD identd
MAC Address: 00:50:BF:63:D0:E7 (Mototech)

O nmap possui muitas op??es, veja o manual dele para ver todas as op??es de uso.
CONCLUS?O.

Com o conhecimentos dessas ferramentas um administrador poder? fazer um bom check-list em seu sistema, e ter? um total dom?nio de todos os servi?os que est?o rodando no sistema.

MRTG - Instala??o e Configura?

Artigo retirado do site Dicas-L da Unicamp.

Colabora??o: Alexandre Takahashi

O MRTG (Multi Router Traffic Grapher) ?, inicialmente,
uma ferramenta desenvolvida para monitorar o tr?fego em
links de rede. Escrito em PERL, utiliza o SNMP para
ler os dados dos roteadores e um programa em C para
criar os gr?ficos, que s?o mostrados em p?ginas HTML.
O MRTG para *nix ? distr?buido em C?digo Fonte, assim,
voc? dever ter um compilador C e o PERL instalado em sua
m?quina, na maioria das distribui??es *nix, ambos j? est?o
dispon?veis na instala??o padr?o, se n?o estiverem, leia
o item Pr?-Requisitos

Pr?-Requisitos *nix
===================

GCC
===

O compilador GCC (GNU C Compiler) esta dispon?vel na instala??o padr?o da maioria
dos sistemas *nix, ? necess?rio para compilar o MRTG.

Para procurar o gcc

whereis gcc

Em distribui??es baseadas em RPM ? possivel procurar pelo comando

rpm -qa | grep gcc

Caso voc? n?o tenha o gcc instalado, fa?a o download em

http://gcc.gnu.org/

Perl
====

Grande parte do MRTG esta escrita em PERL, verifique se voc? tem o Perl
instalado e qual a vers?o

Para procurar o perl

whereis perl

Em distribui??es baseadas em RPM ? possivel procurar pelo comando

rpm -qa | grep perl

Caso o perl n?o esteja instalado fa?a o download em

http://www.perl.com/

Para ver a vers?o do Perl

perl -v

A vers?o m?nima requerida ? a 5.005

gd
==

GD ? uma biblioteca para gerar gr?ficos, no formato PNG

Para procurar o gd

whereis gd

Em distribui??es baseadas em RPM ? possivel procurar pelo comando

rpm -qa | grep gd

Caso o gd n?o esteja instalado, fa?a o download em

http://www.boutell.com/gd/

libpng
======

Requerido pelo gd para gerar arquivos PNG

Para procurar o libpng

whereis libpng

Em distribui??es baseadas em RPM ? possivel procurar pelo comando

rpm -qa | grep libpng

Caso o libpng n?o esteja instalado, fa?a o download em

http://www.libpng.org/pub/png/

zlib
====

Requerido para compactar os gr?ficos criados

Para procurar o zlib

whereis zlib

Em distribui??es baseadas em RPM ? possivel procurar pelo comando

rpm -qa | grep zlib

Caso o libpng n?o esteja instalado, fa?a o download em

http://www.info-zip.org/pub/infozip/zlib/

MRTG
====

N?o esquecendo do principal, baixe o MRTG

http://mrtg.hdl.com/pub/

Compilaca??o/Instala??o
=======================

Para descompactar os arquivos execute o seguinte comando

tar -xvzf < >

Dentro de cada diret?rio , execute os seguintes comandos (Deixe o MRTG por ?ltimo)

./configure

./make

./make install

Isto ir? instalar todos os pacotes e o MRTG.

Configura??o
============

A configura??o ? relativamente simples, n?o h? a necessidade de criar um arquivo de
configura??o manualmente, utilize o comando cfgmaker(usualmente no diretorio /usr/local/mrtg-2/bin), como mostrado abaixo

“`./cfgmaker –global ‘WorkDir: /var/www/mrtg’ –global ‘Options[_]: bits,growright’ –global ‘RunAsDaemon:Yes’ –output /home/usuario/mrtg/mrtg.cfg comunidadesnmp@xxx.xxx.xxx.xxx

WorkDir: /var/www/mrtg

Define o local onde sera gerada a pagina html com os graficos

Options[_]: bits,growright

A op??o bits define que o gr?fico trar? as informa??es em bits e a op??o growright far? com que o
gr?fico caminhe da direita para a esquerda, sendo que o hor?rio atual fique a direita do gr?fico

output /home/usuario/mrtg/mrtg.cfg

Define onde ser? armazenado o arquivo de configuracao (aqui chamado de mrtg.cfg)

RunAsDaemon:Yes

Define que o MRTG rode como daemon(processo), ou seja, o MRTG ficar? carregado e vai buscar dados do
equipamento conforme o parametro interval (–global ‘Interval:10′) se este parametro n?o for
definido, ent?o o intervalo padr?o ser? adotado (5 minutos)

comunidadesnmp

Comunidade snmp do equipamento a ser monitorado (roteador, switch, etc) com permiss?o de leitura

xxx.xxx.xxx.xxx

Endereco IP do equipamento a ser monitorado.

Para mais op??es do cfgmaker consulte

“`./cfgmaker –man

ou

http://mrtg.hdl.com/cfgmaker.html

Executando o MRTG
=================

Para executar o MRTG

/usr/local/mrtg-2/bin/mrtg /home/usuario/mrtg/mrtg.cfg

Simples, n?o?? ;-)

Se a op??o RunAsDaemon:Yes estiver definida, ent?o ele ir? rodar como daemon e os dados ser?o atualizados
automaticamente, conforme o intervalo definido ou a cada 5 minutos.

Considera??es Finais
====================

O MRTG ? uma excelente ferramente de monitoramento, mas n?o se restringe apenas a ativos de rede,
ele pode ser usado para monitorar qualquer equipamento com suporte a SNMP, al?m de poder receber
vari?veis de scripts e em conjunto com outras ferramentas, o limite ? a criatividade de quem o usa ;-).
Existem diversos artigos de utiliza??o do MRTG combinado com outras ferramentas e para outros fins(um deles postado aqui no Dicas-L (www.dicas-l.unicamp.br/dicas-l/20041204.php)
sobre como monitorar performance em um servidor *nix.
O MRTG roda tamb?m na plataforma MS.
Espero que este pequeno tutorial ajude aqueles que ainda n?o conhecem o MRTG.

Criando Tuneis IP entre dois Gateways de Internet utilizando protocolo GRE

Artigo retirado do site Dicas-L da Unicamp.

Colabora??o: Jean Carlos Oliveira Guandalini

Vamos trabalhar com o seguinte ambiente:

Servidor “bart”
===============

IP: 200.200.200.200
Gateway: 200.200.200.199
Rede Local: 192.168.0.0/24
IP Local: 192.168.0.254/24

Servidor “homer”
================

IP: 200.100.100.100
Gateway: 200.100.100.099
Rede Local: 192.168.1.0/24
IP Local: 192.168.1.254/24

Requerimentos:
==============

Voc? deve ter o kernel compilado com o GRE, funcionando como m?dulo:
Na se??o de Networking Options voc? ir? encontrar a op??o: “IP: GRE tunnels over IP”

Networking Options
IP: GRE tunnels over IP

Voc? dever? tamb?m ter o utilit?rio iproute2 instalado:
http://developer.osdl.org/dev/iproute2/

O m?dulo ip_gre deve ser sempre inicializado no boot
da m?quina.

# modprobe ip_gre

Agora iremos configurar o primeiro servidor (”bart”)

# ip tunnel add homer mode gre remote 200.100.100.100 local 200.200.200.200 ttl 255

Foi criado um tunel com o nome de homer(este ser? o nome
de nossa interface) utilizando o protocolo gre definindo
que o ip remoto ? 200.200.200.200(ip do servidor homer)
e o ip local(publico) ? 200.100.100.100 e definindo a
configura??o de ttl do pacote para 255.

# ip link set homer up

Aqui estamos levantando a interface homer

# ip addr 192.168.0.254 dev homer

Configuramos o ip 192.168.0.254 para a interface homer,
pode ver que o ip ? o mesmo de nosso servidor(rede local)

# ip route add 192.168.1.0/24 dev homer

Aqui estamos dizendo que para chegar a rede
192.168.0.254/24 ? utilizando a interface homer(no caso
nosso t?nel).

Devemos configurar tudo isso em nosso servidor (”homer”)

# ip tunnel add bart mode gre remote 200.200.200.200 local 200.100.100.100 ttl 255
# ip link set bart up
# ip addr 192.168.1.254 dev bart
# ip route add 192.168.0.0/24 dev bart

Como voc?s puderam ver fiz a configura??o da maneira
inversa, ou seja, far? com que o homer enchergue a rede
interna de bart.

Para fazer o teste se seu t?nel est? funcionando voc? pode
tentar efetuar um ping no caso de nosso exemplo do servidor
homer para um ip que esteje configurado corretamente na
rede do servidor bart.

ex:

root@homer #: ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=22.9 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=8.50 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=10.8 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=13.0 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=5.09 ms

— 192.168.0.1 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4041ms
rtt min/avg/max/mdev = 5.097/12.097/22.958/6.038 ms

Caso voc? queira retirar um tunel utilize a seguinte sintaxe:

# ip link set nometunel down
# ip tunnel del nometunel

Utilizando em nosso exemplo, se fizermos isso no servidor bart

# ip link set homer down
# ip tunel del homer

Voc? precisa lembrar que a cada boot do sistema essas
informa??es precisam ser novamente executadas, ent?o ?
interessante escrever um script para levantar esses t?neis.

Utilizei como refer?ncia a documenta??o do iproute2:
http://lartc.org/howto/

Jean Carlos - DarkWarrior (http://www.linuxbsd.com.br)

Usando o NetCAT

O NetCat ? um utilit?rio que l? e escreve atrav?s de conex?es de rede usando protocolos TCP e UDP.

Considera??es Iniciais:

Plataforma usada
Debian 3.0 (Woody) / Kernel 2.4.30
NetCat “NC” - 1.20-27

O NetCat pode ser instalado atrav?s da ferramenta Apt-Get no Debian usando o Mirror:

deb http://mirrors.kernel.org/debian/ testing main
deb-src http://mirrors.kernel.org/debian/ testing main

Ap?s adicionar os mirrors em seu /etc/apt/sources.list atualize o bd do Apt e instale o NC com os comandos abaixo:

#apt-get update ; apt-get install netcat

Exemplos de uso do NetCat:

1) Com o NetCat voc? poder? testar se suas configura??es do servidor de SMTP est?o disponibilizando Relay’s adequadamente ou n?o, veja o exemplo abaixo:

#netcat proveedor.internet.es 25
helo holahola
mail from:
rcpt to:
250 Recipient Ok
data
354 Ok Send data ending with .
Subject: prova
X-Mailer: by-hand cutremail X’-D
.

Caso a mensagem com c?digo 354 apare?a isso quer dizer que seu servidor est? possibilitando Relay indevidamente, para finalizar tecle “.” para fechar a conex?o com o servidor.

2) Visualizando e-mails atrav?s do protocol POP
O NetCat ? uma ?tima ferramenta para executar teste de recebimento de e-mail’s sem a necessidade de um software de e-mail cliente, veja o exemplo abaixo:

#netcat seuservidor 110
+OK Bem vindo ao servidor POP3 de MailServer
user sincronicx
+OK password required for user carcoco
pass delpassword
list
1 2451
2 123433
3 323
dele 2
quit
+OK goodbye

Com o exemplo de comando acima conectamos em seuservidor atrav?s da porta 110 POP, e entramos com usu?rio e senha para listar os 3 e-mail que estavam na caixa, logo ap?s com o comando “dele 2″ deletamos o e-mail de n?mero 2 no Inbox.
para finalizar saimos do servidor com o comando “quit”

3) Verificar informa??es sobre o servidor web de um determinando provedor

#netcat www.linux.org 80
get . /

4) Criar um sistema de comunica??o Shell entre m?quina remotas
Para criar um sistema de comunica??o equivalente ao comando wall use o comando na m?quina 1:
#nc -l -p 12345
onde a flag -p ? a porta de comunica??o que abriremos em nossa m?quina 1.

Na m?quina 2 entre com o comando:
#netcat ip-ou-nome-de-maquina1 12345

Com isso ser? aberta um canal de comunica??o atrav?s da porta 12345 no qual voc? poder? usar para mensagens instantaneas ou ainda transfer?ncia de arquivas.

5) Transferir arquivos entre m?quinas:
Digamos que voc? precisa transferir um arquivo entre uma m?quina e outra por?m voc? n?o possui nenhum servi?o client/servidor disponiv?l para transfer?ncia entre as m?quinas, voc? pode usar o NC para transferir estes arquivos exemplo:

Digamos que a m?quina 1 possui o arquivo teste.txt no qual dever? transferir para a m?quina 2, para isso use o comando na m?quina 1:

#netcat -l -p 4000 < teste.txt

Na m?quina 2 entre com o comando:
#netcat maquina1 4000 > teste.txt

Ao final da transfer?ncia tecle CTRL+D para finalizar.

verifique o diret?rio corrente.

Estas foram algumas das muitas fun??es possiveis com o NC, para saber mais sobre o NetCat consulte os Man Pages ou Info.

At? mais,

Customizando o Debian Gnu/Linux para rodar filmes em DVD

Artigo contribuido para o site do dicas-L:

Customizando Gnu/Linux para roda filmes em DVD

Colabora??o: Andr? Jaccon

Todos n?s sabemos que rodar Filmes em DVD no Gnu/Linux, n?o ? uma tarefa t?o simples assim quando queremos que a execu??o do DVD seja perfeita.

Neste tutorial mostraremos como customizar seu Gnu/Linux para tirar 100% de aproveitamento na execu??o de filmes em DVD no sistema do Debian Gnu/Linux.
Considera??es iniciais

* Sistema Operacional: Debian 3.0 ( woody ) / kernel 2.4.29
* M?dulos do kernel: AgpGart
* Aplicativos usados:
o Gnome-VLC 0.8.1-1: Player Multi m?dia para todos formatos de ?udio e video
o WxVLC 0.8.1-1: Frontend para o VLC
o QVLC 0.8.1-1: Frontend para o VLC
o HDparm 5.9-1: Aplicativo para setar a alta performance dos par?metros do disco r?gido
* Bibliotecas compartilhadas: Libdvdcss2 1.2.8-1: Biblioteca para decripita??o de regi?es.

Instalando Aplicativos

Os pacotes necess?rios podem ser instalados e configurados atrav?s da ferramenta Apt do Debian. Relacionamos a seguir os sites para download dos aplicativos necess?rios:

— # As linhas abaixo devem ser adicionadas ao arquivo /etc/apt/sources.list
deb http://ftp.br.debian.org/debian/ testing main
deb-src http://ftp.br.debian.org/debian/ testing main
deb http://security.debian.org/ testing/updates main
deb http://mirrors.kernel.org/debian/ stable main
deb-src http://mirrors.kernel.org/debian/ stable main
deb http://download.videolan.org/pub/videolan/debian woody main
deb-src http://download.videolan.org/pub/videolan/debian woody main
deb http://download.videolan.org/pub/videolan/debian sarge main
deb-src http://download.videolan.org/pub/videolan/debian sarge main
deb http://download.videolan.org/pub/videolan/debian sid main
deb-src http://download.videolan.org/pub/videolan/debian sid main

Depois de adicionados os sites devemos atualizar o banco de dados de pacotes do Apt-Get:

# apt-get update

na sequ?ncia instale os aplicativos com o comando:

# apt-get install gnome-vlc libdvdcss2 wxvlc qvlc hdparm

Considerando neste ponto que os pacotes j? est?o instalados e devidamente configurados, devemos configurar manualmente a biblioteca compartilhada Libxosd, para isso use o comando:

# dpkg -i –force-all /var/cache/apt/archives/libxv*.deb

Com isso os pacotes necess?rios j? estar?o configurados, agora devemos configurar o sistema operacional de forma que possamos tirar 100% de aproveitamento na execu??o do DVD.
Configurando o sistema

Para come?armos as configura??es no sistema ? importante saber se seu disco r?gido e seu DVD-Rom possuem suporte a tecnologia Ultra-DMA. A forma mais f?cil de descobrir ? usando o aplicativo hdparm:

Como super usu?rio, vamos iniciar os teste em nossos dispositivos:

# hdparm -c -d /dev/hda

A sa?da padr?o do comando nosso caso ser?:

/dev/hda:
IO_support=0 (default 16-bit)
using_dma=0 (off)

Depois use:

# hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: 158 MB in 3.03 seconds = 52.15 MB/sec

Podemos verificar de forma clara que o suporte a U-DMA e tamb?m o acesso ao disco em 32 bits est?o desativados, a velocidade de leitura do disco ? de 52.12 MB/sec.

Para melhorarar este aspecto devemos ativar o suporte a U-DMA e ativar o acesso em 32bits.

# hdparm -c 1 -d 1 /dev/hda

Teste novamente com o comando hdparm e verifique as altera??es:

# hdparm -c -d /dev/hda
/dev/hda:
IO_support=0 (default 32-bit)
using_dma=0 (on )

Placas m?es mais antigas como por exemplo para modelos at? Intel Pentium 150 Mhz e fam?lia 486/586 n?o possibilitam a ativa??o do U-DMA, por?m quase todas possuem acesso a 32bits.

Adicione o par?metro

hdparm -c 1 -d 1 /dev/hda ,

ao arquivo /etc/init.d/bootmisc.sh na pen?ltima linha existente:

hdparm -c 1 -d 1 /dev/hda
: exit 0

Salve o arquivo e iremos para o pr?ximo passo:
Ativando m?dulo AGP no Kernel

Na distribui??o Debian Gnu/Linux a forma mais f?cil de manipular m?dulos do kernel ? com o aplicativos Modconf:

Para isso entre com o comando modconf procurando a sess?o kernel/drivers/char/agp e habilite a op??o agpgart selecionando com o cursor e teclando “Enter” para ativar e depois selecione “Exit” duas vezes para sair .
Usando o VLC

O VLC ? muito simples de ser usado, por?m alguma vezes alguns DVD’s com suporte a Dolby 5.1 geram problemas com a sa?da de som na execu??o do filme, para contornar este problema use o menu de ?udio para selecionar a op??o Stereo.
Considera??es finais

Para verificar quais os modelos de placas que possuem suporte a Dolby 5.1 verifique no site:

http://www.linuxhardware.org/

Ger?nciamento avan?ado de discos com LVM.

Este artigo foi originalmente postado no site Dicas-L da Universiade Unicamp.

Colabora??o: Rodrigo Klein Santos

Infelizmente o assunto ? bastante extenso, mas ao decorrer do tutorial
vou sempre dar exemplos para tornar a leitura
bastante did?tica e clara.

Vamos falar sobre uma ferramenta bastante difundida, o LVM, mas que as
vezes por falta de informa??o
acaba deixando de ser usada.

O LVM (Logical Volume Manager) ? um “Ger?nciador de Volumes L?gicos”,
bastante flexivel, sua implementa??o no Linux
segue os mesmos padr?es (comandos) do HP-UX, ent?o este tutorial
servir? tamb?m para o HP-UX, visto a similaridade
dos comandos.

Oque muda no HP-UX, ? que pra saber quais s?o os discos usa o comando

# /usr/sbin/ioscan -fC disk

N?o pense que voc? n?o precisaria do LVM, por saber usar o “parted”,
s?o coisas distintas, o LVM vai bem mais al?m
do que simplesmente aumentar uma parti??o…

Quando come?amos a instala??o de um novo servidor, geralmente j? temos
em mente qual ser? a sua aplica??o,
a partir dessas informa??es, definimos quantos filesystems teremos,
qual vai ser o tamanho deles, quantos
discos etc…

Mas como nem tudo ? perfeito, esse servidor pode ter depois um trafego
maior do que o esperado, um numero de
usuarios maior do que planejamos, enfim, s?o varias possibilidades que
podem definitivamente te dar algum trabalho extra,
de ter que aumentar uma parti??o, adcionar mais um disco, mas como
fazer isso da melhor maneira possivel e sem traumas ?

A resposta est? no LVM…

O objetivo deste tutorial ? tornar mais facil o uso do LVM por
usu?rios de todos os niveis, visto que o LVM
vem se tornando um importante recurso na administra??o de servidores.

Antes de iniciar a parte pr?tica, vamos entender alguns conceitos do LVM…

PV = Phisical Volume : O disco em si, a parti??o fisica do disco.

PE = Phisical Extends : Extens?es fisicas, ou seja, pequenos peda?os
de um VG, um VG ? dividido em varios PEs

VG = Volume Group : Como o nome j? diz, grupo de volumes.
Um VG ? responsavel por agrupar um ou mais
dicos/Parti??es (PV - Volumes fisicos).

LV = Logical Volume : ? o volume l?gico, ou seja, ? uma parti??o
(l?gica) de um VG (Volume f?sico).

Algumas observa??es importantes…

- Para alterar um LVOL, voc? deve desmonta-lo antes.
- NUNCA deixe de fazer backup (fa?a dois, cuidado nunca ? demais)
antes de alterar uma configura??o de LVM.
- Voc? pode ter mais de um VG em um mesmo sistema (VG01, VG02, VG03),
cada qual com um ou mais discos…
- N?o misture discos SCSI/SATA/IDE em um mesmo VG, isso afeta a
performance visto que eles tem velocidades diferentes,
se voc? estiver nesta situa??o, fa?a VGs distintos para cada tipo.
- NUNCA deixe de fazer backup (por via das d?vidas estou escrecendo
novamente esta observa??o!).
- N?o tenha medo de usar LVM, ele j? ? usado a bastante em *nix e
bastante seguro, voc? s? tem a ganhar com sua utiliza??o.

No exemplo abaixo usaremos um disco de 20GB para ilustrar…

Vamos criar varias parti?oes no mesmo disco para melhor ilustrar o uso
de LVM, lembramos que no caso de v?rios discos
voc? criaria uma parti??o por disco.

Criamos 4 parti??es no /dev/hdd

Saida do FDISK

Disk /dev/hdd: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes

Dispositivo Boot Start End Blocks Id System
/dev/hdd1 1 9689 4883224+ 83 Linux
/dev/hdd2 9690 19378 4883256 83 Linux
/dev/hdd3 19379 29067 4883256 83 Linux
/dev/hdd4 29068 38756 4883256 83 Linux

Notem que elas est?o com o “tipo” Linux (default do fdisk na hora d
cria??o), prontas para receber o filesystem (ext2, ext3, reiserfs etc),
mas n?o pra receberem LVM, precisamos alterar isso..

[root@server root]# fdisk /dev/hdd

O n?mero de cilindros para este disco est? configurado para 38869.
N?o existe nada de errado, mas isto ? maior que 1024,
e pode em certas configura??es causar problemas com:
1) programas que executam em tempo de inicializa??o (vers?es velhas do LILO)
2) inicializa??o e programas de particionamento de outros OSs
(p.ex., DOS FDISK, OS/2 FDISK)

Comando (m para ajuda): p

Disk /dev/hdd: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes

Dispositivo Boot Start End Blocks Id System
/dev/hdd1 1 9689 4883224+ 83 Linux
/dev/hdd2 9690 19378 4883256 83 Linux
/dev/hdd3 19379 29067 4883256 83 Linux
/dev/hdd4 29068 38756 4883256 83 Linux

Comando (m para ajuda): t
N?mero da parti??o (1-4): 1
C?digo hexadecimal (digite L para listar os c?digos): 8e
O tipo da parti??o 1 foi alterado para 8e (Linux LVM)

Comando (m para ajuda): t
N?mero da parti??o (1-4): 2
C?digo hexadecimal (digite L para listar os c?digos): 8e
O tipo da parti??o 2 foi alterado para 8e (Linux LVM)

Comando (m para ajuda): t
N?mero da parti??o (1-4): 3
C?digo hexadecimal (digite L para listar os c?digos): 8e
O tipo da parti??o 3 foi alterado para 8e (Linux LVM)

Comando (m para ajuda): t
N?mero da parti??o (1-4): 4
C?digo hexadecimal (digite L para listar os c?digos): 8e
O tipo da parti??o 4 foi alterado para 8e (Linux LVM)

Comando (m para ajuda): p

Disk /dev/hdd: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes

Dispositivo Boot Start End Blocks Id System
/dev/hdd1 1 9689 4883224+ 8e Linux LVM
/dev/hdd2 9690 19378 4883256 8e Linux LVM
/dev/hdd3 19379 29067 4883256 8e Linux LVM
/dev/hdd4 29068 38756 4883256 8e Linux LVM

Comando (m para ajuda): w
A tabela de parti??es foi alterada!

Chamando ioctl() para reler tabela de parti??es.
Sincronizando discos.
[root@server root]#

Notem que alteramos o tipo da parti??o para “Linux LVM”. *Acima voc?
pode notar como isso foi feito no fdisk, para maiores informa??es digite
‘h’ no fdisk ou consulte o manual.

Agora vamos dizer ao LVM oque (quais PVs) temos disponivel pra ele.

Criando os PVs.

[root@server root]# pvcreate /dev/hdd1
No physical volume label read from /dev/hdd1
Physical volume “/dev/hdd1″ successfully created
[root@server root]# pvcreate /dev/hdd2
No physical volume label read from /dev/hdd2
Physical volume “/dev/hdd2″ successfully created
[root@server root]# pvcreate /dev/hdd3
No physical volume label read from /dev/hdd3
Physical volume “/dev/hdd3″ successfully created
[root@server root]# pvcreate /dev/hdd4
No physical volume label read from /dev/hdd4
Physical volume “/dev/hdd4″ successfully created
[root@server root]#

Pronto, j? mostramos para o LVM que ele tem 4 PVs disponiveis…
Mas como sei se ele sabe disso ???

Use o comando.. #pvdisplay

[root@server root]# pvdisplay
— NEW Physical volume —
PV Name /dev/hdd1
VG Name
PV Size 4,66 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID RiWHqR-gyYe-jlIQ-pjku-cdI8-cQ8M-Lkj2Y4

— NEW Physical volume —
PV Name /dev/hdd2
VG Name
PV Size 4,66 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID oEcEui-mhig-RF06-fBd5-opAK-1Psf-bV1FLp

— NEW Physical volume —
PV Name /dev/hdd3
VG Name
PV Size 4,66 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID SwPpNo-Q1NR-OYPU-Tkah-y3ps-GsRs-3W4pSG

— NEW Physical volume —
PV Name /dev/hdd4
VG Name
PV Size 4,66 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0

Criamos 4 PVs (Phisical Volume) em um disco… *Vale lembrar que esses
PVs podem (e ? o comum) estarem em discos separados, estamos fazendo em
um mesmo disco por n?o poder utilizar mais que um disco aqui (o servidor
? de produ??o!). ;-)

Vamos criar 2 VGs… cada um com 2 PVs, usando o comando #vgcreate

[root@server root]# vgcreate VG01 /dev/hdd1 /dev/hdd2
Volume group “VG01″ successfully created
[root@server root]# vgcreate VG02 /dev/hdd3 /dev/hdd4
Volume group “VG02″ successfully created
[root@server root]#

Com o comando #vgcreate , criei 2 VGs, com o nome de VG01 e VG02 *
O nome pode ser qualquer um, eu fa?o com VG01 e VG02, por ficar
mais facil de identificar mas voc? pode criar por exemplo com nome
‘bancodedados’,'email’,'www’ e por ai vai…

Vamos verificar se os VGs foram criados com o comando #vgdisplay.

[root@server root]# vgdisplay
— Volume group —
VG Name VG02
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 0
Open LV 0
Max PV 255
Cur PV 2
Act PV 2
VG Size 9,31 GB
PE Size 4,00 MB
Total PE 2384
Alloc PE / Size 0 / 0
Free PE / Size 2384 / 9,31 GB
VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN

— Volume group —
VG Name VG01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 0
Open LV 0
Max PV 255
Cur PV 2
Act PV 2
VG Size 9,31 GB
PE Size 4,00 MB
Total PE 2384
Alloc PE / Size 0 / 0
Free PE / Size 2384 / 9,31 GB
VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh

Podemos ver que realmente criamos 2 VG, cada um com 2 PV…

Vamos agora explicar algumas linhas (as mais importantes) da saida do
comando #vgdisplay

Nome do VG:
VG Name VG02

Acesso:
VG Access read/write

Status:
VG Status resizable

Numero maximo de LVs (Logical Volume) :
MAX LV 255

Numero de LVs no VG :
Cur LV 0

Numero de LVs montados :
Open LV 0

Numero maximo de PVs no VG :
Max PV 255

Numero atual de PVs no VG :
Cur PV 2

Tamanho do VG em GB/MB :
VG Size 9,31 GB

Tamanho de cada PE no VG (padr?o 4MB) :
PE Size 4,00 MB

Quantidade de PEs no VG. (multiplique este numero por 4 para saber o
tamanho do VG) :
Total PE 2384

Numero de PEs alocados :
Alloc PE / Size 0 / 0

Numero de PEs livres :
Free PE / Size 2384 / 9,31 GB

Acima explicamos a saida do #vgdisplay, atentem bastante para os valores
em PE, que geralmente s?o os mais importantes.

Agora que j? temos os VGs, temos que criar os LVs (LVOL), vamos utilizar
o comando #lvcreate.

[root@server root]# lvcreate -l 1000 -n LV01 VG01
Logical volume “LV01″ created

Para verificar oque voc? fez, use o comando #lvdisplay
Explicando o comando…

lvcreate -l -n criar o LV>

Dica : Voc? tamb?m pode usar o L (Mai?sculo) para determinar o tamanho
em MB, para maiores informa??es #man lvcreate .

[root@server root]# lvdisplay
— Logical volume —
LV Name /dev/VG01/LV01
VG Name VG01
LV UUID rQw1cG-jppl-TSJj-1wVw-8kud-oE5L-Jr1c46
LV Write Access read/write
LV Status available
# open 0
LV Size 3,91 GB
Current LE 1000
Segments 1
Allocation next free (default)
Read ahead sectors 0
Block device 253:0

Criamos um LV com 3.91GB, mas como se eu n?o informei o tamanho ?
Informamos sim o tamanho, mas em PE, e vamos lembrar que cada PE equivale
a 4MB…

Logo 1000 x 4 = 4gb , que em miudos deu 3.91GB.

S? a titulo de curiosidade, vou novamente executar o comando
vgdisplay, para ver oque mudou…

[root@server root]# vgdisplay VG01
— Volume group —
VG Name VG01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 1
Open LV 0
Max PV 255
Cur PV 2
Act PV 2
VG Size 9,31 GB
PE Size 4,00 MB
Total PE 2384
Alloc PE / Size 1000 / 3,91 GB
Free PE / Size 1384 / 5,41 GB
VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh

Notem as linhas:

Cur LV 1

Alloc PE / Size 1000 / 3,91 GB
Free PE / Size 1384 / 5,41 GB

Dispensa explica??es, visto que j? falamos sobre o assunto um pouco
acima… Dica : Use o comando #vgdisplay com a op??o ‘-v’ para ter
maiores informa??es sobre o VG.

J? criamos um VG, um LV mas ainda n?o estamos utilizando eles. Agora
basta formatar o mesmo com o filesystem desejado e come?ar a utilizar.

Por exemplo, vamos formatar ele com ext2.

Vamos formatar onde ? /dev/hdd1, /dev/hdd2 ??? N?o..! Lembra do comando
lvdisplay, l? temos o local que devemos usar agora, que nada mais ? do
que uma parti??o (l?gica) do LVM.

Vamos formatar este com o sistema de arquivos ext2.

Ele est? em /dev//

[root@server root]# mke2fs /dev/VG01/LV01
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
768544 inodes, 1536000 blocks
76800 blocks (5.00%) reserved for the super user
First data block=0
47 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Writing superblocks and filesystem accounting information:
done

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

Agora vamos montar o sistema de arquivos….

[root@server root]# mkdir /LVM1

[root@server root]# mount /dev/VG01/LV01 /LVM1

[root@server root]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/hda2 28G 16G 10G 62% /
/dev/hda1 145M 5,9M 132M 5% /boot
none 507M 0 507M 0% /dev/shm
/dev/mapper/VG01-LV01
3,9G 33M 3,7G 1% /LVM1

Pronto, o seu LVM est? pronto pra usar… Mas ainda n?o conseguimos
ver a principal utilidade do LVM com os exemplos acima.. A principal
utilidade do LVM ? que voc? pode aumentar ou diminuir seu LV…

Como exemplo vamos aumentar o nosso primeiro LV.

Ele tem 3.9GB

Usaremos o comando #lvextend

[root@server root]# umount /LVM1

[root@server root]# lvextend -l+500 /dev/VG01/LV01
Extending logical volume LV01 to 5,86 GB
Logical volume LV01 successfully resized

[root@server root]# mount /dev/VG01/LV01 /LVM1/
[root@server root]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/hda2 28G 16G 10G 62% /
/dev/hda1 145M 5,9M 132M 5% /boot
none 507M 0 507M 0% /dev/shm
/dev/mapper/VG01-LV01
5,8G 20K 5,5G 1% /LVM1

Aumentamos o nosso LV01 em mais 500 PEs, totalizando agora 5,86GB (antes 3,9GB).
Mas n?o aumentamos ainda o sistema de arquivos nos novos PEs..

Para isso usaremos o #resize2fs.

Desmonte o seu LV antes.

[root@server root]# umount /LVM1

[root@server root]# resize2fs /dev/VG01/LV01
resize2fs 1.35 (28-Feb-2004)
The filesystem is already 1536000 blocks long. Nothing to do!

Nota.. Para sistemas de arquivos reiserfs, utilize o comando #resize_reiserfs

Pronto, agora j? aumentamos um determinado LV, mas e como reduzi-lo ???

Essa op??o tamb?m ? bastante comum, visto que as vezes podemos ter
necessidade de mais espa?o em disco e n?o temos a op??o de comprar ou
colocar mais um disco, oque podemos fazer ? diminuir um determinado LV
para poder alocar mais PEs em outro LV. Vale lembrar que eles devem
estar no mesmo VG.

Utilizaremos o comando #lvreduce.

*Neste caso, fa?a backup, pois voc? VAI perder seus dados.. O Backup
? importante tanto pra aumentar o LV quanto para diminuir, mas no
caso de aumentar, voc? s? perde dados se der algum problema ‘anormal’
(ex: queda de energia durante o processo), mas mesmo assim ? bastante
importante fazer backup, nunca se sabe !

[root@server root]# umount /LVM1/
[root@server root]# lvreduce -l-800 /dev/VG01/LV01
WARNING: Reducing active logical volume to 2,73 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LV01? [y/n]: y
Logical volume LV01 successfully resized

[root@server root]# mke2fs /dev/VG01/LV01
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
359040 inodes, 716800 blocks
35840 blocks (5.00%) reserved for the super user
First data block=0
22 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Writing superblocks and filesystem accounting information:
done

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

[root@server root]# mount /dev/VG01/LV01 /LVM1/
[root@server root]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/hda2 28G 16G 10G 62% /
/dev/hda1 145M 5,9M 132M 5% /boot
none 507M 0 507M 0% /dev/shm

/dev/mapper/VG01-LV01
2,7G 20K 2,6G 1% /LVM1

Utilizamos o #lvreduce para diminuir o tamanho de um LV.

Mas existem casos tamb?m que temos que aumentar o tamano de um VG, e
como fariamos ?
Como temos 4 PVs, vamos tirar um do VG02 e colocar no VG01.

Vamos criar um segundo LV (LV02) no VG01 para preencher todo o espa?o
do VG01 (para ilustrar um caso real), para que quando
adcionar o novo PV, ele aumente o espa?o em PE que ? de 0 (zero).

*Relembrando - lvcreate -l -n

[root@server root]# lvcreate -l 1684 -n LV02 VG01
Logical volume “LV02″ created

[root@server root]# mkfs.ext2 /dev/VG01/LV02
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
863264 inodes, 1724416 blocks
86220 blocks (5.00%) reserved for the super user
First data block=0
53 block groups
32768 blocks per group, 32768 fragments per group
16288 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Writing superblocks and filesystem accounting information:
done

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

[root@server root]# vgdisplay VG01
— Volume group —
VG Name VG01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 2
Open LV 1
Max PV 255
Cur PV 2
Act PV 2
VG Size 9,31 GB
PE Size 4,00 MB
Total PE 2384
Alloc PE / Size 2384 / 9,31 GB
Free PE / Size 0 / 0
VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh

Podemos notar que agora o VG01 n?o tem mais nenhum PE livre.
Free PE / Size 0 / 0

Abaixo vamos conferir o resultado de um #df e do comando vgdisplay,
agora com os dois
LVs

[root@server root]# mkdir /LVM2
[root@server root]# mount /dev/VG01/LV02 /LVM2

[root@server root]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/hda2 28G 16G 10G 62% /
/dev/hda1 145M 5,9M 132M 5% /boot
none 507M 0 507M 0% /dev/shm
/dev/mapper/VG01-LV01
2,7G 20K 2,6G 1% /LVM1
/dev/mapper/VG01-LV02
6,5G 20K 6,2G 1% /LVM2

Podemos notar agora que o nosso VG est? com todos os seus PEs alocados, mas
temos a situa??o que preciso aumentar a parti??o LV01, como fa?o ?

[root@server root]# vgdisplay -v VG01
Using volume group(s) on command line
Finding volume group “VG01″
— Volume group —
VG Name VG01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 2
Open LV 2
Max PV 255
Cur PV 2
Act PV 2
VG Size 9,31 GB
PE Size 4,00 MB
Total PE 2384
Alloc PE / Size 2384 / 9,31 GB
Free PE / Size 0 / 0
VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh

— Logical volume —
LV Name /dev/VG01/LV01
VG Name VG01
LV UUID rQw1cG-jppl-TSJj-1wVw-8kud-oE5L-Jr1c46
LV Write Access read/write
LV Status available
# open 1
LV Size 2,73 GB
Current LE 700
Segments 1
Allocation next free (default)
Read ahead sectors 0
Block device 253:0

— Logical volume —
LV Name /dev/VG01/LV02
VG Name VG01
LV UUID SXgnqF-GZrH-dEax-LKno-4y44-SRp3-Q9rFU4
LV Write Access read/write
LV Status available
# open 1
LV Size 6,58 GB
Current LE 1684
Segments 2
Allocation next free (default)
Read ahead sectors 0
Block device 253:1

— Physical volumes —
PV Name /dev/hdd1
PV UUID RiWHqR-gyYe-jlIQ-pjku-cdI8-cQ8M-Lkj2Y4
PV Status allocatable
Total PE / Free PE 1192 / 0

PV Name /dev/hdd2
PV UUID oEcEui-mhig-RF06-fBd5-opAK-1Psf-bV1FLp
PV Status allocatable
Total PE / Free PE 1192 / 0

N?o tenho mais discos, apenas tenho PV sobrando no VG02, por isso vou
tirar ele de l? e colocar no VG01 para depois aumentar o espa?o daquela
parti??o.

Utilizaremos o comando #vgreduce.

[root@server root]# vgreduce VG02 /dev/hdd3
Removed “/dev/hdd3″ from volume group “VG02″

[root@server root]# vgdisplay -v VG02
Using volume group(s) on command line
Finding volume group “VG02″
— Volume group —
VG Name VG02
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 0
Open LV 0
Max PV 255
Cur PV 1
Act PV 1
VG Size 4,66 GB
PE Size 4,00 MB
Total PE 1192
Alloc PE / Size 0 / 0
Free PE / Size 1192 / 4,66 GB
VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN

— Physical volumes —
PV Name /dev/hdd4
PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0
PV Status allocatable
Total PE / Free PE 1192 / 1192

Notamos que o PV /dev/hdd3 n?o est? mais no VG02.

Agora vamos adciona-lo ao nosso VG01 que est? necessitando de espa?o.

[root@server root]# vgextend VG01 /dev/hdd3
Volume group “VG01″ successfully extended

Agora vamos verificar que o nosso VG01 tem mais PEs livres (n?o tinha,
estava com 0, lembra ?), devido a nossa a??o de adcionar mais um PV
neste VG.

Comando #vgdisplay

[root@server root]# vgdisplay VG01
— Volume group —
VG Name VG01
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 2
Open LV 2
Max PV 255
Cur PV 3
Act PV 3
VG Size 13,96 GB
PE Size 4,00 MB
Total PE 3575
Alloc PE / Size 2384 / 9,31 GB
Free PE / Size 1191 / 4,65 GB
VG UUID B0o0rf-zvO1-uYT0-GW9L-kOez-H37z-0RzHIh

Agora o nosso VG01 tem mais 1191 PEs disponiveis, e vou adcionar ele ao LV01

Abaixo a sequencia de comandos para verificar e para adcionar.

[root@server root]# lvextend -l+1191 /dev/VG01/LV01
Extending logical volume LV01 to 7,39 GB
Logical volume LV01 successfully resized

[root@server root]# resize2fs /dev/VG01/LV01
resize2fs 1.35 (28-Feb-2004)
Please run ‘e2fsck -f /dev/VG01/LV01′ first.

[root@server root]# e2fsck -f /dev/VG01/LV01
e2fsck 1.35 (28-Feb-2004)
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/VG01/LV01: 11/359040 files (0.0% non-contiguous), 11281/716800 blocks

[root@server root]# resize2fs /dev/VG01/LV01
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/VG01/LV01 to 1936384 (4k) blocks.
The filesystem on /dev/VG01/LV01 is now 1936384 blocks long.

[root@server root]# mount /dev/VG01/LV01 /LVM1
[root@server root]# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/hda2 28G 16G 10G 62% /
/dev/hda1 145M 5,9M 132M 5% /boot
none 507M 0 507M 0% /dev/shm
/dev/mapper/VG01-LV02
6,5G 20K 6,2G 1% /LVM2
/dev/mapper/VG01-LV01
7,3G 20K 7,0G 1% /LVM1

Notem que a nossa parti??o LVM1 (LV01) j? est? redimensionada.

Abaixo a titulo did?tico, vou apagar o VG02, j? que n?o o utilizamos,
criamos ele
apenas para fins did?ticos, e vamos apaga-lo para demonstrar mais
alguns comandos
do pacote LVM

Vou criar um LV no VG02 apenas para demonstrar como deleta-lo.

[root@server root]# lvcreate -l1000 -n LV03 VG02
Logical volume “LV03″ created

[root@server root]# vgdisplay -v VG02
Using volume group(s) on command line
Finding volume group “VG02″
— Volume group —
VG Name VG02
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 1
Open LV 0
Max PV 255
Cur PV 1
Act PV 1
VG Size 4,66 GB
PE Size 4,00 MB
Total PE 1192
Alloc PE / Size 1000 / 3,91 GB
Free PE / Size 192 / 768,00 MB
VG UUID iWiIv6-L0FT-K0gV-JzJh-a8l5-1ouZ-H4r3yN

— Logical volume —
LV Name /dev/VG02/LV03
VG Name VG02
LV UUID PPAHOG-v4d2-hClM-nUKy-crnG-0V3A-kwb6pw
LV Write Access read/write
LV Status available
# open 0
LV Size 3,91 GB
Current LE 1000
Segments 1
Allocation next free (default)
Read ahead sectors 0
Block device 253:2

— Physical volumes —
PV Name /dev/hdd4
PV UUID BFGFCi-2rKb-As0v-ucBy-ghkn-y869-yXcIm0
PV Status allocatable
Total PE / Free PE 1192 / 192

Deletando o LV (LV03) que acabamos de criar.

[root@server root]# lvremove /dev/VG02/LV03
Do you really want to remove active logical volume “LV03″? [y/n]: y
Logical volume “LV03″ successfully removed

[root@server root]# vgdisplay -v VG02
Using volume group(s) on command line
Finding volume group “VG02″
— V