?

Log in

Tue, Nov. 15th, 2016, 09:08 pm
FreeBSD on Hyper-V: MySQL and strorage problem

Имеем FreeBSD 10.3 на кластере Hyper-V, где сторадж подключен через IDE adapter (по умолчанию) причём откуда-нибудь по SMB3. Также имеем InnoDB базу в MySQL 5.6.
Возьмём таблицу на пару гигов и хотим сделать небольшой ALTER TABLE (создать/удалить индекс или сделать партиционирование). Делаем и получаем крэш мускуля с ошибками типа:
InnoDB: Error: the OS said file flush did not succeed
InnoDB: Operating system error number 5 in a file operation.
InnoDB: Error number 5 means 'Input/output error'

Лезем в /var/log/messages, где видим странное:
Nov 13 12:59:04 hostname kernel: g_vfs_done():gptid/198c5806-be2a-11e4-ad30-00155d
71182d[WRITE(offset=42949672960, length=131072)]error = 5
Nov 13 12:59:04 hostname kernel: g_vfs_done():gptid/198c5806-be2a-11e4-ad30-00155d
71182d[WRITE(offset=42949672960, length=32768)]error = 5
...

Обычно это свидетельствует о проблемах со стораджем - BAD-сектора и т.п. Однако, в нашем случае это виртуалка.
Эксперименты привели к тому, что стоит подключить сторадж не через IDE adapter, а через SCSI adapter. Проблема ушла. При этом необходимо помнить, что загрузочный сторадж работать по такой схеме не будет.