device-mapper

2013年12月21日

このエントリーをはてなブックマークに追加

devicemapper-backedは、動くけども、どうもオーバーヘッドが大きい

docker-top-logo

docker-0.7になってからメジャーLinuxディストリビューションで動くようになったのは、ご存知の通りで、CentOS6でも簡単にDockerホストを構築できるようになった。

確かに動きはするけども、しばらく使ってみると、もたついた動作へと変化して行く。『aufs-backedにしたら、どうなるのか?』と言う興味本位から、aufs-backed dockerホスト構築してみた。

検証環境
  • CentOS 6.5
  • kernel-2.6.32-431.el6.x86_64
  • docker-io-0.7.0-14.el6.x86_64
  • lxc-0.9.0-2.el6.x86_64
  • kernel-ml-aufs-3.10.5-3.el6.x86_64
devicemapper-backed docker info
$ sudo docker info
Containers: 0
Images: 0
Driver: devicemapper
 Pool Name: docker-253:1-2360151-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 291.5 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 0.7 Mb
 Metadata Space Total: 2048.0 Mb

Driver: devicemapper となっている。

セットアップ考察背景
  1. aufs入りkernelが必要か?
  2. https://github.com/sciurus/docker-rhel-rpm を発見。ただし、提供しているのはrpmspecファイル。rpmは提供してない
  3. 調べた結果kernel-ml-aufsを提供しているyumリポジトリに辿り着く。http://www.hop5.in/yum/el6/repoview/
  4. ここまで材料が揃うと、あとはインストールするだけ。
hop5 yum repo
repoファイルを配置
$ sudo curl -fsSkL -o /etc/yum.repos.d/hop5.repo http://www.hop5.in/yum/el6/hop5.repo
repoファイルの中身を確認
$ cat /etc/yum.repos.d/hop5.repo
[hop5]
name=www.hop5.in Centos Repository
baseurl=http://www.hop5.in/yum/el6/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-HOP5
kernel-ml-aufsをインストール
$ sudo yum install -y kernel-ml-aufs
grub.confを確認
$ cat /boot/grub/grub.conf
default=1
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.5-3.el6.x86_64)
        root (hd0,0)
        kernel /boot/vmlinuz-3.10.5-3.el6.x86_64 ro root=LABEL=root rd_NO_LUKS rd_NO_LVM LANG=C rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM selinux=0
        initrd /boot/initramfs-3.10.5-3.el6.x86_64.img
title centos-6.5_x86_64 (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=LABEL=root rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM selinux=0
        initrd /boot/initramfs-2.6.32-431.el6.x86_64.img

default=1となっていて、kernel-ml-aufsがデフォルトではない。defaultを変更する必要がある。

grub設定変更

後で差分を確認する為に、既存confをバックアップ。

$ sudo cp -i /boot/grub/grub.conf{,.0}

default値を 1 から 0 へ変更

$ sudo sed -i 's,default=1,default=0,' /boot/grub/grub.conf
$ sudo diff /boot/grub/grub.conf{.0,}
1c1
< default=1
---
> default=0
kernel-ml-aufsで起動させる為、再起動
$ sudo reboot
docker infoを確認
$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No swap limit support

driverがaufsになってる事を確認。devicemapperとは違い、軽快なDockerホストが手に入った。

あとがき
  • 『何をしたいか』に着目すると、vanilla kernelにこだわる必要はない。システム要件次第か。
  • 純正RHELに拘る場合は、vanilla kernelである必要があるので、devicemapper-backedと言う選択肢しかない。
参考文献



編集
@hansode at 23:50|PermalinkComments(0)TrackBack(0)