Tuesday, November 18, 2014

Ceph RBD With LXC Containers [feedly]



----
Ceph RBD With LXC Containers
// Ceph

A simple way to secure your data with containers is to use a distributed storage such as Ceph for LXC root storage.

For exemple :

1  
lxc-create -n myvm5 -t debian -B rbd --pool rbd --rbd myvm5 --fstype ext4 --fssize 500  

Diff file for lxc-create :

1  
# diff -u /usr/bin/lxc-create.orig /usr/bin/lxc-create  
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  
--- /usr/bin/lxc-create.orig 2014-11-17 04:16:41.181942000 -0500  +++ /usr/bin/lxc-create 2014-11-17 04:35:27.225942000 -0500  @@ -24,6 +24,7 @@   echo "usage: lxc-create -n <name> [-f configuration] [-t template] [-h] [fsopts] -- [template_options]"   echo " fsopts: -B none"   echo " fsopts: -B lvm [--lvname lvname] [--vgname vgname] [--fstype fstype] [--fssize fssize]"  + echo " fsopts: -B rbd [--pool poolname] [--rbd rbd] [--fstype fstype] [--fssize fssize]"   echo " fsopts: -B btrfs"   echo " flag is not necessary, if possible btrfs support will be used"   # echo " fsopts: -B union [--uniontype overlayfs]"  @@ -64,7 +65,7 @@   }     shortoptions='hn:f:t:B:'  -longoptions='help,name:,config:,template:,backingstore:,fstype:,lvname:,vgname:,fssize:'  +longoptions='help,name:,config:,template:,backingstore:,fstype:,lvname:,vgname:,pool:,rbd:,fssize:'   localstatedir=/var   lxc_path=${localstatedir}/lib/lxc   bindir=/usr/bin  @@ -119,6 +120,16 @@   vgname=$1   shift   ;;  + --pool)  + shift  + pool=$1  + shift  + ;;  + --rbd)  + shift  + rbd=$1  + shift  + ;;   --fstype)   shift   fstype=$1  @@ -161,7 +172,7 @@   fi     case "$backingstore" in  - lvm|none|btrfs|_unset) :;;  + lvm|rbd|none|btrfs|_unset) :;;   *) echo "'$backingstore' is not known ('none', 'lvm', 'btrfs')"   usage   exit 1  @@ -216,6 +227,13 @@   echo "please delete it (using \"lvremove $rootdev\") and try again"   exit 1   fi  +elif [ "$backingstore" = "rbd" ]; then  + which rbd > /dev/null  + if [ $? -ne 0 ]; then  + echo "rbd command not found. Please install ceph-common package"  + exit 1  + fi  + rootdev=/dev/rbd/$pool/$rbd   elif [ "$backingstore" = "btrfs" ]; then   mkdir "$lxc_path/$lxc_name"   if ! out=$(btrfs subvolume create "$rootfs" 2>&1); then  @@ -257,6 +275,14 @@   mkfs -t $fstype $rootdev || exit 1   mount -t $fstype $rootdev $rootfs   fi  +  +if [ $backingstore = "rbd" ]; then  + [ -d "$rootfs" ] || mkdir $rootfs  + rbd create $pool/$rbd --size=$fssize || exit 1  + rbd map $pool/$rbd || exit 1  + mkfs -t $fstype $rootdev || exit 1  + mount -t $fstype $rootdev $rootfs  +fi     if [ ! -z $lxc_template ]; then  

If you want to make persistent after reboot, you must add rbd in /etc/ceph/rbdmap and add line in fstab.


----

Shared via my feedly reader


Sent from my iPhone

No comments:

Post a Comment