経緯
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://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028
https://qiita.com/dtan4/items/2212607d13ad7c81120e
https://qiita.com/ngyuki/items/a6ef879a285573efd59f