miércoles, 29 de febrero de 2012

Errores en disco en Solaris

Hoy voy a postear un par detruquillos fáciles de recordar y que vale la pena tenerlo a mano cuando buscas errores en los discos de Solaris (yo lo utilizo bajo ZFS, es posible que bajo otros formatos funcionen algunos de ellos). Ahí van!

format
nos devuelve todos los discos (o LUNs) disponibles en el servidor. Para salir, hay que acceder a alguno de los discos y hacer 'quit' desde ahí.

Server # format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0
       1. c0t1d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@1,0
       2. c3t600601606FC01D00DC76C8F975B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00dc76c8f975b6df11
       3. c3t600601606FC01D00E0B37FE672B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e0b37fe672b6df11
       4. c3t600601606FC01D00E4F142FA72B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e4f142fa72b6df11
       5. c3t600601606FC01D0098A820F372B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d0098a820f372b6df11
Specify disk (enter its number): 5
selecting c3t600601606FC01D0098A820F372B6DF11d0
[disk formatted]


FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !     - execute , then return
        quit
format
> quit
Server #



iostat -En
nos devuelve datos y estadísticas de error de los discos y LUNs del servidor (nombre, tamaño, errores, tipo de errores, etc)


Server # iostat -En
c0t1d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3701 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3702 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t4d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: MATSHITA Product: DVD-RAM UJ875AS  Revision: 1.00 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c3t600601606FC01D00E4F142FA72B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D0098A820F372B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00E0B37FE672B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00DC76C8F975B6DF11d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 1 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0



zpool iostat -v DISCO
donde DISCO es el pool en el que está montado nos devuelve información de cómo está montado ese recurso. Puede ser un mirror o que esté montado sobre una LUN; en cualquier caso te devuelve la información sobre el recurso.


Server # zpool iostat -v root
                 capacity     operations    bandwidth
pool           used  avail   read  write   read  write
------------  -----  -----  -----  -----  -----  -----
root          67,5G  68,5G      1      5   177K   174K
  mirror      67,5G  68,5G      1      5   177K   174K
    c0t0d0s0      -      -      0      3  89,5K   174K
    c0t1d0s0      -      -      0      3  89,6K   174K
------------  -----  -----  -----  -----  -----  -----

Server # zpool iostat -v flashbackpool
                                           capacity     operations    bandwidth
pool                                     used  avail   read  write   read  write
--------------------------------------  -----  -----  -----  -----  -----  -----
flashbackpool                           27,5G   172G      1      3   199K   136K
  c3t600601606FC01D00E4F142FA72B6DF11d0  27,5G   172G      1      3   199K   136K
--------------------------------------  -----  -----  -----  -----  -----  -----

Server # 
Server # 


miércoles, 1 de febrero de 2012

Activando Server-Status en Apache

Parece una tontería, pero es una herramienta bastante útil a la hora de detectar cuellos de botella en un servidor apache. Últimamente me ha sido decisiva a la hora de detectar dos de estos casos en poco tiempo, y aunque su activación es un momento, muchos administradores no lo tienen en cuenta.

También es verdad que hay otros módulos, del propio apache o de terceros, pero este, por su simplicidad, facilidad a la hora de instalar (viene prácticamente por defecto, sólo hay que configurarlo) y por su utilidad, debería estar en cualquier checklist de instalación.

Lo primero es instalar el paquete apache; dependiendo de tu distribución se hace de una manera u otra (apt-get install apache2, aptitude apache2, yum install http, etc). Yo seguiré a partir del momento en que vuestro Apache funciona correctamente.

Antes que nada, debéis confirmar si la directiva

ExtendedStatus

está activada o no; en caso de no estarlo, la activáis (descomentándola o poniéndola en On). En caso de estar activad, pues ya la tenemos. Si no la encontráis, podéis dar de alta la línea 
ExtendedStatus On

en el archivo de configuración apache2.conf o httpd.conf, por ejemplo (o en cualquier archivo de configuración que vaya a leer el apache al levantar).

El siguiente paso es configurar el manejador. Es posible que vuestra distro ya lo tenga activado sin configurar. En el caso de distribuciones tipo Debian, en el directorio mods-available encuentro la configuración para este módulo en status.conf. Si edito me encuentro que la configuración por defecto es:
 
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
#

    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
    Allow from 192.168.253.0/24


# Keep track of extended status information for each request
ExtendedStatus On

# Determine if mod_status displays the first 63 characters of a request or
# the last 63, assuming the request itself is greater than 63 chars.
# Default: Off
#SeeRequestTail On



    # Show Proxy LoadBalancer status in mod_status
    ProxyStatus On




Yo me voy a centrar en la parte del handler, el manejadro que comentaba antes:
     SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
#    Allow from 192.168.1.0/24




Aquí podremos cambiar la manera de llamar al manejador; por defecto es '/server-status', pero por seguridad está bien que lo cambies, más que nada porque esta directriz mal configurada puede estar disponible públicamente, y no interesa. Con llamarlo '/config-status' o '/server-stat' o algo parecido ya es suficiente.
La siguente cosa en que nos fijamos en los usuarios que se permiten; sólo permite acceso desde localhost, pero si descomentamos el último 'Allow' podremos acceder también desde toda nuestra red privada 192.168.1.0/24 (o desde la red o IPs que le pongamos, aquí es donde configuramos el acceso)

Y ya está. Hacemos una comprobación de la configuración con
apache2ctl configtest

y cuando nos dé el OK, hacemos un reload para cargar los cambios. Y comprobamos que tengamos acceso al server-status de la máquina desde un navegador:
http://nombredelservidor/server-status