The RHEL 7 distribution uses the 3.10 kernel. This choice comes from one of the main Linux kernel developer, Greg Kroah-Hartman, who decided in August 2013 that this kernel version would receive long-term support.
There is no 32-bit version any more.
NUMA stands for Non-Uniform Memory Access. In multi-socket server systems, local memory is directly connected to each processor, resulting in sub-optimal use of the memory and non-uniform access times.
Red Hat Enterprise Linux 7 introduces a new automatic NUMA balancing feature that achieves results close to what a performance specialist can provide.
The Systemd component replaces the SysVinit part that was in charge of the system initialization. This is not a shallow change but a deep reorganization. The main purpose of this replacement is to boot quicker and smarter.
The systemctl command is the most visible face of the Systemd component. It replaces the still available but deprecated chkconfig and service commands.
A Systemd beginner’s guide is available. Also, you can look at Lennart Poettering’s video (51min) to get all the story behind Systemd.
There was another presentation about Systemd coming with the Red Hat annual Summit (2015).
It’s sometimes painful when managing hundreds of servers to connect to each of them separately.
OpenLMI offers an alternative allowing a system administrator to send commands from a unique client without any ssh connection.
An OpenLMI beginner’s guide is available.
Rather than going for full virtualization with a serious overhead, it’s sometimes more relevant to use a lighter approach. The RHEL 7 provides at least (!) two kinds of Linux containers: those based on virt-sandbox-service, these should be almost production-ready, and those based on systemd-nspawn for testing. Instructions to discover the formers (virt-sandbox-service Linux Containers) are available.
You can watch Lennart Poettering’s video (54min) to learn more about the latters.
USB 3.0 ports are now supported on KVM Guests.
It is now possible to do a VM live migration from RHEL 6.5 to RHEL 7.
The new virtio-rng driver allows a guest to draw entropy from the host, alleviating entropy starvation in guests.
With libseccomp, applications can now define interactions with the kernel using syscall filtering, to reduce the risk of a malicious guest exploiting a kernel vulnerability.
The virtio-net networking stack has been improved by adding a multi-queue NIC feature that removes the single queue NIC bottleneck and allows the virtual NIC to process networking packets in parallel.
Thanks to the new graphics PCI pass through capability, it is now possible to assign a GPU directly to a virtual machine and provide 3D graphics acceleration for computing or visualization.
Virtual CPUs (vCPUs) can be now added to a running virtual machine.
QCOW2 version 3 Image Format is now supported.
New Intel instructions are available on KVM Guests:
- Floating-Point Fused Multiply-Add,
- 256-bit Integer vectors,
- big-endian move instruction (MOVBE),
While RHEL 6 kernels didn’t support nested virtualization, the kernel coming with RHEL 7 does. Instructions to set up nested virtualization are available here (see also this article about nested virtualization performances).
UID (user ID) and GID (group ID) now start by default at 1000 instead of 500. This slight change can create conflicts when migrating from RHEL 6 to RHEL 7 or when using pre-RHEL 7 tools.
Man Pages Index Database
The man pages index database used by the whatis and apropos commands is now updated through the mandb command. The makewhatis command, previously used for this purpose, has been removed.
RHEL 7 follows a new trend among the Linux distributions when dealing with configuration files. Instead of a unique configuration file, the new standard is to have:
- a main configuration file as before,
- a directory called from the main configuration file name with a .d suffix.
The files in the directory contain directives that are added at the end of the main configuration file.
- dracut: main configuration file: /etc/dracut.conf, associated directory: /etc/dracut.conf.d
- rsyslog: main configuration file: /etc/rsyslog.conf, associated directory: /etc/rsyslog.d
- sudo: main configuration file: /etc/sudoers, associated directory: /etc/sudoers.d
The runtime kernel configuration doesn’t exactly follow the standard rule:
- /etc/sysctl.conf is the main configuration file,
- /etc/sysctl.d is the associated directory,
- but the /etc/sysctl.d/99-sysctl.conf file is a link to the /etc/sysctl.conf file.
Linker Behaviour Change
Moving code from RHEL 6 to RHEL 7 can trigger problems due to changes in the way the linker now behaves.
In RHEL 6, libraries were sometimes automatically added, which is no longer the case with RHEL 7, causing error messages. The change occured with Fedora 13 and ultimately appeared in RHEL 7. The purpose was to make softwares more robust.
If you are interested in, you can read this Fedora article about Changes in DSO Linking or this thread dealing with a real case.