When using MariaDB add-on in hass.io on a docker image, the startup of MariaDB fails when trying to create the database on the host-mounted volume. The failure at startup time is:
2019-06-07 22:52:22 0 [Note] InnoDB: Using Linux native AIO 2019-06-07 22:52:22 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2019-06-07 22:52:22 0 [Note] InnoDB: Uses event mutexes 2019-06-07 22:52:22 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 2019-06-07 22:52:22 0 [Note] InnoDB: Number of pools: 1 2019-06-07 22:52:22 0 [Note] InnoDB: Using SSE2 crc32 instructions 2019-06-07 22:52:22 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2019-06-07 22:52:22 0 [Note] InnoDB: Completed initialization of buffer pool 2019-06-07 22:52:22 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2019-06-07 22:52:22 0 [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 0 pages than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages! 2019-06-07 22:52:22 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error 2019-06-07 22:52:22 0 [Note] InnoDB: Starting shutdown... 2019-06-07 22:52:23 0 [ERROR] Plugin 'InnoDB' init function returned error. 2019-06-07 22:52:23 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2019-06-07 22:52:23 0 [Note] Plugin 'FEEDBACK' is disabled. 2019-06-07 22:52:23 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded 2019-06-07 22:52:23 0 [ERROR] Unknown/unsupported storage engine: InnoDB 2019-06-07 22:52:23 0 [ERROR] Aborting
And the problem goes away when I switch the database to be written to somewhere other than the host-mounted ‘/data’ location.
Ubuntu 18.04.2 is running dockerd --version: Docker version 18.09.6, build 481bc77
It appears that the mariadb images is based on Alpine Linux 3.9, running 4.15.0-51-generic kernel.
I believe this is related to:
And various other reports online that the system call fallocate is not (fully?) supported on Alpine Linux 3.9 yet is used by MariaDB. I suspect the problem will go away with a different base image, and I’m not sure why/how this works on a typical Hass.io instance running on a pi or however most folks run it.