PowerFlex «ERROR: Не удалось создать вилку таймера» при обновлении лицензии
Summary: Заказчику не удается обновить лицензию PowerFlex.
Symptoms
Сценарий
При попытке обновить лицензию клиент может увидеть следующее сообщение: «ERROR: Не удалось создать вилку таймера"
Симптомы
Из журнала трассировки MDM:
29/09 15:19:38.957139 0x7f91e2645db8:mosEventLog_PostInternal:00608: New event added. Message: "Command set_license received, User: 'admin'. [774]". Additional info: "" Severity: Info 29/09 15:19:38.957208 (nil):mosIO_close:00137: Closing FD(299) 29/09 15:19:38.964892 (nil):mos_CreateProcessWithTimeout:00050: ERROR: Failed to fork timer 29/09 15:19:38.968880 (nil):mosIO_close:00137: Closing FD(299) 29/09 15:19:38.968906 0x7f91e2645db8:mdmObj_SetLicense:01918: Decode rc: ILLEGAL 29/09 15:19:38.968912 0x7f91e2645db8:mdmObj_SetLicense:01921: Bad license. RC: ILLEGAL 29/09 15:19:38.968946 0x7f91e2645db8:mosEventLog_PostInternal:00608: New event added. Message: "Command set_license was not successful. Error code: The license key is invalid or does not match this version. Please contact Customer Support. [774]". Additional info: "" Severity: Warning
Воздействие
Заказчик не может обновить лицензию, пока не будет устранена проблема с ресурсом.
Cause
При выполнении команды scli --set_license для применения лицензии процесс MDM клонируется (разветвляется) дважды.
Первый шаг выполнен успешно, но команде не удалось клонировать процесс MDM. Это может произойти, если в системе недостаточно ресурсов для клонирования процесса. В этом случае конфигурация избыточного выделения памяти SVM ограничила систему только половиной доступной памяти:
grep 'vm.overcommit' ./server/sysctl.txt -H server/sysctl.txt:vm.overcommit_kbytes = 0 server/sysctl.txt:vm.overcommit_memory = 2 server/sysctl.txt:vm.overcommit_ratio = 50
Resolution
Убедитесь, что в системе достаточно доступных ресурсов.
Проверьте параметры ядра sysctl на предмет чрезмерного выделения памяти:
# sysctl -a |grep commit vm.overcommit_memory = 2 (default is 0) vm.overcommit_ratio = 50 (default is 50)
В этом случае установка для параметра «vm.overcommit_memory» значения «два» означает не перегружать память. При этом происходит сбой любого выделения памяти, превышающего лимит превышения лимита выделения. Общий объем выделенного адресного пространства для системы не должен превышать объем подкачки + настраиваемый объем (по умолчанию 50%) физического ОЗУ.
Чтобы решить эту проблему, добавьте/отредактируйте что-нибудь из следующего в /etc/sysctl.conf:
- Измените «vm.overcommit_ratio» на 100, чтобы ОС могла зафиксировать все доступное адресное пространство и перезагрузиться.