En esta ocacion veremos como manejar Modulos del Kernel sin necesidad de compilar el Kernel ,
en algunos casos ( no se si actualmente se haga por que ya no lo he hecho ) al instalar algunos programas como VMWARE, era necesario recompilar un Kernel , para agregar los modulos .
Cuando el Sistema operativo Linux inicia, lee el archivo /etc/rc.sysinit . el cual es el encargado de leer los modulos configurados al Kernel . este archivo no lo editaremos.
También contamos con el archivo /etc/modeprove.conf , el cual contiene los ALIAS de los modulos
===========================
alias scsi_hostadapter ata_piix
alias snd-card-0 snd-intel8x0
options snd-card-0 index=0
options snd-intel8x0 index=0
remove snd-intel8x0 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0
alias eth0 pcnet32
==========================
Los Alias estandar del sistema esta en el directorio /etc/modeprobe.d
==========================
-rw-r--r-- 1 root root 810 Sep 27 2009 blacklist
-rw-r--r-- 1 root root 833 Sep 3 2009 blacklist-compat
-rw-r--r-- 1 root root 83 Mar 17 2010 blacklist-firewire
-rw-r--r-- 1 root root 6111 Sep 3 2009 modprobe.conf.dist
=========================
el archivo modprobe.conf.dist incluye una gran cantidad de alias estandar para el sistema . que seran cargdos automaticamente , a difierencia de los archivos blacklist que no son cargado automaticamente.
Hagamos un ejemplo
el comando lsmode , nos sirve para listar los modulos que han sido cargados al kernel
# lsmod
===========================
Module Size Used by
pcnet32 35269 0
autofs4 29253 3
ipv6 267617 24
xfrm_nalgo 13381 1 ipv6
crypto_api 12609 1 xfrm_nalgo
hidp 23105 2
.
.
.
=====================================
para ver un ejemplo claro , removeremos un modulo existente cargado al kernel con el comando rmmod
# rmmod pcnet32
# lsmod
===========================
Module Size Used by
autofs4 29253 3
ipv6 267617 24
xfrm_nalgo 13381 1 ipv6
crypto_api 12609 1 xfrm_nalgo
hidp 23105 2
.
.
.
=====================================
# modeprobe pcnet32
# lsmod
===========================
Module Size Used by
pcnet32 35269 0
autofs4 29253 3
ipv6 267617 24
xfrm_nalgo 13381 1 ipv6
crypto_api 12609 1 xfrm_nalgo
hidp 23105 2
.
.
.
=====================================
los modulos son lehidos del directorio cd /lib/modules/`uname -r` donde el uname -r es la version del kernel actuamente cargado
# cd /lib/modules/`uname -r`
# ls
=====================
build modules.dep modules.pcimap updates
extra modules.ieee1394map modules.seriomap weak-updates
kernel modules.inputmap modules.symbols
modules.alias modules.isapnpmap modules.usbmap
modules.ccwmap modules.ofmap source
=========================
existen módulos que dependen de otros , el comando depmod , regenera el archivo de módulos y dependencias , modules.dep .
# depmod -a
esta opción regenerara todas las dependencias .
existen también comando que nos ayudaran a localizar módulos por dispositivos:
# lsusb
despliega información sobre los dispositivos conectados al USb
# lspci
despliega información sobre los dispositivos conectados al PCI
# lspmcia
espliega información sobre los dispositivos conectados al pmcia
miércoles, 29 de septiembre de 2010
lunes, 29 de marzo de 2010
Network Support Services RHCE
En esta seccion veremos algunos temas importantes de como linux realiza la resolucion de nombres .
Basicamente trabaja utilizando los siguientes metodos
1. caching y salve dns
2. nsswitch.conf
3. host.conf
el orden de la búsqueda de un equipo depende del orden que se encuentre configurado en el archivo
nsswitch.conf, en las versiones mas nueva y host.conf en las versiones antiguas , veamos a lo que nos referimos .
=====nsswitch.conf========
#hosts: db files ldap nis dns
hosts: files dns
==========================
=====host.conf===========
order hosts,bind
========================
el orden determinado por default es verificar el archivo de hosts y posterior verificar la información en el dns . en el cual explicaremos mas adelante como configurar un dns cache.
==========hosts============
127.0.0.1 localhost.localdomain localhost
10.10.1.33 spectra.dominio spectra
10.10.1.6 mail534.dominio mail534
===========================
es importante no borrar la primer linea ya que múltiples servicios verifican esta información para funciona correctamente. Si el host solicitado no es encontrado en el archivo hosts, imendiatamente toma la segunda opcion configurada en el archivo nsswitch.conf, que por default es "dns" el cual es definido en el archivo /etc/resolv.conf
======== resolv.conf =====
nameserver 192.168.1.254
nameserver 192.168.1.253
==========================
Basicamente trabaja utilizando los siguientes metodos
1. caching y salve dns
2. nsswitch.conf
3. host.conf
el orden de la búsqueda de un equipo depende del orden que se encuentre configurado en el archivo
nsswitch.conf, en las versiones mas nueva y host.conf en las versiones antiguas , veamos a lo que nos referimos .
=====nsswitch.conf========
#hosts: db files ldap nis dns
hosts: files dns
==========================
=====host.conf===========
order hosts,bind
========================
el orden determinado por default es verificar el archivo de hosts y posterior verificar la información en el dns . en el cual explicaremos mas adelante como configurar un dns cache.
==========hosts============
127.0.0.1 localhost.localdomain localhost
10.10.1.33 spectra.dominio spectra
10.10.1.6 mail534.dominio mail534
===========================
es importante no borrar la primer linea ya que múltiples servicios verifican esta información para funciona correctamente. Si el host solicitado no es encontrado en el archivo hosts, imendiatamente toma la segunda opcion configurada en el archivo nsswitch.conf, que por default es "dns" el cual es definido en el archivo /etc/resolv.conf
======== resolv.conf =====
nameserver 192.168.1.254
nameserver 192.168.1.253
==========================
miércoles, 24 de marzo de 2010
Network Configuration and Security RHCE
Esta parte , es muy interesante ya que nos muestra la forma adecuada de configurar nuestras interfaces de red , veamos entonces .
el primer archivo importante en esta seccion es el /etc/hosts
en el cual agregaremos el nombre de nuestro nuevo sistema , y también agregaremos los hosts que se encuentran en nuestra red veamos un ejemplo
===============================
127.0.0.1 localhost.localdomain localhost
10.10.1.33 spectra.xxxxxxxxxx spectra
10.10.1.6 mail534.xxxxxxxxxx mail534
==============================
lo siguiente es definir el Fully Qualified Domain Name (FQDN) en el archivo /etc/sysconfig/network, veamos el ejemplo
============================
NETWORKING=yes
HOSTNAME=spectra.xxxxxxxxxx
==============================
lo siguiente es definir correctamente los parametros de red esto lo haremos /etc/sysconfig/network-scripts/ifcfg-ethX, para el caso de ip statica , el parámetro "USERCTL=no" indica que los usuarios podrán tener el control del dispositivo de red
=========================
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.10.1.255
HWADDR=00:1E:C9:28:CE:53
IPADDR=10.10.1.33
NETMASK=255.255.255.0
NETWORK=10.10.1.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=10.10.1.1
==========================
en el caso de ip dinámica quedara un archivo como el siguiente .
=======================
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
========================
el siguiente archivo a verificar es el /etc/resolv.conf en el cual colocaremos los dns .
=======================
search gateway.2wire.net
nameserver 10.10.1.254
=======================
reiniciamos el servicio de red
# serivice network restart
y verificamos la tabla de enrutamiento
#route -A inet6 -n //ipv6
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
agregamos la ruta correcta de la siguiente forma .
# route -A inet6 add default gw ipv6 //para ipv6
# route add default gw 10.10.1.1 eth0
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.10.1.1 0.0.0.0 UG 0 0 0 eth0
si requerimos que la ruta sea grabada podemos guárdala de la siguiente manera y al reiniciar se aplicara automáticamente
# echo 'default via 10.10.1.1 dev eth0' /etc/sysconfig/network-scripts/route-eth0
para configurar esto
teniendo listo esto , podemos permitir el forward en nuestro equipo editando el archivo /etc/sysctl.conf y cambiamos net.ipv4.ip_forward de 0 a 1 .
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
para realizar el mismo cambio pero de forma temporal hacemos lo siguiente
# echo "1" > /proc/sys/net/ipv4/ip_forward
ahora si queremos saver el trafico que corre en nuestro sistema podemos hacerlo utilizando herramientas como
# iptraf
# tcpdump
o podemos hacerlo analizando el archivo
# watch tail /proc/net/ip_conntrack
en la parte de seguridad veremos básico como podemos hacer funciona iptables .
para ver las reglas en iptables corremos el siguiente comando
# iptables -L
o podemos ver directamente el archivo de configuraciones
# more /etc/sysconfig/iptables
para facilitar la configuración de netfilter podemos utilizar el comando
# system-config-securitylevel-tui
en el caso de control de acceso por medio de tcpwrappers , como su nombre lo dice solo esta enfocado a conexiones tipo TCP , estas las podemos encontrar en /etc/hosts.deny y /etc/hosts.allow , en este caso debemos tener cuidado ya que primero es lehido el archivo allow y despues el deny, la cual su sintaxis es de la siguiente manera
Servicio:cliente:comando
ejemplo :
in.telnetd:10.10.1.2:twits /sbin/echo
el primer archivo importante en esta seccion es el /etc/hosts
en el cual agregaremos el nombre de nuestro nuevo sistema , y también agregaremos los hosts que se encuentran en nuestra red veamos un ejemplo
===============================
127.0.0.1 localhost.localdomain localhost
10.10.1.33 spectra.xxxxxxxxxx spectra
10.10.1.6 mail534.xxxxxxxxxx mail534
==============================
lo siguiente es definir el Fully Qualified Domain Name (FQDN) en el archivo /etc/sysconfig/network, veamos el ejemplo
============================
NETWORKING=yes
HOSTNAME=spectra.xxxxxxxxxx
==============================
lo siguiente es definir correctamente los parametros de red esto lo haremos /etc/sysconfig/network-scripts/ifcfg-ethX, para el caso de ip statica , el parámetro "USERCTL=no" indica que los usuarios podrán tener el control del dispositivo de red
=========================
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.10.1.255
HWADDR=00:1E:C9:28:CE:53
IPADDR=10.10.1.33
NETMASK=255.255.255.0
NETWORK=10.10.1.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=10.10.1.1
==========================
en el caso de ip dinámica quedara un archivo como el siguiente .
=======================
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
========================
el siguiente archivo a verificar es el /etc/resolv.conf en el cual colocaremos los dns .
=======================
search gateway.2wire.net
nameserver 10.10.1.254
=======================
reiniciamos el servicio de red
# serivice network restart
y verificamos la tabla de enrutamiento
#route -A inet6 -n //ipv6
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
agregamos la ruta correcta de la siguiente forma .
# route -A inet6 add default gw ipv6 //para ipv6
# route add default gw 10.10.1.1 eth0
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.10.1.1 0.0.0.0 UG 0 0 0 eth0
si requerimos que la ruta sea grabada podemos guárdala de la siguiente manera y al reiniciar se aplicara automáticamente
# echo 'default via 10.10.1.1 dev eth0' /etc/sysconfig/network-scripts/route-eth0
para configurar esto
teniendo listo esto , podemos permitir el forward en nuestro equipo editando el archivo /etc/sysctl.conf y cambiamos net.ipv4.ip_forward de 0 a 1 .
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
para realizar el mismo cambio pero de forma temporal hacemos lo siguiente
# echo "1" > /proc/sys/net/ipv4/ip_forward
ahora si queremos saver el trafico que corre en nuestro sistema podemos hacerlo utilizando herramientas como
# iptraf
# tcpdump
o podemos hacerlo analizando el archivo
# watch tail /proc/net/ip_conntrack
en la parte de seguridad veremos básico como podemos hacer funciona iptables .
para ver las reglas en iptables corremos el siguiente comando
# iptables -L
o podemos ver directamente el archivo de configuraciones
# more /etc/sysconfig/iptables
para facilitar la configuración de netfilter podemos utilizar el comando
# system-config-securitylevel-tui
en el caso de control de acceso por medio de tcpwrappers , como su nombre lo dice solo esta enfocado a conexiones tipo TCP , estas las podemos encontrar en /etc/hosts.deny y /etc/hosts.allow , en este caso debemos tener cuidado ya que primero es lehido el archivo allow y despues el deny, la cual su sintaxis es de la siguiente manera
Servicio:cliente:comando
ejemplo :
in.telnetd:10.10.1.2:twits /sbin/echo
System Service Analysis RHCE
Básicamente tenemos los siguiente , al iniciar nuestro sistema , después de descomprimir el kernel, cargas los módulos y montar el sistema de archivos sigue arrancar los servicios , dependiendo el nivel de corrida , son los servicios que serán ejecutados , los niveles de corrida 0 y 6 , corresponden al shutdown y restart, veamos como funciona
Iniciamos con el archivo inittab
============================
id:3:initdefault: # en esta linea indicamos que nivel de corrida sera
# inicializacion del sistema
si::sysinit:/etc/rc.d/rc.sysinit
# estas lineas indican que servicios serán leídos en los niveles de corrida de inicio , por
# ejemplo en el nivel de corrida 3 sera cargado el contenido del folder /etc/rc3.d/
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# esta line indica que accion tomara al presinar las teclas ctr + lalt + del
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# esta linea ejecuta el shutdown cuando el UPS indica que ya esta llegando al punto de fallo
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# cancela la accion de apagado .
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# enciende las terminales disponibles para linea de comando de la f1 al f6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# indica que la terminal 5 es para el entorno grafico
x:5:respawn:/etc/X11/prefdm -nodaemon
=================================
veamos el folder /etc.rc0.d/
=================
lrwxrwxrwx 1 root root 19 Feb 15 2008 K99readahead -> ../init.d/readahead
lrwxrwxrwx 1 root root 25 Feb 15 2008 K99readahead_early -> ../init.d/readahead_early
lrwxrwxrwx 1 root root 17 Sep 26 13:52 S00killall -> ../init.d/killall
lrwxrwxrwx 1 root root 14 Sep 26 13:52 S01halt -> ../init.d/halt
================
como vemos hay servicios que comienzan con K y otros con S , esto significa que los K no seran cargados y los S si seran ejecutados, en el nivel de corrida 0, vemos que corre el Killall y el halt , que son los procesos para apagar el sistema , lo mismo ocurren con los demas folders .
ahora podemos consultar los servicios que se ejecutaran al nivel de corrida 3
# ntsysv --level 3
si queremos ver en que niveles de corrida esta algun servicio ejecutamos lo siguiente
# chkconfig --list smb
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
si queremos cambiar las configuración en algún nivel de corrida podemos utilizar ambas herramientas
# # chkconfig smb off --level 3
# chkconfig --list smb
smb 0:off 1:off 2:on 3:off 4:on 5:on 6:off
Si requerimos saber el estatus actual de algún servicio , podemos hacerlo de la siguiente manera
# service --status-all
o podemos hacerlo de algun servicio en especifico
# service smb status
si requerimos que algún script corra al iniciar el sistema podemos colocarlo dentro del archivo
/etc/rc.local, podemos utilizar el & para enviar la ejecucion a back ground , y pueden ser llamadas por los comando fg y bg y el respectivo job.
un ejemplo podria ser
# ejemplo.sh &
precionamos ctrl + c
hacemos la busqueda del PID
# ps axu | grep ejemplo.sh
# fg 44527
y tendremos de nuevo nuestra ejecución.
estando en el tema de ejecuciones de códigos , podemos hacer que una aplicación se ejecute al momento que un usuario se logue, esto lo podemos lograr ingresando una linea de código en el archivo /etc/profile , si es especifica la aplicación para un usuario esto lo logramos editando el archiv ~/.bash_profile .
espero les sirva la informacion que comparto hoy con ud
Iniciamos con el archivo inittab
============================
id:3:initdefault: # en esta linea indicamos que nivel de corrida sera
# inicializacion del sistema
si::sysinit:/etc/rc.d/rc.sysinit
# estas lineas indican que servicios serán leídos en los niveles de corrida de inicio , por
# ejemplo en el nivel de corrida 3 sera cargado el contenido del folder /etc/rc3.d/
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# esta line indica que accion tomara al presinar las teclas ctr + lalt + del
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# esta linea ejecuta el shutdown cuando el UPS indica que ya esta llegando al punto de fallo
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# cancela la accion de apagado .
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# enciende las terminales disponibles para linea de comando de la f1 al f6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# indica que la terminal 5 es para el entorno grafico
x:5:respawn:/etc/X11/prefdm -nodaemon
=================================
veamos el folder /etc.rc0.d/
=================
lrwxrwxrwx 1 root root 19 Feb 15 2008 K99readahead -> ../init.d/readahead
lrwxrwxrwx 1 root root 25 Feb 15 2008 K99readahead_early -> ../init.d/readahead_early
lrwxrwxrwx 1 root root 17 Sep 26 13:52 S00killall -> ../init.d/killall
lrwxrwxrwx 1 root root 14 Sep 26 13:52 S01halt -> ../init.d/halt
================
como vemos hay servicios que comienzan con K y otros con S , esto significa que los K no seran cargados y los S si seran ejecutados, en el nivel de corrida 0, vemos que corre el Killall y el halt , que son los procesos para apagar el sistema , lo mismo ocurren con los demas folders .
ahora podemos consultar los servicios que se ejecutaran al nivel de corrida 3
# ntsysv --level 3
si queremos ver en que niveles de corrida esta algun servicio ejecutamos lo siguiente
# chkconfig --list smb
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
si queremos cambiar las configuración en algún nivel de corrida podemos utilizar ambas herramientas
# # chkconfig smb off --level 3
# chkconfig --list smb
smb 0:off 1:off 2:on 3:off 4:on 5:on 6:off
Si requerimos saber el estatus actual de algún servicio , podemos hacerlo de la siguiente manera
# service --status-all
o podemos hacerlo de algun servicio en especifico
# service smb status
si requerimos que algún script corra al iniciar el sistema podemos colocarlo dentro del archivo
/etc/rc.local, podemos utilizar el & para enviar la ejecucion a back ground , y pueden ser llamadas por los comando fg y bg y el respectivo job.
un ejemplo podria ser
# ejemplo.sh &
precionamos ctrl + c
hacemos la busqueda del PID
# ps axu | grep ejemplo.sh
# fg 44527
y tendremos de nuevo nuestra ejecución.
estando en el tema de ejecuciones de códigos , podemos hacer que una aplicación se ejecute al momento que un usuario se logue, esto lo podemos lograr ingresando una linea de código en el archivo /etc/profile , si es especifica la aplicación para un usuario esto lo logramos editando el archiv ~/.bash_profile .
espero les sirva la informacion que comparto hoy con ud
martes, 23 de marzo de 2010
System Monitoring and Fault Analysis RHCE
En esta capsula analizaremos algunas herramientas utilies para detectar fallas en nuestro sistema y como mitigarlas . comensaremos con el comando TOP ,
El comando "top" permite ver los procesos que estan ejecutandose en nuestro sistema en tiempo real , veamos un ejemplo :
==========================
top - 13:43:49 up 11 days, 22:59, 2 users, load average: 1.34, 1.36, 1.37
Tasks: 167 total, 1 running, 166 sleeping, 0 stopped, 0 zombie
Cpu(s): 35.4%us, 15.0%sy, 0.1%ni, 49.4%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5057172k total, 4458716k used, 598456k free, 242416k buffers
Swap: 5144568k total, 84k used, 5144484k free, 2002092k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22362 ivan 16 0 615m 536m 14m S 38.6 10.9 11451:17 VirtualBox
29701 ivan 15 0 2332 960 708 R 1.9 0.0 0:00.02 top
1 root 15 0 2072 628 536 S 0.0 0.0 0:06.24 init
2 root RT -5 0 0 0 S 0.0 0.0 0:04.90 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:04.69 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.23 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:21.91 events/0
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.41 events/1
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
11 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.44 kblockd/0
16 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 kblockd/1
17 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
18 root 16 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1
==============================================
el cual muestra información importante como es el PID del proceso (PID), el dueno del proceso(USER), el comando ejecutado(COMMAND), la prioridad (PR), el valor nice (NI) entre otros
para obtener ayuda , utilizamos la letra 'h' la cual nos mostrara que comando podemos utulizar para control de nuestros procesos. tambien nos muestra la actividad que esta teniendo nuestro sistema en cada uno de los procesos ejecutandose, informacion del uso de la memoria
existe el comando ps , que muestras los procesos que estan corriendo en nuestro sistema al igual que top , la diferencia es que nos muestra la informacion al momento que se solicito y no muestra el comportamiento del mismo a medida que pasa el tiempo . ejemplo
======================
# ps axu | grep ivan
root 1808 0.0 0.0 13256 3388 ? Ss 11:39 0:00 sshd: ivan [priv]
ivan 1813 0.0 0.0 13356 2280 ? S 11:39 0:00 sshd: ivan@pts/0
ivan 1814 0.0 0.0 4540 1460 pts/0 Ss 11:39 0:00 -bash
====================
tenemos el comando pstree que nos muestra la información en forma de árbol, la cual podemos identificar el proceso padre de sus ramificaciones .
===================
# pstree | grep VirtualBox
init-+-VBoxSVC-+-VirtualBox---15*[{VirtualBox}]
|-xterm---bash---VirtualBox-+-VBoxXPCOMIPCD
| `-7*[{VirtualBox}]
===================
tenemos el comando free , que muestra la actividad de nuestra memoria en nuestro equipo . ejemplo:
======================
# free -m
total used free shared buffers cached
Mem: 4938 4412 525 0 237 1993
-/+ buffers/cache: 2182 2756
Swap: 5023 0 5023
=====================
podemos utilizar el comando watch, para mantener informacion en tiempo real
tenemos el comando vmstats, que muestra una radiografia del performance del sistema ejemplo:
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 84 555260 242756 2041624 0 0 6 55 14 17 35 15 49 0 0
tememos el comando iostat que da una informacion basica sobre el estado del cpu y disco duros
=================
# iostat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
avg-cpu: %user %nice %system %iowait %steal %idle
35.43 0.07 15.01 0.07 0.00 49.43
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 9.17 24.61 219.40 25477936 227129950
sda1 0.00 0.01 0.00 11774 38
sda2 9.17 24.60 219.40 25465970 227129912
dm-0 27.64 24.60 219.40 25464858 227129720
dm-1 0.00 0.00 0.00 648 192
==================
tenemos el comando mpstat que da un pequeño resumen de la informacion que arroja iostats
=================
# mpstat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
02:20:46 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:20:46 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05
# mpstat -P ALL
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
02:21:40 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:21:40 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05
02:21:40 PM 0 34.78 0.07 14.38 0.10 0.04 0.02 0.00 50.61 1025.93
02:21:40 PM 1 36.08 0.06 15.58 0.04 0.00 0.01 0.00 48.24 0.12
=======================
el comando sar, produce infomracion general de nuestro sistema , esta informacion la recolecta de /var/log/sa , con ayuda del comando sadc, este comando es interesante, ya que muestra un histrorial de comportamiento del sistema ejemplo :
=======================
01:50:01 PM all 36.96 0.38 15.52 0.02 0.00 47.11
02:00:01 PM all 37.95 0.00 15.53 0.02 0.00 46.50
02:10:01 PM all 40.61 0.00 15.73 0.13 0.00 43.52
02:20:01 PM all 36.31 0.00 15.77 0.03 0.00 47.89
Average: all 36.79 0.07 15.49 0.02 0.00 47.63
========================
mucha de esta información puede ser vista de manera separa en el directorio /proc, el directorio /proc contiene la información de todos nuestros dispositivos instalados en el sistema y su estatus en tiempo real.
existen herramientas muy poderosas que nos pueden ayudar a analizar esta información de forma gráfica como lo es cacti, mrtg, entre otros .
detectando problemas en nuestro sistema debemos revisar nuestros logs , el sistema de logeo que es syslog , su archivo de configuracion se encuentra en /etc/syslog.conf
=============
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;local0.none;local1.none;auth.none;mail.none;news.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
#
# INN
#
news.=crit /var/log/news/news.crit
================================
en este archivo se configura la granuralidad de los logs en el sistema y los directorios que se utilizaran para el fin, asi como los tiempos de almacenista y rotación de los archivos .
El comando "top" permite ver los procesos que estan ejecutandose en nuestro sistema en tiempo real , veamos un ejemplo :
==========================
top - 13:43:49 up 11 days, 22:59, 2 users, load average: 1.34, 1.36, 1.37
Tasks: 167 total, 1 running, 166 sleeping, 0 stopped, 0 zombie
Cpu(s): 35.4%us, 15.0%sy, 0.1%ni, 49.4%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5057172k total, 4458716k used, 598456k free, 242416k buffers
Swap: 5144568k total, 84k used, 5144484k free, 2002092k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22362 ivan 16 0 615m 536m 14m S 38.6 10.9 11451:17 VirtualBox
29701 ivan 15 0 2332 960 708 R 1.9 0.0 0:00.02 top
1 root 15 0 2072 628 536 S 0.0 0.0 0:06.24 init
2 root RT -5 0 0 0 S 0.0 0.0 0:04.90 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:04.69 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.23 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:21.91 events/0
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.41 events/1
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
11 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.44 kblockd/0
16 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 kblockd/1
17 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
18 root 16 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1
==============================================
el cual muestra información importante como es el PID del proceso (PID), el dueno del proceso(USER), el comando ejecutado(COMMAND), la prioridad (PR), el valor nice (NI) entre otros
para obtener ayuda , utilizamos la letra 'h' la cual nos mostrara que comando podemos utulizar para control de nuestros procesos. tambien nos muestra la actividad que esta teniendo nuestro sistema en cada uno de los procesos ejecutandose, informacion del uso de la memoria
existe el comando ps , que muestras los procesos que estan corriendo en nuestro sistema al igual que top , la diferencia es que nos muestra la informacion al momento que se solicito y no muestra el comportamiento del mismo a medida que pasa el tiempo . ejemplo
======================
# ps axu | grep ivan
root 1808 0.0 0.0 13256 3388 ? Ss 11:39 0:00 sshd: ivan [priv]
ivan 1813 0.0 0.0 13356 2280 ? S 11:39 0:00 sshd: ivan@pts/0
ivan 1814 0.0 0.0 4540 1460 pts/0 Ss 11:39 0:00 -bash
====================
tenemos el comando pstree que nos muestra la información en forma de árbol, la cual podemos identificar el proceso padre de sus ramificaciones .
===================
# pstree | grep VirtualBox
init-+-VBoxSVC-+-VirtualBox---15*[{VirtualBox}]
|-xterm---bash---VirtualBox-+-VBoxXPCOMIPCD
| `-7*[{VirtualBox}]
===================
tenemos el comando free , que muestra la actividad de nuestra memoria en nuestro equipo . ejemplo:
======================
# free -m
total used free shared buffers cached
Mem: 4938 4412 525 0 237 1993
-/+ buffers/cache: 2182 2756
Swap: 5023 0 5023
=====================
podemos utilizar el comando watch, para mantener informacion en tiempo real
tenemos el comando vmstats, que muestra una radiografia del performance del sistema ejemplo:
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 84 555260 242756 2041624 0 0 6 55 14 17 35 15 49 0 0
tememos el comando iostat que da una informacion basica sobre el estado del cpu y disco duros
=================
# iostat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
avg-cpu: %user %nice %system %iowait %steal %idle
35.43 0.07 15.01 0.07 0.00 49.43
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 9.17 24.61 219.40 25477936 227129950
sda1 0.00 0.01 0.00 11774 38
sda2 9.17 24.60 219.40 25465970 227129912
dm-0 27.64 24.60 219.40 25464858 227129720
dm-1 0.00 0.00 0.00 648 192
==================
tenemos el comando mpstat que da un pequeño resumen de la informacion que arroja iostats
=================
# mpstat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
02:20:46 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:20:46 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05
# mpstat -P ALL
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010
02:21:40 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:21:40 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05
02:21:40 PM 0 34.78 0.07 14.38 0.10 0.04 0.02 0.00 50.61 1025.93
02:21:40 PM 1 36.08 0.06 15.58 0.04 0.00 0.01 0.00 48.24 0.12
=======================
el comando sar, produce infomracion general de nuestro sistema , esta informacion la recolecta de /var/log/sa , con ayuda del comando sadc, este comando es interesante, ya que muestra un histrorial de comportamiento del sistema ejemplo :
=======================
01:50:01 PM all 36.96 0.38 15.52 0.02 0.00 47.11
02:00:01 PM all 37.95 0.00 15.53 0.02 0.00 46.50
02:10:01 PM all 40.61 0.00 15.73 0.13 0.00 43.52
02:20:01 PM all 36.31 0.00 15.77 0.03 0.00 47.89
Average: all 36.79 0.07 15.49 0.02 0.00 47.63
========================
mucha de esta información puede ser vista de manera separa en el directorio /proc, el directorio /proc contiene la información de todos nuestros dispositivos instalados en el sistema y su estatus en tiempo real.
existen herramientas muy poderosas que nos pueden ayudar a analizar esta información de forma gráfica como lo es cacti, mrtg, entre otros .
detectando problemas en nuestro sistema debemos revisar nuestros logs , el sistema de logeo que es syslog , su archivo de configuracion se encuentra en /etc/syslog.conf
=============
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;local0.none;local1.none;auth.none;mail.none;news.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
#
# INN
#
news.=crit /var/log/news/news.crit
================================
en este archivo se configura la granuralidad de los logs en el sistema y los directorios que se utilizaran para el fin, asi como los tiempos de almacenista y rotación de los archivos .
domingo, 14 de marzo de 2010
Que hacer cuando el superblock falla RHCT RHCE
Ok, este error no es muy común, pero algunos de nosotros nos ha dado este problema , el cual no nos permite montar particiones. En particiones con sistema de archivos EXT2/3 almacenan el superblock en diferentes partes por lo cual es posible recuperarlo .
Para hacer esto mas seguro requeriremos entrar a nuestro sistema en modo de rescate, usando el cd 1 de instalacion.
# boot: linux rescue
esto parecera como si estubieramos instalando el sistema desde 0 pero notaremos que en titulo superior izquierdo dira Red Hat Rescue, cuando nos de el prompt, o podemos hacerlo en el sistema en init3 desmontando apropiadamente la particion . para este caso lo haremos con el sistema funcionando. ejecutaremos el siguiente comando
# dumpe2fs /dev/hda2 | grep superblock
=======================
Primary superblock at 0, Group descriptors at 1-6
Backup superblock at 43879, Group descriptors at 43879-43884
Backup superblock at 99415, Group descriptors at 99415-99421
======================
siguiente paso, revisar el superblock y repararlo utilizando un superblock de respaldo.
# fsck -b 43879 /dev/hda2
finalmente al terminar de hacer la reparación intentamos montar la partición .
mount /dev/hda2 /mnt
podemos hacerlo directamente si usar fsck
# mount sb=43879 /dev/hda2 /mnt
tenemos que hacer un respaldo inmediato ya que este error puede ser síntoma de falla de hardware .
Para hacer esto mas seguro requeriremos entrar a nuestro sistema en modo de rescate, usando el cd 1 de instalacion.
# boot: linux rescue
esto parecera como si estubieramos instalando el sistema desde 0 pero notaremos que en titulo superior izquierdo dira Red Hat Rescue, cuando nos de el prompt, o podemos hacerlo en el sistema en init3 desmontando apropiadamente la particion . para este caso lo haremos con el sistema funcionando. ejecutaremos el siguiente comando
# dumpe2fs /dev/hda2 | grep superblock
=======================
Primary superblock at 0, Group descriptors at 1-6
Backup superblock at 43879, Group descriptors at 43879-43884
Backup superblock at 99415, Group descriptors at 99415-99421
======================
siguiente paso, revisar el superblock y repararlo utilizando un superblock de respaldo.
# fsck -b 43879 /dev/hda2
finalmente al terminar de hacer la reparación intentamos montar la partición .
mount /dev/hda2 /mnt
podemos hacerlo directamente si usar fsck
# mount sb=43879 /dev/hda2 /mnt
tenemos que hacer un respaldo inmediato ya que este error puede ser síntoma de falla de hardware .
viernes, 12 de marzo de 2010
Notas Curso RHCT
Otro punto interesante es el archivo anaconda-ks.cfg , ese archivo se guarda automáticamente al instalar nuestro sistema, el cual contiene información relacionada con todas las característica de instalación del sistema, esto nos ayudara cuando hagamos una instalación de sistema de forma no asistida . el ejemplo puede ser el siguiente .
============
# Kickstart file automatically generated by anaconda.
install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$dxW48WPH$xBBjUMrxsAHcx9/QE.xvQ1
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc America/Tijuana
bootloader --location=mbr --driveorder=hda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux --drives=hda
#part /boot --fstype ext3 --size=100 --ondisk=hda
#part pv.2 --size=0 --grow --ondisk=hda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@editors
@text-internet
@legacy-network-server
@dns-server
@dialup
@core
@base
@ftp-server
@network-server
@web-server
@smb-server
@mail-server
@server-cfg
@news-server
device-mapper-multipath
============
# Kickstart file automatically generated by anaconda.
install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$dxW48WPH$xBBjUMrxsAHcx9/QE.xvQ1
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc America/Tijuana
bootloader --location=mbr --driveorder=hda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux --drives=hda
#part /boot --fstype ext3 --size=100 --ondisk=hda
#part pv.2 --size=0 --grow --ondisk=hda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@editors
@text-internet
@legacy-network-server
@dns-server
@dialup
@core
@base
@ftp-server
@network-server
@web-server
@smb-server
@mail-server
@server-cfg
@news-server
device-mapper-multipath
=========================
este archivo podemos utilizarlo en nuestra instalación, al colocar nuestro cd de instalación y seleccionar el tipo instalación hacemos lo siguiente
boot: linux ks=cdrom:/anaconda-ks.cfg # en caso de cdrom
boot: linux ks=hd:hda1:/anaconda-ks.cfg # caso disc duro
boot: linux ks=hd:fd0:/anaconda-ks.cfg #floppy
boot: linux ks=hd::/anaconda-ks.cfg
También tenemos el caso de problemas al iniciar el sistema para lo cual requeriremos utilizar el disco 1 de instalación, al bootear debemos colocar lo siguiente
boot: linux rescue
comenzara a hacer el proceso de boot como si fuera una instalación, hasta el punto donde pregunta sobre el montaje de las particiones .
los casos mas comunes de errores al boot , son
1. problemas con el archivo /etc/fstab
2. problemas con el archivo vi /etc/inittab
3. problemas con algun dispocitivo instalado.
4. problemas con el disco duro .
5. servicios mal configurados
6. problemas con el archivo /etc/rc.sysinit
7. Errores en grub
ok para los casos de disco duro y grub podemos hacer lo siguiente .
Disco duro , entrar en rescue mode y ejecutar el comando
# e2fsck -f /dev/hdXX
en el caso del grub , tenemos algun problema al boot podemos hacer lo siguiente ..
al iniciar el grub, en la pantalla donde muestra los kernels de boot , presionamos la tecla C
nos enviara un prompt como el siguiente
grub>
ahora buscaremos la diretiva de root .
grub> root (hd0,0)
grub> root (hd0,1)
...
grub> root (hdx,x)
en esta parte debemos asegurarnos que sea el top level en boot directory no en el directorio raiz u otro directorio , dependiendo de tu sistema de archivos podemos identificarlo.
el siguiente paso es identificar el kernel
grub> kernel /vmlinuz-2.6.18-128.el5 ro root =/dev/VolGroup00/LogVol00
en red hat el kernel comprimido siempre comienza con vm , el ro significa que solo sera read only , y colocamos la ruta del volumen de montaje . ( podemos verla en el fstab o en el /dev)
siguiente paso es identificar el init ram disk en el proceso del boot este podemos identificarlo ya que inicia con init y finaliza con .img
grub> initrd /initrd-2.6.18-128.el5.img
debemos asegurarnos que sea la misma versión del kernel
finalizaos como
grub> boot
# e2fsck -f /dev/hdXX
en el caso del grub , tenemos algun problema al boot podemos hacer lo siguiente ..
al iniciar el grub, en la pantalla donde muestra los kernels de boot , presionamos la tecla C
nos enviara un prompt como el siguiente
grub>
ahora buscaremos la diretiva de root .
grub> root (hd0,0)
grub> root (hd0,1)
...
grub> root (hdx,x)
en esta parte debemos asegurarnos que sea el top level en boot directory no en el directorio raiz u otro directorio , dependiendo de tu sistema de archivos podemos identificarlo.
el siguiente paso es identificar el kernel
grub> kernel /vmlinuz-2.6.18-128.el5 ro root =/dev/VolGroup00/LogVol00
en red hat el kernel comprimido siempre comienza con vm , el ro significa que solo sera read only , y colocamos la ruta del volumen de montaje . ( podemos verla en el fstab o en el /dev)
siguiente paso es identificar el init ram disk en el proceso del boot este podemos identificarlo ya que inicia con init y finaliza con .img
grub> initrd /initrd-2.6.18-128.el5.img
debemos asegurarnos que sea la misma versión del kernel
finalizaos como
grub> boot
Suscribirse a:
Entradas (Atom)