Tag Archives: RedHat

Running a Gluster Cluster on the Raspberry Pi with Docker

I was always fascinated with distributed filesystems and wanted to learn more about Gluster since it is becoming more popular in larger open-source projects. Since I have a few Raspberry Pi’s, I thought that now is the best time to learn. This blog post will explain how to run Gluster on a two-node Raspberry Pi cluster from a Docker container.


  1. Two Raspberry Pi’s (rpi-1 and rpi-2)
  2. Running a Gluster image from a local Docker registry
  3. Hostnames are resolvable in /etc/hosts on both Pi’s
  4. Docker 1.12.x installed

Continue reading Running a Gluster Cluster on the Raspberry Pi with Docker

Goodbye Docker on CentOS. Hello Ubuntu!

I have been a hardcore CentOS user for many years now. I enjoyed its minimal install to create a light environment, intuitive installation process, and it’s package manager. Docker is the most popular container format today and provides developers and enthusiasts with an easy way to run workloads in containerized environments. I started using Docker in production at home for about a year now for services such as Plex Media Server, Web Server for this blog, ZNC, MineCraft, and MySQL to name a few. A Dockerfile is a set of instructions used to create a Docker image. I invested many hours creating perfect Dockerfiles using CentOS and Fedora to make deployments simple on any operating system. However, a personal revolution was brewing.

Continue reading Goodbye Docker on CentOS. Hello Ubuntu!

Using LVM cache on Linux with a RAM disk

The Challenge

This is a follow up article from using a USB drive for a LVM cache. I decided to test things further by using a RAM disk instead of a USB drive.


The Journey

1. Create a RAM disk:

modprobe brd rd_nr=1 rd_size=4585760 max_part=0

2. Create the cache

pvcreate /dev/ram0
vgextend vg /dev/ram0
lvcreate -L 300M -n cache_meta vg /dev/ram0
lvcreate -L 4G -n cache_vol vg /dev/ram0
lvconvert –type cache-pool –poolmetadata vg/cache_meta –cachemode=writeback vg/cache_vol -y
lvconvert –type cache –cachepool vg/cache_vol vg/docker-pool

3. Run the DD test again

[root@tokyo /]# dd if=/dev/zero of=/tmp/1G bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 1.89586 s, 553 MB/s
[root@tokyo /]# dd if=/dev/zero of=/tmp/1G bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 1.79864 s, 583 MB/s
[root@tokyo /]# dd if=/dev/zero of=/tmp/1G bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 0.922467 s, 1.1 GB/s
[root@tokyo /]# dd if=/dev/zero of=/tmp/1G bs=1M count=1000
1048576000 bytes (1.0 GB) copied, 1.33757 s, 784 MB/s

Average Speed: 736 MB/s



In Conclusion, my average write speed is 736 MB/s using LVM caching with a RAM disk. With a USB thumb drive, my average speed is 411.25 MB/s. With no cache, my average speed is 256 MB/s.



Installing the official NVIDIA driver on CentOS

I found it very hard to find a guide to properly disable the nouveau driver so I can install the Nvidia driver on CentOS 6. This should help simplify the installation.

1. Install the kernel-devel and development packages for your running kernel.

yum -y install kernel-devel-`uname -r` kernel-headers-`uname -r`
yum groupinstall “Development Tools”

2. Blacklist the nouveau driver. This needs to be done to properly load the Nvidia driver. First, the module must be blacklisted on the system. The final step is to remove the nouveau driver from the kernel ram disk image.

echo “blacklist nouveau” >> /etc/modprobe.d/blacklist.conf

dracut -f -o nouveau

3. Boot into runlevel 3 with “nomodeset” on the kernel line in grub.cfg or add it to the kernel line in the grub boot menu. If you do not do this, you will see a black screen when you reboot.

4. Run the Nvidia installer

5. Reboot.

Installing OpenStack on CentOS

I finally got OpenStack installed correctly after struggling with their documentation and the guides online. I wanted to share these steps with the everyone to ease the pain.


1. Install Epel Repo


wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm


Continue reading Installing OpenStack on CentOS

Improving IO performance on Linux

I purchased a new server and have been struggling with IO performance on a RAID 1 setup. I first tried RAID 5 but it was horrible. Through all my struggles, I found a few kernel and filesystem tunables that helped me out.

The virtual machines improved also. They were barely usable.

Filesystem Tweaks: /etc/fstab

Change your mount options to:

Linux Kernel tunables:
sysctl -w vm.swappiness=0
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.dirty_ratio=5
sysctl -w vm.vfs_cache_pressure=200
The dirty tunables controls the portion of memory that the kernel will store pages in. I decreased the value to 5 so that I will have more memory free.  The cache_pressure tunable tells the kernel how to quickly free up the cache.

How to clone a KVM virtual machine on Linux

First, select the virtual machine that you want to clone.


[root@redhat ~]# ls /etc/libvirt/qemu/*.xml

/etc/libvirt/qemu/cp1.xml     /etc/libvirt/qemu/vcs5_sol_n1.xml      /etc/libvirt/qemu/vcs6_lin_vvr_n3.xml

/etc/libvirt/qemu/rhel6.xml   /etc/libvirt/qemu/vcs6_lin_vvr_n1.xml  /etc/libvirt/qemu/vcs6_sol_n1.xml

/etc/libvirt/qemu/rusher.xml  /etc/libvirt/qemu/vcs6_lin_vvr_n2.xml

Continue reading How to clone a KVM virtual machine on Linux