====== OpenVZ Virtualization ====== http://wiki.openvz.org http://wiki.centos.org/HowTos/Virtualization/OpenVZ OpenVZ is a form of OS virtualization based on 'containers'. Other common forms of operating system virtualization: * Fully virtualized * Often called HVM (hardware virtual machine) * VMware, KVM, etc. * Para-Virtualized * Xen OpenVZ containers offer a very high performance virtualization platform. This is primarily due to its low overhead. Containers share the common host kernel and is primarily for Linux VMs. ===== Host Servers ===== See [[virtualization:proxmox|Proxmox]]. See [[http://code.google.com/p/ovz-web-panel/|OpenVZ Web Panel]]. ===== PBX ===== http://tutorialsbay.com/how-to-isntall-asterisk-freepbx-on-a-vps/ See [[voice:pbx:piaf_virtual|PiaF]]. http://pve.proxmox.com/wiki/PBX_in_a_Flash http://www.pbxinaflash.com/community/index.php?threads/best-timing-source.9084/ http://www.cadvision.com/blanchas/Asterisk/ZaptelPerformanceTesting.html ==== Firewall ==== We run the firewall on the Host Node (HN). Stop all running VMs. sed -i 's|ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length|ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp|' /etc/vz/vz.conf /etc/init.d/vz restart ==== DAHDI ==== Sangoma USB hardware timing source (internal UT50 and external UT51): http://sangoma.com/products/accessories/tools.html :!: Note that DAHDI will only work if the Host Node and the VE are the same $ARCH (32/32 or 64/64). :!: HPET or hardware timing source is important. Is HN kernel compiled with HPET and am I using it? grep HPET /boot/config-2.6.32-11-pve cat /sys/devices/system/clocksource/clocksource0/available_clocksource cat /sys/devices/system/clocksource/clocksource0/current_clocksource Change the current clock source, test then add to ''rc.local'': echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource See also 'res_timing_timerfd'. dmesg | grep dahdi dahdi_test Acceptable score: >99.975 === Make DAHDI Timing Available to CTs === This assumes Asterisk is running as the user 'asterisk'. CTID=100 vzctl stop $CTID vzctl set $CTID --devnodes dahdi/pseudo:rw --save vzctl start $CTID vzctl exec $CTID chown -R asterisk.asterisk /dev/dahdi /lib/udev/devices/dahdi === Alternate Method? === You can export devices from the Hardware Node (HN) to the container (CT) by using the devnodes flag. You may need a line like this in the /etc/vz/conf/VEID.conf for the Asterisk VE: DEVNODES="dahdi/pseudo:rw dahdi/ctl:rw dahdi/channel:rw dahdi/timer:rw " ===== Templates ===== OpenVZ containers are created from templates. Since containers are not fully virtualized environments. There is no booting to CD/DVD drives or ISO images. ==== Creating Templates ==== http://wiki.openvz.org/Physical_to_container http://www.powerpbx.org/content/are-you-sure-you-want-revert-revision-sat-12102011-1203 http://wiki.openvz.org/Creating_a_CentOS_5.0_Template ==== Create a FreePBX (Centos 5) Template on Proxmox ==== - Install your Centos server and application to a physical machine. - Create a Centos 5 container using an existing Centos template and shut it down. === Physical Machine (Source) === Clean out the YUM database and stop running applications: yum clean all amportal stop service dnsmasq stop service httpd stop service mysqld stop === Proxmox Host === CTID=100 rm -rf /var/lib/vz/private/$CTID mkdir /var/lib/vz/private/$CTID rsync -arvpz --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/tmp \ -e ssh root@xx.xx.xx.xx:/ /var/lib/vz/private/$CTID/ sed -i -e 's/^[0-9].*getty.*tty/#&/g' /var/lib/vz/private/$CTID/etc/inittab grep devpts /var/lib/vz/private/$CTID/etc/fstab > /var/lib/vz/private/$CTID/etc/fstab.new mv -f /var/lib/vz/private/$CTID/etc/fstab.new /var/lib/vz/private/$CTID/etc/fstab mkdir /var/lib/vz/private/$CTID/dev mkdir /var/lib/vz/private/$CTID/mnt mkdir /var/lib/vz/private/$CTID/proc mkdir /var/lib/vz/private/$CTID/sys mkdir /var/lib/vz/private/$CTID/tmp mkdir /var/lib/vz/private/$CTID/dev/pts mkdir /var/lib/vz/private/$CTID/etc/udev/devices cd /var/lib/vz/private/$CTID chroot . MAKEDEV -d /dev -x {p,t}ty{a,p}{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} console core full kmem kmsg mem null \ port ptmx random urandom zero ram0 MAKEDEV -d /etc/udev/devices -x {p,t}ty{a,p}{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} console core full kmem \ kmsg mem null port ptmx random urandom zero ram0 chmod 1777 /tmp chmod 1777 /var/tmp # Disable any physical NICs by modifying the etc/sysconfig/network-scripts/ifcfg-ethX files # (where X is the interface number starting from 0) and setting ONBOOT to no. vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=no vi /etc/sysconfig/network NETWORKING_IPV6="no" vim /etc/rc.d/rc.sysinit #/sbin/start_udev vi /etc/sysconfig/init PROMPT=no vi /etc/sysconfig/selinux SELINUX=disabled # For RHEL 6 and clone distributions, you must comment out "console" in /vz/private/$CTID/etc/init/rc.conf # and /vz/private/$CTID/etc/init/rcS.conf. # # You must also delete or rename tty.conf and start-ttys.conf. # # If you do not the container will not boot up. cat << EOF >> /etc/yum.repos.d/vz.repo [vz-base] name=vz-base mirrorlist=http://vzdownload.swsoft.com/download/mirrors/redhat-el5 #mirrorlist=http://vzdownload.swsoft.com/download/mirrors/redhat-el6 gpgcheck=0 [vz-updates] name=vz-updates mirrorlist=http://vzdownload.swsoft.com/download/mirrors/updates-released-rhel5 #mirrorlist=http://vzdownload.swsoft.com/download/mirrors/updates-released-rhel6 gpgcheck=0 EOF cat >> ~/.bash_profile << EOF alias ll='ls -l' alias la='ls -A' alias l='ls -CF' alias ls="BLOCK_SIZE=\'1 ls --color=auto" alias free="free -m" export GREP_OPTIONS='--color=auto' PS1='\[\033[00;36m\]\u\[\033[00m\]@\h:\[\033[05;33m\]\w\[\033[00m\] \$ ' export HISTCONTROL=ignoredups EOF mkdir /var/lock/rpm echo " # IPv6 blacklist ipv6 blacklist net-pf-10" >> /etc/modprobe.d/blacklist.conf exit # from chroot vzctl start $CTID vzctl enter $CTID # For services info, see http://wiki.openvz.org/Physical_to_container chkconfig --list | grep :on for i in acpid apmd auditd bluetooth clock cupsd consolefont cpuspeed dnsmasq gpm hdparm iptables ip6tables isdn \ irqbalance kudzu lm_sensors lvm2-monitor mcstrans mdmonitor microcode_ctl netfs netplugd smartd netfs nfslock ntpd \ openibd pcmcia portmap postfix restorecond rpcidmapd rpcgssd sendmail wanrouter xfs; do chkconfig $i off; done Using ''tar'' instead of ''rsync'': vim /etc/exclude .bash_history lost+found /dev/* /mnt/* /tmp/* /proc/* /sys/* /usr/src/* tar --numeric-owner -czvf /tmp/centos-5.0-x86_64-FreePBX-image.tar.gz -X /tmp/exclude / scp /tmp/centos-5.0-x86_64-FreePBX-image.tar.gz root@192.168.1.30:/var/lib/vz/template/cache/