Edited at

CoreOSのStorage Driverをdevicemapperに変更する

More than 1 year has passed since last update.


経緯

CoreOSのデフォルトのStorage Driverはoverlayですが、最近、overlayだとmysqlが起動しなくなったので、Storage Driverを変更することにしました。


手順

以下のツールを実行し、CoreOSで利用できるStorage Driverを探します。

https://github.com/docker/docker/blob/master/contrib/check-config.sh

...

- Storage Drivers:
- "aufs":
- CONFIG_AUFS_FS: missing
- "btrfs":
- CONFIG_BTRFS_FS: enabled (as module)
- CONFIG_BTRFS_FS_POSIX_ACL: enabled
- "devicemapper":
- CONFIG_BLK_DEV_DM: enabled (as module)
- CONFIG_DM_THIN_PROVISIONING: enabled (as module)
- "overlay":
- CONFIG_OVERLAY_FS: enabled (as module)
- "zfs":
- /dev/zfs: missing
- zfs command: missing
- zpool command: missing
...

aufs、devicemapperならMySQLが起動するという情報がありましたが、CoreOSはaufsをサポートしていないので、devicemapperを利用することにしました。

cloud-config.ymlで以下のように設定します

coreos:

units:
- name: docker.service
drop-ins:
- name: 10-devicemapper-storage-driver.conf
content: |
[Service]
Environment="DOCKER_OPTS=--storage-driver=devicemapper"
command: start

設定したcloud-configを適用します

# coreos-cloudinit -from-file=./cloud-config.yml

適用すると、

/etc/systemd/system/docker.service.d/10-devicemapper-storage-driver.conf

が以下の内容で配置されます

[Service]

Environment="DOCKER_OPTS=--storage-driver=devicemapper"

Dockerを再起動します

systemctl restart docker

Storage Driverがdevicemapperに変更されたことを確認

# docker info | grep "Storage Driver"

Storage Driver: devicemapper
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.

※警告については対応したら追記予定。


参考にした記事

https://github.com/coreos/bugs/issues/1142

https://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028

https://qiita.com/dtan4/items/2212607d13ad7c81120e

https://qiita.com/ngyuki/items/a6ef879a285573efd59f

https://groups.google.com/forum/#!topic/coreos-user/AwXlnXNUT1Y