Tema final del curso
Los asistentes me han comentado que les interesa:
- Limites por proceso y usuario
- Virtualización
- Monitorización del sistema operativo, especialmente de la memoria
Límites por proceso y usuario
Cuando un usuario se conecta a un sistema, el entorno tiene límites para varias cosas, de las cuales, algunos interesantes son:
- Tamaño máximo de stack (stack - kbytes): Necesario si recibimos un error de stack más pequeña.
- Número máximo de ficheros abiertos por proceso (nofiles - descriptors): Necesario para aplicaciones que soporten muchas conexiones
- Tamaño máximo de fichero (filesize - kbytes): En caso de que intentemos guardar un fichero más grande que el tamaño máximo
La shell de Linux tiene un límite interesante más:
- Número máximo de procesos por usuario (maxprocs): Interesante para evitar fork bombs.
El sistema tiene un límite "absoluto" que se llama "límite hard". El límite por defecto que impone la shell se llama "límite soft". La shell permite subir los límites "soft" al usuario hasta que llegan al límite "hard", que sólo se puede subir a nivel de superusuario, muchas veces tocando el kernel.
La sintaxis para subir el límite "soft" es distinta según la shell.
| Operación | SH/KSH/BASH | CSH/TCSH |
| Ver límite soft |
|
|
| Ver límite hard |
|
|
| Subir limite de stack size |
|
|
| Límite de descriptores |
|
|
| Límite de fichero más grande a 4GB | ulimit -f 4194304 | limit filesize 4194304 |
| Número máximo de procesos por usuario (bash) | ulimit -u 1000 | --- |
El administrador puede subir los "límites duros" según el sistema operativo.
Por ejemplo, para el número máximo de descriptores por proceso:
- Solaris, hay que editar /etc/system y cambiar las siguientes entradas, después reiniciar el sistema.
set rlim_fd_cur = 1024
A los usuarios, entonces le aparecería por defecto un límite de 1024 y se podrían subir con ulimit -n/limit descriptors hasta 8192.
- AIX, en /etc/security/limits
- Linux, en /etc/security/limits.conf
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to
# - rtprio - max realtime priority
Conectividad TCP/IP
ifconfig, netstat -r, netstat -a, lsof, traceroute.
Virtualización
Zonas.
En Solaris, una zona es un entorno virtual del sistema operativo creada dentro de una instancia de Solaris. La meta de esta tecnología es una utilización eficiente de los recursos del sistema operativo. Cuando instalamos Solaris 10, nos viene una zona por defecto llamada zona global.
% zoneadm list -v
ID NAME STATUS PATH
0 global running /
Si queremos crear una zona local, necesitamos
- Al menos 2GB para copiar los ficheros esenciales a la zona local.
- Una dirección IP para la nueva zona.
% mkdir /zones/appserv % chmod 700 /zones/appserv % zonecfg -z appserv appserv: No such zone configuredUse 'create' to begin configuring a new zone.
zonecfg:appserv> create
zonecfg:appserv> set zonepath=/zones/appserver
zonecfg:appserv> set autoboot=true
zonecfg:appserv> add net
zonecfg:appserv:net> set physical=eri0
zonecfg:appserv:net> set address=192.168.175.126
zonecfg:appserv:net> end
zonecfg:appserv> add fs
zonecfg:appserv:fs> set dir=/repo2
zonecfg:appserv:fs> set special=/dev/dsk/c2t40d1s6
zonecfg:appserv:fs> set raw=/dev/rdsk/c2t40d1s6
zonecfg:appserv:fs> set type=ufs
zonecfg:appserv:fs> set options noforcedirectio
zonecfg:appserv:fs> end
zonecfg:appserv> add inherit-pkg-dir
zonecfg:appserv:inherit-pkg-dir> set dir=/opt/csw
zonecfg:appserv:inherit-pkg-dir> end
zonecfg:appserv> info
zonepath: /zones/appserver
autoboot: true
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
inherit-pkg-dir:
dir: /opt/csw
net:
address: 192.168.175.126
physical: eri0
zonecfg:appserv> verify
zonecfg:appserv> commit
zonecfg:appserv> exit
En este enlace podemos seguir el proceso de creación explicado y detalles.
DLPAR
En AIX DLPAR significa Dynamic Logical Partitions.
Una partición lógica a nivel de hardware es una división de recursos hardware para formar sistemas lógicos. Se pueden instalar múltiples sistemas operativos que ejecuten en las CPUs de IBM (Power4) y niveles de AIX en las particiones logicas. Los recursos no se comparten entre las particiones, y cada partición tiene su interfaz de red, dirección IP, etc.
Se administran con la HMC, hardware management console.
Solamente se puede particionar en sistemas que tengan el soporte físico para ello.
No hay comentarios:
Publicar un comentario