There are many different supported versions of Red Hat Enterprise Linux (RHEL)/CentOS Linux available for use, so which version of CentOS/RHEL Linux should you be using?
Here we take a look at the differences between the different versions of CentOS and compare them to help you decide on the best version to use.
Before starting it’s important to keep in mind that CentOS is essentially the same as RHEL, with the main differences being that CentOS is derived from RHEL and does not include the Red Hat branding or support. For the purposes of this post, CentOS and RHEL are used interchangeably as the information here applies to both distributions.
First we’ll start off with the oldest version of CentOS currently supported, CentOS 5. CentOS 5 was released on the 12th of April 2007, and has actually stopped receiving full updates as of Q1 2014. It will however continue to receive maintenance updates until the 31st of March 2017, so if you do need this version know that it will only be supported until the end of this month as of the time of writing.
At this point the only real valid reason that I can come up with for using CentOS 5 for a new machine these days is if you have some hard requirement from an application vendor whose software may only work on or be supported by this version of CentOS. If this is the case it would be highly recommended to find out if they have plans of supporting CentOS 6 or 7 as these releases are supported much longer into the future and have already been around for a while.
There’s no real sense in setting up a new CentOS 5 server if you can avoid it, as you’ll only have to upgrade it soon should you want to keep receiving updates. This process would involve creating a new server and performing a migration, as there is no supported process of performing an in place upgrade from CentOS 5.
Moving onto the next version, CentOS 6, which was released on the 10th of July 2011, will continue to receive full updates until Q2 2017, and can expect maintenance updates through to the 30th of November 2020, so essential updates for more than 3 years to come.
Some of the key new features available in CentOS 6 are:
- KVM Hypervisor: CentOS 6 moved to using KVM rather than Xen as the hypervisor for virtualization.
- Default file system of EXT4: The ext4 filesystem was made the default from the older ext3, improving scalability and performance.
See the official Red Hat Enterprise Linux 6 features here.
While CentOS 6 definitely improved on 5 in many ways, a lot of the software packages in it are quite old. For example, by default the CentOS base repository gives us PHP 5.3 and Apache 2.2 which are quite old now, PHP 5.3 is actually end of life. While we could use an external repository to upgrade PHP specifically, the older end of life version in the base repository that a lot of operating systems will still use for some time may not be ideal for everyone.
Finally we have CentOS 7 which was released on the 7th of July 2014, it will receive full updates until Q4 2020 and maintenance updates until the 30th of June 2024!
Some of the key new features available in CentOS 7 are:
- Change to Systemd: The older init system has been replaced with systemd, while at first I was skeptical I did learn how to use it and actually do prefer it. As systemd is used on many new Linux distributions it appears to be here to stay.
- Default file system of XFS: This allows for larger file systems and increased performance, though does have some drawbacks like the inability to shrink the file system. We still have the option of using ext4 here if preferred.
- Newer kernel: CentOS 7 introduced kernel version 3.10.0.
- Support for Linux containers: Containers provide a way of isolating a process, sandboxing an application in a secure environment isolated from other applications running on the same operating system.
- In place upgrade support: For the first time an in place upgrade from an older version is possible, we can upgrade CentOS 6 to CentOS 7 without needing to perform a full server migration.
- Firewalld instead of iptables: By default firewalld is used as the firewall in CentOS 7 which will take a little getting used to. If you’re already familiar with iptables, you can disable firewalld and use iptables instead.
Which Version Should I Use?
Assuming you have no specific application dependency on an older version, I would definitely recommend using the newest version available over any older version, if only for the length of time that it will continue to be supported for. Performing a migration or even an in place upgrade requires time and resources to plan and execute. If you’re building a new server, using the newest version will give you the longest period of support.
Newer versions also make use of newer software packages, which include all sorts of performance and usability improvements and are definitely worth taking advantage of. For example, CentOS 6 mirrors only provide Apache 2.2, while CentOS 7 provides the newer Apache 2.4. This is because as a Red Hat based distribution, software is extensively tested which is why the versions installed are usually somewhat older than other Linux distributions which helps ensure the stability demanded from an enterprise operating system.
It’s a bad idea to become complacent and stick with older versions just because you know how to use them better and then miss out on newer features. If you need to build a new CentOS/RHEL based server and don’t have any specific requirements from a particular application vendor then using the newest available option is always the best choice in my opinion.
In general the best recommendation is to use the latest and greatest version available, so in this case as of writing RHEL/CentOS 7. This is because it offers a number of improvements and benefits over the older versions which make it a better operating system to work with and manage overall. CentOS 7 has been available for over two and a half years now, so I would consider it to be very stable. Hopefully this has helped you determine which version of CentOS/RHEL Linux that you should be using.