[ Berlin ] Gluster Summit 2016 – An awesome event

This year’s gluster summit was held at Berlin ( Oct 6th and 7th – 2016) and I am happy to be part of it. An awesome city and great folks around.

There were lots of presentations about Gluster and its upcoming features. If you would like to catch up with all the presentations please check this account in slideshare # http://www.slideshare.net/GlusterCommunity/

I gave a presentation in the same event with Luis on contenarized storage for cloud applications and received really good feedback about this. \o/

Here is the slide of the presentation.

[slideshare id=67284723&doc=glusterfssummit2016-161017120703]

Gluster Client Containers or containers capable of mounting Gluster Volumes.

I have been receiving lots of queries on whether we can mount GlusterFS from the container ? or Gluster Client containers are available ?
Yes, it is. Today I refreshed this image to fedora24, so the blog.
The process to use gluster client containers are simple as shown below:

[Update: the same docker image can be found at https://hub.docker.com/r/gluster/gluster-client/ ]

#docker pull humble/gluster-client

Then run the container as

[root@localhost gluster-client]# docker run -d -ti –privileged humble/gluster-client bash
7d8dfbf8e4dbb841b240cc196682c77aad7c30cc4511d906cab275cd326b4755

[root@localhost gluster-client]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d8dfbf8e4db humble/gluster-client "bash" 6 seconds ago Up 2 seconds high_cray
[root@localhost gluster-client]# docker exec -ti 7d8dfbf8e4db bash

[root@7d8dfbf8e4db /]# glusterd –version
glusterfs 3.8.4 built on Sep 10 2016 16:42:36
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2013 Red Hat, Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3 or later), or the GNU General Public License, version 2 (GPLv2), in all cases as published by the Free Software Foundation.
[root@7d8dfbf8e4db /]#cat /etc/redhat-release
Fedora release 24 (Twenty Four)
[root@7d8dfbf8e4db /]#

Make sure “FUSE” device exist in the container as shown below.

[root@localhost gluster-client]# ll /dev/fuse
crw-rw-rw-. 1 root root 10, 229 Sep 18 03:03 /dev/fuse
[root@localhost gluster-client]#

I have a gluster volume exported from another server and would like to mount it inside this container.

[root@7d8dfbf8e4db /]# mount -t glusterfs 192.168.43.149:/myVol1 /mnt
WARNING: getfattr not found, certain checks will be skipped..
[root@7d8dfbf8e4db mnt]# mount |grep gluster
192.168.43.149:/myVol1 on /mnt type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
[root@7d8dfbf8e4db mnt]#
[root@7d8dfbf8e4db /]# cd /mnt
[root@7d8dfbf8e4db mnt]# ls
[root@7d8dfbf8e4db mnt]# touch Hi
[root@7d8dfbf8e4db mnt]#

Thats it.

I will automate the build in docker hub and move this image to gluster official account soon.

Gluster Container Demo Videos on “Gluster as a Persistent Data Store for Containers…. “

Recently I got a chance to consolidate the Demo videos which covers how GlusterFS can be used in Docker, kubernetes and Openshift. I have placed everything in single channel for better tracking.

Here is a brief description about the available videos:

How to run a Gluster Container :

Reference # Blog – bit.ly/2bNobjK Presentation – bit.ly/2bNow5Y

This demo covers the standard process to run Gluster Docker Containers in a Linux system. It shows which directories can be exported when spawning Gluster Containers to make sure data persistence. This demo also talks about the usage of official Gluster Container image.

How to form a Gluster trusted pool using Gluster Containers:

This demo shows how we can create a Gluster trusted pool (cluster) among Gluster containers. This is one of the important building blocks of Running storage in container or to be precise, “Storage as a Service” in my terms.

Gluster Container deployment in Openshift using templates-DaemonSets

Reference # bit.ly/2btsZLQ

Once we are confident that we can run gluster containers and form a trusted pool, the next step would be deploying it in PaaS like offering. Obviously I chose Openshift PaaS for this demo because it is an awesome PaaS based on Kubernetes.

“OpenShift is Red Hat’s Platform-as-a-Service (PaaS) that allows developers to quickly develop, host, and scale applications in a cloud environment. With OpenShift you have a choice of offerings, including online, on-premise, and open source project options.” .

OpenShift has a deployment model called ‘template deployment’ which will be a part of this demo as well. This demo also covers one of the deployment option ‘DaemonSets’ to deploy gluster containers/pods in Openshift.

Gluster Persistent Storage in Kubernetes/Openshift OR PV and PVC using GlusterFS plugin

Reference #

Blog – bit.ly/2boATUK Presentation – bit.ly/2bX5XNZ

This demo shows us a way to use Gluster trusted pool and Gluster volumes in an OpenShift or Kubernetes environment. The trusted pool may or may not be hosted in containers. The demo covers the Endpoint, Service, Persistent Volume and Persistent Volume Claim creation based on GlusterFS trusted pool and volumes. Once we have a ‘BOUND” claim, one can use it in application pod/container for Persistent Data Store.

Gluster Pods deployment with PetSets for consistent pod name

In general the pods get a random name in an Openshift or Kubernetes environment. At times we may need to assign defined names or ordered names for the Gluster Pods. There is a new attribute ‘PetSets‘ in kubernetes which enables this functionality. Here we use “PetSets’ in this demo to show how we can get defined names for Gluster Containers and to show how this PetSet pods can be controlled or scaled as well.

Stay tuned, there’s more to come in this space.

Possible configurations of GlusterFS in Kubernetes/OpenShift setup

In previous blog posts, we discussed, how to use GlusterFS as a persistent storage in Kubernetes and Openshift. In nutshell, the GlusterFS can be deployed/used in a Kubernetes/openshift environment as :

*) Contenarized GlusterFS ( Pod ) *) GlusterFS as Openshift service and Endpoint (Service and Endpoint). *) GlusterFS volume as Persistent Volume (PV) and using GlusterFS volume plugin to bind this PV to a Persistent Volume Claim ( PVC) *) GlusterFS template to deploy GlusterFS pods in an Openshift Environment.

All the configuration files that can be used to deploy GlusterFS can be found @ github.com/humblec/glusterfs-kubernetes-openshift/ or github.com/gluster/glusterfs-kubernetes-openshift. Let’s see how to use these files to deploy GlusterFS in Kubernetes and Openshift. We will start with Deploying GlusterFS pods in an Openshift/Kubernetes Environment. Deploying GlusterFS Pod:

[Update] The pod file is renamed to gluster-pod.yaml in the mentioned repo. More details about Gluster Containers can be found @http://www.slideshare.net/HumbleChirammal/gluster-containers

GlusterFS pods can be deployed in Kubernetes/Openshift, so that Gluster Nodes are deployed in containers and it can provide persistent storage for Openshift/Kubernetes setup. The examples files in this repo are used for this demo.

Step 1: Create GlusterFS pod

[root@atomic-node2 gluster_pod]# oc create -f gluster-1.yaml

Step 2: Get details about the GlusterFS pod.

[root@atomic-node2 gluster_pod]# oc describe pod gluster-1

Name: gluster-1 Namespace: default Image(s): gluster/gluster-centos Node: atomic-node1/10.70.43.174 Start Time: Tue, 17 May 2016 10:19:17 +0530 Labels: name=gluster-1 Status: Running Reason: Message: IP: 10.70.43.174 Replication Controllers: Containers: glusterfs: Container ID: docker://ff8f4af700d725dfe0e08939ec011c34ddf9dedc7204e0ced1cc355a56150742 Image: gluster/gluster-centos Image ID: docker://033de9c44a8aabde55ce8a2b751ccf5bc345fdb534ea30e79a8fa70b82dc7761 QoS Tier: cpu: BestEffort memory: BestEffort State: Running Started: Tue, 17 May 2016 10:20:35 +0530 Ready: True Restart Count: 0 Environment Variables: Conditions: Type Status Ready True Volumes: brickpath: Type: HostPath (bare host directory volume) Path: /mnt/brick1 default-token-72d89: Type: Secret (a secret that should populate this volume) SecretName: default-token-72d89 Events: FirstSeen LastSeen Count From SubobjectPath Reason Message ───────── ──────── ───── ──── ───────────── ────── ─────── 1m 1m 1 {scheduler } Scheduled Successfully assigned gluster-1 to atomic-node1 1m 1m 1 {kubelet atomic-node1} implicitly required container POD Pulled Container image “openshift3/ose-pod:v3.1.1.6” already present on machine 1m 1m 1 {kubelet atomic-node1} implicitly required container POD Created Created with docker id f55ce55e6ea3 1m 1m 1 {kubelet atomic-node1} implicitly required container POD Started Started with docker id f55ce55e6ea3 1m 1m 1 {kubelet atomic-node1} spec.containers{glusterfs} Pulling pulling image “gluster/gluster-centos” 8s 8s 1 {kubelet atomic-node1} spec.containers{glusterfs} Pulled Successfully pulled image “gluster/gluster-centos” 8s 8s 1 {kubelet atomic-node1} spec.containers{glusterfs} Created Created with docker id ff8f4af700d7 8s 8s 1 {kubelet atomic-node1} spec.containers{glusterfs} Started Started with docker id ff8f4af700d7

From above logs, you can see it pulled gluster/gluster-centos container image and deployed containers from it.

[root@atomic-node2 gluster_pod]# oc get pods NAME READY STATUS RESTARTS AGE gluster-1 1/1 Running 0 1m

Examine the container and make sure it has a running GlusterFS daemon.

[root@atomic-node2 gluster_pod]# oc exec -ti gluster-1 /bin/bash Examine the processes running in this container and the glusterd service information.

[root@atomic-node1 /]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.4 0.0 40780 2920 ? Ss 04:50 0:00 /usr/sbin/init root 20 0.3 0.0 36816 4272 ? Ss 04:50 0:00 /usr/lib/syste root 21 0.0 0.0 118476 1332 ? Ss 04:50 0:00 /usr/sbin/lvme root 37 0.0 0.0 101344 1228 ? Ssl 04:50 0:00 /usr/sbin/gssp rpc 44 0.1 0.0 64904 1052 ? Ss 04:50 0:00 /sbin/rpcbind root 209 0.1 0.1 364716 13444 ? Ssl 04:50 0:00 /usr/sbin/glus root 341 1.1 0.0 13368 1964 ? Ss 04:51 0:00 /bin/bash root 354 0.0 0.0 49020 1820 ? R+ 04:51 0:00 ps aux

[root@atomic-node1 /]# service glusterd status Redirecting to /bin/systemctl status glusterd.service ● glusterd.service – GlusterFS, a clustered file-system server Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2016-05-17 04:50:41 UTC; 35s ago Process: 208 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid –log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 209 (glusterd) CGroup: /system.slice/docker-ff8f4af700d725dfe0e08939ec011c34ddf9dedc7204e0ced1cc355a56150742.scope/system.slice/glusterd.service └─209 /usr/sbin/glusterd -p /var/run/glusterd.pid –log-level INFO… ‣ 209 /usr/sbin/glusterd -p /var/run/glusterd.pid –log-level INFO… May 17 04:50:36 atomic-node1 systemd[1]: Starting Gluste… May 17 04:50:41 atomic-node1 systemd[1]: Started Gluster… Hint: Some lines were ellipsized, use -l to show in full. Let’s fetch some more details about GlusterFS in this container.

[root@atomic-node1 /]# gluster –version glusterfs 3.7.9 built on Mar 20 2016 03:19:49 Repository revision: git://git.gluster.com/glusterfs.git Copyright (c) 2006-2011 Gluster Inc. GlusterFS comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of GlusterFS under the terms of the GNU General Public License. [root@atomic-node1 /]#

[root@atomic-node1 /]# mount |grep mnt /dev/mapper/atomic-node1-root on /mnt/brick1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota) This container is built on top of CentOS base image as shown below.

[root@atomic-node1 /]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)

[root@atomic-node1 /]#

In this article, we discussed, how to run GlusterFS as a pod in Kubernetes or Openshift setup.
[Part 2] covers how to use GlusterFS as a service, Persistent Volume for a Persistent Volume Claim.
[Part 3] covers how to use GlusterFS template to deploy GlusterFS pods in an Openshift/kubernetes setup.

[Coming Soon] Dynamic Provisioning of GlusterFS volumes in Kubernetes/Openshift!!

In this context I am talking about the dynamic provisioning capability of ‘glusterfs’ plugin in Kubernetes/Openshift. I have submitted a Pull Request to Kubernetes to add this functionality for GlusterFS. At present, there is no existing network storage provisioners in kubernetes eventhough there are cloud providers. The idea here is to make the glusterfs plugin capable of provisioning volumes on demand from kubernetes/openshift .. Cool, Isnt it ? Indeed this is a nice feature to have. That said, an OSE user request for a space for example : 20G and the glusterfs plugin takes this request and create 20G and bound that to the claim. The plugin can use any REST service, but the example patch is based on ‘heketi’. Here is the workflow: Start your kubernetes controller manager with highlighted options:
In this context I am talking about the dynamic provisioning capability of ‘glusterfs’ plugin in Kubernetes/Openshift. I have submitted a Pull Request to Kubernetes to add this functionality for GlusterFS. At present, there is no existing network storage provisioners in kubernetes eventhough there are cloud providers. The idea here is to make the glusterfs plugin capable of provisioning volumes on demand from kubernetes/openshift .. Cool, Isnt it ? Indeed this is a nice feature to have. That said, an OSE user request for a space for example : 20G and the glusterfs plugin takes this request and create 20G and bound that to the claim. The plugin can use any REST service, but the example patch is based on ‘heketi’. Here is the workflow: Start your kubernetes controller manager with highlighted options:

…kube controller-manager –v=3
–service-account-private-key-file=/tmp/kube-serviceaccount.key
–root-ca-file=/var/run/kubernetes/apiserver.crt –enable-hostpath-provisioner=false

–enable-network-storage-provisioner=true –storage-config=/tmp –net-provider=glusterfs
–pvclaimbinder-sync-period=15s –cloud-provider= –master=127.0.0.1:8080

Create a file called gluster.json in /tmp directory. The important fields in this config file are ‘endpoint’ and ‘resturl’. The endpoint has to be defined and match the setup. The resturl has been filled with the rest service which can take the input and create a gluster volume in the backend. As mentioned earlier I am using heketi for the same.

[hchiramm@dhcp35-111 tmp]$ cat gluster.json
{
“endpoint”: “glusterfs-cluster”,
“resturl”: “http://127.0.0.1:8081”,
“restauthenabled”:false,
“restuser”:””,
“restuserkey”:””
}
[hchiramm@dhcp35-111 tmp]$

We have to define an ENDPOINT and SERVICE. Below are the example configuration files.

ENDPOINT :
“ip” has to be filled with your gluster trusted pool IP.

[hchiramm@dhcp35-111 ]$ cat glusterfs-endpoint.json
{
“kind”: “Endpoints”,
“apiVersion”: “v1”,
“metadata”: {
“name”: “glusterfs-cluster”
},
“subsets”: [
{
“addresses”: [
{
“ip”: “10.36.4.112”
}
],
“ports”: [
{
“port”: 1
}
]
},
{
“addresses”: [
{
“ip”: “10.36.4.112”
}
],
“ports”: [
{
“port”: 1
}
]
}
]
}

SERVICE:
Please note that the Service Name is matching with ENDPOINT name

[hchiramm@dhcp35-111 ]$ cat gluster-service.json
{
“kind”: “Service”,
“apiVersion”: “v1”,
“metadata”: {
“name”: “glusterfs-cluster”
},
“spec”: {
“ports”: [
{“port”: 1}
]
}
}
[hchiramm@dhcp35-111 ]$

Finally we have a Persistent Volume Claim file as shown below:
NOTE: The size of the volume is mentioned as ’20G’:

[hchiramm@dhcp35-111 ]$ cat gluster-pvc.json
{
“kind”: “PersistentVolumeClaim”,
“apiVersion”: “v1”,
“metadata”: {
“name”: “glusterc”,
“annotations”: {
“volume.alpha.kubernetes.io/storage-class”: “glusterfs”
}
},
“spec”: {
“accessModes”: [
“ReadOnlyMany”
],
“resources”: {
“requests”: {
“storage”: “20Gi”
}
}
}
}
[hchiramm@dhcp35-111 ]$

Let’s start defining the endpoint, service and PVC.

[hchiramm@dhcp35-111 ]$ ./kubectl create -f glusterfs-endpoint.json
endpoints “glusterfs-cluster” created
[hchiramm@dhcp35-111 ]$ ./kubectl create -f gluster-service.json
service “glusterfs-cluster” created
[hchiramm@dhcp35-111 ]$ ./kubectl get ep,service
NAME ENDPOINTS AGE
ep/glusterfs-cluster 10.36.6.105:1 14s
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/glusterfs-cluster 10.0.0.10 1/TCP 9s
svc/kubernetes 10.0.0.1 443/TCP 13m
[hchiramm@dhcp35-111 ]$ ./kubectl get pv,pvc
[hchiramm@dhcp35-111 ]$

Now, let’s request a claim!

[hchiramm@dhcp35-111 ]$ ./kubectl create -f glusterfs-pvc.json
persistentvolumeclaim “glusterc” created
[hchiramm@dhcp35-111 ]$ ./kubectl get pv,pvc
NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
pv/pvc-39ebcdc5-442b-11e6-8dfa-54ee7551fd0c 20Gi ROX Bound default/glusterc 2s
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
pvc/glusterc Bound pvc-39ebcdc5-442b-11e6-8dfa-54ee7551fd0c 0 3s
[hchiramm@dhcp35-111 ]$

Awesome! Based on the request it created a PV and BOUND to the PVClaim!!

[hchiramm@dhcp35-111 ]$ ./kubectl describe pv pvc-39ebcdc5-442b-11e6-8dfa-54ee7551fd0c
Name: pvc-39ebcdc5-442b-11e6-8dfa-54ee7551fd0c
Labels:
Status: Bound
Claim: default/glusterc
Reclaim Policy: Delete
Access Modes: ROX
Capacity: 20Gi
Message:
Source:
Type: Glusterfs (a Glusterfs mount on the host that shares a pod’s lifetime)
EndpointsName: glusterfs-cluster
Path: vol_038b56756f4e3ab4b07a87494097941c
ReadOnly: false
No events.
[hchiramm@dhcp35-111 ]$

Verify the volume exist in backend:

[root@ ~]# heketi-cli volume list |grep 038b56756f4e3ab4b07a87494097941c
038b56756f4e3ab4b07a87494097941c
[root@ ~]#

Let’s delete the PV claim —

[hchiramm@dhcp35-111 ]$ ./kubectl delete pvc glusterc
persistentvolumeclaim “glusterc” deleted
[hchiramm@dhcp35-111 ]$ ./kubectl get pv,pvc
[hchiramm@dhcp35-111 ]$

It got deleted!

Verify it from backend:

[root@ ~]# heketi-cli volume list |grep 038b56756f4e3ab4b07a87494097941c
[root@ ~]#

We can use the Volume for app pods by referring the claim name.
Hope this is a nice feature to have !

Please let me know if you have any comments/suggestions.

Also, the patch – https://github.com/kubernetes/kubernetes/pull/30888 is undergoing review in upstream as mentioned earlier and hopefully it will make it soon to the kubernetes release. I will provide an update here as soon as its available in upstream.

Gluster Container Images are updated to GlusterFS version 3.7.3

The official images of GlusterFS are available @docker hub for some time now, however GlusterFS version 3.6 was embedded in the same. Recently these GlusterFS Docker Container images have been updated to latest version of GlusterFS ( ie 3.7.3).

To know more about GlusterFS 3.7 please visit this url and to know about 3.7.3 please visit this url

The container images are available with ‘gluster’ account in docker hub.

There are two images (fedora and CentOS) available in docker hub for GlusterFS.

docker.io docker.io/gluster/gluster-centos CentOS7 + GlusterFS 3.7 1 [OK]
docker.io docker.io/gluster/gluster-fedora Fedora21 + GlusterFS 3.7 1 [OK]

You can use below command to run these images:
docker run –privileged -t -i gluster/gluster-fedora

Once the container is started, key combination Ctrl + p + q can be used to detach.

To re-attach:
“docker exec -ti ca551f3295fe bash” command where ca551f3295fe is the container ID.

Below video shows how can you use these images for deploying gluster containers.

GlusterFS Containers with Docker, Kubernetes and Openshift

Thought of sharing consolidated news on GlusterFS containers efforts here. Below is the snip of the email which I sent a few days back to gluster-users and gluster-devel mailing list. I hope it gives a summary, if not please let me know.


I would like to provide you a status update on the developments with GlusterFS containers and its presence in projects like Docker, Kubernetes, and Openshift.

We have containerized GlusterFS with base image of CentOS and Fedora and its available at Docker Hub[1] to consume.

The Dockerfile of the image can be found at github[2].

You can pull the image with

# docker pull gluster/gluster-centos # docker pull gluster/gluster-fedora

The exact steps to be followed to run GlusterFS container is mentioned here[3].

We can deploy GlusterFS pods in Kubernetes Environment and an example blog about this setup can be found here [4].

There is GlusterFS volume plugin available in Kubernetes and openshift v3 which provides Persistent Volume
to the containers in the Environment, How to use GlusterFS containers for Persistent Volume and Persistent Volume Claim in Openshift has been recorded at [5].

[1]https://hub.docker.com/r/gluster/
[2]https://github.com/gluster/docker/
[3]http://tinyurl.com/jupgene
[4]http://tinyurl.com/zsrz36y
[5]http://tinyurl.com/hne8g7o

Please let us know if you have any comments/suggestions/feedback.

Me @ FOSDEM 2016

An amazing event! This year’s FOSDEM (https://fosdem.org/2016/ ) was held at Brussels. It was my first experience to meet more than 5000+ hackers at one venue where almost everyone is passionate about opensource. I would say its not just developers but also DevOps, Testers, System Administrators, Security groups and many more. I was surprised to see some opensource families at the venue. I was responsible for the Gluster booth at FOSDEM along with Kaushal. We also had help from Amye (@Amye),Neils (@nixpanic) and Kaleb. Kaushal has already blogged about this event here. I was really happy to get feedback about GlusterFS, and also to interact with Gluster users who are part of the vibrant Gluster community. Got a chance to talk with many users and most of the feedback is captured in Kaushal’s blog. However let me summarize what I heard from this awesome crowd.

*) Many have deployed Gluster at a smaller scale and they seem to be really happy with the way GlusterFS has been fulfilling their requirements. Nearly half of them are still running older versions of GlusterFS. I tried to convince them to move/upgrade to later versions to get further improvements in features and bug fixes.

*) Gluster has lot of deployments with Ovirt as Gluster is the right fit for VM store use case. Although it works perfectly for most of the users, some did face the issue of split brain at times. To address this concern, Gluster developer community has come up with this innovative solution called as the ‘arbitrator’. Users wanted to know more details about this feature. I managed to give an overview of the same and promised a blog post about this feature shared across ovirt and Gluster community. We will blog about it soon.

*) Containers and Gluster also garnered much interest. As of today, Gluster is containerized. I could answer all these queries as I am currently working on it. I have written a few blog posts [1] about it and felt good to share it with them. You can read about it here: [Building Gluster Containers] , GlusterFS cluster in kubernetes

*) “Wow Gluster logo is so cool, let me grab it”. Yes the logo is cool, so is Gluster. Many wanted to know the story behind the Gluster logo. We tried our best to make up a story in an opensource way 😛

IMG_20160130_160458

*) Some were curious about the new ‘sharding’ feature which is available in Gluster today.

*) Many users who have never used GlusterFS wanted to try it after hearing an overview about Gluster. They are always welcome to Gluster community.

*) We also had some queries from the other projects like OpenMandriva, DRLM, BareOS ..etc. Indeed it was good to meet them and discuss integration possibilities.

*) “Gluster Documentation has improved a lot recently”. Yes, it is and we will keep improving it. I was really happy to hear this, being one of the persons behind this task.

*) Few users also praised about the ease of deploying Gluster compared to other storage projects.

Finally, I was surprised to hear that there are people who use Gluster for Email and Database workloads and that it is working out really well for them!

Catching up with friends is always an addon when you attend a conference, FOSDEM gave me a great opportunity !
Thanks Red Hat for sponsoring my trip to FOSDEM. I am sure I wont miss FOSDEM 2017 😛

“Running with unpopulated /etc” – Failing to run systemd based container ?

Recently I experienced, systemd based container fails to run in certain version of distros.

For ex: If I run my container with systemd I get below messages.

#docker run –rm -t -i –privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro
systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) Detected virtualization docker. Detected architecture x86-64. Running with unpopulated /etc. …. Set hostname to . Initializing machine ID from random generator. Populated /etc with preset unit settings. Unit etc-hosts.mount is bound to inactive unit dev-mapper-X.X.root.device. Stopping, too. Unit etc-hostname.mount is bound to inactive unit dev-mapper-X.X.root.device. Stopping, too…. Unit etc-resolv.conf.mount is bound to inactive unit dev-mapper-X.X.root.device. Stopping, too. Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory. Startup finished in 106ms. Failed to create unit file /run/systemd/generator.late/network.service: File exists Failed to create unit file /run/systemd/generator.late/netconsole.service: File exists

The line ‘Running with unpopulated /etc’ looked suspicious to me, after some attempts we were able to conclude that, the things were going wrong in absense of ‘/etc/machine-id’ file which used to be there. If you came across similar to this situation, make an entry in your docker file to create /etc/machine-id as shown below and give a try!

#RUN touch /etc/machine-id

now, build your image and start the container from a new image. Let me know how it goes.