From 8115819c3a2f83c3c05e49dab16034d67c163097 Mon Sep 17 00:00:00 2001 From: Alexander Langer Date: Thu, 20 Dec 2001 23:04:57 +0000 Subject: [PATCH] Add the "config" chapter, based on original rev 1.29 Translated by: Martin Heinen Obtained from: FreeBSD German Documentation Project --- .../books/handbook/config/chapter.sgml | 1018 +++++++++++++++++ 1 file changed, 1018 insertions(+) create mode 100644 de_DE.ISO8859-1/books/handbook/config/chapter.sgml diff --git a/de_DE.ISO8859-1/books/handbook/config/chapter.sgml b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml new file mode 100644 index 0000000000..6d6276a444 --- /dev/null +++ b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml @@ -0,0 +1,1018 @@ + + + + + + + Chern + Lee + Geschrieben von + + + + + Mike + Smith + Nach einem Tutorial von + + + + + Matt + Dillon + Basiert ebenfalls auf tuning(7) von + + + + + Konfiguration und Tuning + + + Übersicht + + System-Konfiguration/Optimierung + + Ein korrekt konfiguriertes System kann die Arbeit, + die bei der zukünftigen Pflege und bei Migrationen des Systems + entsteht, erheblich reduzieren. + Dieses Kapitel beschreibt Aspekte der administrativen + Konfiguration von FreeBSD Systemen. + + Es werden zudem einige Parameter beschrieben, die gesetzt + werden können, um aus einem FreeBSD System die optimale + Leistung zu holen. + + Nachdem Sie dieses Kapitel durchgearbeitet haben, + werden Sie folgendes wissen: + + + + Warum und wie Sie effizient Dateisysteme und + Swap-Partitionen auf Ihrer Festplatte einrichten. + + + Die Grundlagen der Konfiguration mit + rc.conf und des Systems zum Starten + von Applikationen in /usr/local/etc/rc.d. + + + Wie Sie virtuelle Hosts und Netzwerkgeräte + konfigurieren. + + + Wie Sie die verschiedenen Konfigurationsdateien + in /etc benutzen. + + + Wie Sie mit sysctl Variablen FreeBSD + einstellen können. + + + Wie Sie die Platten Performance einstellen und Kernel Parameter + modifizieren können. + + + + Bevor Sie dieses Kapitel lesen, sollten Sie + + + die Grundlagen von Unix und FreeBSD () + verstehen. + + + Damit vertraut sein, wie Sie die FreeBSD-Quellen aktuell + halten + + und wissen, wie Sie einen + Kernel konfigurieren und kompilieren. + + + + + + + Vorbereitende Konfiguration + + + Layout von Partitionen + + Layout von Partitionen + /etc + /var + /usr + + + Partitionen + + Wenn Sie Dateisysteme mit &man.disklabel.8; oder + &man.sysinstall.8; anlegen, sollten Sie beachten, daß + Festplatten auf Daten in den äußeren Spuren + schneller zugreifen können als auf Daten in den + inneren Spuren. Daher sollten die kleineren oft benutzten + Dateisysteme, wie das Root-Dateisystem oder die Swap-Partition, + an den äußeren Rand der Platte gelegt werden. + Die größeren Partitionen wie /usr + sollten in die inneren Bereiche gelegt werden. + Es empfiehlt sich, die Partitionen in einer ähnlichen + Reihenfolge wie Root-Partition, Swap, /var + und /usr anzulegen. + + Die Größe der /var-Partition + ist abhängig vom Zweck der Maschine. + /var enthält hauptsächlich + Postfächer, den Spoolbereich zum Drucken und Logdateien. + Abhängig von der Anzahl der Systembenutzer und der + Aufbewahrungszeit für Logdateien, können gerade + die Postfächer und Logdateien zu ungeahnten Größen + wachsen. Wenn Sie beabsichtigen, einen Mailserver zu betreiben, + kann eine /var-Partition mit einer + Größe von einem Gigabyte und mehr passend sein. + Zudem sollte /var/tmp groß genug sein, + um Pakete, die Sie installieren wollen, aufzunehmen. + + Die /usr-Partition enthält den + Hauptteil der Dateien des Systems und das darin enthaltene + Unterverzeichnis /usr/local enthält + den Hauptteil der Dateien, die aus der &man.ports.7; + Hierarchie installiert wurden. Wenn Sie nicht vorhaben, + viele Ports zu benutzen und nicht beabsichtigen, den + Quellcode des Systems in /usr/src zu halten, + dann reicht eine 1 Gigabyte große + /usr-Partition. Wenn Sie aber viele + Ports, insbesondere Fenstermanager und die Linux-Emulation, + installieren, dann empfehlen wir mindestens eine zwei Gigabyte + große Partition für /usr. + Wenn Sie außerdem noch den Quellcode für das + System installieren, empfehlen wir eine drei Gigabyte + /usr-Partition. Unterschätzen + Sie bitte nicht den Platz, den Sie für diese Partition + brauchen, sie kann unmerklich anwachsen und Sie + überraschen. + + Wenn Sie die Größe der Partitionen festlegen, + beachten Sie bitte das Wachstum Ihres Systems. Es kann + sehr frustrierend sein, wenn Sie den Platz in einer Partition + vollständig verbraucht haben, dagegen in einer + anderen Partition noch sehr viel Platz zur Verfügung + haben. + + Einige Benutzer, die in &man.sysinstall.8; die + Partitionen mit Auto-defaults automatisch + angelegt haben, wurden später von einer zu kleinen + Root- oder /var-Partition überrascht. + Partitionieren Sie weise und großzügig. + + + + + Swap Partition + + Größe der + Swap-Partition + Swap-Partition + + Als Daumenregel sollten Sie doppelt soviel Speicher + für die Swap-Partition vorsehen, als Sie Hauptspeicher + haben. Verfügt die Maschine beispielsweise über + 128 Megabyte Hauptspeicher, sollten Sie 256 Megabyte für + den Swap-Bereich vorsehen. Systeme mit weniger Speicher + werden wahrscheinlich mit viel mehr Swap mehr leisten. Es + wird nicht empfohlen, weniger als 256 Megabyte Swap einzurichten. + Außerdem sollten Sie künftige Speichererweiterungen + beachten, wenn Sie die Swap-Partition einrichten. Die + VM-Paging-Algorithmen im Kernel sind so eingestellt, daß + Sie am besten laufen, wenn die Swap-Partition mindestens + doppelt so groß wie der Hauptspeicher ist. Zu wenig + Swap kann zu einer Leistungsverminderung im + VM page scanning + Code führen sowie Probleme verursachen, wenn Sie später + mehr Speicher in Ihre Maschine bauen. + + Auf größeren Systemen mit mehreren SCSI-Laufwerken + (oder mehreren IDE-Laufwerken an unterschiedlichen Controllern) + empfehlen wir Ihnen wärmstens, Swap-Bereiche auf bis zu + vier Laufwerken einzurichten. Diese Swap-Partitionen sollten + ungefähr dieselbe Größe haben. Der Kernel + kann zwar mit beliebigen Größen umgehen, aber + die internen Datenstrukturen skalieren bis zur vierfachen + Größe der größten Partition. Ungefähr + gleich große Swap-Partitionen erlauben es dem Kernel, + den Swap-Bereich optimal über die Laufwerke zu verteilen. + Machen Sie sich keine Gedanken, etwas zu übertreiben, + ausreichend Swap kann unter Unix die Lage retten. Ausreichend + Swap, auch wenn Sie ihn normal nicht brauchen, kann Ihnen + die Zeit geben, sich von einem wild gewordenen Programm + zu erholen, bevor Sie zu einem Reboot gezwungen werden. + + + + Warum partitionieren? + + Warum soll ich überhaupt partitionieren? Eine + große Root-Partition reicht doch und man kann + sich bei den Größen nicht verschätzen! + + Dagegen sprechen mehrere Gründe. Jede Partition + hat im Betrieb unterschiedliche Eigenschaften und die + Trennung der Partitionen erlaubt es, die Dateisysteme + an diese Eigenschaften anzupassen. Die Root- und + /usr-Partitionen weisen meist nur + lesende Zugriffe auf, während /var + und /var/tmp hauptsächlich + beschrieben werden. + + Indem Sie Ihr System richtig partitionieren, verhindern + Sie, daß eine Fragmentierung in den häufig beschriebenen + Partitionen auf die meist nur gelesenen Partitionen + übergreift. Wenn Sie weiterhin die häufig beschriebenen + Partitionen an den Rand der Platte, z.B. vor die wirklich + großen Partitionen, legen, dann wird die I/O-Leistung + auf den Partitionen, auf denen sie am meisten gebraucht wird, + steigen. Natürlich brauchen Sie die I/O-Leistung auch auf + den größeren Partitionen, aber da diese so groß + sind, bringt es keine signifikante Steigerung der Leistung, + wenn Sie sie an den Rand schieben. Im Gegensatz dazu, kann + es einen großen Einfluß haben, wenn Sie + /var an den Rand der Platte legen. + Schließlich sollten Sie noch die Sicherheit beachten. + Eine kleine Root-Partition, auf die meist nur lesend + zugegriffen wird, überlebt einen schlimmen Absturz + wahrscheinlich eher als eine große Partition. + + + + + + + Basiskonfiguration + + + rc Dateien + rc.conf + + + Informationen zur Systemkonfiguration sind hauptsächlich + in /etc/rc.conf, die meist beim Start + des Systems verwendet wird, abgelegt. Der Name der Datei zeigt + ihren Zweck an: Sie enthält die Konfigurationen für + die rc* Dateien. + + In rc.conf werden die Vorgabewerte aus + /etc/defaults/rc.conf überschrieben. + Die Vorgabedatei sollte nicht nach /etc + kopiert werden, da sie die Vorgabewerte und keine Beispiele + enthält. Jede systemspezifische Änderung wird + in rc.conf vorgenommen. + + Um den administrativen Aufwand gering zu halten, existieren + in geclusterten Applikationen mehrere Strategien, + globale Konfigurationen von systemspezifischen Konfigurationen + zu trennen. Der empfohlene Weg hält die globale Konfiguration + in einer separaten Datei z.B. rc.conf.site. + Diese Datei wird dann in /etc/rc.conf, + die nur systemspezifische Informationen enthält, eingebunden. + + Da rc.conf von &man.sh.1; gelesen + wird, ist das einfach zu erreichen: + + + rc.conf: + . rc.conf.site + hostname="node15.example.com" + network_interfaces="fxp0 lo0" + ifconfig_fxp0="inet 10.1.1.1" + rc.conf.site: + defaultrouter="10.1.1.254" + saver="daemon" + blanktime="100" + + + rc.conf.site kann dann auf jedes + System mit rsync verteilt werden, + rc.conf bleibt dabei systemspezifisch. + + Bei einem Upgrade des Systems mit &man.sysinstall.8; oder + make world wird rc.conf + nicht überschrieben, so daß die Systemkonfiguration + erhalten bleibt. + + + + + Konfiguration von Applikationen + + Installierte Applikationen haben typischerweise + eigene Konfigurationsdateien, die eine eigene Syntax + verwenden. Damit diese Dateien leicht von der + Paketverwaltung gefunden und verwaltet werden können, + ist es wichtig, sie vom Basissystem zu trennen. + + /usr/local/etc + + Für gewöhnlich werden diese Dateien in + /usr/local/etc installiert. Besitzt + eine Applikation viele Konfigurationsdateien, werden + diese in einem separaten Unterverzeichnis abgelegt. + + Wenn ein Port oder ein Paket installiert wird, werden + normalerweise auch Beispiele für die Konfigurationsdateien + installiert. Diese erkennt man gewöhnlich an dem + Suffix .default. Wenn keine Konfigurationsdateien + für eine Applikation existieren, werden sie durch + Kopieren der .default Dateien erstellt. + + Als Beispiel sei /usr/local/etc/apache + gezeigt: + +-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf +-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default +-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf +-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default +-rw-r--r-- 1 root wheel 12205 May 20 1998 magic +-rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default +-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types +-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default +-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf +-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default + + Anhand der Dateigröße erkennen Sie, daß sich + nur srm.conf geändert hat. Ein + späterer Update des Apache Ports würde diese + Datei nicht überschreiben. + + + + + Start von Diensten + + Dienste + + Es ist üblich, daß ein System mehrere Dienste + zur Verfügung stellt. Diese können auf verschiedene + Weisen, die jeweils andere Vorteile haben, gestartet werden. + + /usr/local/etc/rc.d + + Software, die von einem Port oder einem Paket installiert + wurde, wird oft ein Skript in /usr/local/etc/rc.d + stellen. Dieses wird beim Hochfahren des Systems mit dem + Argument und beim Herunterfahren mit + dem Argument aufgerufen. Das ist der empfohlene + Weg, systemweite Dienste, die unter root laufen + oder unter root gestartet werden, zu starten. + Die Skripte werden bei der Installation des Paketes registriert + und entfernt, wenn das Paket entfernt wird. + + Ein typisches Skript in /usr/local/etc/rc.d + sieht wie folgt aus: + + #!/bin/sh +echo -n ' FooBar' + +case "$1" in +start) + /usr/local/bin/foobar + ;; +stop) + kill -9 `cat /var/run/foobar.pid` + ;; +*) + echo "Usage: `basename $0` {start|stop}" >&2 + exit 64 + ;; +esac + +exit 0 + + + Um die passenden Aktionen auszuführen, wird das Skript + beim Start des Systems mit + und mit beim Herunterfahren aufgerufen. + + Manche Dienste werden von &man.inetd.8; aufgerufen, wenn + eine Verbindung auf dem passenden Port aufgebaut wird. Üblich + ist das für Server von Mail-Clients (POP, IMAP, usw.). Diese + Dienste werden durch das Editieren von + /etc/inetd.conf aktiviert. Details dazu + finden sich in &man.inetd.8;. + + Weitere Systemdienste werden vielleicht nicht von + /etc/rc.conf abgedeckt. Diese werden + traditionell durch Kommandos in /etc/rc.local + aktiviert. Seit FreeBSD 3.1 existiert keine Vorgabe für + /etc/rc.local mehr. Wenn die Datei allerdings + von einem Administrator angelegt wird, so wird sie auch + ausgeführt. Beachten Sie bitte, daß + /etc/rc.local als der letzte Weg, einen + Dienst zu starten, angesehen wird. Wenn es eine andere + Möglichkeit gibt, den Dienst zu starten, nehmen Sie diese + bitte wahr. + + Fügen Sie bitte keine Kommandos + in /etc/rc.conf ein. Starten Sie stattdessen + Dæmons oder Kommandos beim Hochfahren mit Skripten in + /usr/local/etc/rc.d. + + Systemdienste können auch mit &man.cron.8; gestartet + werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt, weil + &man.cron.8; die Prozesse unter dem Eigentümer der + crontab startet, ist es möglich, daß + Dienste von nicht-root Benutzern gestartet + und gepflegt werden können. + + Dies nutzt eine Eigenschaft von &man.cron.8;: + Für die Zeitangabe kann @reboot + eingesetzt werden. Damit wird das Kommando gestartet, wenn + &man.cron.8; kurz nach dem Systemboot gestartet wird. + + + + Virtual Hosts + + virtual hosts + IP Aliase + + Ein gebräuchlicher Zweck von FreeBSD ist das + virtuelle Hosting, bei dem ein Server im Netzwerk wie + mehrere Server aussieht. Dies wird dadurch erreicht, + daß einem Netzwerkinterface mehrere Netzwerk-Adressen + zugewiesen werden. + + Ein Netzwerkinterface hat eine echte + Adresse und kann beliebig viele alias Adressen + haben. Die Aliase werden durch entsprechende alias Einträge + in /etc/rc.conf festgelegt. + + Ein alias Eintrag für das Interface + fxp0 sieht wie folgt aus: + +ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" + + Beachten Sie, daß die alias Einträge mit alias0 + anfangen müssen und dann weiter hochgezählt werden, + das heißt _alias1, _alias2, usw. + Die Konfiguration der Aliase hört bei der ersten + fehlenden Zahl auf. + + Die Berechnung der Alias-Netzwerkmasken ist wichtig, doch + zum Glück einfach. Für jedes Interface muß es + eine Adresse geben, die die Netzwerkmaske des Netzwerkes richtig + beschreibt. Alle anderen Adressen in diesem Netzwerk haben dann + eine Netzwerkmaske, die mit 1 gefüllt ist. + + Als Beispiel betrachten wir den Fall, in dem + fxp0 mit zwei Netzwerken verbunden + ist: dem Netzwerk 10.1.1.0 mit der Netzwerkmaske 255.255.255.0 + und dem Netzwerk 202.0.75.16 mit der Netzwerkmaske 255.255.255.240. + Das System soll die Adressen 10.1.1.1 bis 10.1.1.5 und + 202.0.75.17 bis 202.0.75.20 belegen. + + Die folgenden Einträge konfigurieren den Adapter + entsprechend dem Beispiel: + + ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" + ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" + ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" + ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" + ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" + ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" + ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" + ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" + ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255" + + + + + Konfigurationsdateien + + + <filename>/etc</filename> Layout + Konfigurationsdateien finden sich in einigen Verzeichnissen + unter anderem in: + + + + + + /etc + Enthält generelle Konfigurationsinformationen, + die Daten hier sind systemspezifisch. + + + /etc/defaults + Default Versionen der Konfigurationsdateien. + + + /etc/mail + Enthält die &man.sendmail.8; Konfiguration + und weitere MTA Konfigurationsdateien. + + + /etc/ppp + Hier findet sich die Konfiguration für + die User- und Kernel-ppp Programme. + + + /etc/namedb + Das Vorgabeverzeichnis, in dem Daten von + &man.named.8; gehalten werden. Normalerweise + steht hier die Bootdatei, die mittels einer Direktive + auf weitere Daten in /var/db + verweist. + + + /usr/local/etc + Installierte Applikationen legen hier ihre + Konfigurationsdateien ab. Dieses Verzeichnis kann + Unterverzeichnisse für bestimmte Applikationen + enthalten. + + + /usr/local/etc/rc.d + Ort für Start- und Stopskripte installierter + Applikationen. + + + /var/db + Beständige systemspezifische Daten z.B. + &man.named.8; Zonendaten, Datenbanken usw. + + + + + + + + Hostnamen + + hostname + DNS + + + <filename>/etc/resolv.conf</filename> + + resolv.conf + + Wie der FreeBSD Resolver auf das Internet Domain Name + System (DNS) zugreift, wird in /etc/resolv.conf + festgelegt. + + Die gebräuchlichsten Einträge in + /etc/resolv.conf sind: + + + + + + nameserver + Die IP-Adresse eines Nameservers, den + der Resolver abfragen soll. Bis zu drei Server werden + in der Reihenfolge, in der sie aufgezählt + sind, abgefragt. + + + search + Suchliste mit Domain-Namen zum Auflösen von + Hostnamen. Die Liste wird normalerweise durch den + Domain-Teil des lokalen Hostnamens festgelegt. + + + domain + Der lokale Domain-Name + + + + + + Beispiel für eine typische + resolv.conf: + + search example.com +nameserver 147.11.1.11 +nameserver 147.11.100.30 + + + Wenn Sie DHCP benutzen, überschreibt &man.dhclient.8; + für gewöhnlich resolv.conf + mit den Informationen vom DHCP-Server. + + + + <filename>/etc/hosts</filename> + + hosts + + /etc/hosts ist eine einfache textbasierte + Datenbank, die aus alten Internetzeiten stammt. Zusammen + mit DNS und NIS stellt sie eine Abbildung zwischen Namen und + IP-Adressen zur Verfügung. Anstatt &man.named.8; + zu konfigurieren, können hier lokale Rechner, die über + ein LAN verbunden sind, eingetragen werden. Lokale Einträge + für gebräuchliche Internet-Adressen in + /etc/hosts verhindern die Abfrage eines + externen Servers und beschleunigen die Namensauflösung. + + # $FreeBSD$ +# +# Host Database +# This file should contain the addresses and aliases +# for local hosts that share this file. +# In the presence of the domain name service or NIS, this file may +# not be consulted at all; see /etc/nsswitch.conf for the resolution order. +# +# +::1 localhost localhost.my.domain myname.my.domain +127.0.0.1 localhost localhost.my.domain myname.my.domain + +# +# Imaginary network. +#10.0.0.2 myname.my.domain myname +#10.0.0.3 myfriend.my.domain myfriend +# +# According to RFC 1918, you can use the following IP networks for +# private nets which will never be connected to the Internet: +# +# 10.0.0.0 - 10.255.255.255 +# 172.16.0.0 - 172.31.255.255 +# 192.168.0.0 - 192.168.255.255 +# +# In case you want to be able to connect to the Internet, you need +# real official assigned numbers. PLEASE PLEASE PLEASE do not try +# to invent your own network numbers but instead get one from your +# network provider (if any) or from the Internet Registry (ftp to +# rs.internic.net, directory `/templates'). +# + + /etc/hosts hat ein einfaches Format: + [Internet Adresse] [Offizieller Hostname] [Alias1] [Alias2] ... + + Zum Beispiel: + + 10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2 + + Weitere Informationen entnehmen Sie bitte &man.hosts.5;. + + + + + Konfiguration von Logdateien + + Logdateien + + + <filename>syslog.conf</filename> + + syslog.conf + + syslog.conf ist die Konfigurationsdatei + von &man.syslogd.8;. Sie legt fest, welche syslog + Meldungen in welche Logdateien geschrieben werden. + + # $FreeBSD$ +# +# Spaces ARE valid field separators in this file. However, +# other *nix-like systems still insist on using tabs as field +# separators. If you are sharing this file between systems, you +# may want to use only tabs as field separators here. +# Consult the syslog.conf(5) manpage. +*.err;kern.debug;auth.notice;mail.crit /dev/console +*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages +security.* /var/log/security +mail.info /var/log/maillog +lpr.info /var/log/lpd-errs +cron.* /var/log/cron +*.err root +*.notice;news.err root +*.alert root +*.emerg * +# uncomment this to log all writes to /dev/console to /var/log/console.log +#console.info /var/log/console.log +# uncomment this to enable logging of all log messages to /var/log/all.log +#*.* /var/log/all.log +# uncomment this to enable logging to a remote log host named loghost +#*.* @loghost +# uncomment these if you're running inn +# news.crit /var/log/news/news.crit +# news.err /var/log/news/news.err +# news.notice /var/log/news/news.notice +!startslip +*.* /var/log/slip.log +!ppp +*.* /var/log/ppp.log + + Weitere Informationen enthält &man.syslog.conf.5;. + + + + <filename>newsyslog.conf</filename> + + newsyslog.conf + + Die Konfigurationsdatei für &man.newsyslog.8;, das + normalerweise von &man.cron.8; aufgerufen wird, ist + newsyslog.conf. &man.newsyslog.8; + stellt fest, ob Logdateien archiviert oder verschoben + werden müssen. So wird logfile + nach logfile.0 geschoben und + logfile.0 nach logfile.1 + usw. Zudem können Logdateien mit &man.gzip.1; + komprimiert werden. Die Namen der Logdateien sind dann + logfile.0.gz, logfile.1.gz + usw. + + newsyslog.conf legt fest, welche + Logdateien bearbeitet werden, wie viele Dateien behalten werden + und wann die Dateien angefaßt werden. Logdateien + können auf Basis ihrer Größe oder zu + einem gewissen Zeitpunkt archiviert bzw. umbenannt werden. + + # configuration file for newsyslog +# $FreeBSD$ +# +# filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num] +/var/log/cron 600 3 100 * Z +/var/log/amd.log 644 7 100 * Z +/var/log/kerberos.log 644 7 100 * Z +/var/log/lpd-errs 644 7 100 * Z +/var/log/maillog 644 7 * @T00 Z +/var/log/sendmail.st 644 10 * 168 B +/var/log/messages 644 5 100 * Z +/var/log/all.log 600 7 * @T00 Z +/var/log/slip.log 600 3 100 * Z +/var/log/ppp.log 600 3 100 * Z +/var/log/security 600 10 100 * Z +/var/log/wtmp 644 3 * @01T05 B +/var/log/daily.log 640 7 * @T00 Z +/var/log/weekly.log 640 5 1 $W6D0 Z +/var/log/monthly.log 640 12 * $M1D0 Z +/var/log/console.log 640 5 100 * Z + + Um mehr zu erfahren, lesen Sie bitte &man.newsyslog.8;. + + + + + <filename>sysctl.conf</filename> + + sysctl.conf + sysctl + + sysctl.conf sieht ähnlich + wie rc.conf aus. Werte werden in der + Form Variable=Wert gesetzt. + Die angegebenen Werte werden + gesetzt, nachdem sich das System im Multi-User Modus befindet, + das heißt nicht alle Werte können in + diesem Modus gesetzt werden. + + In der folgenden sysctl.conf wird das + Loggen von fatalen Signalen abgestellt und Linux Programmen + wird klar gemacht, daß sie in Wirklichkeit unter + FreeBSD laufen. + + kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11) +compat.linux.osname=FreeBSD +compat.linux.osrelease=4.3-STABLE + + + + + + Einstellungen mit sysctl + + sysctl + Einstellungen mit sysctl + + Mit &man.sysctl.8; können Sie Änderungen an + einem laufenden FreeBSD System vornehmen. Unter anderem + können Optionen des TCP/IP-Stacks oder des + virtuellen Speichermanagements verändert werden. Unter + der Hand eines erfahrenen Systemadministrators kann dies + die Systemperformance erheblich verbessern. Über 500 + Variablen können mit &man.sysctl.8; gelesen und gesetzt + werden. + + Der Hauptzweck von &man.sysctl.8; besteht darin, Systemeinstellungen + zu lesen und zu verändern. + + Alle auslesbaren Variablen werden wie folgt angezeigt: + + &prompt.user; sysctl -a + + Sie können auch eine spezielle Variable, z.B. + kern.maxproc lesen: + + &prompt.user; sysctl kern.maxproc +kern.maxproc: 1044 + + Um eine Variable zu setzen, benutzen Sie die Syntax + Variable= + Wert: + + &prompt.root; sysctl kern.maxfiles=5000 +kern.maxfiles: 2088 -> 5000 + + Mit sysctl können Sie Strings, Zahlen oder + Boolean-Werte setzen. Bei Boolean-Werten setzen sie 1 + für wahr und 0 für falsch. + + + + Tuning von Laufwerken + + + Sysctl Variablen + + + <varname>vfs.vmiodirenable</varname> + + + vfs.vmiodirenable + + + Die Variable vfs.vmiodirenable besitzt + in der Voreinstellung den Wert 0 (in Kürze wird sie + auf den Wert 1 gesetzt). Die Variable kann auf den Wert + 0 (ausgeschaltet) oder 1 (angeschaltet) gesetzt werden. Sie + kontrolliert, wie Verzeichnisse vom System zwischengespeichert + werden. Die meisten Verzeichnisse sind klein und nutzen + nur ein einzelnes Fragment, typischerweise 1K, im Dateisystem. + Im Buffer-Cache verbrauchen sie mit 512 Bytes noch weniger + Platz. In der Voreinstellung wird der Buffer-Cache nur + eine limitierte Anzahl Verzeichnisse zwischenspeichern, auch + wenn das System über sehr viel Speicher verfügt. + Wenn Sie diese Variable aktivieren, kann der Buffer-Cache den + VM-Page-Cache benutzen, um Verzeichnisse zwischenzuspeichern. + Der ganze Speicher steht damit zum Zwischenspeichern von + Verzeichnissen zur Verfügung. Der Nachteil bei dieser + Vorgehensweise ist, daß zum Zwischenspeichern eines + Verzeichnisses mindestens eine physikalische Seite im Speicher, + die normalerweise 4K groß ist, anstelle von 512 Bytes + gebraucht wird. Wir empfehlen diese Option zu aktivieren, + wenn Sie Dienste zur Verfügung stellen, die eine + große Zahl von Dateien manipulieren. Beispiele für + solche Dienste sind Web-Caches, große Mail-Systeme oder + Netnews. Trotz des verschwendeten Speichers vermindert + das Aktivieren dieser Variable in aller Regel nicht die + Leistung des Systems, obwohl Sie das nachprüfen sollten. + + + + <varname>hw.ata.wc</varname> + + + hw.ata.wc + + + In FreeBSD 4.3 wurde versucht, den IDE Schreib-Zwischenspeicher + abzustellen. Obwohl dies die Bandbreite zum Schreiben auf + IDE-Platten verringerte, wurde es aus Gründen der + Datenkonsistenz als notwenig angesehen. Der Kern des + Problems ist, daß IDE-Platten keine zuverlässige + Aussage über das Ende eines Schreibvorgangs treffen. + Wenn der Schreib-Zwischenspeicher aktiviert ist, werden die Daten + nicht in der Reihenfolge ihres Eintreffens geschrieben. Es kann + sogar passieren, daß das Schreiben mancher Blöcke + im Fall von starker Plattenaktivität auf unbefristete + Zeit verzögert wird. Ein Absturz oder Stromausfall + zu dieser Zeit kann die Dateisysteme erheblich beschädigen. + Wir entschieden uns daher für die sichere Variante + und stellten den Schreib-Zwischenspeicher ab. Leider war + damit auch ein großer Leistungsverlust verbunden, so + daß wir klein beigeben mußten und die Variable + nach dem Release wieder aktiviert haben. Sie sollten den + Wert der Variable hw.ata.wc auf Ihrem + System überprüfen. Wenn der Schreib-Zwischenspeicher + abgestellt ist, können Sie ihn aktivieren, indem Sie die + Variable auf den Wert 1 setzen. Dies muß zum Zeitpunkt + des Systemstarts im Boot-Loader geschehen. Eine Änderung + der Variable, nachdem der Kernel gestartet ist, hat keine + Auswirkungen. + + Weitere Informationen finden Sie in &man.ata.4;. + + + + + Soft Updates + + Soft Updates + tunefs + + Mit &man.tunefs.8; lassen sich Feineinstellungen an + Dateisystemen vornehmen. Das Programm hat verschiedene Optionen, + von denen hier nur Soft Updates betrachtet werden. Soft Updates + werden wie folgt ein- und ausgeschaltet: + + &prompt.root; tunefs -n enable /filesystem +&prompt.root; tunefs -n disable /filesystem + + Ein einghängtes Dateisystem kann nicht mit &man.tunefs.8; + modifiziert werden. Soft Updates werden am besten im Single-User + Modus aktiviert, bevor Partitionen eingehangen sind. + + Durch Einsatz eines Zwischenspeichers wird die Performance + im Bereich der Metadaten, vorwiegend beim Anlegen und Löschen + von Dateien, gesteigert. Wir empfehlen, Soft Updates auf allen + Dateisystemen zu aktivieren. Allerdings sollten Sie sich über + die zwei Nachteile von Soft Updates bewußt sein: + Erstens garantieren Soft Updates zwar die Konsistenz der Daten + im Fall eines Absturzes, aber es kann leicht passieren, daß + das Dateisystem über mehrere Sekunden oder gar eine Minute + nicht synchronisiert wurde. Im Fall eines Absturzes verlieren + Sie mit Soft Updates unter Umständen mehr Daten als ohne. + Zweitens verzögern Soft Updates die Freigabe von + Datenblöcken. Eine größere Aktualisierung + eines fast vollen Dateisystems, wie dem root-Dateisystem, + z.B. während eines make installworld, + kann das Dateisystem vollaufen lassen. Dadurch würde + die Aktualisierung fehlschlagen. + + + + + Einstellungen von Kernel Limits + + Einstellungen von Kernel Limits + + + Datei und Prozeß Limits + + + <varname>kern.maxfiles</varname> + + + kern.maxfiles + + + Abhängig von den Anforderungen Ihres Systems + kann kern.maxfiles erhöht oder + erniedrigt werden. Die Variable legt die maximale + Zahl von Dateideskriptoren auf Ihrem System fest. Wenn + die Dateideskriptoren aufgebraucht sind, werden Sie + die Meldung file: table is full + wiederholt im Puffer für Systemmeldungen sehen. Den + Inhalt des Puffers können Sie sich mit dmesg + anzeigen lassen. + + Jede offene Datei, jedes Socket und jede FIFO verbraucht + einen Dateideskriptor. Auf dicken Produktionsservern + können leicht Tausende Dateideskriptoren benötigt + werden, abhängig von der Art und Zahl der gleichzeitig + laufenden Dienste. + + Die Voreinstellung von kern.maxfile + wird von aus Ihrer Kernelkonfiguration + bestimmt. kern.maxfiles wächst + proportional mit dem Wert von . + Wenn Sie einen angepaßten Kernel kompilieren, empfiehlt es sich + diese Option entsprechend der maximalen Benutzerzahl Ihres + Systems einzustellen. Obwohl auf einer Produktionsmaschine + vielleicht nicht 256 Benutzer gleichzeitig angemeldet sind, + können die benötigten Ressourcen ähnlich denen + eines großen Webservers sein. + + + + Netzwerk Limits + + Die Kerneloption NMBCLUSTERS schreibt + die Anzahl der Netzwerkpuffer (MBUFs) fest, die das System besitzt. + Eine zu geringe Zahl MBUFs auf einem Server mit viel Netzwerkverkehr + verringert die Leistung von FreeBSD. Jeder MBUF Cluster nimmt + ungefähr 2K Speicher in Anspruch, so daß ein Wert + von 1024 insgesamt 2 Megabyte Speicher für Netzwerkpuffer + im System reserviert. Wieviele Cluster benötigt werden, + läßt sich durch eine einfache Berechnung herausfinden. + Wenn Sie einen Webserver besitzen, der maximal 1000 gleichzeitige + Verbindungen servieren soll und jede der Verbindungen je einen + 16 K großen Puffer zum Senden und Empfangen braucht, brauchen + Sie ungefähr 32 MB Speicher für Netzwerkpuffer. Als + Daumenregel multiplizieren Sie diese Zahl mit 2, so daß sich + für NMBCLUSTERS der Wert + 32MBx2 = 64MB/2K = 32768 ergibt. + + + + +