Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Sysctl e o interfata pentru citirea si modificarea dinamica a parametrilor de functionare a kernelului in sistemele de operare BSD si Linux. Cu ajutorul sysctl se pot modifica anumte variabile care altfel ar impune o recompilare a kernelului. Este un instrument foarte util cand este necesara optimizarea unui sistem pentru un anumit serviciu sau pentru un anumit tip de resurse.

In Linux parametri disponibili se gasesc in /proc/sys. Existenta procfs este necesara pentru ca sysctl sa functioneze corect. In FreeBSD apelurile de sistem folosite sun implementate direct in kernel ceea ce duce la o imbunatatire a timpului de raspuns.

Ca sa vedem ce parametri ne permite sa citim sau sa modificam putem rula comanda sysctl -a care, in functie de componentele instalate si de sistemul de operare poate returna pana la 2000 de parametri.

[root@server ~]# sysctl -a | head -20
kern.ostype: FreeBSD
kern.osrelease: 7.1-RELEASE-p4
kern.osrevision: 199506
kern.version: FreeBSD 7.1-RELEASE-p4 #0: Mon Apr  6 17:00:11 UTC 2009
    root@lamp.ro:/usr/obj/usr/src/sys/LAMP
 
kern.maxvnodes: 35343
kern.maxproc: 4004
kern.maxfiles: 8008
kern.argmax: 262144
[root@server ~]#

Daca ne intereseaza un anumit parametru, putem apela sysctl urmat de numele complet sau clasa din care face parte variabila cautata:

[root@server ~]# sysctl security.bsd.see_other_uids
security.bsd.see_other_uids: 1
[root@server ~]# sysctl security.bsd
security.bsd.suser_enabled: 1
security.bsd.unprivileged_proc_debug: 1
security.bsd.conservative_signals: 1
security.bsd.see_other_gids: 1
security.bsd.see_other_uids: 1
security.bsd.unprivileged_read_msgbuf: 1
security.bsd.hardlink_check_gid: 0
security.bsd.hardlink_check_uid: 0
security.bsd.unprivileged_get_quota: 0
[root@server ~]#

Daca ne intereseaza sa modificam valoarea unei variabile vom folosi semnul egal pentru a-i da o valoare.

[root@server ~]# sysctl kern.maxfiles=2048
kern.maxfiles: 8008 -> 2048
[root@server ~]#

Daca modificam un parametru pe Linux, spre deosebire de FreeBSD, va trebui sa folosim sysctl -w variabila=valoare.

Valorile modificate vor fi sterse la prima resetare a sistemului. Pentru ca schimbarile sa fie permanente trebuie sa le adaugam in fisierul /etc/sysctl.conf de unde vor fi citite la pornire. Un exemplu de fisier /etc/sysctl.conf (FreeBSD) ar fi urmatorul:

# General
security.bsd.see_other_uids=0
kern.ipc.shm_use_phys=0
vfs.vmiodirenable=1
vfs.write_behind=1
net.inet.tcp.recvspace=16384
net.inet.tcp.sendspace=32768
net.inet.tcp.always_keepalive=0
kern.ipc.somaxconn=32768
kern.maxfiles=32768
kern.ipc.nmbclusters=65536
net.inet.tcp.syncookies=0
 
# Protectie la DDoS
net.inet.tcp.msl=30000
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.icmplim=50
 
# Firewall
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=8
net.inet.ip.fw.dyn_max=16384

Toate variabilele de mai sus vor fi setate la pornirea sistemului. Mai multe detalii legate de sysctl se pot gasi in pagina de manual.

Linux

One Response so far.

  1. Pensacola says:

    Frumos tutorial … Keep it on!