Найти тему
ИТ разнообразно

Как мы переносим (многие) наши серверы с Linux на FreeBSD. Часть-12.

Оглавление
Unsplash
Unsplash

Proxmox во FreeBSD

Конец… и приятного OOM!

Переместив всё, я, наконец, смог перенести весь класс IP-адресов OVH с одного физического сервера на другой. Операция прошла довольно быстро, но во избежание проблем я уведомил всех пользователей и провёл операцию в воскресенье и в непиковые часы. Весь процесс занял около 10 минут и не было никаких заминок.

Из соображений безопасности я оставил машину Proxmox активной ещё на несколько дней, но необходимости в её использовании не было. Однако через пару дней я столкнулся с проблемой: самую большую виртуальную машину в некоторых случаях "убивалась", потому что FreeBSD генерировала OOM. Я никогда не видел, начиная с FreeBSD 13.0, никаких OOM (Out of memory), связанных со "злоупотреблением" использованием оперативной памяти ZFS, но в этом случае это действительно произошло.

В итоге я понял, что ZFS на FreeBSD умеет освобождать память, но недостаточно быстро, чтобы справиться с любыми "всплесками" в отдельных виртуальных машинах. На самом деле виртуальные машины не знают о состоянии оперативной памяти физического хоста, поэтому они будут стремиться занять всё отведенное им пространство (даже если оно только для кэширования). Внезапный всплеск (например, если вы создаёте и запускаете новую виртуальную машину) может вызвать внезапное увеличение использования ОЗУ процессом bhyve, и FreeBSD может быть вынуждена его убить, даже если часть ОЗУ занимает только кэш ARC. В то время как Proxmox поддерживает HA (т. е. контроль над тем, работает ли виртуальная машина), vm-bhyve только запускает виртуальную машину (процесс bhyve). Я должен управлять этим с помощью таких инструментов, как monit, но пока я предпочел просто установить ограничения на использование ОЗУ ZFS с помощью vfs.zfs.arc_max, и больше проблем не было.

Продолжение следует...

Перевод с некоторыми авторскими заголовками. Автор оригинала: Stefano Marinelli.