Hasta hace no mucho, usaba en mi centro de trabajo un servidor NAS doméstico que hacía sus funciones de forma algo lenta pero sin problemas de seguridad ni estabilidad. Sin embargo, a raíz de un problema de reinicio y pérdida de acceso al mismo, decidir dar el salto y poner en marcha un auténtico servidor NAS.
Preparé una máquina virtual con Xen, preparé el almacenamiento en mis módulos SAS, configuré el direccionamiento del mismo y arranqué la máquina. ¿Qué me quedaba por instalar y configurar? Un servidor Samba. Veamos cómo hacerlo.
El siguiente procedimiento vale sobre cualquier distribución de GNU/Linux. Sólo deberéis cambiar ciertos detalles de sistemas de paquetes, pero el método es el mismo y es una solución genial. Multitud de empresas u organizaciones disponen de un servidor Linux y de clientes finales con Microsoft Windows. Tanto si el cliente final es Windows como si es Linux o Mac OS, esta solución provee un método sencillo, robusto y fiable para implantar algo tan necesario como almacenamiento en red (ya sea para copias de seguridad, para trabajo en equipo, para crear un repositorio central o para lo que se busque).
He usado Scientific Linux, por lo que será el mismo procedimiento en Fedora, Red Hat, Cent OS y derivados. En Ubuntu, Debian y derivadas usaremos apt y el resto, sus propios paquetes (o compilaciones del fuente).
Cuando tenemos una máquina física con tantos GB de RAM y empezamos a paravirtualizar con Xen sobre ella, el recurso que más debemos cuidar es éste, la memoria física disponible en el sistema. Dentro del fichero de configuración de nuestras máquinas definiremos dos valores:
De hecho, si no definimos el siguiente parámetro, Xen interpretará que será igual al anterior. Imaginemos que tenemos una máquina creada con 1024MB de memoria y con un tope de 4096MB.
Cuando hacemos xm create nombreMaquina y se inicia, con xm list podremos ver la cantidad de memoria que está consumiendo:
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 256 2 r----- 54678.1 foo 2 1024 1 -b---- 4660.2
Aumentar y reducir memoria en ejecución
La máquina está ejecutando, necesitas crear nuevas máquinas y ésta en concreto no está usando toda la memoria. Recordad que el uso de CPUs virtuales en Xen es escalable, pero el de la memoria no lo es, al menos de forma tan automática. La solución es usar la siguiente instrucción:
xm mem-set nombreMaquina nuevoTamaño
Veamos cómo quedaría nuestro caso xm mem-set foo 512:
# xm mem-set foo 512 # xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 256 2 r----- 56681.0 foo 2 512 1 -b---- 5160.2