;

Что такое sysctl

20.09.2021
20.09.2021

Sysctl – это утилита, при помощи которой root-пользователь может управлять настройками ядра в BSD и Linux «на горячую», то есть на работающей системе. Также с ее помощью можно читать, какие параметры заданы по умолчанию, менять их и подстраивать под свои нужды. В этой статье мы детально разберемся, что такое sysctl, как она работает, какие настройки с ее помощью можно менять и пр.

Ядро – это база, на которой работает операционная система. Оно отвечает за обеспечение доступа различным приложениям к ресурсам компьютера (оперативной памяти, процессорного времени, аппаратному обеспечению, файловой системе, протоколам передачи данных и пр.). В большинстве современных ОС (Ubuntu, Debian, CentOs и пр.) его не нужно собирать самостоятельно, как это было раньше. Вы просто устанавливаете операционную систему, и она работает. Настройки ядра при этом являются стандартными: они подходят для большинства ситуаций, поэтому администраторы их практически не меняют.

Зачем вообще менять ядро? Дело в том, что администраторы могут сталкиваться с различными проблемами при выполнении определенных задач. Например, настроить сетевой стек, установить параметры распределения памяти или процессорного времени, выставить приоритеты и пр. Изменить эти значения можно либо при сборке ядра (но при установке готового дистрибутива это не делается), при загрузке системы или «на лету». Третий вариант зачастую наиболее практичный. Правильно настроив систему, можно распределить процессы на высоконагруженных серверах, защитить их от DDoS-атаки и пр.

Как это работает

Для того чтобы посмотреть настройки ядра, вам необходимо ввести в консоль команду с параметром -а (выглядит это как “sysctl -a”). Система выдаст вам список, состоящий из сотен строк, в каждой из которых имеются определенный параметр и его значение. Любой пользователь системы может просматривать настройки ядра, но поменять его может только тот, у кого есть права root.

Параметр -а выводит весь список настроек. Если вы не хотите просматривать его целиком, то можно обратиться к нужной настройке напрямую. Например, если вы хотите изменить значение подкачки, то вам нужно ввести в консоль “sysctl vm.swappiness”. Она выдаст вам строку типа “vm.swappiness = 50”, в которой цифра после знака равенства и будет необходимым числом.

Надо понимать, что sysctl считывает информацию из так называемого виртуального каталога, расположенного по адресу /proc/sys, который содержит файлы с данными. Именно в них и хранятся действующие настройки ядра. Соответственно, их также можно открыть через консоль. В нашем случае, если мы рассматриваем значение подкачки, команда будет выглядеть “cat/proc/sys/vm/swappiness”. Результат вывода будет одинаковым.

Как менять нужный параметр

Первым делом вам нужно посмотреть, какое именно значение уже задано, и подумать, на что вы хотите его изменить. Далее в консоль нужно ввести команду, которая выглядит как “sysctl -w parameter = переменная”. После знака равенства надо поставить нужное значение. Если там будет пробел или спецсимволы, то надо взять их в “”(двойные кавычки). Допускается передавать несколько значений одной командой. Это удобно, если вносятся массовые изменения.

Обратите внимание, что использовать подобные команды нужно с осторожностью, понимая, что вы делаете, особенно если вы совершаете манипуляции на рабочей производственной системе. Если что-то пойдет не так, то ядро станет нестабильным, что приведет к проблемам с работой. Учитывайте, что сделанные командой sysctl изменения начинают работать сразу, но при этом они не сохраняются в файлах. Соответственно, при перегрузке вернутся предыдущие значения. Чтобы изменить параметры навсегда (установить их по умолчанию при запуске системы), нужно внести их в каталог конфигурации (файлы), расположенный по адресу /etc/sysctl.conf. Также можно воспользоваться командой echo. Это будет выглядеть следующим образом: echo1>/proc/sys/net/ipv4/ip_forward. После выполнения эта команда активирует пересылку пакетов ipv4.

Какие параметры часто меняют

Для рядовых пользователей эта команда вообще не нужна – выставленные по умолчанию значения работают вполне адекватно. Но администраторам на высоконагруженных серверах приходится использовать ее довольно часто. Обычно работа ведется со следующими параметрами:

  1. Vm.swappiness. Параметр отвечает за агрессивность создания свопов из процессов, содержащихся в памяти. Применяется для того, чтобы очищать ее, освобождая место для полезных приложений. По умолчанию устанавливается значение 60, благодаря чему выгрузка в своп осуществляется только тех значений, которые не используются длительное время. Изменять это число можно от 0 до 100.
  2. Net.ipv4.ip_forward. Этим способом вы сможете запретить или разрешить проводить маршрутизацию пакетов. Обычно используется при настройке маршрутизатора. Значения всего два: 0 – запрет, 1 – разрешение.
  3. Net.ipv4.ip_default_ttl. Определяет TTL, или время жизни пакета.
  4. Fs.file-max. Параметр показывает, какие наибольшие значения дескрипторов могут обрабатываться или создаваться операционной системой (речь идет о файлах). Стандарт – 10% от объема оперативной памяти.
  5. Kernel.panic. Показывает, через сколько секунд произойдет перезагрузка сервера в случае появления критической ошибки в ядре.
  6. Vm.laptop_mode. Это значение для ноутбуков. Оно позволяет оставить информацию в оперативной памяти на некоторое время, а не сразу передать ее на жесткий диск. Благодаря этому удается продлить время работы компьютера на 5-10%.
  7. Kernel.ctrl-alt-del. Это значение отвечает за перезагрузку сервера при нажатии трех клавиш управления. Если в нем стоит 0, то сигнал передается процессу, который связан с cad_pid, если 1, то система уходит в reboot сразу же.
  8. Kernel.hostname. Позволяет изменить название сервера или компьютера «на лету», не перегружая систему.
  9. Kernel.randomize_va_space. Обеспечивает защиту и безопасность операционной системы. Используется при DDoS-атаках, которые переполняют буфер. По умолчанию включен, но его можно выключить для проведения различных работ.
  10. Abi.vsyscall32. Если он включен, то 32-разрядные приложения смогут запускаться на 64-разрядной системе.

Это лишь часть команд, которые меняют свойства ядра. Детальнее изучить их можно по инструкциям или специализированной литературе.

Поделиться
Поделиться
Предыдущая новость
Следующая новость