vitalif / vitastor

Simplified distributed block and file storage with strong consistency, like in Ceph (repository mirror)
https://vitastor.io
Other
140 stars 22 forks source link

add configuration via netlink to support kinds of timeouts #58

Closed nosledi closed 7 months ago

nosledi commented 9 months ago

nbd-proxy: add configuration via netlink to support kinds of timeouts.

By MIND Software LLC. By submitting this pull request, I accept Vitastor CLA

vitalif commented 9 months ago

Спасибо! Тут тоже потестил. В целом работает, но похоже, что кривовато работает второй таймаут в самом ядре линукса. Конкретно:

Вышеописанное, скорее всего, не переводит для юзеров NBD в разряд "реально стабильных" штук, поэтому пока ещё думаю, что с этим делать... Возможно, если ещё допилить возможно оживлять сдохший девайс, стало бы лучше. Ну и из мелочей - со стилем там что-то не то совсем, типа отступы по 2 пробела, но это фигня, я сам поправлю после вливания. И libnl обязательный, наверное его лучше сделать необязательным. Но это мелочи, повторюсь

vitalif commented 7 months ago

Короче, немного покорёжил всё, добавил режим "оживления мёртвого девайса", написал доку и тоже влил. Но netlink увы не панацея, у NBD всё равно остаются проблемы - при оживлении мёртвого девайса старые запросы I/O всё равно либо остаются висеть, либо обрубаются по таймауту. Смешно, но при этом похоже в Linux 5.19 исправили поведение обычного nbd через ioctl - теперь если приложение дохнет, девайсы не зависают насмерть и не требуют перезагрузки сервера. Поэтому и таймаут дефолтный поменял и сделал опять 0. Ну да фиг с ним, в CSI уже VDUSE вместо NBD используется. В любом случае спасибо за фичу =)