**LXC** http://linuxcontainers.org/\\ https://launchpad.net/ubuntu/+source/lxc * Es un sistema de virtualizacion a nivel de Sistema Operativo, tambien conocido como virtualizacion por contenedores * Su principal ventaja es que es extremadamente mas rapida que la virtualizacion completa, pero solo se pueden correr maquinas GNU/Linux * La principal ventaja de LXC es que esta implementada en el kernel de forma nativa, como KVM, por lo que puede usarse en cualquier nucleo reciente estandar * En este manual vamos a usar las herramientas de usuario de libvirt, porque estan mejor documentadas que las nativas de LXC ======= Requisitos ======= * Una maquina con una CPU que soporte virtualizacion. Lo podemos mirar en la BIOS o lanzando este comando: sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo SI soporta virtualizacion si vemos la siguiente salida: flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority * Una distribucion con un kernel Linux reciente. En este caso yo uso el siguiente: 3.12-1-amd64 * Habilitar una serie de modulos en el user space del kernel grep -i _ns /boot/config-$(uname -r) CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_NF_CONNTRACK_NETBIOS_NS=m CONFIG_NSC_FIR=m CONFIG_PATA_NS87415=m CONFIG_PATA_NS87410=m CONFIG_NS83820=m CONFIG_GAMEPORT_NS558=m CONFIG_TCG_NSC=m CONFIG_NCPFS_NFS_NS=y CONFIG_NCPFS_OS2_NS=y ======= Instalacion ======= https://wiki.debian.org/LXC ====== Paquetes ====== 1. Elegir las herramientas de usuario. Hay dos opciones: * LXC sudo aptitude install lxc * Libvirt sudo aptitude install libvirt-bin Yo he instalado tambien los siguientes paquetes 2. Instalar mas paquetes (quiza son dependencias de los anteriores): sudo aptitude install bridge-utils debootstrap 3. (Comprobar si es estrictamente necesario) Montar cgroup 3.1. Editar: sudo vim /etc/fstab Y anyadir la siguiente linea: cgroup /sys/fs/cgroup cgroup defaults 0 0 3.2. Montar: sudo mount /sys/fs/cgroup 4. Para comprobar que todos los requisitos estan satisfechos: sudo lxc-checkconfig Salida esperada: --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig ====== Cgroups ====== http://libvirt.org/cgroups.html 1. (Opcional) Instalo systemd y elimino la entrada en /etc/fstab ====== Creación de máquinas ====== Como root lxc-create -t