Rss

  • flickr
  • linkedin
  • google

Archives for : Administración

Acelerar linux disminuyendo el uso de swap y mejorando la gestion de caché

Vamos a ver como podemos aumentar la velocidad de nuestro sistema linux, bien sea un un equipo de escritorio, o un servidor, aplicando una sencilla configuración para que el sistema operativo no “abuse” del uso de swap.

 

Que es la swap

La swap también llamada espacio de intercambio, es na partición de no de nuestros discos duros, que podríamos decir que se usa del mismo modo que la RAM, para complementar a esta. Esto que en principio es una solución para cuando andamos justos de memoria RAM, puede llegar a ser un problema, dado que las tasas de lectura y escritura en nuestro disco duro son infinitamente menores que las memorias RAM. Se pueden tener en cuenta diferentes factores para incrementar la velocidad de la swap:

  • Si disponemos de varios discos duros, debemos de tener la partición de la swap en el disco que menos uso tenga, normalmente uno en el cual no esté situado el sistema operativo.
  • Si tenemos la posibilidad de situar la swap en un disco de estado sólido (SSD), también conseguiríamos aumentar  su velocidad.
  • Y por último el caso que vamos a tratar aquí,  modificar el “swappiness

 

Modificar el uso de SWAP

El “encargado” de decidir cuando se comenzará a usar la swap es nuestro kernel, y nosotros (humildes usuarios), podemos decirle al kernel, si queremos que empiece a usar la swap más pronto o más tarde mediante la modificación del valor de swappiness.

El valor de swappiness puede tomar oscila entre 0 y 100, siendo 0 el valor en el cual no se usará swap, y 100, para un uso constante de swap. En la mayoría de de sistemas operativos linux, el valor de swappiness viene fijado en 60, y esto puede provocar situaciones en las que teniendo más de la mitad de la RAM libre, ya estemos usando “considerable” swap.

Comprobar el valor de swappiness

Para comprobar que valor de swappiness tenemos configurado, usaremos el siguiente comando

cat /proc/sys/vm/swappiness

Modificar valor de swappiness, comprobar valor de swappiness

 

 

Cambiar valor de swappiness

El valor de swappiness es pasado al kernel a través del fichero /etc/sysctl.conf. Por tanto, debemos acceder a el y modificarlo con el valor que consideremos oportuno.

sudo nano /etc/sysctl.conf

y al final del archivo añadiremos:

# Disminuir el uso de intercambio a 10
vm.swappiness=10
# Mejorar la gestión de cacahe
vm.vfs_cache_pressure=50

Modificar valor de swappiness

 

 

Una vez guardados los cambios, reiniciaremos nuestro sistema operativo y ya tendremos la nueva configuración de swappiness en funcionamiento. Lo podremos comprobar con el comando anterior.

Con esto aumentaremos el rendimiento en los equipos en los que el rendimiento se ve reducido porque estamos usando swap cuando aún disponemos de memoria RAM libre, obviamente, si el kernel hace uso de swap porque la RAM se ha acabado, esta configuración nova a servir de nada. De todas formas, lo mejor en cada caso es experimentar con diferentes valores de swappiness y ver cual es el que mejor rendimiento nos aporta en nuestro caso.

Usar Amazon EC2 como servidor git para control de versiones

Vamos a ver como usar nuestra instancia de Amazon EC2, para albergar en ella nuestro servidor de control de versiones con git. Aunque del mismo modo, lo podríamos realizar en cualquier otro servidor o incluso en un PC que usemos para dicho propósito.

 

Para los que desconozcan lo que es un sistema de control de versiones (aunque su propio nombre nos lo da a entender),  es un sistema que nos permite la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Se puede resumir como un sistema de copia de seguridad de nuestro trabajo, que realiza y almacena copias del estado del mismo durante su desarrollo para poder revertirlo, o para poder consultar cambios en cualquier momento.

 

Instalar git en nuestro equipo local

Antes de nada, si no tenemos instalado git en nuestro equipo local, procedemos haciéndolo:

sudo apt-get install git

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en equipo local

 

Configurar git en el equipo local

git config --global user.name "nombre_usuario" Sustituimos nomre_usuario por nuestro nombre de usuario que deseemos usar

git config --global user.email usuario@email.com Sustituimos usuario@email.com por nuestro correo.

git config --global core.editor "sublw" Configuramos el editor que deseemos usar por defecto, en este caso Sublime Text

 

Usar Amazon EC2 como servidor git para control de versiones, configurar git en el equipo local

 

Iniciar repositorio en equipo local

cd directorio_repositorio accederemos al repositorio que deseemos usar como repositorio local sustituyendo directorio_repositorio por la ruta correspondiente.

git init Inicializamos el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio en equipo local

 

Añadir archivos y directorios al repositorio

Vamos a crear unos archivos y carpetas de ejemplo para poder añadirlos al repositorio

mkdir js css Creamos dos carpetas

touch index.html js/main.js css/style.css Creamos tres archivos vacios

 

Usar Amazon EC2 como servidor git para control de versiones, crear archivos de ejemplo

 

git add . Añadimos todos los archivos del directorio al repositorio

git commit -m "Primer commit de prueba" Validamos los cambios en el repositorio

 

Usar Amazon EC2 como servidor git para control de versiones, añadir archivos al repositorio y realizar el primer commit

 

Crear repositorio remoto

ssh usuario@servidor Accederemos por ssh a nuestro servidor remoto, en este caso, nuestra instancia de Amazon EC2 con Ubuntu Server instalado  aquí.

sudo apt-get install git Instalaremos git en el servidor

 

Usar Amazon EC2 como servidor git para control de versiones, instalar git en el servidor

 

cd directorio_servidor_remoto Nos situaremos en el directorio que deseemos usar como repositorio remoto, podemos crear uno previamente.

 

Usar Amazon EC2 como servidor git para control de versiones, acceder al directorio remoto para usar como repositorio

 

git --bare init Iniciamos el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, iniciar repositorio remoto

 

Asociar repositorio local a uno remoto

cd directorio_repositorio En el equipo local nos volvemos a situar en el directorio en el que hemos creado el repositorio al principio

git remote add nombre_repositorio usuario@servidor:git/directorio_remoto Asociamos el repositorio local al remoto

repositorio_prueba Nombre dado al repositorio

usuario Nuestro nombre de usuario para ssh

servidor Dirección de nuestro servidor ssh para acceso ssh

nombre_repositorio Directorio remoto en el que se encuentra el repositorio

git push  nombre_repositorio master Realizamos los cambios en el repositorio remoto

 

Usar Amazon EC2 como servidor git para control de versiones, asociar repositorio local con repositorio remoto

 

De este modo, tendremos nuestros datos a salvo de cualquier problema con nuestro equipo, además de poder trabajar varias personas en el mismo proyecto, o poder revertir el estado del mismo a cualquier versión anterior de la que se haya hecho un commit.

Es muy recomendable trabajar usando control de versiones, no solo programadores, esto es extensible casi todo tipo de proyectos, y aunque al principio pueda resultar un poco lioso, pronto se le coge el truco y el hábito.

 

Aquí tenéis una chuleta de comandos útiles para usar con git.

 

Netstat: conexiones activas, sus procesos y los puertos abiertos

Netstat es una herramienta de consola muy útil para administradores de sistemas (y para todo el mundo en general), que nos permite ver un listado de las conexiones activas (entrantes y salientes) en un equipo. La podemos encontrar para sistemas linux y windows, aunque sus opciones varían entre los dos sistemas. Aquí vamos a ver algunos usos que le podemos dar en nuestros equipos linux.

 

Vamos a colocar al final de algunos comandos | less, esto es porque la salida que genera este programa puede ser demasiado grande, y de esta manera, la visualizaremos más cómodamente (para avanzar hacia abajo usaremos la tecla abajo del teclado y para salir antes de llegar al fina la letra q.)

Mostrar todas las conexiones activas del sistema (TCP y UDP)

netstat -a | less

netstat_a

 

Mostrar conexiones TCP activas

netstat -t | less

netstat_t

 

Mostrar conexiones UDP activas

netstat -u

Mostrar estadísticas de uso para todos los tipos de conexión

netstat -s

netstat_s

 

Mostrar la tabla de encaminamiento

netstat -r

 

Mostrar los grupos de multidifusión

netstat -g

 netstat_g

 

Mostrar tabla de interfaces de red

netstat -i

netstat_i

 

También podemos combinar las opciones, por ejemplo si queremos mostrar las estadísticas de TCP

netstat -s -t | less

Y para finalizar, una combinación de opciones fácil de recordar y útil

netstat -putona | less

p: Muestra las estadísticas para el protocolo especificado

u: Puerto UDP

t: Puertos TCP

o: Muestra los timers

n: Muestra el estado del puerto

a: Muestra las conexiones activas

netstat_putona

 

 

Espero que le saquéis partido.

Gestión de usuarios y grupos en línux desde terminal

Algo muy útil y a la vez básico es saber gestionar usuarios y grupos desde la linea de comandos en línux, por lo que vamos a ver como hacerlo

 

Añadir un nuevo usuario al sistema

sudo adduser nombre_usuario

Esto añadirá un nuevo usuario al sistema con su espacio de trabajo (home) en /home/nombre_usuario

sudo adduser –home /var/www/usuario nombre_usuario

Esto añadirá el usuario nombre_usuario y establecera su home en /var/www/usuario

sudo adduser –expiredate 2013/12/31 nombre_usuario

Esto añadirá un usuario con nombre nombre de usuario, y esta cuenta expirará en la fecha 2013/12/31

sudo adduser -u 0 -o -g 0 -G 0,1,2,3,4,6,10 -M nombre_usuario

 Esto añadirá un nuevo usuario al sistema como si se tratase del superusuario root (con los mismos permisos)

Estos son algunos ejemplos útiles de adduser, pero hay muchas más opciones que podremos consultar con man adduser

Eliminar un usuario

sudo deluser nombre_usuario

Esto eliminará el usuario nombre_usuario, pero no eliminará su espacio de trabajo

sudo userdel -r nombre_usuario

Esto eliminará el usuario nombre_usuario y su espacio de trabajo

Ver los usuarios del sistema

cat /etc/passwd | cut -d”:” -f1 

Añadir un grupo

sudo addgroup nombre_grupo

Eliminar un grupo

sudo delgroup nombre_grupo

Añadir un usuario a un grupo

sudo adduser nombre_usuario nombre_grupo

Añadir un usuario a varios grupos a la vez

sudo useradd -a -G nombre_grupo1, nombre_grupo2 nombre_usuario

Ver los grupos del sistema

cat /etc/group | cut -d”:” -f1 

Estado de la contraseña de un usuario

sudo chage -l nombre_usuario

estado_contraseña

Este comando nos mostrará:

    • La fecha del último cambio de contraseña
    • Cuando caduca la contraseña
    • Cuando caduca la cuenta
    • El número mínimo de días entre cambio de contraseñas
    • El número máximo de días entre cambios de contraseña
    • El número de días de antelación con los que se le notificará al usuario que debe de cambiar la contraseña

Estos valores los podremos cambiar:

 sudo chage -E  31/12/2013 -m  7 -M 60 -I 30 -W 7 nombre_usuario

Los parámetros pasados al comando chage son:

-E  31/12/2013 Fecha en la que la contraseña expirará

-m  7 Duración mínima de la contraseña en días

-M 60 Duración máxima de la contraseña en días

-I 30 Periodo de inactividad en días

-W 7 Periodo en el que se avisará al usuario que debe cambiar su contraseña en días

Esto son algunos ejemplos de lo que se puede hacer, pero a los que estén más interesados, les recomiendo usar el comando man para ver todas las opciones de las que disponemos, ya que son muchas y muy útiles.