= Upgrade Notes for OpenVZ = == Kernel Sources == From Erik Kline: I had to find this so I could build a module and Ted wanted a pointer so here it is. This is the version we're running OpenVZ on. https://wiki.openvz.org/Download/kernel/rhel6/042stab061.2#Source_RPM == Upgrading Templates == Start an experiment with the templates to update in it. For example: {{{ source tb_compat.tcl set ns [new Simulator] set u1004x86 [$ns node] tb-add-node-attribute $u1004x86 containers:openvz_template ubuntu-10.04-x86 set u1004x8664 [$ns node] tb-add-node-attribute $u1004x8664 containers:openvz_template ubuntu-10.04-x86_64 set u1204x86 [$ns node] tb-add-node-attribute $u1204x86 containers:openvz_template ubuntu-12.04-x86 set u1204x8664 [$ns node] tb-add-node-attribute $u1204x8664 containers:openvz_template ubuntu-12.04-x86_64 # Creation boilerplate $ns rtptoto Static $ns run }}} Stop one of the VMs: {{{ $ sudo vzlist -n $ sudo vzlist -n CTID NPROC STATUS IP_ADDR NAME 102 21 running - u1004x86 103 26 running - u1204x86 104 19 running - u1004x8664 $ sudo vzctl stop 102 }}} Pull the creation commands for that VM out of {{{/var/containers/config/openvz_create_commands.yaml}}}. You only need the creation and network setup commands, but it won't hurt to run them all. {{{ vzctl create 101 --ostemplate ubuntu-12.04-x86_64 /usr/sbin/vzctl set 101 --netif_add eth0,00:66:00:00:1c:2e,veth101.0,00:67:00:00:1c:2e --save }}} You'll also need the IP address of that node. You can note it before or pull it from the extra_nodes table in the database. Start the VM and configure its networking {{{ $ sudo vzctl 555 startA }}} At this point the virtual interface from the {{{---netif_add}}} will reappear. Add it back into the control bridge: {{{ $ sudo brctl addif control0 veth101.0 ~$ brctl show bridge name bridge id STP enabled interfaces control0 8000.0025906ad176 no eth0 veth101.0 veth102.0 veth103.0 veth104.0 }}} Enter the VM and start its networking {{{ $ sudo vzctl 555 enter root@pnode-0000:/# ifconfig eth0 172.16.28.46 netmask 255.240.0.0 up root@pnode-0000:/# ip route add 192.168.0.0/22 dev eth0 scope link root@pnode-0000:/# ip route add default via 192.168.1.254 dev eth0 root@pnode-0000:/# ping users PING users.isi.deterlab.net (192.168.253.1) 56(84) bytes of data. 64 bytes from users.isi.deterlab.net (192.168.253.1): icmp_req=1 ttl=63 time=2.02 ms 64 bytes from users.isi.deterlab.net (192.168.253.1): icmp_req=2 ttl=63 time=1.39 ms }}} The ping will fail if {{{/etc/resolv.conf}}} doesn't exist or is wrong. A right one is: {{{ search isi.deterlab.net nameserver 192.168.252.1 }}} Now you have a functional, if minimal VM, and you can update the template in place. E.g: {{{ root@pnode-0000:/# apt-get update }}} The [http://wiki.openvz.org/Updating_Debian_template Openvz notes on upgrading Debian] are a template for the rest of this. The short form is: {{{ root@pnode-0000:/# exit logout exited from CT 555 pnode-0000:~$ sudo vzctl stop 555 $ sudo mv /vz/template/cache/ubuntu-12.04-x86_64.tar.gz /vz/template/cache/ubuntu-12.04-x86_64.tar.gz.old $ sudo tar -C /vz/private/555/ --numeric-owner -czf /vz/template/cache/ubuntu-12.04-x86_64.tar.gz . }}} Test it by recreating the temporary VM and starting it. {{{ $ sudo vzctl destroy 555 # goto 1 }}} Once the templates are complete, they are stored in {{{/share/containers/images/}}}. Test in {{{/share/containers-dev/images}}} first and then hard link into {{{/share/containers/images/}}}.