diff --git a/fr_FR.ISO8859-1/books/handbook/config/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/config/chapter.sgml index 19e0af9f1b..8da60dc99b 100644 --- a/fr_FR.ISO8859-1/books/handbook/config/chapter.sgml +++ b/fr_FR.ISO8859-1/books/handbook/config/chapter.sgml @@ -1,1925 +1,2090 @@ Chern Lee Ecrit par Mike Smith Basé sur un guide rédigé par Matt Dillon Egalement basé sur la page de manuel tuning(7) écrite par Configuration et optimisation &trans.a.fonvieille; Synopsis configuration/optimisation du système La configuration correcte d'un système peut sensiblement réduire la quantité de travail impliquée dans la maintenance et la mise à jour. Ce chapitre décrit certains des aspects de la configuration des systèmes FreeBSD. Ce chapitre décrira également certains paramètres qui peuvent être modifiés pour configurer un système FreeBSD pour des performances optimales. Après la lecture de ce chapitre, vous saurez: Pourquoi et comment dimensionner, organiser, et positionner efficacement les partitions des systèmes de fichiers et de pagination sur votre disque dur. Les bases de la configuration du fichier rc.conf et des fichiers de démarrage /usr/local/etc/rc.d. Comment configurer des hôtes virtuels sur vos périphériques réseau. Comment utiliser les divers fichiers de configuration du répertoire /etc. Comment optimiser FreeBSD en utilisant les variables sysctl. Comment optimiser les performances des disques et modifier les limitations du noyau. Avant de lire ce chapitre, vous devrez: Comprendre les fondements d'Unix et de FreeBSD (). Etre familier avec la mise à jour des sources (), et les bases de la configuration et la compilation du noyau (). Configuration initiale Organisation des partitions Organisation des partitions /etc /var /usr Partitions de base Quand vous organisez votre système de fichiers à l'aide de &man.disklabel.8; ou &man.sysinstall.8;, il est important de se rappeler que les disques durs peuvent transférer des données plus rapidement depuis les pistes externes que depuis celles à l'intérieur. En sachant cela, vous devriez placer vos systèmes de fichiers les plus petits, auxquels on accède le plus souvent, comme la racine et l'espace de pagination, proche de la partie externe du disque, alors que les grandes partitions, comme /usr, devraient être plus à l'intérieur. Pour faire cela, c'est une bonne idée de créer les partitions dans l'ordre suivant: racine, pagination, /var, /usr. La taille de votre partition /var reflète l'utilisation prévue de votre machine. /var est principalement utilisée pour héberger les boîtes aux lettres, les fichiers de traces, les queues d'impression. Les boîtes aux lettres et les fichiers de traces, en particulier, peuvent croître dans des tailles inattendues en fonction du nombre d'utilisateurs de votre système et de combien de temps sont conservés les fichiers de traces. Si vous avez l'intention de faire fonctionner un serveur de courrier électronique, une partition /var de plus d'un gigaoctet pourra convenir. De plus, /var/tmp doit être assez grand pour contenir tout logiciel pré-compilé que vous pourrez vouloir ajouter. La partition /usr contient la majeure partie des fichiers nécessaires au système et un sous-répertoire appelé /usr/local qui lui héberge la plupart des fichiers installés par le catalogue des logiciels portés. Si vous n'employez pas vraiment les logiciels portés et que vous n'avez pas l'intention de conserver les sources du système sur la machine (/usr/src), vous pouvez utiliser une partition /usr d'un gigaoctet. Cependant, si vous installez beaucoup de logiciels portés (tout particulièrement des gestionnaires de fenêtres et des binaires Linux), nous recommandons au moins un /usr de deux gigaoctets et si vous avez également l'intention d'avoir les sources du système sur la machine nous recommandons un /usr de trois gigaoctets. Ne sous-estimez pas la quantité d'espace dont vous aurez besoin sur cette partition, vous risquez d'être surpris! Quand vous dimensionnez vos partitions, gardez à l'esprit les besoins en espace pour permettre à votre système de se développer. Manquer d'espace sur une partition alors qu'il y en a plein sur les autres peut être très frustrant. Certains utilisateurs qui ont employé l'option Auto-defaults de l'outil de partitionnement de &man.sysinstall.8; ont trouvé plus tard que leurs partitions racine et /var étaient trop petites. Partitionnez généreusement et avec sagesse. Partition de pagination dimensionnement de l'espace de pagination partition de pagination Par principe, votre espace de pagination devrait typiquement avoir une taille double de la quantité de mémoire principale. Par exemple, si la machine possède 128 mégaoctets de mémoire, le fichier de pagination devrait être de 256 mégaoctets. Les systèmes avec peu de mémoire pourront avoir de meilleures performances avec beaucoup plus d'espace de pagination. Il n'est pas recommandé d'avoir moins de 256 mégaoctets d'espace de pagination sur un système et vous devriez garder à l'esprit les futures extensions de mémoire quand vous dimensionnez votre partition de pagination. Les algorithmes de pagination du noyau sont optimisés pour une meilleure efficacité avec une partition de pagination d'au moins deux fois la taille de la mémoire principale. Configurer trop peu d'espace de pagination peut conduire à une certaine inefficacité du code de pagination de la mémoire virtuelle comme à l'apparition de problèmes ultérieurement si vous ajoutez plus de mémoire à votre machine. Et enfin, sur des systèmes importants avec de multiples disques SCSI (ou de multiples disques IDE fonctionnant sur différents contrôleurs), il est vivement recommandé que vous configuriez un espace de pagination sur chaque disque (jusqu'à quatre disques). Les partitions de pagination sur les différents disques devront avoir approximativement la même taille. Le noyau peut gérer des tailles arbitraires mais les structures de données internes sont dimensionnées pour 4 fois la taille de la plus grande partition de pagination. Garder la taille des partitions de pagination proche permettra au noyau de répartir de manière optimale l'espace de pagination entre les disques. Ne vous inquiétez pas trop si vous les surdimensionnez, l'espace de pagination est un des avantages d'Unix. Même si vous n'utilisez normalement pas beaucoup de cet espace, il peut vous permettre d'avoir plus temps pour récupérer face à programme incontrôlable avant d'être forcé à relancer la machine. Pourquoi des Partitions? Pourquoi des partitions? Pourquoi ne pas créer une seule grande partition racine? Ainsi je n'aurais pas à me soucier d'avoir sous-dimensionné certaines choses! Pour plusieurs raisons cela n'est pas une bonne idée. Tout d'abord, chaque partition a différentes caractéristiques d'utilisation et les séparer autorise le système de fichiers à s'optimiser lui-même pour ces caractéristiques. Par exemple, les partitions racine et /usr sont surtout lues, et rarement utilisées en écriture, alors que de nombreuses opérations de lecture et écriture pourront avoir lieu sur /var et /var/tmp. En partitionnant correctement votre système, la fragmentation introduite sur les partitions plus petites et plus chargées en écriture ne s'étendra pas sur les partitions principalement utilisées en lecture. De plus, avoir les partitions principalement utilisées en écriture proche du bord du disque, par exemple avant la grande partition au lieu qu'après dans la table des partitions, augmentera les performances d'E/S sur les partitions qui le demandent le plus. Maintenant il est également vrai que vous avez besoin de performances d'E/S sur les grandes partitions, mais elles sont si grandes que les déplacer plus vers l'extérieur du disque ne donnera pas lieu à une augmentation significative des performances alors que le déplacement de /var vers le bord peut avoir un sérieux impact. Et enfin, il y a également des raisons de sécurité. Avoir une partition racine petite et ordonnée qui est essentiellement en lecture seule lui donne plus de chance de rester intacte après un crash sévère. Configuration principale fichiers rc rc.conf L'emplacement principal pour les données de configuration du système est le fichier /etc/rc.conf. Ce fichier contient une large gamme d'informations de configuration, principalement utilisées au démarrage du système pour configurer ce dernier. Son nom le sous-entend; c'est l'information de configuration pour les fichiers rc*. Un administrateur devrait ajouter des entrées dans le fichier rc.conf pour remplacer les valeurs par défaut du fichier /etc/defaults/rc.conf. Les fichiers de valeurs par défaut ne devraient pas être copiés directement tels quels dans /etc - ils contiennent des valeurs par défaut, et non pas des exemples. Tout changement spécifique au système devrait être fait dans le fichier rc.conf. Un certain nombre de stratégies peuvent être appliquées dans le cas d'applications en grappe pour séparer la configuration d'un site de celle d'un système afin de réduire le travail d'administration. L'approche recommandée est de placer la configuration propre au site dans un autre fichier comme /etc/rc.conf.site, puis ensuite inclure ce fichier dans /etc/rc.conf, qui ne contiendra seulement que les informations spécifiques au système. Comme rc.conf est lu par &man.sh.1; il est assez trivial d'effectuer cela. Par exemple: 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" Le fichier rc.conf.site peut être distribué à l'ensemble des systèmes en utilisant rsync ou un programme semblable, tandis que le fichier rc.conf reste unique. Mettre à jour le système en employant &man.sysinstall.8; ou make world n'écrasera pas le fichier rc.conf, les informations de configuration du système ne seront donc pas perdues. Configuration des applications Généralement, les applications installées ont leurs propres fichiers de configuration, avec leur propre syntaxe, etc... Il est important que ces fichiers soient séparés du système de base, de sorte qu'ils soient facilement localisables et gérables par les outils de gestion des logiciels installés. /usr/local/etc Ces fichiers sont généralement installés dans le répertoire /usr/local/etc. Dans le cas où une application possède un grand nombre de fichiers de configuration, un sous-répertoire sera créé pour les héberger. Normalement, quand un logiciel porté ou pré-compilé est installé, des exemples de fichiers de configuration sont également installés. Ces derniers sont généralement identifiés par un suffixe “.default”. Si aucun fichier de configuration n'existe pour l'application, on les créera en copiant les fichiers .default. Par exemple, considérez le contenu du répertoire /usr/local/etc/apache: -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 La différence de taille des fichiers indique que seul le fichier srm.conf a été modifié. Une mise à jour, plus tard, du logiciel apache ne devrait pas écraser le fichier modifié. Démarrer des services services Il est assez courant qu'un système héberge un certain nombre de services. Ces derniers peuvent être démarrés de différentes façons, chacune ayant différents avantages. /usr/local/etc/rc.d Un logiciel installé à partir du catalogue des logiciels portés ou depuis une version pré-compilée placera souvent une procédure dans /usr/local/etc/rc.d qui sera invoquée au démarrage du système avec un argument , et à l'arrêt du système avec l'argument . C'est la méthode recommandée pour démarrer des services sur le système qui doivent fonctionner avec les privilèges de root, ou s'attendent à fonctionner avec ces privilèges. Ces procédures font partie de l'installation du logiciel, et seront effacées quand le logiciel sera désinstallé. Une procédure générique de démarrage dans /usr/local/etc/rc.d ressemble à: #!/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 Les procédures de démarrage de FreeBSD rechercheront dans /usr/local/etc/rc.d les procédures qui ont une extension .sh et qui sont exécutables par root. Les procédures trouvées seront lancées avec une option au démarrage, et à l'arrêt pour leur permettre de faire ce qu'elles ont à faire. Donc si vous aviez voulu que la procédure précédente soit exécutée au moment voulu pendant le démarrage du système, vous auriez dû la sauver dans un fichier appelé FooBar.sh dans le répertoire /usr/local/etc/rc.d et en vérifiant qu'elle soit exécutable. Vous pouvez rendre une procédure d'interpréteur de commandes exécutable avec la commande &man.chmod.1; comme montré ci-dessous: &prompt.root; chmod 755 FooBar.sh Certains services s'attendent à être invoqué par &man.inetd.8; quand une demande de connexion est reçue sur le bon port. Ceci est courant pour les serveurs de récupération du courrier (POP et IMAP, etc...). Ces services sont activés en éditant le fichier /etc/inetd.conf. Voir la page de manuel &man.inetd.8; pour plus de détails sur l'édition de ce fichier. Certains services systèmes additionnels ne peuvent pas être couverts par les options de /etc/rc.conf. Ils sont traditionnellement activés en plaçant la/les commande(s) pour les invoquer dans le fichier /etc/rc.local. Depuis FreeBSD 3.1 il n'y a pas de fichier /etc/rc.local par défaut; s'il est créé par l'administrateur il sera utilisé par le système de façon habituelle. Notez que /etc/rc.local est généralement vu comme l'emplacement de dernier recours; s'il y a un meilleur emplacement pour démarrer un service, utilisez-le. Ne placez aucune commande dans /etc/rc.conf. Pour démarrer des “daemons”, ou lancer tout autre commande au démarrage, placez une procédure dans /usr/local/etc/rc.d à la place. Il est également possible d'utiliser le “daemon” &man.cron.8; pour démarrer des services système. Cette approche présente un certain nombre d'avantages, et non des moindres parce que &man.cron.8; exécute ces procédures sous les privilèges du propriétaire de la table crontab, les services pourront être démarrés et maintenus par des utilisateurs non-root. Cela peut utiliser avantageusement une des caractéristiques de &man.cron.8;: la spécification de la date d'exécution peut être remplacée par @reboot, qui provoquera l'exécution de la tâche quand &man.cron.8; est lancé, peu de temps après le démarrage du système. Marc Fonvieille Contribution de Configuration des cartes réseaux Configuration des cartes réseaux De nos jours il est impossible de penser à un ordinateur sans penser connexion à un réseau. Installer et configurer une carte réseau est une tâche classique pour tout administrateur FreeBSD. Déterminer le bon pilote de périphérique Configuration des cartes réseaux Déterminer le pilote de périphérique Avant de commencer, vous devez connaître le modèle de la carte dont vous disposez, le circuit qu'elle utilise, et si c'est une carte PCI ou ISA. FreeBSD supporte une large variété de cartes PCI et ISA. Consultez la liste de compatibilité matérielle pour votre version de FreeBSD afin de voir si votre carte est supportée. Une fois que vous êtes sûrs que votre carte est supportée, vous devez déterminer le bon pilote de périphérique pour la carte. Le fichier /usr/src/sys/i386/conf/LINT vous donnera la liste des pilotes de périphériques pour cartes réseaux avec des informations sur les cartes/circuits supportés. Si vous avez des doutes au sujet du bon pilote, lisez la page de manuel du pilote. La page de manuel vous donnera plus d'information sur le matériel supporté et même les éventuels problèmes qui pourront apparaître. Si vous possédez une carte courante, la plupart du temps vous n'aurez pas à chercher trop loin pour trouver un pilote. Les pilotes pour les cartes réseaux courantes sont présents dans le noyau GENERIC, aussi votre carte devrait apparaître au démarrage, comme suit: dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 dc0: Ethernet address: 00:a0:cc:da:da:da miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 dc1: Ethernet address: 00:a0:cc:da:da:db miibus1: <MII bus> on dc1 ukphy1: <Generic IEEE 802.3u media interface> on miibus1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto Dans cet exemple, nous voyons que deux cartes utilisant le pilote de périphérique &man.dc.4; sont présentes sur le système. Pour utiliser votre carte réseau, vous devrez charger le pilote de périphérique correct. Cela peut être accompli de deux façons. La plus simple est de charger le module pour votre carte réseau avec &man.kldload.8;. Un module n'est pas disponible pour toutes les cartes réseaux (les cartes ISA ou celles utilisant le pilote &man.ed.4;, par exemple). Alternativement, vous pouvez compiler en statique le support pour votre carte dans votre noyau. Consultez /usr/src/sys/i386/conf/LINT et la page de manuel du pilote de périphérique pour savoir ce qu'il faut ajouter à votre fichier de configuration de votre noyau. Pour plus d'information sur la recompilation de votre noyau, veuillez lire le . Si votre carte a été détectée au démarrage par votre noyau (GENERIC) vous n'avez pas à compiler un nouveau noyau. Configuration de la carte réseau Configuration des cartes réseaux configuration Une fois que le bon pilote de périphérique pour la carte réseau est chargé, la carte doit être configurée. Comme beaucoup d'autres choses, la carte aura pu être configurée à l'installation par sysinstall. Pour afficher la configuration des interfaces réseaux de votre système, entrer la commande suivante: &prompt.user; ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 ether 00:a0:cc:da:da:db media: Ethernet 10baseT/UTP status: no carrier lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000 tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 D'anciennes versions de FreeBSD pourront nécessiter l'option après &man.ifconfig.8;, pour plus de détails au sujet de la syntaxe d'&man.ifconfig.8;, veuillez vous référer à la page de manuel. Notez également que les entrées concernant l'IPv6 (inet6 etc...) ont été omises dans cet exemple. Dans cet exemple, les périphériques suivants ont été affichés: dc0: La première interface Ethernet dc1: La seconde interface Ethernet lp0: L'interface du port parallèle lo0: L'interface “en boucle” (“loopback”) tun0: L'interface “tunnel” utilisée par ppp FreeBSD utilise le nom du pilote de périphérique suivi par un chiffre représentant l'ordre dans lequel la carte est détectée au démarrage du noyau pour nommer la carte. Par exemple sis2 serait la troisième carte sur le système utilisant le pilote de périphérique &man.sis.4;. Dans cet exemple, le périphérique dc0 est actif et en fonctionnement. Les indicateurs importants sont: UP signifie que la carte est configurée et prête. La carte possède une adresse Internet (inet) (dans ce cas-ci 192.168.1.3). Elle a un masque de sous-réseau valide (netmask; 0xffffff00 est équivalent à 255.255.255.0). Elle a une adresse de diffusion valide (dans ce cas-ci 192.168.1.255). L'adresse MAC de la carte (ether) est 00:a0:cc:da:da:da La sélection du média est sur le mode d'autosélection (media: Ethernet autoselect (100baseTX <full-duplex>)). Nous voyons que dc1 a été configurée pour utiliser un matériel de type 10baseT/UTP. Pour plus d'information sur le type de matériel disponible pour un pilote de périphérique, référez-vous à sa page de manuel. La liaison (status) est active, i.e. la porteuse est détectée. Pour dc1, nous lisons status: no carrier. Cela est normal lorsqu'aucun câble n'est branché à la carte. Si le résultat de la commande &man.ifconfig.8; est similaire à: dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 ether 00:a0:cc:da:da:da cela indiquerait que la carte n'a pas été configurée. Pour configurer votre carte, vous avez besoin des privilèges de l'utilisateur root. La configuration de la carte réseau peut être faite à partir de la ligne de commande avec &man.ifconfig.8; mais vous aurez à répéter cette opération à chaque redémarrage du système. Le fichier /etc/rc.conf est l'endroit où ajouter la configuration de la carte réseau. Ouvrez le fichier /etc/rc.conf dans votre éditeur favori. Vous devez ajouter une ligne pour chaque carte réseau présente sur le système, par exemple dans notre cas, nous avons ajouté ces lignes: ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" Vous devez remplacer dc0, dc1, et ainsi de suite, avec le périphérique correspondant pour vos cartes, et les adresses avec celles désirées. Vous devriez lire les pages de manuel du pilote de périphérique et d'&man.ifconfig.8; pour plus de détails sur les options autorisées et également la page de manuel de &man.rc.conf.5; pour plus d'information sur la syntaxe de /etc/rc.conf. Si vous avez configuré le réseau à l'installation, des lignes concernant la/les carte(s) réseau pourront être déjà présentes. Contrôler à deux fois le fichier /etc/rc.conf avant d'y ajouter des lignes. Vous devrez également éditer le fichier /etc/hosts pour ajouter les noms et les adresses IP des diverses machines du réseau local, si elles ne sont pas déjà présentes. Pour plus d'information référez-vous à la page de manuel &man.hosts.5; et au fichier /usr/share/examples/etc/hosts. Test et dépannage Une fois les modifications nécessaires du fichier /etc/rc.conf effectuées, vous devrez redémarrer votre système. Cela permettra la prise en compte de la ou les modifications au niveau des interfaces, et permettra de vérifier que le système redémarre sans erreur de configuration. Une fois que le système a été redémarré, vous devrez tester les interfaces réseau. Tester la carte Ethernet Configuration des cartes réseaux Test de la carte Pour vérifier qu'une carte Ethernet est configurée correctement, vous devez essayer deux choses. Premièrement, “pinguer” l'interface, puis une autre machine sur le réseau local. Tout d'abord testons l'interface: &prompt.user; ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms Nous devons maintenant “pinguer” une autre machine sur le réseau: &prompt.user; ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms Vous pourrez utiliser le noms de la machine à la place de 192.168.1.2 si vous avez configuré le fichier /etc/hosts. Dépannage Configuration des cartes réseaux Dépannage Où puis-je trouver de l'information au sujet des possibles problèmes que je peux rencontrer avec ma carte réseau. La page de manuel du pilote de périphérique est la première documentation à lire. Les archives des listes de diffusion peuvent également être utiles. Quand j'essaye un “ping” vers une machine du réseau, j'obtiens le message suivant: ping: sendto: Permission denied. Cela signifie que vous n'avez pas la permission d'envoyer des paquets ICMP. Contrôlez si un coupe-feu tourne sur la machine et s'il y a des règles bloquant l'ICMP. Je vois beaucoup de messages watchdog timeout dans les fichiers de trace du système, et quand je tente un “ping” vers une autre machine sur le réseau local, j'obtiens ce message: ping: sendto: No route to host. La première chose à contrôler est votre câble réseau. De nombreuses cartes réseaux demandent un slot PCI supportant le “Bus Mastering”. Sur certaines cartes mères anciennes, seul un slot PCI le permet (la plupart du temps le slot 0). Consultez la documentation de la carte réseau et de la carte mère pour déterminer si cela peut être à l'origine du problème. Je vois beaucoup de messages device timeout dans les fichiers de trace du système, et ma carte réseau ne fonctionne pas. Avoir un ou deux de ces messages est parfois normal avec certaines cartes. Cependant s'ils persistent et que le réseau n'est pas utilisable, assurez-vous que le câble réseau est branché et qu'il n'y a aucun conflit d'IRQ entre la carte réseau et un autre périphérique (ou périphériques) sur le système. Les performances de la carte sont mauvaises, que puis-je faire? Il est difficile de répondre à cette question. Quelle est votre définition de “mauvaises performances”? Revérifiez l'ensemble de votre configuration, lisez la page de manuel &man.tuning.7;, et essayez d'éviter les cartes réseaux bon marché. De nombreux utilisateurs ont remarqué que positionner la sélection du média dans le mode autoselect peut être à l'origine de mauvaises performances sur certains matériels. Y-a-t-il des cartes réseaux recommandées ou des cartes que je devrais éviter? Vous devriez éviter les cartes bon marché pour une utilisation sérieuse. Les cartes bon marché utilisent souvent des circuits bogués, et la plupart du temps ne peuvent fournir de bonnes performances. De nombreux utilisateurs de FreeBSD apprécient les cartes utilisant le circuit &man.fxp.4;, cependant, cela ne veut pas dire que les autres circuits sont mauvais. Hôtes virtuels hôtes virtuels alias IP Une utilisation très courante de FreeBSD est l'hébergement de sites virtuels, où un serveur apparaît pour le réseau comme étant plusieurs serveurs différents. Ceci est possible en assignant plusieurs adresses réseau à une interface. Une interface réseau donnée possède une adresse “réelle”, et peut avoir n'importe quel nombre d'adresses “alias”. Ces alias sont normalement ajoutés en plaçant les entrées correspondantes dans le fichier /etc/rc.conf. Une entrée d'alias pour l'interface fxp0 ressemble à: ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" Notez que les entrées d'alias doivent commencer avec alias0 et continuer en ordre croissant, (par exemple, _alias1, _alias2, et ainsi de suite). Le processus de configuration s'arrêtera au premier nombre absent. Le calcul des masques de réseau est important, mais heureusement assez simple. Pour une interface donnée, il doit y avoir une adresse qui représente correctement le masque de réseau de votre réseau. Tout autre adresse appartenant à ce réseau devra avoir un masque de réseau avec chaque bit à 1. Par exemple, considérez le cas où l'interface fxp0 est connectée à deux réseaux, le réseau 10.1.1.0 avec un masque de réseau de 255.255.255.0 et le réseau 202.0.75.16 avec un masque de 255.255.255.240. Nous voulons que le système apparaisse de 10.1.1.1 jusqu'à 10.1.1.5 et à 202.0.75.17 jusqu'à 202.0.75.20. Les entrées suivantes configurent la carte correctement pour cet arrangement: 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" Fichiers de configuration Organisation du répertoire <filename>/etc</filename> Il existe un certain nombre de répertoires dans lesquels se trouvent les informations de configuration. Ceux-ci incluent: /etc Information de configuration générique du système; les données ici sont spécifiques au système. /etc/defaults Version par défaut des fichiers de configuration du système. /etc/mail Configuration de &man.sendmail.8;, et autres fichiers de configuration d'agent de transmission du courrier électronique. /etc/ppp Configuration pour les programmes PPP utilisateur et intégré au noyau. /etc/namedb Emplacement par défaut pour les données de &man.named.8;. Normalement named.conf et les fichiers de zone sont stockés dans ce répertoire. /usr/local/etc Fichiers de configuration pour les applications installées. Peut contenir des sous-répertoires pour chaque application. /usr/local/etc/rc.d Procédures de lancement/d'arrêt pour les applications installées. /var/db Fichiers de bases de données automatiquement générés, spécifiques au système, comme la base de données des logiciels installés, la base de données de localisation des fichiers, et ainsi de suite. Nom d'hôtes nom d'hôte DNS <filename>/etc/resolv.conf</filename> resolv.conf /etc/resolv.conf gère comment le résolveur de FreeBSD accède au système de nom de domaine d'Internet (DNS). Les entrées la plus classiques du fichier resolv.conf sont: nameserver L'adresse IP du serveur de noms auquel le résolveur devrait envoyer ses requêtes. Les serveurs sont sollicités dans l'ordre listé avec un maximum de trois. search Liste de recherche pour la résolution de nom de machine. Ceci est normalement déterminé par le domaine de l'hôte local. domain Le nom du domaine local. Un fichier resolv.conf typique: search example.com nameserver 147.11.1.11 nameserver 147.11.100.30 Seule une des options search et domain devrait être utilisée. Si vous utilisez DHCP, &man.dhclient.8; réécrit habituellement resolv.conf avec l'information reçue du serveur DHCP. <filename>/etc/hosts</filename> hosts /etc/hosts est une simple base de données texte, une réminiscence des débuts d'Internet. Il travaille en conjonction avec les serveurs DNS et NIS pour fournir les correspondances nom vers adresse IP. Les ordinateurs locaux reliés par l'intermédiaire d'un réseau local peuvent être ajoutés dans ce fichier pour une résolution de noms simple plutôt que de configurer un serveur &man.named.8;. De plus /etc/hosts peut être utilisé pour fournir un enregistrement local de correspondances de nom, réduisant ainsi le besoin de requêtes vers l'extérieur pour les noms auxquels on accède couramment. # $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 suit le format simple suivant: [Internet address] [official hostname] [alias1] [alias2] ... Par exemple: 10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2 Consultez la page de manuel &man.hosts.5; pour plus d'informations. Configuration des fichiers de trace fichiers de trace <filename>syslog.conf</filename> syslog.conf syslog.conf est le fichier de configuration du programme &man.syslogd.8;. Il indique quel type de messages syslog sera enregistré dans des fichiers de traces particuliers. # $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) manual page. *.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 Consultez la page de manuel &man.syslog.conf.5; pour plus d'informations. <filename>newsyslog.conf</filename> newsyslog.conf newsyslog.conf est le fichier de configuration de &man.newsyslog.8;, un programme qui est normalement programmé &man.cron.8; pour s'exécuter périodiquement. &man.newsyslog.8; détermine quand les fichiers de traces doivent être archivés ou réorganisés. logfile devient logfile.0, logfile.0 devient à son tour logfile.1, et ainsi de suite. D'autre part, les fichiers de traces peuvent être archivés dans le format &man.gzip.1;, ils se nommeront alors: logfile.0.gz, logfile.1.gz, et ainsi de suite. newsyslog.conf indique quels fichiers de traces doivent être gérés, combien doivent être conservés, et quand ils doivent être modifiés. Les fichiers de traces peuvent être réorganisés et/ou archivés quand ils ont soit atteint une certaine taille, soit à une certaine période/date. # 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 Consultez la page de manuel &man.newsyslog.8; pour plus d'informations. <filename>sysctl.conf</filename> sysctl.conf sysctl sysctl.conf ressemble à rc.conf. Les valeurs sont fixées sous la forme variable=value. Les valeurs spécifiées sont positionnées après que le système soit passé dans le mode multi-utilisateurs. Toutes les variables ne sont pas paramétrables dans ce mode. Un exemple de sysctl.conf désactivant la trace signaux fatals de fin de processus et faisant savoir aux programmes Linux qu'ils tournent sous FreeBSD. kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11) compat.linux.osname=FreeBSD compat.linux.osrelease=4.3-STABLE Optimisation avec sysctl sysctl optimisation avec sysctl &man.sysctl.8; est une interface qui vous permet d'effectuer des changements de paramétrage sur un système FreeBSD en fonctionnement. Cela comprend de nombreuses options avancées de la pile TCP/IP et du système de mémoire virtuelle qui peuvent améliorer dramatiquement les performances pour un administrateur système expérimenté. Plus de cinq cent variables système peuvent être lues et modifiées grâce à &man.sysctl.8;. &man.sysctl.8; remplit deux fonctions: lire et modifier les paramétrages du système. Pour afficher toutes les variables lisibles: &prompt.user; sysctl -a Pour lire une variable particulière, par exemple, kern.maxproc: &prompt.user; sysctl kern.maxproc kern.maxproc: 1044 Pour fixer une variable particulière, utilisez la syntaxe intuitive variable=valeur : &prompt.root; sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000 Les valeurs des variables sysctl sont généralement des chaînes de caractères, des nombres, ou des booléens (un variable booléenne étant 1 pour oui ou un 0 pour non). Optimiser les disques Les variables sysctl <varname>vfs.vmiodirenable</varname> vfs.vmiodirenable La variable sysctl vfs.vmiodirenable peut être positionnée soit à 0 (désactivée) soit à 1 (activée); elle est a 1 par défaut. Cette variable spécifie comment les répertoires sont cachés par le système. La plupart des répertoires sont petits, utilisant juste un simple fragment du système de fichiers (typiquement 1KO) et moins dans le cache en mémoire (typiquement 512 octets). Cependant, quand on fonctionne dans le mode par défaut le cache en mémoire ne cachera qu'un nombre fixe de répertoires même si vous disposez d'une grande quantité de mémoire. Activer cette variable sysctl permet au cache en mémoire d'utiliser le cache des pages de mémoire virtuelle pour cacher les répertoires, rendant toute la mémoire disponible pour cacher les répertoires. Cependant, la taille minimale de l'élément mémoire utilisé pour cacher un répertoire est une page physique (typiquement 4KO) plutôt que 512 octets. Nous recommandons l'activation de cette option si vous faites fonctionner des services qui manipulent un grand nombre de fichiers. De tels services peuvent être des caches web, d'importants systèmes de courrier électronique, et des systèmes serveurs de groupe de discussion. Activer cette option ne réduira généralement pas les performances même avec la mémoire gaspillée mais vous devriez faire des expériences pour le déterminer. <varname>hw.ata.wc</varname> hw.ata.wc FreeBSD 4.3 a flirté avec la désactivation du cache en écriture des disques IDE. Cela réduisit la bande passante en écriture des disques IDE mais fut considéré comme nécessaire en raison de sérieux problèmes de cohérence de données introduits par les fabricants de disques durs. Le problème est que les disques IDE mentent sur le moment où une écriture est réellement terminée. Avec le cache en écriture IDE activé, les disques durs IDE non seulement n'écriront pas les données dans l'ordre, mais parfois retarderont l'écriture de certains blocs indéfiniment sous une charge disque importante. Un crash ou une coupure secteur pourra être à l'origine de sérieuses corruptions du système de fichiers. Par précaution le paramétrage par défaut de FreeBSD fut modifié. Malheureusement, le résultat fut une telle perte de performances que nous avons réactivé le cache en écriture après cette version de FreeBSD. Vous devriez contrôler la valeur par défaut sur votre système en examinant la variable sysctl hw.ata.wc. Si le cache en écriture des disques IDE est désactivé, vous pouvez le réactiver en positionnant la variable à 1. Cela doit être fait à partir du chargeur au démarrage. Tenter de le faire après le démarrage du noyau n'aura aucun effet. Pour plus d'informations, veuillez consulter la page de manuel &man.ata.4;. Les “Soft Updates” Soft Updates tunefs Le programme &man.tunefs.8; peut être utilisé pour régler finement un système de fichiers. Ce programme dispose de nombreuses options différentes, mais pour l'instant nous nous intéresserons uniquement à l'activation et la désactivation des “Soft Updates”, ce qui fait avec: &prompt.root; tunefs -n enable /filesystem &prompt.root; tunefs -n disable /filesystem Un système de fichiers ne peut être modifié avec &man.tunefs.8; tant qu'il est monté. Un bon moment pour activer les “Soft Updates” est avant que les partitions ne soient montées en mode mono-utilisateur. Depuis FreeBSD 4.5, il est possible d'activer les “Soft Updates” au moment de la création du système de fichiers, avec l'utilisation de l'option -U de la commande &man.newfs.8;. Les “Soft Updates” améliorent de façon drastique les performances sur les méta-données, principalement la création et la suppression de fichier, par l'utilisation d'un cache mémoire. Nous recommandons d'activer les “Soft Updates” sur tous vos systèmes de fichiers. Il y a deux inconvénients aux “Soft Updates” que vous devez connaître: tout d'abord, les “Soft Updates” garantissent la cohérence du système de fichiers en cas de crash mais pourront facilement être en retard de quelques secondes (voir même une minute!) dans la mise à jour du disque. Si votre système plante il se peut que vous perdiez plus de travail que dans d'autres cas. Deuxièmement, les “Soft Updates” retardent la libération des blocs du système de fichiers. Si vous avez un système de fichiers (comme le système de fichiers racine) qui est presque plein, effectuer une mise à jour majeure, comme un make installworld, peut mener à un manque d'espace sur le système de fichiers et faire échouer la mise à jour. Plus de détails à propos des “Soft Updates” Soft Updates (Détails) Il y a deux approches traditionnelles pour écrire les méta-données d'un système de fichiers sur le disque (mise à jour des méta-données et mise à jour des éléments sans données comme les inodes ou les répertoires). Historiquement, le comportement par défaut était d'écrire les mises à jour des méta-données de façon synchrone. Si un répertoire a été modifié, le système attendait jusqu'à ce que le changement soit effectivement écrit sur le disque. Les tampons des données de fichier (contenu du fichier) passaient par le cache mémoire et étaient copiés sur le disque plus tard de façon asynchrone. L'avantage de cette implémentation est qu'elle est effectuée sans risque. S'il y a un problème durant une mise à jour, les méta-données sont toujours dans un état consistant. Un fichier est soit créé complètement soit pas du tout. Si les blocs de données d'un fichier n'ont pas trouvé leur chemin du cache mémoire vers le disque au moment du crash, &man.fsck.8; est capable de s'en apercevoir et de réparer le système de fichiers en fixant la taille du fichier à 0. De plus, l'implémentation est claire et simple. L'inconvénient est que la modification des méta-données est lente. Un rm -r, par exemple, touche à tous les fichiers dans un répertoire séquentiellement, mais chaque modification du répertoire (effacement d'un fichier) sera écrite de façon synchrone sur le disque. Cela comprend les mises à jour du répertoire lui-même, de la table des inodes, et éventuellement celles sur des blocs indirects alloués par le fichier. Des considérations semblables s'appliquent à la création d'importantes hiérarchies ((tar -x). Le deuxième cas est la mise à jour asynchrone des méta-données. C'est le comportement par défaut de Linux/ext2fs et de l'usage de mount -o async pour l'UFS des systèmes BSD. Toutes les mises à jour des méta-données passent également par l'intermédiaire d'un cache mémoire, c'est à dire, qu'elles seront mélangées aux mises à jour des données du contenu du fichier. L'avantage de cette implémentation est qu'il n'y a pas besoin d'attendre jusqu'à l'écriture sur le disque de chaque mise à jour de méta-données, donc toutes les opérations qui sont à l'origine d'une grande quantité de mise à jour de méta-données fonctionnent bien plus rapidement que dans le cas synchrone. De plus, l'implémentation est toujours claire et simple, il y a donc peu de risque qu'un bogue se cache dans le code. L'inconvénient est qu'il n'y a aucune garantie du tout sur la cohérence du système de fichiers. S'il y a un problème durant une opération qui met à jour une grande quantité de méta-données (comme une coupure secteur, ou quelqu'un appuyant sur le bouton reset), le système de fichiers sera laissé dans un état imprévisible. Il n'y a aucune opportunité d'examiner l'état du système - de fichiers quand le système est à nouveau relancé; + de fichiers quand le système est à nouveau relancé; les blocs de données d'un fichier pourraient déjà avoir été inscrits sur le disque alors que la mise à jour de la table des inodes ou du répertoire associé n'a pas été faite. Il est en fait impossible d'implémenter un fsck qui est capable de nettoyer le chaos résultant (parce que l'information nécessaire n'est pas disponible sur le disque). Si le système de fichiers a été endommagé irrémédiablement, le seul choix est de le recréer avec &man.newfs.8; et de récupérer les données à partir de sauvegardes. La solution commune pour ce problème fut d'implémenter une région de trace, dont on fait souvent référence sous le terme de journalisation, bien que ce terme ne soit pas toujours utilisé de façon cohérente et est occasionnellement utilisé pour d'autres formes de transaction avec trace. Les mises à jour des méta-données sont toujours écrites de façon synchrone, mais seulement sur une petite région du disque. Elles seront plus tard déplacées vers leur emplacement correct. Parce que la région de trace est une petite région contiguë sur le disque, il n'y a pas de grandes distances de déplacement pour les têtes des disques, même durant les opérations importantes, donc ces opérations sont plus rapides que les mises à jour synchrones. De plus la complexité de l'implémentation est relativement limitée, donc le risque de présence de bogues est faible. Un inconvénient est que toutes les méta-données sont écrites deux fois (une fois dans la région de trace et une fois sur l'emplacement correct) donc pour un fonctionnement normal, une baisse des performances pourra en résulter. D'autre part, dans le cas d'un crash, toutes les opérations sur les méta-données en attente peuvent rapidement être annulées ou complétées à partir de la zone de trace après le redémarrage du système, ayant pour résultat un démarrage rapide du système de fichiers. Kirk McKusick, le développeur du FFS de Berkeley, a résolu le problème avec les “Soft Updates”: toutes les mises à jour des méta-données sont conservées en mémoire et inscrites sur le disque selon une séquence ordonnée (“mise à jour ordonnée des méta-données”). Ceci a pour effet, dans le cas d'un nombre d'opérations sur les méta-données important, que les dernières mises à jour sur un élément “attrapent” les premières si ces dernières sont encore en mémoire et n'ont pas encore été inscrites sur le disque. Donc toutes les opérations sur, par exemple, un répertoire sont généralement effectuées en mémoire avant que la mise à jour ne soit écrite sur le disque (les blocs de données sont ordonnés en fonction de leur position de sorte à ce qu'ils ne soient pas sur le disque avant leur méta-données). Si le système crash, cela provoque un “retour dans les traces” implicite: toutes les opérations qui n'ont pas trouvé leur chemin vers le disque apparaissent comme si elles n'avaient jamais existé. Un état cohérent du système de fichiers est maintenu et apparaît comme étant celui de 30 ou 60 secondes plus tôt. L'algorithme utilisé garantie que toutes les ressources utilisées soient marquées avec leur bons “bitmaps”: blocs et inodes. Après un crash, les seules erreurs d'allocation de ressources qui apparaissent sont les ressources qui ont été marquées comme “utilisées” et qui sont en fait ”libre”. &man.fsck.8; reconnaît cette situation, et libère les ressources qui ne sont plus utilisées. On peut ignorer sans risque l'état “sale” d'un système de fichiers après un crash en forçant son montage avec mount -f. Afin de libérer les ressources qui peuvent être inutilisées, &man.fsck.8; doit être exécuté plus tard. C'est l'idée qu'il y a derrière le “background fsck” (fsck en tâche de fond): au démarrage du système, seule un “snapshot” (photographie) du système de fichiers est prise. La commande fsck peut être exécutée plus tard sur ce système de fichiers. Tous les systèmes de fichiers peuvent être montés “sales”, donc le système passe en mode multi-utilisateurs. Ensuite, les fsck en tâche de fond seront programmés pour tous les systèmes de fichiers pour lesquels c'est nécessaire, pour libérer les ressources qui peuvent être inutilisées (les systèmes qui n'utilisent pas les ‘Soft Updates” ont toujours besoin du fsck en avant plan). L'avantage est que les opérations sur les méta-données sont presque aussi rapides que les mises à jour asynchrones (i.e. plus rapide qu'avec le “logging” - traçage, qui doit écrire les méta-données deux fois). Les inconvénients sont la complexité du code (impliquant un haut risque de bogues dans une zone qui est hautement sensible en raison de risque perte de données utilisateur), et une plus grande consommation en mémoire. De plus il y a quelques particularités que l'on peut rencontrer lors de l'utilisation. Après un crash, l'état du système apparaît être en quelque sorte “plus vieux”. Dans des situations où l'approche synchrone classique aurait donné lieu à des fichiers de taille nulle restant après le fsck, ces fichiers n'existent pas du tout avec un système de fichiers utilisant les “Soft Updates” parce que ni les méta-données ni les contenus de fichiers n'ont jamais été inscrits sur le disque. L'espace disque n'est pas rendu tant que les mises à jour n'ont pas été inscrites sur le disque, ce qui peut se produire quelques temps après l'exécution de rm. Cela peut être à l'origine de problèmes quand on installe une grande quantité de données sur un système de fichiers qui ne dispose pas de suffisamment d'espace pour contenir tous les fichiers deux fois. Paramétrer les limitations du noyau Paramétrer les limitations du noyau Limitations sur les fichiers et les processus <varname>kern.maxfiles</varname> kern.maxfiles Le paramètre kern.maxfiles peut être augmenté ou diminué en fonction des besoins du système. Cette variable indique le nombre maximal de descripteurs de fichier sur votre système. Quand la table de descripteurs de fichier est pleine, le message file: table is full s'affichera régulièrement dans le tampon des messages système, qui peut être visualisé avec la commande dmesg. Chaque fichier ouvert, chaque “socket”, ou chaque emplacement en pile utilise un descripteur de fichier. Un serveur important peut facilement demander plusieurs milliers de descripteurs de fichiers, en fonction du type et du nombre de services s'exécutant en même temps. La valeur par défaut de kern.maxfile est fixée par l'option dans votre fichier de configuration du noyau. kern.maxfiles augmente proportionnellement avec la valeur de . Quand vous compilez un noyau sur mesure, il est bon de paramétrer cette option en fonction de l'utilisation de votre système. Ce nombre fixe la plupart des limites pré-définies du noyau. Même si une machine de production pourra ne pas avoir en réalité 256 utilisateurs connectés simultanément, les ressources requises pourront être semblables pour un serveur web important. A partir de FreeBSD 4.5, positionner à 0 dans votre fichier de configuration du noyau, le système choisira une valeur raisonnable par défaut basée sur la quantité de mémoire présente sur votre système. Limitations réseau L'option du noyau fixe la quantité de “mbuf”s disponibles pour le système. Un serveur à fort trafic avec un nombre faible de “mbuf”s sous-emploiera les capacités de FreeBSD. Chaque “cluster” représente approximativement 2KO de mémoire, donc une valeur de 1024 représente 2 mégaoctets de mémoire noyau réservée pour les tampons réseau. Un simple calcul peut être fait pour déterminer combien sont nécessaires. Si vous avez un serveur web qui culmine à 1000 connexions simultanées, et que chaque connexion consomme un tampon de réception de 16KO et un tampon d'émission de 16KO, vous avez approximativement besoin de 32MO de tampon réseau pour couvrir les besoin du serveur web. Un bon principe est de multiplier ce nombre par 2, soit 2x32 MO / 2KO = 64MO / 2KO =32768. Ajouter de l'espace de pagination Peu importe comment vous l'avez pensé, parfois un système ne fonctionne pas comme prévu. Si vous trouvez que vous avez besoin de plus d'espace de pagination, il est assez simple d'en rajouter. Vous avez trois manières d'augmenter votre espace de pagination: ajouter un nouveau disque dur, activer la pagination sur NFS, et créer un fichier de pagination sur une partition existante. Espace de pagination sur un nouveau disque dur La meilleur façon d'ajouter de l'espace de pagination, bien sûr, est d'utiliser ceci comme excuse pour ajouter un autre disque dur. Vous pouvez toujours utiliser un autre disque après tout. Si vous pouvez faire cela, allez relire la discussion sur l'espace de pagination dans la section Configuration initiale du Manuel pour des suggestions sur la meilleure façon d'arranger votre espace de pagination. Espace de pagination sur NFS L'espace de pagination sur NFS n'est recommandé que si vous n'avez pas de disque dur local sur lequel avoir l'espace de pagination. Avoir son espace de pagination sur NFS sera lent et inefficace sur les versions de FreeBSD antérieures à la branche 4.X. c'est raisonnablement rapide et efficace sur 4.0-RELEASE et suivante. Même avec une version récente de FreeBSD, la pagination sur NFS sera limitée par la bande passante du réseau et sera un fardeau supplémentaire pour le serveur NFS. Fichiers de pagination Vous pouvez créer un fichier d'une taille spécifique pour l'utiliser comme fichier de pagination. Dans notre exemple nous utiliserons un fichier de 64MO appelé /usr/swap0. Vous pouvez, bien sûr, utiliser le nom de votre choix. - Créer un fichier de pagination + Créer un fichier de pagination sous FreeBSD 4.X Soyez sûr que votre configuration de noyau inclut le pilote vnode. Ce n'est pas le cas dans les versions récentes de GENERIC. pseudo-device vn 1 #Vnode driver (turns a file into a device) Créez un périphérique vn: &prompt.root; cd /dev &prompt.root; sh MAKEDEV vn0 Créez un fichier de pagination (/usr/swap0): &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 Fixez les bonnes permissions sur /usr/swap0: &prompt.root; chmod 0600 /usr/swap0 Activez le fichier de pagination dans /etc/rc.conf: swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. Redémarrez la machine ou activez directement le fichier de pagination: &prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swap + + Créer un fichier de pagination sous FreeBSD 5.X + + + + Assurez-vous que votre configuration de noyau inclut + le pilote de disque mémoire (&man.md.4;). Il se + trouve par défaut dans le noyau + GENERIC. + + device md # Memory "disks" + + + + Créez un fichier de pagination + (/usr/swap0): + + &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 + + + + Fixez les bonnes permissions sur + /usr/swap0: + + &prompt.root; chmod 0600 /usr/swap0 + + + + Activez le fichier de pagination dans + /etc/rc.conf: + + swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. + + + + + Redémarrez la machine ou activez directement le + fichier de pagination: + + &prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0 + + + + + + + + + + + Hiten + Pandya + Ecrit par + + + Tom + Rhodes + + + + + ACPI et FreeBSD + + Il est vraiment important d'utiliser les ressources + matérielles d'une manière efficace. Avant + l'apparition de l'ACPI, il était + très difficile pour les systèmes d'exploitation de + gérer l'utilisation de l'alimentation et la température + d'un système. Le matériel était soit + contrôlé par certaines interfaces du + BIOS, i.e.: le système + Plug and Play BIOS (PNPBIOS), + l'Advanced Power Management (APM) et ainsi + de suite. La gestion de l'énergie et des ressources est un + des éléments clés d'un système + d'exploitation moderne. Par exemple, vous pourrez vouloir qu'un + système d'exploitation surveille certaines limites (et + prenne eventuellement des mesures), au cas où la + température de votre système augmente de façon + inattendue. + + Dans cette section, nous fournirons une information + complète au sujet de l'ACPI. Il sera + fait référence à des documents + supplémentaires en fin de section pour plus de + détails. Soyez conscient que l'ACPI + n'est disponible que sur les systèmes FreeBSD 5.X et + suivants. + + + Qu'est-ce que l'ACPI? + + L'“Advanced Configuration and Power Interface” + (ACPI) est une norme créée + par un ensemble de constructeurs pour fournir une interface + standard à la gestion des ressources et de l'énergie. + C'est un élément clé dans le contrôle + et la configuration par le système d'exploitation de + de la gestion d'énergie, i.e., il permet plus de contrôle + et flexibilité au système d'exploitation. Les + systèmes modernes ont “repoussé” les limites + des interfaces “Plug and Play” actuelles (comme + l'APM, qui est utilisé sous FreeBSD 4.X), avant + l'apparition de l'ACPI. + L'ACPI est le descendant direct de + l'APM (Advanced Power Management - gestion + avancée de l'énergie). + + + Configurer l'<acronym>ACPI</acronym> + + Le pilote acpi.ko est par défaut + chargé par le &man.loader.8; au démarrage et ne devrait + pas être compilé dans + le noyau. La raison derrière cela est que les modules + sont plus facile à manipuler, par exemple pour passer à + une autre version du module acpi.ko sans + avoir à recompiler le noyau. Cela présente l'avantage + de rendre les tests aisés. Une autre raison est que lancer + l'ACPI après qu'un système ait + terminé son lancement n'est pas très utile, et dans + certain cas peut même être fatal. Dans le doute, + désactiver l'ACPI. Ce pilote ne devrait + et ne peut être déchargé car le bus + système l'utilise pour différentes + intéraction avec le matériel. + L'ACPI peut être déactivé + avec l'utilitaire &man.acpiconf.8;. En fait la plupart des + interactions avec ACPI peuvent être + effectuées via &man.acpiconf.8;. A la base cela signifie + que si quelque chose en rapport avec l'ACPI + apparaît dans la sortie de &man.dmesg.8;, alors c'est + déjà en fonctionnement. + + + L'ACPI et l'APM + ne peuvent coéxister et devraient être utilisé + séparément. Le dernier chargé + s'arrêtera s'il détecte l'autre en + focntionnement. + + + Dans sa plus simple forme, l'ACPI peut + être utilisé pour mettre en veille un système avec + &man.acpiconf.8;, les options et + 1-5. La plupart des utilisateurs n'auront + besoin que de 1. L'option + 5 provoquera un arrêt de l'alimentation + par logiciel, effet identique à un: + + &prompt.root; halt -p + + D'autres options sont disponibles. Consultez la page de + manuel d'&man.acpiconf.8; pour plus d'informations. + + + + Déboguage de l'<acronym>ACPI</acronym> + + Presque tout dans l'ACPI est transparent, + jusqu'au moment où cela ne fonctionne plus. C'est en + général à ce moment où vous en tant + qu'utilisateur saurez que quelque chose ne fonctionne pas + correctement. +