Thought This will benefit those who are new to LXC Container based Virtualization.
http://en.wikipedia.org/wiki/Lxc http://lxc.sourceforge.net/ ===================== LXC - Container Based Virtualization ===================== 1) Installation of LXC on Squeeze ----------------------------------------------------------------------- root@vmsrv:~# aptitude install lxc The following NEW packages will be installed: libcap2-bin{a} lxc 0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 164 kB of archives. After unpacking 901 kB will be used. Do you want to continue? [Y/n/?] y Get:1 http://ftp.ca.debian.org/debian/ squeeze/main libcap2-bin amd64 1:2.19-3 [23.6 kB] Get:2 http://ftp.ca.debian.org/debian/ squeeze/main lxc amd64 0.7.2-1 [141 kB] Fetched 164 kB in 4s (36.9 kB/s) Selecting previously deselected package libcap2-bin. (Reading database ... 48686 files and directories currently installed.) Unpacking libcap2-bin (from .../libcap2-bin_1%3a2.19-3_amd64.deb) ... Selecting previously deselected package lxc. Unpacking lxc (from .../archives/lxc_0.7.2-1_amd64.deb) ... Processing triggers for man-db ... Setting up libcap2-bin (1:2.19-3) ... Setting up lxc (0.7.2-1) ... lxc init script disabled; edit /etc/default/lxc. root@vmsrv:~# uname -a Linux vmsrv 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux -------------------------------------------------------------------------------------------------------------------- 2) Check configuration. --------------------------------------------------------------------------------------------------- root@vmsrv:~# lxc-checkconfig Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-2.6.32-5-amd64 --- 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 namespace: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: missing 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 ----------------------------------------------------------------------------------------------------- 3) Add a cgroup file system in fstab ( cgroup /lxc/cgroup cgroup defaults 0 0 ) ----------------------------------------------------------------------------------------------------- root@vmsrv:~# lvcreate -n lxc -L 20G vg0 Logical volume "lxc" created root@vmsrv:/# cd / root@vmsrv:/# mkdir lxc root@vmsrv:/# lvdisplay lxc Volume group "lxc" not found Skipping volume group lxc root@vmsrv:/# lvdisplay /dev/vg0/lxc --- Logical volume --- LV Name /dev/vg0/lxc VG Name vg0 LV UUID A8bKi2-LqTk-BrOG-KSPb-J5SL-fnLe-l9PAms LV Write Access read/write LV Status available # open 0 LV Size 20.00 GiB Current LE 5120 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5 root@vmsrv:/# mkfs.jfs /dev/vg0/lxc mkfs.jfs version 1.1.12, 24-Aug-2007 Warning! All data on device /dev/vg0/lxc will be lost! Continue? (Y/N) y \ Format completed successfully. 20971520 kilobytes total disk space. root@vmsrv:/# mount /dev/md1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/md0 on /boot type ext3 (rw) /dev/mapper/vg0-home on /home type jfs (rw) /dev/mapper/vg0-tmp on /tmp type jfs (rw) /dev/mapper/vg0-usr on /usr type jfs (rw) /dev/mapper/vg0-var on /var type jfs (rw) /dev/mapper/vg0-vms on /vms type jfs (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) root@vmsrv:/# mkdir /lxc/cgroup root@vmsrv:/# vi /etc/fstab root@vmsrv:/# mount -a root@vmsrv:/# mount /dev/md1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/md0 on /boot type ext3 (rw) /dev/mapper/vg0-home on /home type jfs (rw) /dev/mapper/vg0-tmp on /tmp type jfs (rw) /dev/mapper/vg0-usr on /usr type jfs (rw) /dev/mapper/vg0-var on /var type jfs (rw) /dev/mapper/vg0-vms on /vms type jfs (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) /dev/mapper/vg0-lxc on /lxc type jfs (rw) cgroup on /lxc/cgroup type cgroup (rw) root@vmsrv:~# mkdir /lxc/containers root@vmsrv:~# rmdir /var/lib/lxc root@vmsrv:~# ln -s /lxc/containers /var/lib/lxc root@vmsrv:~# ls -l /var/lib/lxc lrwxrwxrwx 1 root root 4 Nov 22 16:03 /var/lib/lxc -> /lxc/containers ----------------------------------------------------------------------------------------------- 4) Set up bridged networking for Containers to communicate to the outside world -------------------------------------------------------------------------------------------------------------- root@vmsrv:/lxc# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 auto br0 iface br0 inet static bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 address 172.17.10.1 netmask 255.240.0.0 network 172.16.0.0 broadcast 172.31.255.255 gateway 172.17.1.0 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 172.16.2.0 172.17.1.0 dns-search hifxnx.local ------------------------------------------------------------------------------------------ 5) Download lxc-debian scripts from http://git.nigel.mcnie.name/?p=lxc-debian.git;a=snapshot;h=refs/heads/master;sf=tgz and install these scripts http://nigel.mcnie.name/blog/a-five-minute-guide-to-linux-containers-for-debian -------------------------------------------------------------------------------------------------------------- root@vmsrv:/var/software/lxc-debian# ls COPYING debian default init lxc-debian lxc-halt lxc-status README root@vmsrv:/var/software/lxc-debian# cp lxc-debian /usr/local/bin/ root@vmsrv:/var/software/lxc-debian# cp init /etc/init.d/lxc ------------------------------------------------------------------------------------------- 6) Install debootstrap ----------------------------------------------------------------------------------------- root@vmsrv:/vms# aptitude install debootstrap The following NEW packages will be installed: debootstrap 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 58.2 kB of archives. After unpacking 274 kB will be used. Get:1 http://ftp.ca.debian.org/debian/ squeeze/main debootstrap all 1.0.26 [58.2 kB] Fetched 58.2 kB in 6s (9,699 B/s) Selecting previously deselected package debootstrap. (Reading database ... 48788 files and directories currently installed.) Unpacking debootstrap (from .../debootstrap_1.0.26_all.deb) ... Processing triggers for man-db ... Setting up debootstrap (1.0.26) ... --------------------------------------------------------------------------- 7) Install a container --------------------------------------------------------------------------- root@vmsrv:~# lxc-debian create -n mysql-master0 What hostname do you wish for this container ? [mysql-master0] Specify the location for an extra fstab file [(none)] 'mysql-master0' created Choose the architecture for the container (choices as for deboostrap, e.g.: amd64, i386 Choice ? [amd64] Specify the debian mirror to use to download the rootfs [http://ftp.debian.org/debian] Downloading debian minimal ... I: Retrieving Release I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Found additional base dependencies: adduser debian-archive-keyring dhcp3-common gnupg gpgv libbz2-1.0 libedit2 libgdbm3 libkeyutils1 libkrb53 libncursesw5 libreadline5 libssl0.9.8 libusb-0.1-4 libwrap0 openssh-blacklist openssh-client perl perl-modules readline-common I: Checking component main on http://ftp.debian.org/debian... I: Retrieving libacl1 I: Validating libacl1 ...... ............ I: Retrieving adduser I: Validating adduser I: Configuring libui-dialog-perl... I: Base system installed successfully. Generating locales (this might take a while)... en_US.UTF-8... done Generation complete. Current default timezone: 'Asia/Kolkata' Local time is now: Mon Nov 22 16:26:09 IST 2010. Universal Time is now: Mon Nov 22 10:56:09 UTC 2010. Removing any system startup links for /etc/init.d/umountfs ... /etc/rc0.d/S40umountfs /etc/rc6.d/S40umountfs Removing any system startup links for /etc/init.d/hwclock.sh ... /etc/rc0.d/K25hwclock.sh /etc/rc6.d/K25hwclock.sh /etc/rcS.d/S11hwclock.sh Removing any system startup links for /etc/init.d/hwclockfirst.sh ... /etc/rcS.d/S08hwclockfirst.sh Done. You can run your container with the 'lxc-start -n mysql-master0' ----------------------------------------------------------------------------------------------------- 7) Configure the container /lxc/containers/mysql-master0/config ----------------------------------------------------------------------------------------- root@vmsrv:~# cat /lxc/containers/mysql-master0/config lxc.utsname = mysql-master0 lxc.tty = 4 lxc.pts = 1024 lxc.rootfs = /lxc/containers/mysql-master0/rootfs lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0 lxc.network.mtu = 1500 lxc.mount = /lxc/fstabs/mysql-master0.fstab lxc.cgroup.devices.deny = a # /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm # consoles lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm # /dev/{,u}random lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm lxc.cgroup.devices.allow = c 136:* rwm lxc.cgroup.devices.allow = c 5:2 rwm # rtc lxc.cgroup.devices.allow = c 254:0 rwm ---------------------------------------------------------------------- 8) Configure Container's fstab ----------------------------------------------------------------- root@vmsrv:/lxc/fstabs# cat /lxc/fstabs/mysql-master0.fstab rootfs /lxc/containers/mysql-master0/rootfs none /lxc/containers/mysql-master0/rootfs/dev/pts devpts defaults 0 0 none /lxc/containers/containers/mysql-master0/rootfs/proc proc defaults 0 0 none /lxc/containers/mysql-master0/rootfs/sys sysfs defaults 0 0 none /lxc/containers/mysql-master0/rootfs/dev/shm tmpfs defaults 0 0 ------------------------------------------------------------------------------------------------------------- 9) Configure container's Networking -------------------------------------------------------------------------------------------------- root@vmsrv:/lxc/fstabs# cat /lxc/containers/mysql-master0/rootfs/etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 172.17.10.24 netmask 255.240.0.0 network 172.16.0.0 broadcast 172.31.255.255 gateway 172.17.1.0 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 172.16.2.0 172.17.1.0 ----------------------------------------------------------------------------------------------------------- These commands can be used to administer the container. lxc-attach lxc-console lxc-execute lxc-kill lxc-ps lxc-start lxc-unshare lxc-cgroup lxc-create lxc-freeze lxc-ls lxc-restart lxc-status lxc-version lxc-checkconfig lxc-debian lxc-halt lxc-monitor lxc-setcap lxc-stop lxc-wait lxc-checkpoint lxc-destroy lxc-info lxc-netstat lxc-setuid lxc-unfreeze ============================================================== Thanks -Siju -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/CAMdYbQXsCQfrgUv1A4_mXt+15wT=vlgb-osktijnmdrcjqk...@mail.gmail.com