Bienvenidos

Todos estos pasos descriptos fueron probados en ambientes productivos

lunes, 28 de marzo de 2016

Zfs consume mucha memoria

En los monitoreos , con herramientas externas al S.O. detectaron que el equipo esta consumiendo un total de 96% de la memoria del equipo.
Los administradores de las aplicaciones, no encuentran con los comandos habituales, que haya un consumo excesivo de memoria y mucho menos que aplicacion es la que la esta utilizando.
El vmstat , prstat  no muestran valores significativos ni preocupantes.
Aca es donde hay que mirar un poco mas a fondo.
Para eso utilizo el comando mdb donde observo que el ZFS esta tomando el 67 % de la memoria del equipo
# mdb -kw
Loading modules: [ unix genunix dtrace specfs zfs ldc ip hook neti sockfs dls sctp arp usba fctl nca lofs md cpc random crypto fcip logindmux ptm ufs sppp nfs ipc ]
> ::memstat
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     821817              6420   10%
ZFS File Data             5611890             43842   67%
Anon                      1633674             12763   19%
Exec and libs                9035                70    0%
Page cache                   2320                18    0%
Free (cachelist)             3400                26    0%
Free (freelist)            306472              2394    4%
Total                    8388608             65536

root #

Aca, la explicacion :

ZFS cache data o ZFS File Data ( como vemos en la salida del mdb) es donde ZFS almacena ( cachea ) todos los storage pools activos. Zfs crece y consume memoria al inicio del equipo.
Cuando una nueva aplicacion se inicia, necesita memoria, ZFS devuelve de la que tomo.
Hasta el momento, no se ve cual es el problema. Pero ....algunas aplicaciones que cuando inician chequean la freemem, como por ejemplo java,  van a ver que hay poca memoria en la freelist y no van a iniciar.

Aca, la solucion :

Existe un parametro a modificar en el /etc/system , que se le indica al zfs que tome
un maximo X de memoria al inicio, este parametro es zfs:zfs_arc_max .
El valor a asignarle varia dependiendo la cantidad de pooles de zfs que tengamos y la cantidad de memoria.
En mi caso, que tengo solo dos pooles, y 65 gb de ram, opte por limitar a 12b de ram
set zfs:zfs_arc_max=12884901888

Luego del reboot.
chequeo con echo ::memstat | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     473869              3702    6%
ZFS File Data             1567085             12242   19%
Anon                      1090066              8516   13%
Exec and libs               10325                80    0%
Page cache                   3339                26    0%
Free (cachelist)             9461                73    0%
Free (freelist)           5234463             40894   62%
Total                    8388608             65536


Nota: Este tunning fue realizado en un solaris 10 1/13 s10s_u11wos_24a SPARC Generic_150400-28
En un T5-2 , con 65 gb de ram

Los parametros y explicaciones estan detallados con nivel de excelencia en la web solarisinternals.com

@diego_qac

martes, 15 de marzo de 2016

Configurar memoria y cpu a un ldom

Desde el pdom, vamos a agregarle 32gb y 16 cpus al ldom dsunp008-ldm

ldm stop dsunp008-ldm  ( bajamos el equipo )
ldm unbind dsunp008-ldm
ldm set-memory 32g dsunp008-ldm
ldm set-vcpu 16 dsunp008-ldm
ldm start dsunp008-ldm

Luego , como el ldm stop dejo el ldom en OBP, me conecto con
telnet localhost 5004 ( es el puerto donde esta configurado el ldom en el pdom)
boot


jueves, 10 de marzo de 2016

ufsdump error

Al hacer un ufsdump del Sistema Operativo , tira este error y aborta
  
DUMP: Warning - block 1952473204 is beyond the end of `/dev/rdsk/c0d0s0'
  DUMP: More than 32 block read errors from dump device `/dev/rdsk/c0d0s0'
  DUMP: Warning - block 1684029600 is beyond the end of `/dev/rdsk/c0d0s0'
  DUMP: Warning - block 2587919012 is beyond the end of `/dev/rdsk/c0d0s0'
  DUMP: More than 32 block read errors from dump device `/dev/rdsk/c0d0s0'
  DUMP: NEEDS ATTENTION: Do you want to attempt to continue? ("yes" or "no")   DUMP: NEEDS ATTENTION: Do you want to attempt to continue? ("yes" or "no")   DUMP: The ENTIRE dump is aborted

NO googlees mas ,no busques mas.
La unica solucion es volver a ejecutarlo, en otro momento, el error es porque esos bloques estan siendo accedidos en ese momento.

Se supone que un mundo ideal, se deberia poner el equipo en single-user y ejecutar el backup de sistema operativo, pero en la realidad es impracticable, pedir un corte de servicio para esto, asi que ejecutalo en otro momento.





@diego_qac

Montando en Single User el ZFS recien restaurado

## Creamos el rpool en el disco que corresponde.
zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=/etc/zfs/zpool.cache rpool c0d0s0

## Restoreamos del nfs que habiamos montado.
 cat /mnt/psun5000-ldm/rpool.zfs | zfs receive -Fdu rpool

## Montamos el / de lo restoreado. Primero lo listo para saber el nombre de lo que tengo que montar.
# zfs list       
NAME                                     USED  AVAIL  REFER  MOUNTPOINT
rpool                                   16.5G  61.7G   106K  /a/rpool
rpool@archive                               0      -   106K  -
rpool/ROOT                              16.5G  61.7G    31K  legacy
rpool/ROOT@archive                          0      -    31K  -
rpool/ROOT/s10s_u11wos_24a              16.5G  61.7G  6.45G  /a
rpool/ROOT/s10s_u11wos_24a@archive          0      -  6.45G  -
rpool/ROOT/s10s_u11wos_24a/var          10.1G  61.7G  10.1G  /a/var
rpool/ROOT/s10s_u11wos_24a/var@archive      0      -  10.1G  -
rpool/export                             561K  61.7G    38K  /a/export
rpool/export@archive                        0      -    38K  -
rpool/export/home                        523K  61.7G   523K  /a/export/home
rpool/export/home@archive                   0      -   523K  -


zfs mount rpool/ROOT/s10s_u11wos_24a 

### un df para ver que este montado
# df -h 
Filesystem             size   used  avail capacity  Mounted on
/ramdisk-root:a        212M   187M   3.6M    99%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                    29G   344K    29G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
swap                    29G   1.1M    29G     1%    /tmp
/tmp/dev                29G   1.1M    29G     1%    /dev
fd                       0K     0K     0K     0%    /dev/fd
/devices/virtual-devices@100/channel-devices@200/disk@106:a
                       2.2G   2.2G     0K   100%    /cdrom
df: cannot statvfs /platform/sun4v/lib/libc_psr.so.1: Operation not applicable
df: cannot statvfs /platform/sun4v/lib/sparcv9/libc_psr.so.1: Operation not applicable
swap                    29G     8K    29G     1%    /tmp/root/var/run
10.11.33.114:/BACKUPS
                       1.8T   1.6T   173G    91%    /mnt
rpool/ROOT/s10s_u11wos_24a
                        78G   6.5G    62G    10%    /a

## Queda montado en /a entro y modifico hostname, ip, vfstab, shadow y/o lo que necesite.





Creditos : Documento realizado por mi colega Nicolas Morono  @nicomorono