Open main menu

OpenVZ Virtuozzo Containers Wiki β

028 to 042 kernel upgrade

This article describes a way to upgrade your old OpenVZ system with RHEL5-based (028stabNNN kernel) to RHEL6-based (042stabNNN) kernel, and convert /vz from ext3 to ext4, while keeping RHEL/CentOS 5 as a host OS.

Assumptions:

  • systems is CentOS (RHEL) 5.x
  • vzkernel is 028stabXXX, i.e. RHEL5-based
  • /vz uses ext3

End result should be:

  • Same CentOS 5 system
  • vzkernel is 042stabXXX
  • /vz uses ext4

Contents

Update your systemEdit

yum update

Install required software:

yum install e4fsprogs.x86_64

Add rhel6 kernel reposEdit

Disable rhel5 and enable rhel6 OpenVZ kernel repository. In other words, change /etc/yum.repos.d/openvz.repo to look like this (changes required are in bold):

  [openvz-kernel-rhel6]
  name=OpenVZ RHEL6-based stable kernels
  #baseurl=http://download.openvz.org/kernel/branches/rhel6-2.6.32/current/
  mirrorlist=http://download.openvz.org/kernel/mirrors-rhel6-2.6.32
  enabled=1
  gpgcheck=1
  gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
  #exclude=vzkernel-firmware
  [openvz-kernel-rhel5]
  name=OpenVZ RHEL5-based kernel
  #baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/
  mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18
  enabled=0
  gpgcheck=1
  gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ


Install new OpenVZ kernelEdit

# yum install vzkernel.x86_64

Check bootloader configurationEdit

Make sure 042stab kernel is there and will boot by default:

  cat /boot/grub/grub.conf

  timeout 5
  default 0
  title OpenVZ (2.6.32-042stab081.8)
  root (hd0,1)
  kernel /vmlinuz-2.6.32-042stab081.8 ro root=/dev/sda3 vga=0x317 selinux=0 sysfs.deprecated=1
  initrd /initrd-2.6.32-042stab081.8.img
  
  title OpenVZ (2.6.18-348.16.1.el5.028stab108.1)
  root (hd0,1)
  kernel /vmlinuz-2.6.18-348.16.1.el5.028stab108.1 ro root=/dev/sda3 vga=0x317 selinux=0
  initrd /initrd-2.6.18-348.16.1.el5.028stab108.1.img
  ....

Reboot into new kernelEdit

# reboot

and make sure the system is up and running.

== For linux swraid (mdadm) users with bitmap enabled and low IO write speed, you might need to redo bitmap cat /proc/mdstat , if chunk size is small , try (example for internal bitmap) : mdadm --grow --bitmap=none /dev/md2 ; mdadm --grow --bitmap=internal --bitmap-chunk=16384 /dev/md2

Convert /vz to ext4Edit

If your /vz is a separate file system, you need to stop all containers and umount it first:

for ve in $(vzlist -1); do vzctl stop $ve; done
umount /vz

Alternatively, boot the node from a live-CD (such as CentOS 6 live CD).

Check file system:

# fsck.ext3 -f /dev/sdxY

Turn on ext4 features:

# tune4fs -O extents,uninit_bg,dir_index /dev/sdxY

Check the new file system again, as ext4 this time:

# fsck.ext4 -fpD /dev/sdxY

If you have booted from the live CD, you can do the same for root filesystem.

If you have booted from the live CD, do this:

  • mount your ROOT and BOOT partitions:
# mkdir /tmp/root
# mount /dev/sdaB /tmp/root
# mount /dev/sdaC /tmp/root/boot
  • chroot into it:
# chroot /tmp/root

Finally, edit /etc/fstab, replacing ext3 with ext4 for /vz (and / if you converted it as well).

# vi /etc/fstab

Create new initrd with proper modulesEdit

# KV=042stab083.2
# mkinitrd -v -f --with=ext4 --without-usb /boot/initrd-2.6.32-${KV}.img 2.6.32-${KV}

Notes:

  • you have to add ext4 explicitly
  • in RHEL6 kernels USB modules are built-in

Reboot and enjoyEdit

End result is:

     # cat /etc/issue
     CentOS release 5.10 (Final)
     Kernel \r on an \m
     
     # uname -a 
     Linux CentOS-58-64-minimal 2.6.32-042stab081.8 #1 SMP Mon Sep 30 16:52:24 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux
     # df -Th
     Filesystem    Type    Size  Used Avail Use% Mounted on
     /dev/sda3     ext4    259G  1.5G  244G   1% /
      tmpfs        tmpfs     16G     0   16G   0% /dev/shm
     /dev/sda2     ext3    496M   46M  425M  10% /boot
     /dev/sdb1     ext4    1.8T  196M  1.7T   1% /vz

Next stepsEdit

You can now install ploop and enjoy all its benefits.

Also, it makes sense to convert your containers to VSwap.

See alsoEdit

AcknowledgementsEdit

This article was originally written by Denis Hohryakov.