TipsAndTricks >> BondingInterfaces

Manual from: source

What is bonding and how does it work

Bonding is the same as port trunking. In the following I will use the word bonding because practically we will bond interfaces as one.

Bonding allows you to aggregate multiple ports into a single group, effectively combining the bandwidth into a single connection. Bonding also allows you to create multi-gigabit pipes to transport traffic through the highest traffic areas of your network. For example, you can aggregate three megabits ports into a three-megabits trunk port. That is equivalent with having one interface with three megabytes speed.

 

Where should I use bonding?

You can use it wherever you need redundant links, fault tolerance or load balancing networks. It is the best way to have a high availability network segment. A very useful way to use bonding is to use it in connection with 802.1q VLAN support (your network equipment must have 802.1q protocol implemented).

 

What are the types of bonding available

The best documentation is on the Linux Channel Bonding Project page http://sourceforge.net/projects/bonding/

mode=1 (active-backup)

Active-backup policy: Only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond’s MAC address is externally visible on only one port (network adapter) to avoid confusing the switch. This mode provides fault tolerance. The primary option affects the behavior of this mode.

mode=2 (balance-xor)

XOR policy: Transmit based on [(source MAC address XOR’d with destination MAC address) modulo slave count]. This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.

mode=3 (broadcast)

Broadcast policy: transmits everything on all slave interfaces. This mode provides fault tolerance.

mode=4 (802.3ad)

IEEE 802.3ad Dynamic link aggregation. Creates aggregation groups that share the same speed and duplex settings. Utilizes all slaves in the active aggregator according to the 802.3ad specification.

  • Pre-requisites:
  • Ethtool support in the base drivers for retrieving the speed and duplex of each slave.
  • A switch that supports IEEE 802.3ad Dynamic link aggregation. Most switches will require some type of configuration to enable 802.3ad mode.

mode=5 (balance-tlb)

Adaptive transmit load balancing: channel bonding that does not require any special switch support. The outgoing traffic is distributed according to the current load (computed relative to the speed) on each slave. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed receiving slave.

  • Prerequisite: Ethtool support in the base drivers for retrieving the speed of each slave.

mode=6 (balance-alb)

Adaptive load balancing: includes balance-tlb plus receive load balancing (rlb) for IPV4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP Replies sent by the local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.

 

Bonding on CentOS 4

In the modprobe.conf file, add the following:

 

alias bond0 bonding 
options bond0 miimon=80 mode=5

Be sure to add this before any of the network aliases

 

modes: 
mode=0 (Balance Round Robin)
mode=1 (Active backup)
mode=2 (Balance XOR)
mode=3 (Broadcast)
mode=4 (802.3ad)
mode=5 (Balance TLB)
mode=6 (Balance ALB)

In the /etc/sysconfig/network-scripts/ directory create the configuration file: ifcfg-bond0

 

DEVICE=bond0 
IPADDR=<ip address>
NETMASK=
NETWORK=
BROADCAST=
GATEWAY=
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

Change the ifcfg-eth0 to participate in the new bond device:

DEVICE=eth0 
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

Check the status of the bond.

cat /proc/net/bonding/bond0

You can use multiple bond interfaces but for that you must load the bonding module as many as there are bond links, possibly with varying options. Presuming that you want two bond interfaces, you must configure /etc/modules.conf as follow:

 alias bond0 bonding
 options bond0 -o bond0 mode=0 miimon=100
 alias bond1 bonding
 options bond1 -o bond1 mode=1 miimon=100

To manage the state of the bonds yourself you can use the ifenslave command. See the manpage of ifenslave for the details.

 

Post CentOS 4

As time has passed, edits in /etc/modprobe.conf are disfavored, in preference to writing, and the initscripts parsing, smaller configuration files that should, but are not yet required, to end in a .conf suffix. Those files are placed in: /etc/modprobe.d/ and sourced in alphabetical sequence. It makes sense to adopt the naming practice, to ‘future proof’ a distribution move to an ‘init’ successor such as systemd

Monitoring Weblogic with Munin

Primero de todo tenemos que extraer los datos de HEAP, CPU y Daemons & Threads del adminserver de nuestro dominio Weblogic. Posteriormente dejamos estos datos en un fichero para que el script de munin (3 en total) recoja dichos datos y sean enviados al servidor.

Extraer datos de Weblogic.

Para hacer esto usaremos el conocido jython. Para hacerlo crearemos un script en el cron que se ejecute cada 5 min;

 

crontab -l

*/5 * * * * /usr/share/munin/scripts/weblogic_plugin.sh > /dev/null 2>&1

 

Este script se conectará al Admin, ira por cada uno de los managed server (incluso el Admin). Y sacara los datos dejándolos en un fichero de texto. En nuestro caso;

/wls/export_wls_status.sh

El script weblogic_plugin.sh es;

/opt/jrmc/bin/java -cp /opt/bea/wls/weblogic.jar weblogic.WLST /usr/share/munin/scripts/weblogic_py_script_DOMAIN1.py  > /wls/export_wls_status

/opt/jrmc/bin/java -cp /opt/bea/wls/weblogic.jar weblogic.WLST /usr/share/munin/scripts/weblogic_py_script_DOMAIN2.py >> /wls/export_wls_status

 

Nota!!

Quizás tendréis que modificar el directorio del binario de java (/opt/jrmc/bin/) así como del fichero weblogic.jar (/opt/bea/wls/) en función de vuestra configuración.

 

Este script de cron sacará todos los datos, pero el que realmente se conecta al Weblogic es el script weblogic_py_DOMAIN.py Este script es;

username = ‘usuario’

password = ‘password’

URL=’t3://localhost:1111′

connect(username,password,URL)

domainConfig()

domini=cmo.getName()

serverList=cmo.getServers();

domainRuntime()

cd(‘/ServerLifeCycleRuntimes/’)

for server in serverList:

name=server.getName()

cd(name)

serverState=cmo.getState()

cd(“/ServerRuntimes/”+server.getName()+”/JVMRuntime/”+server.getName())

sizeHP=cmo.getHeapSizeCurrent()

usedHP=cmo.getUsedHeap()

proces=cmo.getAllProcessorsAverageLoad()

timegc=cmo.getLastGCEnd()

daemon=cmo.getNumberOfDaemonThreads()

thread=cmo.getTotalNumberOfThreads()

 

print domini,’PRO’,  name,’SizeHPWLS ‘,sizeHP

print domini,’PRO’,  name,’UsedHPWLS ‘,usedHP

print domini,’PRO’,  name,’ProcesWLS ‘,proces

print domini,’PRO’,  name,’TimeGCWLS ‘,timegc

print domini,’PRO’,  name,’DaemonWLS ‘,daemon

print domini,’PRO’,  name,’ThreadWLS ‘,thread

 

domainConfig()

domainRuntime()

cd(‘/ServerLifeCycleRuntimes/’)

 

Una vez tenemos los datos en un fichero de texto podremos tratarlo. Dejo un ejemplo de cómo se queda el fichero con los datos:

 

DOMAIN1 PRO AdminServer SizeHPWLS  536870912

DOMAIN1 PRO AdminServer UsedHPWLS  454807648

DOMAIN1 PRO AdminServer ProcesWLS  0.0806008984095334

DOMAIN1 PRO AdminServer TimeGCWLS  1380632745493

DOMAIN1 PRO AdminServer DaemonWLS  51

DOMAIN1 PRO AdminServer ThreadWLS  52

DOMAIN1 PRO DOMAIN1_01 SizeHPWLS  1610612736

DOMAIN1 PRO DOMAIN1_01 UsedHPWLS  1199548792

DOMAIN1 PRO DOMAIN1_01 ProcesWLS  0.08062796813666061

DOMAIN1 PRO DOMAIN1_01 TimeGCWLS  1380629744340

DOMAIN1 PRO DOMAIN1_01 DaemonWLS  42

DOMAIN1 PRO DOMAIN1 _01 ThreadWLS  43

 

Para tratar el fichero crearemos un script en /usr/share/munin/plugins/ con el nombre que se quiera, en mi caso MANAGED_DOMAIN1_HEAP

El fichero básicamente hace un grep del dato que se quiera y lo devuelve. Para el HEAP busca SizeHPWLS, para daemons y threads DaemonWLS  y ThreadWLS y para CPU busca ProcesWLS

 

#!/bin/sh

case $1 in

config)

cat <<‘EOM’

graph_title Managed Servers Heap DOMAIN1_1

graph_vlabel HEAP USE/MAX

DOMAIN1_1_Size.label DOMAIN1_1 Max

DOMAIN1_1_Use.label DOMAIN1_1 Use

graph_scale yes

graph_category weblogic

graph_info Grafica Weblogic DOMAIN1_1 Heap Managed Servers

EOM

exit 0;;

esac

echo -n “P DOMAIN_1_Size.value ”

grep SizeHPWLS /wls/export_wls_status | grep DOMAIN1_1 | awk ‘{print $5}’

echo -n ” DOMAIN_1_Use.value ”

grep UsedHPWLS /wls/export_wls_status | grep DOMAIN1_1| awk ‘{print $5}’

 

Creamos el enlace simbólico;

cd /etc/munin/plugins

ln –s MANAGED_DOMAIN1_HEAP  /usr/share/munin/plugins/MANAGED_DOMAIN1_HEAP

Reiniciamos el agente

/etc/init.d/munin-node restart

Y en unos minutos ya lo tenemos en nuestro servidor

 

HEAP

Descarga de scripts: Weblogic & Munin Scripts

 

Munin monitoring How To

Munin es un software para monitorizar i graficar que nos permite analizar el estado de nuestros sistemas.

munin

Introducción

Funciona como un Cacti o Graphite pero a diferencia de estos dos Munin funciona con agentes. Esto podría ser un hándicap pero veremos que nos va ayudar mucho en la instalación y mantenimiento del entorno.

Hay dos partes, la cliente “munin-node” y la servidor “munin”

Aquí tenemos una imagen que nos va ayudar a entender cómo funciona.

 

munin design

El munin-master (servidor) se ejecuta cada 5 minutos desde el crond i ejecuta varios scripts;

Munin-update: Este se encarga de leer el fichero /etc/munin/munin.conf y recoger todos los clientes. Posteriormente se conecta por el puerto 4949/tcp i le dice al “munin-node” que ejecute todos los scripts que tiene en /etc/munin/plugins/ y le devuelva el resultado.

Munin-limites: Este analiza los datos obtenidos de los clientes y revisa si algunos de ellos está por encima del umbral marcado en la gráfica. En caso de ser así actualiza el estado de la gráfica  a “Warning” o “Critical”.

Munin-html: Se encarga de actualizar la web. Si ponemos nuevos nodos o dominios este actualizara la web. (Este no hace nada ejecutándose desde cron si está configurado como cgi)

Munin-graph: “La joya de la corona”. Usando las librerías de RRD-Tool y con los valores de “munin-update” se encarga de generar las gráficas. (Este no hace nada ejecutándose desde cron si está configurado como cgi)

 

Para “munin-html” y “munin-graph” los configuraremos como CGI. Las diferencias son;

Cron: Cuando lo configuramos como cron estos scripts generan todas las web y todas las gráficas cada vez que se ejecuta el script. En caso de tener unos 50 nodos en 5 minutos hay tiempo suficiente para realizar la tarea.

CGI: Configuraremos como CGI cuando tengamos muchos nodos. En mi instalación actualmente tengo 300 nodos con un total de 70.000 ficheros rrd y en 5 minutos no hay tiempo para procesarlo todo. Con esto lo que hacemos es que cada vez que entres en la web “munin-html” generará dicha web y cada vez que entres en un nodo “munin-graph” generará las gráficas que quieres visualizar.

Instalación (servidor)

En este caso vamos a realizar una instalación en una RedHat 5.9 64bits utilizando EPEL.

Registramos la maquina en RedHatNetwork, RedHat Satellite o usando un cd. (Basicamente necesitamos poder ejecutar yum)

 

Instalamos EPEL

cd /tmp/

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

rpm -Uvh /tmp/epel-release-5-4.noarch.rpm

 

Instalamos munin y munin-node (asi también monitorizamos en servidor)

 

yum install httpd mod_fcgid munin munin-node

 

2

 

chkconfig munin on

chkconfig munin-node on

 

Configuración (servidor)

El fichero principal de configuración es /etc/munin/munin.conf

Lo modificaremos poniendo solo los siguientes datos;

htmldir /var/lib/www/html/munin  #### (es el directorio de la web)

logdir /var/log/munin

includedir /etc/munin/conf.d

graph_period minute

graph_strategy cgi                         ##### Tiene que estar en cgi no en cron

cgiurl_graph /munin-cgi/munin-cgi-graph   #### Es la URL donde tiene los scripts de CGI (lo veremos al configurar el apache)

html_strategy cgi                            ##### Tienen que estar en cgi no en cron

max_processes 100                       ##### Por defecto viene en 16. Son los procesos que creara al ejecutar el munin-update. Si tienes mucha maquina pon un valor más alto. Aun así es bueno realizar varias pruebas hasta encontrar un buen valor.

##### Esto es un ejemplo de cómo crear un nodo cliente. Estos nodos son los que el script “munin-update” se conecta

[NODO_CLIENET.TEST]

address 192.168.0.1

use_node_name yes

 

Para más información de posibles configuraciones (LINK) http://munin-monitoring.org/wiki/munin.conf

 

Ahora ya tenemos configurado el munin para CGI, pero nos queda el apache…

Configuración APACHE para CGI:

En la configuración del apache tenemos que notificarle donde están los scripts para CGI.

Vamos al fichero /etc/httpd/conf.d/munin.conf

Comentaremos las líneas para entender posibles modificaciones.

 

<VirtualHost *:443> ### En mi caso uso SSL con certificado

SSLEngine on

SSLCertificateFile /etc/httpd/cert/selfsigned/munin.node.es.crt

SSLCertificateKeyFile /etc/httpd/cert/selfsigned/keys/ munin.node.es.key

ServerName munin.node.es

DocumentRoot /var/lib/www/html ###Importante que sea el mismo que hemos puesto en el fichero /etc/munin/munin.conf

<IfModule !mod_rewrite.c>

Alias /munin-cgi/munin-cgi-html/static /var/lib/www/html/munin/static ## Lo que hacemos en indicarle donde esta la web (parte estatica). Esto se ejecuta cada vez que entramos en la web

RedirectMatch ^/$ /munin-cgi/munin-cgi-html/

</IfModule>

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule ^/favicon.ico /var/lib/www/html/munin/static/favicon.ico [L]

RewriteRule ^/static/(.*) /var/lib/www/html/munin/static/$1          [L]

# HTML (Cada vez que llamemos a una html este llamara al script munin-cgi-html

RewriteRule ^(/.*.html)?$           /munin-cgi/munin-cgi-html/$1 [PT]

# Images (Cada vez que solicitemos una grafica este llamara al script munin-cgi-graph

 

RewriteRule ^/munin-cgi/munin-cgi-graph/(.*) /$1

RewriteCond %{REQUEST_URI}                 !^/static

RewriteRule ^/(.*.png)$  /munin-cgi/munin-cgi-graph/$1 [L,PT]

</IfModule>

# Nos tenemos que asegurar que los script que están en /var/lib/www/cgi-bin/ son ejecutables

ScriptAlias /munin-cgi/munin-cgi-graph /var/lib/www/cgi-bin/munin-cgi-graph

<Location /munin-cgi/munin-cgi-graph>

Options +ExecCGI

<IfModule mod_fcgid.c>

SetHandler fcgid-script

</IfModule>

<IfModule mod_fastcgi.c>

SetHandler fastcgi-script

</IfModule>

<IfModule !mod_fastcgi.c>

<IfModule !mod_fcgid.c>

SetHandler cgi-script

</IfModule>

</IfModule>

Allow from all

</Location>

ScriptAlias /munin-cgi/munin-cgi-html /var/lib/www/cgi-bin/munin-cgi-html

<Location /munin-cgi/munin-cgi-html>

Options +ExecCGI

<IfModule mod_fcgid.c>

SetHandler fcgid-script

</IfModule>

<IfModule mod_fastcgi.c>

SetHandler fastcgi-script

</IfModule>

<IfModule !mod_fastcgi.c>

<IfModule !mod_fcgid.c>

SetHandler cgi-script

</IfModule>

</IfModule>

Allow from all

</Location>

<IfModule !mod_rewrite.c>

<Location /munin-cgi/munin-cgi-html/static>

Options -ExecCGI

SetHandler None

</Location>

</IfModule>

</VirtualHost>

 

Configuración (cliente)

Para el cliente editaremos el fichero /etc/munin/munin-node.conf y pondremos la IP del host servidor como una expresión regular;

allow ^192.168.0.2$

 

Información oficial de configuración de munin-node (LINK) http://munin-monitoring.org/wiki/munin-node.conf

 

Recuperación LVM Logical Volume

Dejo aquí un manual de como recuperar un volumen lógico en Linux. Tengo que agradecer este manual a Jordi que se ha pasado sus horas haciendo yes.. yes… yes… 😉

Para entender ciertos conceptos técnicos va bien este manual: http://www.linuca.org/body.phtml?nIdNoticia=326

Empezamos…

pvs -v
##########
# Scanning for physical volume names
# PV VG Fmt Attr PSize PFree DevSize PV UUID
# /dev/sda2 VolGroup00 lvm2 a- 9.88G 0 9.90G 6m961T-avTg-XypB-1T5E-sgeK-6UDX-yISnmK
# /dev/sdb vgapp1 lvm2 a- 100.00G 0 100.00G U6tSIo-9gjZ-HtQa-dYgA-uCIe-nz6f-aBrIHr
##########

– Guardar UUID para compararlo

pvck -d -v /dev/sdb
##########
# Scanning /dev/sdb
# Found label on /dev/sdb, sector 1, type=LVM2 001
# Found text metadata area: offset=4096, size=192512
# Found LVM2 metadata record at offset=10752, size=1024, offset2=0 size2=0
# Found LVM2 metadata record at offset=9728, size=1024, offset2=0 size2=0
# Found LVM2 metadata record at offset=8704, size=1024, offset2=0 size2=0
# Found LVM2 metadata record at offset=7680, size=1024, offset2=0 size2=0
# Found LVM2 metadata record at offset=6656, size=1024, offset2=0 size2=0
# Found LVM2 metadata record at offset=5632, size=1024, offset2=0 size2=0
##########

– Convertir los offset de decimal a hexadecimal y anotarlos.
– Buscar e instalar el programa hexedit
hexedit /dev/sdb
##########
#00001180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#000011A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#000011C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#000011E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#00001200 76 67 61 70 70 31 20 7B 0A 69 64 20 3D 20 22 31 74 4E 74 55 44 2D 75 68 35 61 2D 76 6B 4E 6E 2D vgapp1 {.id = “1tNtUD-uh5a-vkNn-
#00001220 55 76 76 73 2D 4D 79 4F 52 2D 72 70 30 44 2D 7A 51 44 6B 79 46 22 0A 73 65 71 6E 6F 20 3D 20 33 Uvvs-MyOR-rp0D-zQDkyF”.seqno = 3
#00001240 0A 73 74 61 74 75 73 20 3D 20 5B 22 52 45 53 49 5A 45 41 42 4C 45 22 2C 20 22 52 45 41 44 22 2C .status = [“RESIZEABLE”, “READ”,
#00001260 20 22 57 52 49 54 45 22 5D 0A 66 6C 61 67 73 20 3D 20 5B 5D 0A 65 78 74 65 6E 74 5F 73 69 7A 65 “WRITE”].flags = [].extent_size
#00001280 20 3D 20 38 31 39 32 0A 6D 61 78 5F 6C 76 20 3D 20 30 0A 6D 61 78 5F 70 76 20 3D 20 30 0A 0A 70 = 8192.max_lv = 0.max_pv = 0..p
#000012A0 68 79 73 69 63 61 6C 5F 76 6F 6C 75 6D 65 73 20 7B 0A 0A 70 76 30 20 7B 0A 69 64 20 3D 20 22 55 hysical_volumes {..pv0 {.id = “U
#000012C0 36 74 53 49 6F 2D 39 67 6A 5A 2D 48 74 51 61 2D 64 59 67 41 2D 75 43 49 65 2D 6E 7A 36 66 2D 61 6tSIo-9gjZ-HtQa-dYgA-uCIe-nz6f-a
#000012E0 42 72 49 48 72 22 0A 64 65 76 69 63 65 20 3D 20 22 2F 64 65 76 2F 73 64 62 22 0A 0A 73 74 61 74 BrIHr”.device = “/dev/sdb”..stat
#00001300 75 73 20 3D 20 5B 22 41 4C 4C 4F 43 41 54 41 42 4C 45 22 5D 0A 66 6C 61 67 73 20 3D 20 5B 5D 0A us = [“ALLOCATABLE”].flags = [].
#00001320 64 65 76 5F 73 69 7A 65 20 3D 20 32 30 39 37 31 35 32 30 30 0A 70 65 5F 73 74 61 72 74 20 3D 20 dev_size = 209715200.pe_start =
#00001340 33 38 34 0A 70 65 5F 63 6F 75 6E 74 20 3D 20 32 35 35 39 39 0A 7D 0A 7D 0A 0A 6C 6F 67 69 63 61 384.pe_count = 25599.}.}..logica
#00001360 6C 5F 76 6F 6C 75 6D 65 73 20 7B 0A 0A 6C 76 61 70 70 31 20 7B 0A 69 64 20 3D 20 22 6D 68 66 4E l_volumes {..lvapp1 {.id = “mhfN
#00001380 64 4F 2D 48 65 4B 32 2D 4A 71 54 64 2D 5A 5A 5A 55 2D 37 6D 33 4C 2D 35 70 74 53 2D 78 42 76 61 dO-HeK2-JqTd-ZZZU-7m3L-5ptS-xBva
#000013A0 48 4B 22 0A 73 74 61 74 75 73 20 3D 20 5B 22 52 45 41 44 22 2C 20 22 57 52 49 54 45 22 2C 20 22 HK”.status = [“READ”, “WRITE”, ”
#000013C0 56 49 53 49 42 4C 45 22 5D 0A 66 6C 61 67 73 20 3D 20 5B 5D 0A 73 65 67 6D 65 6E 74 5F 63 6F 75 VISIBLE”].flags = [].segment_cou
#000013E0 6E 74 20 3D 20 31 0A 0A 73 65 67 6D 65 6E 74 31 20 7B 0A 73 74 61 72 74 5F 65 78 74 65 6E 74 20 nt = 1..segment1 {.start_extent
#00001400 3D 20 30 0A 65 78 74 65 6E 74 5F 63 6F 75 6E 74 20 3D 20 32 35 35 39 39 0A 0A 74 79 70 65 20 3D = 0.extent_count = 25599..type =
#00001420 20 22 73 74 72 69 70 65 64 22 0A 73 74 72 69 70 65 5F 63 6F 75 6E 74 20 3D 20 31 09 23 20 6C 69 “striped”.stripe_count = 1.# li
#00001440 6E 65 61 72 0A 0A 73 74 72 69 70 65 73 20 3D 20 5B 0A 22 70 76 30 22 2C 20 30 0A 5D 0A 7D 0A 7D near..stripes = [.”pv0″, 0.].}.}
#00001460 0A 7D 0A 7D 0A 23 20 47 65 6E 65 72 61 74 65 64 20 62 79 20 4C 56 4D 32 20 76 65 72 73 69 6F 6E .}.}.# Generated by LVM2 version
#00001480 20 32 2E 30 32 2E 34 30 2D 52 48 45 4C 35 20 28 32 30 30 38 2D 31 30 2D 32 34 29 3A 20 46 72 69 2.02.40-RHEL5 (2008-10-24): Fri
#000014A0 20 44 65 63 20 20 33 20 30 38 3A 35 31 3A 34 37 20 32 30 31 30 0A 0A 63 6F 6E 74 65 6E 74 73 20 Dec 3 08:51:47 2010..contents
#000014C0 3D 20 22 54 65 78 74 20 46 6F 72 6D 61 74 20 56 6F 6C 75 6D 65 20 47 72 6F 75 70 22 0A 76 65 72 = “Text Format Volume Group”.ver
#000014E0 73 69 6F 6E 20 3D 20 31 0A 0A 64 65 73 63 72 69 70 74 69 6F 6E 20 3D 20 22 22 0A 0A 63 72 65 61 sion = 1..description = “”..crea
#00001500 74 69 6F 6E 5F 68 6F 73 74 20 3D 20 22 41 52 51 4F 50 46 53 52 30 32 22 09 23 20 4C 69 6E 75 78 tion_host = “ARQOPFSR02”.# Linux
#00001520 20 41 52 51 4F 50 46 53 52 30 32 20 32 2E 36 2E 31 38 2D 31 32 38 2E 65 6C 35 20 23 31 20 53 4D ARQOPFSR02 2.6.18-128.el5 #1 SM
#00001540 50 20 57 65 64 20 44 65 63 20 31 37 20 31 31 3A 34 31 3A 33 38 20 45 53 54 20 32 30 30 38 20 78 P Wed Dec 17 11:41:38 EST 2008 x
#00001560 38 36 5F 36 34 0A 63 72 65 61 74 69 6F 6E 5F 74 69 6D 65 20 3D 20 31 32 39 31 33 36 32 37 30 37 86_64.creation_time = 1291362707
#00001580 09 23 20 46 72 69 20 44 65 63 20 20 33 20 30 38 3A 35 31 3A 34 37 20 32 30 31 30 0A 0A 00 00 00 .# Fri Dec 3 08:51:47 2010…..
#000015A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#000015C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#000015E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………………………..
#00001600 76 67 61 70 70 31 20 7B 0A 69 64 20 3D 20 22 31 74 4E 74 55 44 2D 75 68 35 61 2D 76 6B 4E 6E 2D vgapp1 {.id = “1tNtUD-uh5a-vkNn-
#00001620 55 76 76 73 2D 4D 79 4F 52 2D 72 70 30 44 2D 7A 51 44 6B 79 46 22 0A 73 65 71 6E 6F 20 3D 20 32 Uvvs-MyOR-rp0D-zQDkyF”.seqno = 2
#00001640 0A 73 74 61 74 75 73 20 3D 20 5B 22 52 45 53 49 5A 45 41 42 4C 45 22 2C 20 22 52 45 41 44 22 2C .status = [“RESIZEABLE”, “READ”,
#00001660 20 22 57 52 49 54 45 22 5D 0A 66 6C 61 67 73 20 3D 20 5B 5D 0A 65 78 74 65 6E 74 5F 73 69 7A 65 “WRITE”].flags = [].extent_size
#00001680 20 3D 20 38 31 39 32 0A 6D 61 78 5F 6C 76 20 3D 20 30 0A 6D 61 78 5F 70 76 20 3D 20 30 0A 0A 70 = 8192.max_lv = 0.max_pv = 0..p
#000016A0 68 79 73 69 63 61 6C 5F 76 6F 6C 75 6D 65 73 20 7B 0A 0A 70 76 30 20 7B 0A 69 64 20 3D 20 22 55 hysical_volumes {..pv0 {.id = “U
#########

– Buscar la dirección hexadecimal del offset que queremos, marcarla (ctrl-espacio), copiarla (esc-w) y guardarla (esc-y) con el nombre que queráis. Para salir (ctrl-c).
vgchange -an vgapp1

– Usar el UUID del fichero en la instruccion de abajo y el fichero que hemos guardado.
pvcreate -ff -u U6tSIo-9gjZ-HtQa-dYgA-uCIe-nz6f-aBrIHr –restorefile 20101014new.txt /dev/sdb
vgcfgrestore -f 20101014new.txt -v vgapp1
vgchange -ay vgapp1
e2fsck -f /dev/vgapp1/lvapp1

– Con suerte, lo tendremos recuperado 🙂

Instalar y configurar proftpd

Este es un pequeño manual para la instalación y configuración básica de un proftpd, instalar el software, dar de alta usuarios, ver un poco los permisos etc… Esta instalación esta realizada en una Fedora Core 13, pero prácticamente todos los comandos son usables en una Debian (por ejemplo) Instalación de proftpd:

[root@bluehat ~]# yum install proftpd

En una Debian será apt-get install proftpd Editamos el fichero de configuración. A diferencia que la instalación de Debian, el proftpd en Fedora no pregunta por el tipo de instalación (standalone/inetd) ni otros parámetros (nombre del servidor ftp, etc..) En este caso editamos el fichero de configuración:

[root@bluehat ~]# vim /etc/proftpd.conf

En debian /etc/proftpd/proftpd.conf Revisamos los parámetros típicos/básicos de la configuración:

ServerName                      “BluHat Ftp Server”

Mi consejo es dejar en DNS lookups en off. Lo que hace la directiva es que cada vez que te conectas, mira en el DNS si tu IP/Nombre son correctos, eso hace que si no tienes configurado un dominio o DNS correctamente detectes una lentitud muy grande en las transferencias.

# Don’t do reverse DNS lookups (hangs on DNS problems)

UseReverseDNS                   off Iniciamos el proftpd

[root@bluehat ~]# /etc/init.d/proftpd start

Ahora vamos agregar un usuario. Por ejemplo ftpuser

adduser ftpuser

modificamos su contraseña:

passwd ftpuser

Una vez agregado el usuario, este tiene permisos para acceder a una shell del sistema. Modificaremos los permisos del usuario para  que no pueda acceder. Lo que hacemos es modificar su Shell poniendo /sbin/nologin en el fichero /etc/passwd Ya tenemos creado el usuario. El acceso por defecto será su home. Esto se define en el parámetro siguiente del pproftpd.conf (la opción ~)

DefaultRoot                     ~ !adm

En Debian esta opción esta deshabilitada, solo tenemos que quitar la “#” de la politica. Si vemos que al conectarnos aparece error de usuario/contraseña invalida tendremos que mirar los logs. Aun así, lo mas seguro es que la shell que le hemos definido en /etc/passwd no exista (en el caso de Debian) tendremos que editar el fichero /etc/shells  y agregar la shell

vim /etc/shells

Si queremos hacer que el usuario tenga acceso a un directorio especifico, modificamos su home (lógicamente deberemos aplicarle los permisos adecuados para poder leer/escribir en dicho directorio por ejemplo:

ftpuser:x:501:501::/directorio_web/web_de_ftpuser:/sbin/nologin

También podemos crear un enlace simbólico en un directorio de su carpeta hacia otra. En la de destino también deberá tener permisos. ln -s /var/www/ftpuser/web/    www Lo que hará sera crear una carpeta con un enlace hacia la web (en otro directorio llamado ftpuser)



Agregar disco en Linux Fdisk y mkfs

Pasos para instalar nuestro nuevo disco duro en nuestro linux;

Añadimos  físicamente el nuevo disco duro en nuestra máquina.

Listar las particiones de nuestros discos para poder identificar nuestro nuevo disco duro:

# fdisk -l

Nos saldrá una entrada nueva con el mensaje: El disco x no contiene una tabla de particiones válida

Voy a exponer mi caso concreto, vosotros tendréis que adaptarlo a vuestro caso concreto:

En mi caso, he añadido un disco duro de VmWare de 8GB , la cola de salida del comando anterior me muestra:

Disco /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000El disco /dev/sdc no contiene una tabla de particiones válida

Tomamos nota de /dev/sdc

Si fuera un disco IDE seria HDA en vez de SDC

Si queremos particionarlo (en mi caso he creado una sola partición):

# fdisk/dev/sdc

Orden (m para obtener ayuda): m
Orden Acción
a Conmuta el indicador de iniciable
b Modifica la etiqueta de disco bsd
c Conmuta el indicador de compatibilidad con DOS
d Suprime una partición
l Lista los tipos de particiones conocidos
m Imprime este menú
n Añade una nueva partición
o Crea una nueva tabla de particiones DOS vacía
p Imprime la tabla de particiones
q Sale sin guardar los cambios
s Crea una nueva etiqueta de disco Sun
t Cambia el identificador de sistema de una partición
u Cambia las unidades de visualización/entrada
v Verifica la tabla de particiones
w Escribe la tabla en el disco y sale
x Funciones adicionales (sólo para usuarios avanzados)

Al salir darle a “w

Ahora formatearemos la partición creada:

# mkfs -t ext3 /dev/sdc

Creamos directorio de montaje:

# mkdir -p /media/hdd2

Editaremos fstab

# vim /etc/fstab

Añadiremos:

/dev/sdc /media/hdd2 ext3 defaults 0 0

(Nota: podemos cambiar defaults por otras opciones de montaje, como pot ejemplo user, más adelante escribiré sobre fstab)

Montamos:

# mount -a

Ya tenemos el nuevo dispositivo

df -h

Squid, Instalación y configuración

He encontrado un manual/how to MUY interesante para la instalación y configuración de un SQUID. Como soy de los que piensa que si hay algo bien echo no hace falta rehacerlo, sino es para mejorarlo…. lo voy a pegar aqui para el disfrute de todo el mundo.

La web original esta aqui

Dejo también el manual en formato Squid

Introducción.

¿Qué es Servidor Intermediario (Proxy)?

El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinónimo del concepto de «Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado (el que tiene el que poder sobre otro).

Un Servidor Intermediario (Proxy) se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:

Cliente se conecta hacia un Servidor Intermediario (Proxy).
Cliente solicita una conexión, fichero u otro recurso disponible en un servidor distinto.
Servidor Intermediario (Proxy) proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché.
En algunos casos el Servidor Intermediario (Proxy) puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos.

Los Servidores Intermediarios (Proxies) generalmente se hacen trabajar simultáneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables, o bien operando en el Nivel de Aplicación, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos también se conoce como BPD o Border Protection Device o simplemente filtro de paquetes.

Una aplicación común de los Servidores Intermediarios (Proxies) es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y ficheros disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

Cuando se recibe una petición para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el caché, el Servidor Intermediario lo traerá desde servidor remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché. El contenido en el caché es eliminado luego a través de un algoritmo de expiración de acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

Los Servidores Intermediarios para contenido de Red (Web Proxies) también pueden actuar como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios arbitrarios.

Acerca de Squid.

Squid es un Servidor Intermediario (Proxy) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo sustento lógico libre, está disponible el código fuente para quien así lo requiera.

Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario.

Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS.

NOTA ESPECIAL: Squid no debe ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerirá implementar obligatoriamente un enmascaramiento de IP o NAT (Network Address Translation) o bien hacer uso de un servidor SOCKS como Dante (http://www.inet.no/dante/).

URL: http://www.squid-cache.org/

Algoritmos de caché utilizados por Squid.

A través de un parámetro (cache_replacement_policy) Squid incluye soporte para los siguientes algoritmos para el caché:

LRU Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que no han sido accedidos en mucho tiempo son eliminados primero, manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predefinido.
LFUDA Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.
GDSF Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que sean solicitado con frecuencia.

Sustento lógico necesario.

Para poder llevar al cabo los procedimientos descritos en este manual y documentos relacionados, usted necesitará tener instalado al menos lo siguiente:

Al menos squid-2.5.STABLE6
httpd-2.0.x (Apache), como auxiliar de caché con aceleración.
Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando. No es conveniente utilizar un sistema con posibles vulnerabilidades como Servidor Intermediario.

Debe tomarse en consideración que, de ser posible, se debe utilizar siempre las versiones estables más recientes de todo sustento lógico que vaya a ser instalado para realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de Squid anterior a la 2.5.STABLE6 se considera como apropiada debido a fallas de seguridad de gran importancia.

Squid no se instala de manera predeterminada a menos que especifique lo contrario durante la instalación del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalación es exactamente el mismo que con cualquier otro sustento lógico.

Instalación a través de yum.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

yum -y install squid httpd

Instalación a través de up2date.

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

up2date -i squid httpd

Otros componentes necesarios.

El mandato iptables se utilizará para generar las reglas necesarias para el guión de Enmascaramiento de IP. Se instala de modo predefinido en todas las distribuciones actuales que utilicen núcleo (kernel) versiones 2.4 y 2.6.

Es importante tener actualizado el núcleo del sistema operativo por diversas cuestiones de seguridad. No es recomendable utilizar versiones del kernel anteriores a la 2.4.21. Actualice el núcleo a la versión más reciente disponible para su distribución.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo e iptables, si acaso fuera necesario:

yum -y update kernel iptables

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo, e iptables si acaso fuera necesario:

up2date -u kernel iptables

Antes de continuar.

Tenga en cuenta que este manual ha sido comprobado varias veces y ha funcionado en todos los casos y si algo no funciona solo significa que usted no lo leyó a detalle y no siguió correctamente las indicaciones.

Evite dejar espacios vacíos en lugares indebidos. El siguiente es un ejemplo de como no se debe habilitar un parámetro.

Mal

# Opción incorrectamente habilitada
  http_port 3128

El siguiente es un ejemplo de como si se debe habilitar un parámetro.

Bien

# Opción correctamente habilitada
http_port 3128

Configuración básica.

Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de parámetros, de los cuales recomendamos configurar los siguientes:

http_port
cache_dir
Al menos una Lista de Control de Acceso
Al menos una Regla de Control de Acceso
httpd_accel_host
httpd_accel_port
httpd_accel_with_proxy

Parámetro http_port: ¿Que puerto utilizar para Squid?

De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados (rango desde 1024 hasta 49151) recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a través de TCP.

De modo predefinido Squid utilizará el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.

En el caso de un Servidor Intermediario (Proxy) Transparente, regularmente se utilizará el puerto 80 o el 8000 y se valdrá del re-direccionamiento de peticiones de modo tal que no habrá necesidad alguna de modificar la configuración de los clientes HTTP para utilizar el Servidor Intermediario (Proxy). Bastará con utilizar como puerta de enlace al servidor. Es importante recordar que los Servidores HTTP, como Apache, también utilizan dicho puerto, por lo que será necesario volver a configurar el servidor HTTP para utilizar otro puerto disponible, o bien desinstalar o desactivar el servidor HTTP.

Hoy en día puede no ser del todo práctico el utilizar un Servidor Intermediario (Proxy) Transparente, a menos que se trate de un servicio de Café Internet u oficina pequeña, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar más conveniente configurar un Servidor Intermediario (Proxy) con restricciones por clave de acceso, lo cual no puede hacerse con un Servidor Intermediario (Proxy) Transparente, debido a que se requiere un diálogo de nombre de usuario y clave de acceso.

Regularmente algunos programas utilizados comúnmente por los usuarios suelen traer de modo predefinido el puerto 8080 (servicio de cacheo WWW) para utilizarse al configurar que Servidor Intermediario (Proxy) utilizar. Si queremos aprovechar esto en nuestro favor y ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto también. Siendo así localice la sección de definición de http_port, y especifique:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 3128
http_port 8080

Si desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.254, puede hacerse lo siguiente:

#
#    You may specify multiple socket addresses on multiple lines.
#
# Default: http_port 3128
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080

Parámetro cache_mem.

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:

Objetos en tránsito.
Objetos frecuentemente utilizados (Hot).
Objetos negativamente almacenados en el caché.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el caché podrán utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición.

De modo predefinido se establecen 8 MB. Puede especificarse una cantidad mayor si así se considera necesario, dependiendo esto de los hábitos de los usuarios o necesidades establecidas por el administrador.

Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parámetro:

cache_mem 16 MB

Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?

Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuanto desea almacenar de Internet en el disco duro? De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:

cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB:

cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.

Parámetro ftp_user.

Al acceder a un servidor FTP de manera anónima, de modo predefinido Squid enviará como clave de acceso Squid@. Si se desea que el acceso anónimo a los servidores FTP sea más informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la dirección de correo especificada como clave de acceso, puede especificarse la dirección de correo electrónico que uno considere pertinente.

ftp_user proxy@su-dominio.net

Controles de acceso.

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas máquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Procedamos a entender como definir unas y otras.

Listas de control de acceso.

Regularmente una lista de control de acceso se establece con la siguiente sintaxis:

acl [nombre de la lista] src [lo que compone a la lista]

Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde las máquinas tienen direcciones IP 192.168.1.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

acl miredlocal src 192.168.1.0/255.255.255.0

También puede definirse una Lista de Control de Acceso especificando un fichero localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP. Ejemplo:

acl permitidos src "/etc/squid/permitidos"

El fichero /etc/squid/permitidos contendría algo como siguiente:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

Reglas de Control de Acceso.

Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

La sintaxis básica es la siguiente:

http_access [deny o allow] [lista de control de acceso]

En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:

http_access allow permitidos

También pueden definirse reglas valiéndose de la expresión !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:

http_access allow lista1 !lista2

Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de control de acceso.

Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración.

Caso 1.

Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

acl todalared src 192.168.1.0/255.255.255.0

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl todalared src 192.168.1.0/255.255.255.0

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow todalared

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow todalared
http_access deny all

La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual está conformada por 192.168.1.0/255.255.255.0. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

Caso 2.

Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/listas/redlocal, dentro del cual se incluirán solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40

Denominaremos a esta lista de control de acceso como redlocal:

acl redlocal src "/etc/squid/listas/redlocal"

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición de una red local completa

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl redlocal src "/etc/squid/listas/redlocal"

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow redlocal

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

Reglas de control de acceso: Acceso a una Lista de Control de Acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal
http_access deny all

La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual está conformada por las direcciones IP especificadas en el fichero /etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.

Parámetro chache_mgr.

De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente.

cache_mgr joseperez@midominio.net

Parámetro cache_peer: caches padres y hermanos.

El parámetro cache_peer se utiliza para especificar otros Servidores Intermediarios (Proxies) con caché en una jerarquía como padres o como hermanos. Es decir, definir si hay un Servidor Intermediario (Proxy) adelante o en paralelo. La sintaxis básica es la siguiente:

cache_peer servidor tipo http_port icp_port opciones

Ejemplo: Si su caché va a estar trabajando detrás de otro servidor cache, es decir un caché padre, y considerando que el caché padre tiene una IP 192.168.1.1, escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130 (puerto utilizado de modo predefinido por Squid) ,especificando que no se almacenen en caché los objetos que ya están presentes en el caché del Servidor Intermediario (Proxy) padre, utilice la siguiente línea:

cache_peer 192.168.1.1 parent 8080 3130 proxy-only

Cuando se trabaja en redes muy grandes donde existen varios Servidores Intermediarios (Proxy) haciendo caché de contenido de Internet, es una buena idea hacer trabajar todos los caché entre si. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarán estos caches localizados en la red local antes de acceder hacia Internet y consumir ancho de banda para acceder hacia un objeto que ya podría estar presente en otro caché vecino.

Ejemplo: Si su caché va a estar trabajando en paralelo junto con otros caches, es decir caches hermanos, y considerando los caches tienen IP 10.1.0.1, 10.2.0.1 y 10.3.0.1, todos escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130, especificando que no se almacenen en caché los objetos que ya están presentes en los caches hermanos, utilice las siguientes líneas:

cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Pueden hacerse combinaciones que de manera tal que se podrían tener caches padres y hermanos trabajando en conjunto en una red local. Ejemplo:

cache_peer 10.0.0.1 parent 8080 3130 proxy-only
cache_peer 10.1.0.1 sibling 8080 3130 proxy-only
cache_peer 10.2.0.1 sibling 8080 3130 proxy-only
cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Caché con aceleración.

Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché de Squid. Si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet.

Esta función permite navegar rápidamente cuando los objetos ya están en el caché de Squid y además optimiza enormemente la utilización del ancho de banda.

La configuración de Squid como Servidor Intermediario (Proxy) Transparente solo requiere complementarse utilizando una regla de iptables que se encargará de re-direccionar peticiones haciéndolas pasar por el puerto 8080. La regla de iptables necesaria se describe más adelante en este documento.

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) en modo convencional.

En la sección HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parámetros:

httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente.

Si se trata de un Servidor Intermediario (Proxy) transparente, deben utilizarse las siguientes opciones, considerando que se hará uso del caché de un servidor HTTP (Apache) como auxiliar:

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local o bien el valor virtual
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.

Si va a utilizar Internet Explorer 5.5 y versiones anteriores con un Servidor Intermediario (Proxy) transparente, es importante recuerde que dichas versiones tiene un pésimo soporte con los Servidores Intermediarios (Proxies) transparentes imposibilitando por completo la capacidad de refrescar contenido. Si se utiliza el parámetro ie_refresh con valor on puede hacer que se verifique en los servidores de origen para nuevo contenido para todas las peticiones IMS-REFRESH provenientes de Internet Explorer 5.5 y versiones anteriores.

# Debe especificarse la IP de cualquier servidor HTTP en la
# red local
httpd_accel_host 192.168.1.254
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
ie_refresh on

Lo más conveniente es actualizar hacia Internet Explorer 6.x o definitivamente optar por otras alternativas. Mozilla es en un conjunto de aplicaciones para Internet, o bien Firefox, que es probablemente el mejor navegador que existe en el mercado. Firefox es un navegador muy ligero y que cumple con los estándares, y está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Estableciendo el idioma de los mensajes mostrados por de Squid hacia el usuario.

Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las páginas de error traducidas al español, es necesario cambiar un enlace simbólico localizado en /etc/squid/errors para que apunte hacia /usr/share/squid/errors/Spanish en lugar de hacerlo hacia /usr/share/squid/errors/English.

Elimine primero el enlace simbólico actual:

rm -f /etc/squid/errors

Coloque un nuevo enlace simbólico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al español.

ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

Nota: Este enlace simbólico debe verificarse, y regenerarse de ser necesario, cada vez que se actualizado Squid ya sea a través de yum, up2date o manualmente con el mandato rpm.

Iniciando, reiniciando y añadiendo el servicio al arranque del sistema.

Una vez terminada la configuración, ejecute el siguiente mandato para iniciar por primera vez Squid:

service squid start

Si necesita reiniciar para probar cambios hechos en la configuración, utilice lo siguiente:

service squid restart

Si desea que Squid inicie de manera automática la próxima vez que inicie el sistema, utilice lo siguiente:

chkconfig squid on

Lo anterior habilitará a Squid en todos los niveles de corrida.

Depuración de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de dedo o bien se están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso.

Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en el fichero /etc/squid/squid.conf.

service squid reload

Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del fichero /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto:

less /var/log/squid/squid.out

Ajustes para el corta-fuegos.

Si se tiene poca experiencia con guiones de cortafuegos a través de iptables, sugerimos utilizar Firestarter. éste permite configurar fácilmente tanto el enmascaramiento de IP como el muro corta-fuegos. Si se tiene un poco más de experiencia, recomendamos utilizar Shorewall para el mismo fin puesto que se trata de una herramienta más robusta y completa.

Firestarter: http://www.fs-security.com/
Shorewall: http://www.shorewall.net/

Re-direccionamiento de peticiones a través de iptables y Firestarter.

En un momento dado se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT.

El re-direccionamiento lo hacemos a través de iptables. Considerando para este ejemplo que la red local se accede a través de una interfaz eth0, el siguiente esquema ejemplifica un re-direccionamiento:

/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Lo anterior, que requiere un guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor.

Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post.

Re-direccionamiento de peticiones a través de la opción REDIRECT en Shorewall.

La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidores Intermediario (Proxy) transparente.

#ACTION        SOURCE         DEST    PROTO   DEST
REDIRECT       loc            8080    tcp     80

Apache, PHP y MySQL en Fedora

Vamos a instalar y configurar Apache, Mysql y PHP para poder ejecutar una web en wordpress (por ejemplo)

Instalamos Apache, Mysql y PHP;

yum -y install httpd php mysql mysql-server php-mysql

Configuramos para que se inicien automáticamente al inicio del sistema

/sbin/chkconfig httpd on

/sbin/chkconfig –add mysqld

/sbin/chkconfig mysqld on

Iniciamos los servicios:

/sbin/service httpd start

/sbin/service mysqld start

Tendremos que establecer la contraseña de root y quitar el acceso anónimo a la MYSQL

mysqladmin -u root password ‘new-password’

Ahora quitamos el acceso anonimo a la MYSQL:

mysql -u root -p

mysql> DROP DATABASE test;

mysql> DELETE FROM mysql.user WHERE user = ”;

mysql> FLUSH PRIVILEGES;

Vamos a  crear un phpinfo para ver que todo funciona. A diferencia de una Debian, los archivos web, por defecto en Fedora están en  /var/www/html/

Dentro de ese directorio (/var/www/html) creamos el fichero phpinfo.php

vim /var/www/html/phpinfo.php

<?php

phpinfo();

?>

Vamos a crear una base de datos para un wordpress (por ejemplo)

mysql -u root -p

mysql> CREATE DATABASE wordpress;

Establecemos los permisos creando un usuario nuevo;

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO ‘wordpress ‘@’localhost’ IDENTIFIED BY ‘password_nuevo_user’;

Volúmenes lógicos (LVM) Crear, modificar VG y LV

 

LVM es mucho más flexible, permitiendo añadir espacio adicional a volúmenes ya creados de manera transparente y simple.

Pasamos a ver los conceptos para entender la base del sistema.

Estructura LVM

Para que todo funcione es necesario instalar el paquete lvm10 o lvm2, recomiendo la versión 2 aunque la mayoría de distribuciones todavía mantengan la versión 1. Hay que asegurarse de que haya un script en el arranque para poner el marcha LVM.

Lo primero de todo es hacer las particiones, puede hacerse con cfdisk. Si se usa una versión anterior a la 2 de LVM, es obligatorio definir el tipo como Linux LVM.

Hay que destacar que la partición que contenga /boot no podrá formar parte de un volumen lógico, los cargadores de arranque no suelen soportarlo. En nuestro caso se trata de hda1.

Buscamos el nuevo disco

Si hemos agregado un disco hace poco podemos ver el device que ha sido generado con un fdisk -l. En mi caso he agregado un disco de 43Gb de mi VMWare a la maquina;

root@http:~# fdisk -l
Disc /dev/sdb: 42.9 GB, 42949672960 octets
255 heads, 63 sectors/track, 5221 cylinders
Units = cilindres of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Damos soporte para LVM a las otras dos particiones, este paso borrará TODOS los datos existentes.

root@http:~# pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created

Ahora creamos el VolumGroup que contendra tantos VolumGroup como queramos.

root@http:~# vgcreate VolumGroup2 /dev/sdb
Volume group “VolumGroup2” successfully created

Vamos a ver el resultado con vgdisplay:

root@http:~# vgdisplay
— Volume group —
VG Name               VolumGroup2
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               40,00 GiB
PE Size               4,00 MiB
Total PE              10239
Alloc PE / Size       0 / 0
Free  PE / Size       10239 / 40,00 GiB
VG UUID               0er3jx-M6p7-qsDC-WiHM-Qem3-n3R6-0xqhsK

Vamos a crear los volúmenes lógicos. Crearemos 2. Uno de 5, otro de 30 y dejaremos 5 libres para poder ampliar

root@http:~# lvcreate -L5,00G -n LV5GB VolumGroup2
Logical volume “LV5GB” created
root@http:~# lvcreate -L30,00G -n LV30GB VolumGroup2
Logical volume “LV30GB” created

El parámetro -L es lo “large” que es el disco. Vamos, el tamaño que queremos de LV. El parametro -n define el nombre del LV

Vamos a ver el resultado con LVDISPLAY

root@http:~# lvdisplay VolumGroup2
— Logical volume —
LV Name                /dev/VolumGroup2/LV5GB
VG Name               VolumGroup2
LV UUID                YAKkwE-tYrp-O233-3r1B-YzNi-cOn2-dE6FQT
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                5,00 GiB
Current LE             1280
Segments               1
Allocation             inherit
Read ahead sectors     auto
– currently set to     256
Block device           254:6

— Logical volume —
LV Name                /dev/VolumGroup2/LV30GB
VG Name                VolumGroup2
LV UUID                gJTafK-o0Al-pDNt-UIXJ-nUtp-YAkx-oZgNz3
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                30,00 GiB
Current LE             7680
Segments               1
Allocation             inherit
Read ahead sectors     auto
– currently set to     256
Block device           254:7

Vamos a darle formato con mkfs. Podemos realizar distintos formatos, XFS, EXT3 etc..

root@http:~# mkfs.ext3 /dev/VolumGroup2/LV30GB
mke2fs 1.41.12 (17-May-2010)
Etiqueta del sistema de fitxers=
Tipus de sistema operatiu: Linux
Mida del bloc=4096 (log=2)
Mida del fragment=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1966080 nodes-i, 7864320 blocs
393216 blocs (5.00%) reservats per al superusuari
Bloc de dades inicial=0
Màxim de blocs del sistema de fitxers=0
240 grups de blocs
32768 blocs per grup, 32768 fragments per grup
8192 nodes-i per grup
Còpies de seguretat del superbloc desades en els blocs:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Escriptura de les taules de nodes-i: 30/240
fet
Creació del registre de transaccions (32768 blocs): fet
Escriptura de la informació dels súperblocs i de comptabilitat del sistema de fitxers:fet


Agregar en fstab

Ahora solo queda agregar el disco en el fstab para que lo monte cada vez que arranque el sistema

/dev/VolumGroup2/LV30GB  /backup ext3 defaults 0 0

El resultado final

 

root@http:~# df -h
S. fitxers                                                      Mida En ús Lliure %Ãs Muntat a
/dev/mapper/pont-root                            322M  107M  199M  35% /
tmpfs                                                            125M     0  125M   0% /lib/init/rw
udev                                                              120M  120K  120M   1% /dev
tmpfs                                                             125M     0  125M   0% /dev/shm
/dev/sda1                                                     228M   15M  202M   7% /boot
/dev/mapper/pont-home                           2,7G   78M  2,5G   3% /home
/dev/mapper/pont-tmp                           225M  6,1M  208M   3% /tmp
/dev/mapper/pont-usr                               2,7G  495M  2,1G  20% /usr
/dev/mapper/pont-var                               1,4G  935M  337M  74% /var
/dev/mapper/VolumGroup2-LV30GB 30G  173M   28G   1% /backup

root@http:~# vgdisplay
— Volume group —
VG Name               VolumGroup2
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               1
Max PV                0
Cur PV                1
Act PV                1
VG Size               40,00 GiB
PE Size               4,00 MiB
Total PE              10239
Alloc PE / Size       8960 / 35,00 GiB
Free  PE / Size       1279 / 5,00 GiB
VG UUID               0er3jx-M6p7-qsDC-WiHM-Qem3-n3R6-0xqhsK

 

Ampliar LogicalVolum

Si queremos ampliar el Volumen, tendremos que poner el nuevo tamaño, no el tamaño  ampliar

root@http:~# lvextend -L34G /dev/mapper/VolumGroup2-LV30GB
Extending logical volume LV30GB to 34,00 GiB
Logical volume LV30GB successfully resized

Indicamos al sistema el nuevo tamaño

root@http:~# resize2fs /dev/mapper/VolumGroup2-LV30GB
resize2fs 1.41.12 (17-May-2010)
El sistema de fitxers a /dev/mapper/VolumGroup2-LV30GB està muntat a /backup; cal un canvi de mida en línia
old desc_blocks = 2, new_desc_blocks = 3
Canvi de mida en línia de /dev/mapper/VolumGroup2-LV30GB a 8912896 (4k) blocs.
El sistema de fitxers a /dev/mapper/VolumGroup2-LV30GB té ara una mida de 8912896 blocs.

En XFS seria: xfs_growfs /punto_montaje

Ya tenemos ampliado el LV

root@http:~# df -h
S. fitxers                                                      Mida En ús Lliure %Ãs Muntat a
/dev/mapper/pont-root                            322M  107M  199M  35% /
tmpfs                                                            125M     0  125M   0% /lib/init/rw
udev                                                              120M  120K  120M   1% /dev
tmpfs                                                             125M     0  125M   0% /dev/shm
/dev/sda1                                                     228M   15M  202M   7% /boot
/dev/mapper/pont-home                           2,7G   78M  2,5G   3% /home
/dev/mapper/pont-tmp                           225M  6,1M  208M   3% /tmp
/dev/mapper/pont-usr                               2,7G  495M  2,1G  20% /usr
/dev/mapper/pont-var                               1,4G  935M  337M  74% /var
/dev/mapper/VolumGroup2-LV30GB 34G  177M   32G   1% /backup

 

Agregar un disco al VolumGroup

Primero detectamos el nuevo disco y creamos el soporte a VolumGroup:

pvcreate /dev/hdb1


Luego ampliamos el VolumGroup

vgextend grupo_volumen /dev/hdb1

 


Mas información en: http://www.tldp.org/HOWTO/LVM-HOWTO/