Académique Documents
Professionnel Documents
Culture Documents
4. Pour surveiller les directories systme pouvant grossir en raison de chiers log.
Difcult de portage de shell scripts et autres applications. Difcult de gestion en environnement htrogne.
Exemple : FreeBSD 2.2.x HP-UX 9.07 SunOS 4.1.4
/usr/bsd /usr/ucb
% ln -s /usr/bsd /usr/ucb % ls -l /usr drwxr-xr-x 2 root sys 512 Aug 28 1996 bsd/ lrwxr-xr-x 1 root sys 3 Aug 22 1996 ucb -> bsd/ % echo $PATH /usr/local/bin:/bin:/usr/ucb:/usr/bin:/usr/sbin:/etc:/usr/etc % which rlogin /usr/ucb/rlogin
bin
dev
etc
lib
proc
sbin
tmp
usr
var
bin
include
lib
local
sbin
src
log
run
spool
tmp
bin
etc
include
lib
sbin
/sbin :
Il contient les binaires systme (do le s dans son nom) primordiaux utiliss pendant le boot de la machine. Il rside dans la mme partition que / ce qui garantit sa disponibilit ce moment-l o dautres partitions ne sont pas encore disponibles. Exemple de commandes :
/bin :
arp, dump, fsck, halt, ifconfig, init, ldconfig, mkfs, restore, shutdown, swapon, etc.
Il contient les binaires primordiaux utiliss pendant le boot de la machine. Il rside dans la mme partition que / ce qui garantit sa disponibilit ce moment-l o dautres partitions ne sont pas encore disponibles. Exemple de commandes :
bash, chmod, chown, cp, date, dd, df, echo, hostname, kill, login, mkdir, mknod, mount, ps, rm, sync, umount, vi, etc.
/usr/sbin :
du boot.
Il contient des binaires systme (do le s dans son nom) non primordiaux et plus utiliss pour la gestion au jour le jour de la machine. Il rside dans une mme partition pouvant ne pas tre disponible pendant les premires tapes
Exemple de commandes :
adduser, in.rlogind, inetd, lpd, lpc, pwck, sa, showmount, traceroute, vipw, etc.
/usr/bin :
Il contient la plupart des commandes Unix pour utilisateurs (plusieurs centaines en gnral).
/usr/local/sbin : Il contient les commandes Unix dadministration propres au site ou propres la machine. /usr/local/bin :
Il contient la plupart des commandes Unix utilisateurs installes localement.
/lib :
Il contient en gnral les librairies dynamiques primordiales pour le fonctionnement du systme. En gnral, on ny trouve pas de librairie statique .a. Exemple de chiers :
/usr/lib :
Il contient les librairies dynamiques non primordiales au fonctionnement du systme ainsi que les librairies statiques .a de programmation en langage C. Linker avec -ltoto revient linker avec /usr/lib/libtoto.a. Exemple de chiers :
/usr/local/lib :
/usr/include :
/usr/local/include :
Il contient les chiers .h installs localement.
/usr/src :
trouve.
Quand il existe, ce directory contient en principe les sources du systme Unix sur lequel on le
/sys :
Plus gnralement, on trouve /usr/sys. Ce directory contient les chiers modules .o ncessaires recompiler uniquement un noyau Unix.
10
/etc :
Il contient les chiers de conguration des divers utilitaires primordiaux assurant le fonctionnement du systme.
/usr/local/etc :
Il contient les chiers de conguration de divers utilitaires non ncessaires au fonctionnement du systme.
11
/dev :
Il contient les chiers spciaux du systme permettant daccder aux ressources physiques de la
/proc :
machine comme les disques durs, la mmoire RAM etc. Il contient une reprsentation sous forme de chiers et directories des processus en mmoire.
% echo $$ 23247 % cd /proc/23247 % ls -l total 0 -r--r--r-1 besancon lrwx-----1 besancon -r-------1 besancon lrwx-----1 besancon dr-x-----1 besancon pr--r--r-1 besancon -rw------1 besancon lrwx-----1 besancon -r--r--r-1 besancon -r--r--r-1 besancon -r--r--r-1 besancon % ls -d [a-z]*
sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin sysadmin
0 64 0 64 0 0 0 64 0 0 0
Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep
22 22 22 22 22 22 22 22 22 22 22
14:30 15:45 15:45 15:45 15:45 15:45 15:45 15:45 14:29 15:45 15:45
cmdline cwd -> [0001]:1523515394 environ exe -> [0801]:10251 fd maps mem root -> [0801]:2 stat statm status
12
inode-max inode-nr
osrelease ostype
panic securelevel
version
A noter que plusieurs constructeurs proposent ce type daccs aux processus et leurs proprits. Cela dit, toutes les mthodes proposes diffrent.
13
/var :
Il contient des informations variables plus ou moins faible dure de vie. /var/run Fichiers mmorisant des PID de dmons systme. /var/spool/lpd Fichiers temporaires pour les impressions. /var/mail Emails, sur les systmes rcents et les systmes AT&T. /var/spool/mail Idem pour les systmes BSD plus anciens. /var/log Fichiers de traces de divers utilitaires. /var/tmp Fichiers temporaires crs par les utilisateurs.
14
en taille, autant on ne peut pas laisser les machines diskless crire ensemble dans les mmes chiers variables dans /usr. Avoir une arborescence
/var permet dviter cela. On duplique uniquement pour chaque machine diskless la partie /var alors que /usr est mis en commun.
Un autre objectif dans la cration de /var est de pouvoir utiliser /usr en lecture seule, sans critures autorises dedans. En pratique, assez difcile raliser.
15
Plusieurs tapes : 1. la ROM 2. le secteur de boot 3. le chargeur secondaire 4. le noyau le processus init 5. les scripts de dmarrage qui donneront lieu lenchainement sur la gure suivante :
16
ROM
Bootstrap program
/etc/ttys (BSD)
/etc/inittab (Sys V)
17
Etape n 1 : la ROM
inspecter de ltat matriel de la machine permettre lutilisateur dinteragir si besoin (programme moniteur) :
prcision du disque de boot consultation dadresses mmoire modication de valeurs dans EEPROM recherche des priphriques sur le bus SCSI options de boot (single ou multi)
18
Etape n 1 : la ROM
panne matrielle
le programme moniteur donne laccs la slection du disque de boot permettent de protger le moniteur
certains constructeurs
protection du programme moniteur en cas de problme (retour usine, super mot de passe secret connu du constructeur) programme moniteur particulier chaque constructeur ; plus ou moins riche selon chaque constructeur
19
Etape n 1 : la ROM
20
Le chargement en mmoire vive du secteur de boot se fait en faisant appel uniquement aux rmwares des priphriques. Aucun pilote logiciel (device driver ) nentre en jeu.
Formation permanente ARS 21
La cration de ce secteur de boot est un mcanisme propre chaque constructeur. Par exemple sur Solaris :
22
/kernel/unix puis les modules de /kernel jusqu ce que le noyau soit capable de monter
par lui mme des lesystems) puis lexcute.
Le chargement en mmoire vive du chargeur secondaire se fait en faisant appel uniquement aux rmwares des priphriques. Aucun pilote logiciel (device driver ) nentre en jeu.
Formation permanente ARS 23
Le noyau est charg puis excut par le chargeur secondaire. Pas de convention en ce qui concerne le noyau : Systme FreeBSD Linux SunOS Solaris 5.0 5.4 Solaris Noyau
24
prise en compte des priphriques conguration logicielle des interfaces rseau cration de toutes les structures mmoire ncessaires lancement des deux premiers processus de la machine, PID 0 et 1. Ce ne sont pas des processus
Unix "traditionnels" puisquils sont construits ex nihilo (par opposion aux processus ultrieurs qui auront tous un parent).
25
26
Il y a deux mthodes pour lancer les scripts : la mthode la BSD la mthode la SystemV Elles seront vues ci-aprs.
Tout processus est cr par un processus parent excutant un fork(), cest--dire une copie de lui mme (code + data), suivi dun exec() pour remplacer le contenu de cette copie par un nouveau programme.
27
getty
login
grep
28
init na pas de notion de niveaux, dtats. init : /etc/rc Les particularits de la station sont regroupes dans le script /etc/rc.local appel par /etc/rc.
Un shell script caractre gnral est appel par le programme
Cf annexe A pour un exemple de chier /etc/rc. Cf annexe B pour un exemple de chier /etc/rc.local.
29
fs::sysinit:/etc/rcS >/dev/console 2<>/dev/console </dev/console is:3:initdefault: s0:0:wait:/etc/rc0 >/dev/console 2<>/dev/console </dev/console s2:23:wait:/etc/rc2 >/dev/console 2<>/dev/console </dev/console s3:3:wait:/etc/rc3 >/dev/console 2<>/dev/console </dev/console s5:5:wait:/etc/rc5 >/dev/console 2<>/dev/console </dev/console s6:6:wait:/etc/rc6 >/dev/console 2<>/dev/console </dev/console
30
Syntaxe de /etc/inittab
label : niveaux : action : commande
Les niveaux :
SVR4 Run States S 0 1 2 3 4 5 6 Single-user (leaves lesystems mounted) Power off Single-user/System-admin (leaves only / mounted) Multi-user, network disabled Multi-user, network enabled (not used) PROM Monitor level Halt & reboot to default state
31
le programme init devra relancer la commande du champ commande chaque fois quelle se
Lorsque init rentre dans le niveau considr, il doit lancer la commande du champ commande et en attendre la n avant de passer la ligne suivante de inittab. Si la commande na pas t lance au pralable, init la lance et passe la ligne suivante ; en
boot La commande de cette ligne est excuter uniquement la premire fois que init lit le chier inittab. bootwait
La commande de cette ligne est excuter uniquement la premire fois que init lit le chier inittab ;
off
init attend la terminaison de la commande pour passer la ligne suivante. Si la commande prcise nest pas dj lance, init ignore cette ligne ; sinon init tue le processus associ la commande en lui envoyant les signaux SIGTERM puis SIGKILL.
32
initdefault sysinit
Cette ligne prcise le run-level dans lequel init se place au dbut de son invocation. Il ne peut y avoir quune ligne de ce type.
33
La structure classique (linux, Solaris, etc.) est la suivante (exemple extrait de Solaris) :
fs::sysinit:/etc/rcS >/dev/console 2<>/dev/console </dev/console is:3:initdefault: s0:0:wait:/etc/rc0 >/dev/console 2<>/dev/console </dev/console s2:23:wait:/etc/rc2 >/dev/console 2<>/dev/console </dev/console s3:3:wait:/etc/rc3 >/dev/console 2<>/dev/console </dev/console s5:5:wait:/etc/rc5 >/dev/console 2<>/dev/console </dev/console s6:6:wait:/etc/rc6 >/dev/console 2<>/dev/console </dev/console
On trouve parfois aussi les chiers /sbin/rc0, /sbin/rc1, /sbin/rc2, /sbin/rc3, etc. Ce sont des scripts. Tous ces scripts sont btis sur le mme modle.
34
35
Le principe : 1. Quand on entre dans le runlevel N on lance le script rcN. 2. Le script rcN lance des programmes dont le nom commence par la lettre K et situs dans
/etc/rcN.d.
Lenchanement de ces programmes se fait dans lordre alphabtique. Un argument est pass chaque programme : stop (cf le K pour Kill) 3. Le script rcN lance des programmes dont le nom commence par la lettre S et situs dans
/etc/rcN.d.
Lenchanement de ces programmes se fait dans lordre alphabtique. Un argument est pass chaque programme : start (cf le S pour Start)
36
Exemple de script S :
#!/sbin/sh state=$1 set who -r if [ $8 != "0" ] then exit fi case $state in start) if [ $9 = "2" -o $9 = "3" ] then exit fi echo "Starting process accounting" /usr/lib/acct/startup ;; stop) echo "Stopping process accounting" /usr/lib/acct/shutacct ;; esac
37
Exemple de script K :
#!/sbin/sh state=$1 set who -r if [ $8 != "0" ] then exit fi case $state in start) if [ $9 = "2" -o $9 = "3" ] then exit fi echo "Starting process accounting" /usr/lib/acct/startup ;; stop) echo "Stopping process accounting" /usr/lib/acct/shutacct ;; esac
38
Moralit : les chiers contiennent la mme chose ; ils sont en fait identiques !
% ls -l *spc ls -l /etc/rc2.d/*spc lrwxrwxrwx 1 besancon lrwxrwxrwx 1 besancon
13 Nov 12 00:44 /etc//rc2.d/K20spc -> ../init.d/spc 13 Nov 12 00:44 /etc/rc2.d/S80spc -> ../init.d/spc
Via le mcanisme des liens symboliques (ou de liens hard), on regroupe au sein dun mme chier la partie dmarrage et la partie arrt.
Sur linux, on a affaire /etc/rc.d/init.d et aux rpertoires mais le principe dcrit prcdemment reste le mme.
Formation permanente ARS
/etc/rc.d/rc[0-9].d
39
inittab
rc0
rc3
rc0.d
rc3.d
K08audit
K22cron
K30nfs
K38nis
S10syslog S18nis
S19nfs
S21audit
40
Vos modications sont installer au choix : localises dans un chier extrieur spci dans /etc/inittab via une ligne du type
sys sys
41
Boot en single
Utilit : intervenir sur la machine Unix soit pour rparer un problme soit pour installer une partie logicielle quil est impossible de faire ultrieurement (changement de librairie dynamique par exemple).
42
Boot en single
Pour booter en single user, il faut le prciser au niveau du moniteur de la machine : Pour Linux, taper boot
Sur Sun, il faudra certainement rgler le type de terminal (pour pouvoir faire vi and co) :
43
Il faut suivre une procdure darrt du fait de laspect multiutilisateur : 1. Prvenir les utilisateurs 2. Signaler aux processus de se terminer proprement 3. Passer en single user 4. Flusher les disques avant dteindre (via la commande
sync).
44
shutdown
2 syntaxes selon larchitecture : 1. AT&T : shutdown 2. BSD : shutdown
halt reboot
Ralise un sync avant darrter les processeurs
kill -TERM 1
45
fasthalt, fastboot
1. #! /bin/sh
# @(#)fastboot.sh 1.7 88/02/07 SMI; from UCB 4.2 PATH=/bin:/usr/bin:/usr/etc:$PATH export PATH cp /dev/null /fastboot reboot "$@"
2. #! /bin/sh
# @(#)fasthalt.sh 1.6 88/02/07 SMI; from UCB 4.2 PATH=/bin:/usr/bin:/usr/etc:$PATH export PATH cp /dev/null /fastboot halt $*
46
47
48
TTY Idle When co Tue 19:45 p0 Mon 20:17 p1 1 Mon 20:17 p2 3d Mon 20:17 p3 1d Wed 12:31 p4 21: Wed 12:31 p5 23: Wed 23:26 p6 Thu 20:09
49
50
mesg [y|n]
% tty /dev/ttyp6 % mesg y % mesg n % finger Login besancon besancon besancon besancon besancon besancon besancon besancon
Lutilisateur indique par cette commande sil accepte que lon lui envoit des messages en crivant dans son terminal. Si un utilisateur refuse les messages, une astrisque apparait dans lafchage de finger :
TTY Idle When co Tue 19:45 p0 Mon 20:17 p1 1 Mon 20:17 p2 9 Mon 20:17 p3 1d Wed 12:31 p4 21: Wed 12:31 p5 23: Wed 23:26 *p6 Thu 23:16
51
write
Syntaxe : write
user tty
52
wall
Pour envoyer un message tout le monde dun coup (wall == Write ALL).
53
Le noyau Unix
Le noyau : un ensemble de fonctions, de procdures, de structures de donnes ralisant un certain nombre de tches un excutable lanc pendant le boot un excutable contenu dans / (en gnral)
54
Le noyau Unix
fournir une interface dutilisation et de gestion efcace grer le CPU savoir piloter les diffrents types de priphriques grer les processus (cration des processus, ordonnancement, accounting) grer la mmoire (allocation aux processus, swap, paging) grer le systme de chiers (accs locaux, accs rseau, quotas) grer les autres ressources (entres/sorties, rseau etc.)
55
Le noyau Unix
assurer que le noyau du systme fonctionne correctement assurer que le noyau est congur pour reprsenter correctement le systme modier le noyau compiler le noyau
56
Le noyau Unix
57
Le noyau Unix
Congurer le noyau
Congurer les tailles de diverses structures mmoires (appel smit sur AIX, sam sur HP-UX,
58
Le noyau Unix
Modier le noyau
59
Le noyau Unix
Modier le noyau
60
Le noyau Unix
Modier le noyau
Le noyau Unix
Compilation du noyau
A noter que la mise en place dun nouveau noyau sans rebooter peut conduire larrt du fonctionnement de certains programmes, par exemple "ps" :
# ps -ax ps: /dev/mem: error on ktextseg: Bad address ps: could not read kernel VM
62
Le noyau Unix
Compilation du noyau
Diffrences entre les systmes sources publiques et les systmes constructeurs : la compilation dun noyau implique la compilation de tous ses chiers sources. La compilation dun noyau linux est donc une procdure longue (de lordre de 6 minutes sur un bi-pentium Pro 200 MHz pour Linux). les Unix constructeurs ne fournissent pas les chiers sources mais par contre ils fournissent les chier .o rsultats de la compilation spare intermdiaire. La compilation dun noyau Unix constructeur revient : compilation de quelques chiers .c contenant lindication des pilotes installs, des tailles mmoirede certaines structures dition de liens des .o constructeurs et des .o locaux
63
Le noyau Unix
Noyaux modulaires
64
Le noyau Unix
Noyaux modulaires
65
Disques durs
21.1 Technologies
Plusieurs technologies de disques durs : ST-506, ESDI, SMD (Storage Module Device), ESMD, IPI, SCSI (1, 2, 3, Fibre Channel), IDE (ATA100, ATA133), Firewire, Disk On Flash, etc.
(source http://www.almaden.ibm.com/sst/)
Formation permanente ARS 66
Disques durs
Technologies
Perspectives :
(source http://www.almaden.ibm.com/sst/)
67
Disques durs
Technologies
(source http://www.almaden.ibm.com/sst/)
68
Disques durs
Technologies
(source http://www.almaden.ibm.com/sst/)
69
Disques durs
Technologies
Une tte de lecture dun disque dur est un objet trs sophistique, trs fragile en cas de choc :
(source http://www.almaden.ibm.com/sst/)
70
Disques durs
71
Disques durs
Limitations de SCSI 2 : limitation 16 priphriques par bus SCSI longueur de cable limite lajout de priphrique diminue la longueur de cable autoris cest du parallel SCSI
72
Disques durs
Amliorations : SCSI 3 passage dun cable de cuivre du bre chanel dont les trames peuvent transiter sur du cable de cuivre ou sur de la bre optique nombre de priphriques illimit (limite 16 millions) dcomposition de la norme SCSI 3 en plusieurs couches (la norme SCSI 3 20 documents
73
Disques durs
Principe : une machine spcialise quipe de disques RAID et qui sert ces chiers via le rseau IP (NFS, CIFS en gnral). La marque la plus connue : Network Appliance, NAS utilise les protocoles NFS et SMB/CIFS.
http://www.netapp.com
SAN
Principe : chaque machine cliente de chiers est quipe dune carte adaptateur linterconnectant un rseau Fibre Channel compos dunits de stockage (RAID, TAPE, etc.) mises en commun SAN est un rseau qui utilise le protocole serial SCSI.
74
tout se ramne des primitives daccs des chiers interface unie de programmation
75
chiers rguliers (test -f toto) directories (test -d toto) chiers blocs (test -b toto) ou caractres (test -c toto) : ils font rfrence des
-rw-r--r-1 besancon software 940 Sep 21 14:23 cours.tex drwxr-sr-x 17 besancon software 1536 Sep 21 14:33 .
pipes nomms ou FIFO (test -p toto) sockets (test -S toto) liens symboliques (test -L toto)
prw-r--r-1 besancon software srwxrwxrwx 1 root bin 0 Sep lrwxrwxrwx 1 root wheel /usr/share/misc/termcap
Formation permanente ARS
operator operator
13, 4,
4 17:21 /tmp/.X11-unix/X0
76
Rpertoire /dev
Traditionnellement, le script /dev/MAKEDEV cre les chiers spciaux ncssaires par dfaut au systme (boot
-r sur Solaris).
Les droits daccs aux chiers spciaux dans /dev sont trs importants. Une prcaution : conserver une trace crite dun "ls
-l" de /dev
77
Rpertoire /dev
/dev ?
disques en mode caractre disques en mode bloc bandes magntiques pseudo-terminaux esclaves pseudo-terminaux matres
78
Mode bloc
-l :
brw-r----- 1 root operator 4, 0 Jun 10 13:27 /dev/sd0a brw-r----- 1 root sys 32, 8 Jul 9 1999 /dev/dsk/c0t1d0s0
Ce mode concerne surtout les disques durs : la lecture dun octet de donnes se traduit par la lecture dun bloc complet conserv alors dans un peu de mmoire du noyau, le buffer cache. la lecture de donnes supplmentaires passe par la consultation du cache dabord une criture est asynchrone : les donnes sont crites dans le buffer cache les donnes crites sajoutent au buffer cache en cas de remplissage du cache, les donnes sont crites sur disque et le cache se vide
Finalit du mode bloc : minimaliser les entres / sorties Les transferts se font toujours par blocs de taille xe.
79
Mode bloc
Buffer Cache
Block
80
Mode caractre
-l :
crw-r----- 1 root operator 13, 0 Jun 10 13:27 /dev/rsd0a crw-r----- 1 root sys 32, 8 Jan 6 2000 /dev/rdsk/c0t1d0s0
Un priphrique en mode caractre accepte un transfert dune quantit quelconque doctets. Pas de transit par une zone cache intermdiaire.
accs rapide
Dautres oprations sont permises selon le priphrique en mode caractre : formatage rglage de paramtres de liaison srie autres oprations de bas niveau ... Les priphriques en mode block ont souvent aussi une interface en mode caractres.
81
Mode caractre
Buffer Cache
Block
82
Device drivers
un device driver par priphrique de type diffrent. installation au niveau du noyau Unix du device driver (donc reconguration en cas dajout de
device) ; linstallation est spcique chaque Unix.
83
Device drivers
Buffer Cache
Block
84
85
Programme utilisateur
write() ioctl()
read()
Fichier spcial /dev/foo Mode du pripherique Major device number Minor device number
/dev/foo
10
20
Noyau
86
Actuellement on distingue 2 approches diffrentes pour les gnrer : Le systme connait les majors et les minors mais cest profondment cach dans le systme. Cest lapproche de Solaris. Sur Solaris, booter la machine en faisant boot
87
On a une liste exhaustive des minors et majors pour les drivers de base. Sur ces systmes, le programme
MAKEDEV.local
88
Systmes de chiers
23.1 Filesystem
Filesystem structure performante de gestion des chiers
Exemple : Fast File System dit FFS, EXT2 ou EXT3 de LINUX, etc.
Brivement, en voici quelques caractristiques : 1. Notion dinode 2. Notion dcriture gographiquement proche 3. Optimisation de la gestion de la liste des blocs libres 4. Stratgie dallocation des blocs
89
Systmes de chiers
Un chier est identi et dcrit sur un disque dur par son numro dinode (index node) et non pas par son nom. La structure inode (cf <sys/ufs/dinode.h>) dcrit un chier de la faon suivante : type de chier droits daccs nombre de liens ; quand il passe 0 et que le chier nest plus uilis, le chier est dtruit et la place est rcupre. UID, GID taille dates de dernire modication, consultation etc. localisation des blocs du chier sur le disque
90
Systmes de chiers
La structure inode (128 octets) ne peut pas contenir la liste complte de tous les blocs utiliss. On utilise donc le principe de liste indirecte :
I-Node.
Other Info
Block Addresses
direct
Legend
Data block, contains actual file data Indirect blocks, contain about 256 block pointers
91
Systmes de chiers
Un bloc a pour taille 4 ko (4096 octets). Une adresse de bloc occupe 4 octets.
Linode contient 13 numros de blocs : les 12 premiers sont les numros des 12 premiers blocs de donnes du chier ; le suivant indique le numro dun bloc indirect : il contient les numros des blocs de donnes partir du onzime. Il adresse donc 1024 blocs. le douzime numro est le numro dun bloc. Celui-ci contient 1024 numros de blocs indirects, cest--dire que chacun de ces 1024 blocs adressent un bloc de donnes ; le treizime numro suit cette logique avec une triple indirection.
octets
octets
Le troisime niveau dindirection est quasi inutilis car le remplissage des blocs indirects et indirects de niveau 1 et 2 assure dj une taille de chiers > 4 Go.
Formation permanente ARS 92
Systmes de chiers
Problmes courants avec les partitions : Une partition est pleine alors quune autre, surdimensionne est quasi vide. Les diffrents constructeurs divergent sur les implmentations des partitions.
Une partition peut contenir : un lesystem une zone de swap, sans structure de lesystem plaque dessus rien ; la partition est rserve pour un usage ultrieur
93
Systmes de chiers
Les informations concernant les partitions sont stockes dans une zone du disque dite disk label (sur SunOS dans le premier secteur de la premire partition).
Le disk label contient : caractristiques physiques du disque paramtres de partitionnement secteurs dfectueux Les commandes pour dposer un disk label sont propres chaque constructeur (disklabel,
format . . .) :
Sur Solaris : format Sur Linux : fdisk ou disklabel
-r
94
Systmes de chiers
Partition 0 2
Tag 8 5
Flags 00 01
95
Systmes de chiers
Disk /dev/hdc: 16 heads, 63 sectors, 148945 cylinders Units = cylinders of 1008 * 512 bytes Device Boot /dev/hdc1 /dev/hdc2 /dev/hdc3 Start 1 4163 75001 End 4162 75000 148945 Blocks 2097616+ 35702352 37268280 Id 82 83 83 System Linux swap Linux Linux
96
Systmes de chiers
, o :
est le numro du contrleur ; est le numro du disque ; est le numro de la section sur le disque.
kbytes used avail capacity 246167 60541 161010 28% 962582 419332 485496 47% 1015695 822607 132147 87% 7717573 3463222 4177176 46% 183687 13017 152302 8%
97
Systmes de chiers
, o :
est un code mnmonique du driver ; est le numro du disque ; est une lettre entre a et h identiant la partition ;
% df Filesystem /dev/sd0a
1K-blocks 95359
Used 42623
Mounted on /
Les systmes BSD admettent en gnral au plus 8 partitions par disque physique. Leur gographie est conventionnellement quelque chose du genre :
b c
98
Systmes de chiers
[options] fichier-spcial
99
Systmes de chiers
newfs offre des options simples et appelle en fait derrire mkfs avec ce quil faut. [options] fichier-spcial
Options intressantes : option -m : prcise la taille de minfree. option -i : prcise le nombre doctets de donnes pour un inode (2048 octets pour un inode par dfaut). option -v : afche la commande
100
Systmes de chiers
# newfs -v /dev/rdiskette newfs: construct a new file system /dev/rdiskette: (y/n)? y mkfs -F ufs /dev/rdiskette 2880 18 2 8192 1024 16 10 5 2048 t 0 -1 8 16 /dev/rdiskette: 2880 sectors in 80 cylinders of 2 tracks, 18 sectors 1.4MB in 5 cyl groups (16 c/g, 0.28MB/g, 128 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 640, 1184, 1792, 2336,
101
Systmes de chiers
Le numro dinode 0 sert marquer les inodes inutiliss. Le numro dinode 1 est rserv. 2. Le directory lost+found est cre automatiquement par la commande newfs. La taille du directory (vide) est sufsamment grande pour y stocker des numros dinodes deconnects dans des conditions prcaires :
% ls /lost+found -rw------1 root sys 0 Mar 1 1996 #155782
Il ne faut pas dtruire ce directory ni essayer de le reconstruire manuellement par mkdir. Selon le constructeur, il existe ou pas une commande spciale pour reconstruire ce directory.
102
Systmes de chiers
Attention : 1. Le point de montage doit exister avant de lancer la commande. 2. Le contenu du point de montage devient invisible aprs le montage. 3. On ne peut monter un lesystem que si celui-ci a une structure interne marque comme cohrente (cf la suite sur fsck) :
# mount /users/lpmc WARNING: R/W mount of /users/lpmc denied. Filesystem is not clean - run fsck.
Formation permanente ARS 103
Systmes de chiers
point-de-montage
Attention : on ne peut pas dmonter un disque 1. si une commande sexcute dans la partition 2. si des chiers sont ouverts dans la partition 3. si lon a un rpertoire courant dans un rpertoire de la partition (ce qui se ramne avoir un le descripteur ouvert sur la partition dans tous les cas)
104
Systmes de chiers
Par exemple :
10237c
Device busy USER root root root FD cwd cwd cwd TYPE DEVICE SIZE/OFF NODE NAME VDIR 36,2 512 2 /mnt VDIR 36,2 512 2 /mnt VDIR 36,2 512 2 /mnt
105
Systmes de chiers
106
Systmes de chiers
On peut limiter lafchage aux disques locaux (ie prsents sur la machine mme). La syntaxe dpend du nom du type du systme de chiers. Par exemple sur Solaris :
% df -k -F ufs Filesystem /dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s3 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 /dev/dsk/c0t0d0s6
kbytes used avail capacity 123231 39164 71744 36% 1523574 699814 762818 48% 492422 27835 415345 7% 3095966 1371773 1662274 46% 2052750 1976120 15048 100%
107
Systmes de chiers
La commande
% mount / on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200000 \ on Tue Oct 10 17:49:13 2000 /usr on /dev/dsk/c0t0d0s3 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200003 \ on Tue Oct 10 17:49:13 2000 /proc on /proc read/write/setuid/dev=2d80000 on Tue Oct 10 17:49:11 2000 /dev/fd on fd read/write/setuid/dev=2e40000 on Tue Oct 10 17:49:14 2000 /etc/mnttab on mnttab read/write/setuid/dev=2f40000 on Tue Oct 10 17:49:16 2000 /var on /dev/dsk/c0t0d0s4 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200004 \ on Tue Oct 10 17:49:16 2000 /var/run on swap read/write/setuid/dev=1 on Tue Oct 10 17:49:16 2000 /tmp on swap read/write/setuid/dev=2 on Tue Oct 10 17:49:18 2000 /opt on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200005 \ on Tue Oct 10 17:49:19 2000 /infosystems on /dev/dsk/c0t0d0s6 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200006 \ on Tue Oct 10 17:49:19 2000 /sae on /dev/dsk/c0t0d0s7 read/write/setuid/intr/largefiles/logging/onerror=panic/dev=2200007 \ on Tue Oct 10 17:49:19 2000 /users/prism/staff on lucifer.prism.uvsq.fr:/USERS/prism/staff remote/read/write/setuid/dev=2fc0001 \ on Tue Oct 10 17:49:24 2000 /qic on torquenada.prism.uvsq.fr:/OPT/tmp remote/read/write/setuid/dev=2fc0002 \ on Wed Oct 11 10:17:21 2000
108
Systmes de chiers
Lancer "df
109
Systmes de chiers
-a".
110
Systmes de chiers
champ 1 : nom du chier spcial champ 2 : point de montage champ 3 : type de esystem champ 4 : options de montage champ 5 : utilis par la commande "dump" champ 6 : numro dordre du disque lors dune vrication de cohrence des disques par la
commande fsck Une fois renseign le chier /etc/fstab, on peut : monter la totalit des partitions : mount -a monter une certaine partition : mount partition comme par exemple : # mount /var
111
Systmes de chiers
112
Systmes de chiers
Buffer Cache
Block
113
Systmes de chiers
La perte du contenu du buffer cache en cas de dysfonctionnement peut conduire effectuer des rparations par la commande fsck (File System Check Consistency) : Plusieurs vrications sont effectues par fsck : le super-block contient le bon nombre de blocs libres ; le super-block contient le bon nombre dinodes libres ; le super-block contient la bonne taille de la partition ; un bloc de donnes appartient un et un seul chier, ou la liste des blocs libres ; un inode, sil est rfrenc
un inode est soit utilis, soit dans la liste des inodes libres ; la taille du chier correspond au nombre de blocs allous ; tout rpertoire contient une entre pour . et .. ; une entre dans un rpertoire doit rfrencer un inode non libre. A noter que lors du boot dune machine, si un lesystem est marqu FSCLEAN, fsck ne vrie pas ce lesystem. On se trouve dans ces conditions si la machine a t arrte ou redmarre en utilisant des commandes comme fastboot, fasthalt etc.
Formation permanente ARS 114
Systmes de chiers
/users/lpmc Blocks and Sizes Pathnames Connectivity Reference Counts Cyl groups IN SUPERBLOCK
23423 files, 1174684 used, 2946897 free (6641 frags, 367532 blocks, 0.2% fragmentation) ***** FILE SYSTEM WAS MODIFIED *****
115
Systmes de chiers
116
Systmes de chiers
Syntaxe :
Quelques rgles : Ne jamais lancer fsck sur une partition active, monte car cela peut conduire un tat instable du lesystem. Si possible, lancer fsck en tant en single user. En cas de fsck sur /, redmarrer juste aprs sans sauver le buffer cache.
117
Systmes de chiers
Une limite est en fait compose dun couple de valeurs : limite soft : Aucune alarme nest active tant quon reste en dessous de cette limite. Si lon dpasse ce seuil, il y a une alarme qui est active. Des messages derreur apparaissent. Lutilisateur a 7 jours pour revenir en dessous de ce seuil. Au del de 7 jours, toute consommation de ressources supplmentaires est bloque. limite hard : Cest un seuil suprieur indpassable. Lutilisateur sil dpasse la limite soft peut continuer de consommer des ressources concurrence de la limite hard.
118
Systmes de chiers
Par exemple :
% quota -v besancon Disk quotas for besancon (uid 4332): Filesystem usage quota limit timeleft /adm 98696 80000 100000 7.0 days
files 4959
quota 4000
limit 5000
besancon dpasse son quota soft et a 7 sept jours pour revenir en dessous des 2
119
Systmes de chiers
Les commandes de gestion des quotas sont : Commande Description Afche lutilisation disque de lutilisateur et son quota Recalcule les quotas utiliss Active les quotas Dsactive les quotas Rapport de situation des quotas Modication du quota dun utilisateur
# repquota -v -a /dev/sd3g (/adm): User besancon Block limits used soft hard timeleft 98696 80000 100000 7.0 days used 4959 soft 4000 File limits hard timeleft 5000 7.0 days
++
120
Systmes de chiers
Lactivation du systme de quotas ncessite les points suivants : 1. Le noyau doit supporter le mcanisme des quotas. En effet laspect comptabilit incombe au noyau. 2. Le lesystem doit supporter les quotas. 3. Les quotas doivent tre activs lors du montage de la partition : (a) Prciser que le lesystem est mont avec les quotas activs au niveau de /etc/fstab ou quivalent :
/dev/sd3g
(b) Lancer
/adm
4.2
rw,quota
1 4
quotaon. De prfrence pendant le boot de la station. Une opration quotacheck doit tre lance au pralable an davoir un tat cohrent des quotas. Cela
peut ralentir le boot.
4. Les quotas doivent tre entrs pour chaque utilisateur. Cest une opration automatisable au moyen dun squelette type et de la commande
edquota.
121
Systmes de chiers
Ceci explique que lon puisse remplir une partition plus de 100% :
# df -t ufs /mnt Filesystem 1K-blocks /dev/sd0s1d 1702685 Used 1638403 Avail Capacity -71932 105% Mounted on /mnt
24.1 Snapshots
Snapshot clich instantan du lesystem (terme de photographie)
Le snapshot montre un lesystem g alors que le lesystem continue de se modier. Avantages : snapshot rapide construire backup dune image stable dun lesystem rcupration facile et simple dun chier Disponible sous Solaris ( partir de la version 8, commande un reboot. Disponible sur les machines spcialises en stockage de la marque Network Appliance ;
http://www.netapp.com
Formation permanente ARS 123
Snapshots
124
Snapshots
C2
125
Snapshots
Le lesystem est conu pour travailler conjointement avec les snapshots. Il va dupliquer le bloc que lon veut modier car le lesystem sait que ce bloc est associ un snapshot. Il modier la copie du bloc. Le snapshot pointe toujours sur les mmes blocs.
C2
LVM
cration dynamique de lesystems supporte davantage que les 8 partitions classiques dun seul disque dur redimensionnement dynamique de lesystems actifs suppression de lesystems ajout de disques online
Un LVM est un avantage. Un LVM est dlicat manipuler. Un LVM est spcique chaque Unix.
127
Filesystem journalis
Le journal correspond une zone disque rserve dans laquelle sont ranges squentiellement toutes les mises jour de donnes, et ce, avant leur mise jour effective dans le systme de chiers.
Lors dun crash machine, la relecture du journal permet de reconstituer la totalit des systmes de chiers en quelques secondes. Il ny a plus besoin de recourir fsck.
Formation permanente ARS 128
Filesystem journalis
SECTION DE DONNEES
root usr tmp people
JOURNAL
... En 1 En En + 1 ...
Point de sauvegarde Point de depart pour reexecuter les actions effectuees avant le crash
129
RAID
24.4 RAID
RAID Redundancy Array of Inexpensive Disks
Papier historique : A Case tor Redundant Arrays of Inexpensive Disks (RAID) par Patterson, Gibson, et Katz de lUniversit de Berkeley Californie.
http://sunsite.berkeley.edu:80/Dienst/Repository/2.0/Body/ncstrl.ucb/CSD-87-391/pdf
130
RAID
Principe la louche : on nutilise plus de disques durs indpendants mais un ensemble de disques durs (en gnral rackable) grs par des contrleurs disques spcialiss.
Lensemble est cens encaisser la panne dau moins un disque dur. En cas de panne dun disque dur, le systme continue de travailler. Un disque en remplacement sera rempli par des donnes reconstruites partir des donnes sur le reste des disques de lensemble.
131
RAID
Avantages :
les donnes sont dcoupes en blocs (A, B, C, etc.) crits sur des disques distincts
Inconvnients :
maximum de performance
RAID
Avantages :
les donnes sont dcoupes en blocs (A, B, C, etc.) crits sur des disques jumeaux
Inconvnients :
simple raliser
pas trs efcace (100% de disques en plus) charge le CPU en gnral (car ralisation en logiciel et pas en hardware)
133
RAID
disque
RAID
Avantages :
on vrie la parit du stripe lors des lectures taux lev de lectures ou dcritures
Inconvnients :
RAID
Principe du RAID 4 :
minimum de 3 disques on travaille par bloc doctets que lon disperse sur les disques durs
on calcule la parit de ces blocs que lon crit sur le disque ddi de parit
RAID
Principe du RAID 5 :
minimum de 3 disques chaque bloc doctets est crit sur un disque
Avantages :
la parit est disperse sur tous les disques vitant ainsi un goulet dtranglement du RAID 4. Fort taux de transfert en lecture, taux moyen en criture
Inconvnients :
RAID
DISQUE DEFAILLANT
DISK 3 00011100 (0x1C) 00110101 (0x35) 00000000 (0x00) 10111010 (0xBA) 00000000 (0x00) 01100011 (0x63) 10111100 (0xBC) 10001000 (0x88)
DISK 2
DISQUE RECONSTRUIT
DISK 4
01001111 (0x4F) 01100011 (0x63) 00100000 (0x20) 01010111 (0x57) 10111010 (0xBA) 00100000 (0x20) 01001011 (0x4B) PARITY 11001101 (0xCD) 01101000 (0x68) 10111100 (0xBC) 01001011 (0x4B)
138
Mcanismes de sauvegarde
Flood (9.6%)
Sabotage (0.8%) Water Pipe (1.0%) HVAC Outage (1.4%) Other (1.5%) Human Error (2.0%) Network Outage (2.1%) Earthquake (4.9%) Power Surge (5.1%) Software Error (5.4%)
There are two types of computer users in the world. . . those that have lost data, and those that are going to.
Formation permanente ARS 139
Mcanismes de sauvegarde
Unix offre une vue unie des chiers ou des priphriques. On peut donc sauvegarder : sur nimporte quel priphrique en mode caractre dans un chier sur un autre disque sur une autre machine
140
Mcanismes de sauvegarde
141
Mcanismes de sauvegarde
DAT (34.0%)
Exprience personnelle : un lecteur de bande DDS meurt en 3 ans (vri par 5 collgues) pas de soucis avec les lecteurs DLT les cartouches SDLT, LTO sont chres
142
Mcanismes de sauvegarde
Le lecteur peut tre : isol (interne ou externe) mont dans une library un caroussel ensemble lecteur + robot de manipulation de cartouches stockes dans
143
Mcanismes de sauvegarde
Utilitaires
dump, restore
La particularit de dump est dassurer la sauvegarde dun disque en consultant la structure interne mme du lesystem via le chier spcial en mode caractre de la partition.
Syntaxe conseille :
144
Mcanismes de sauvegarde
Utilitaires
dump, restore
Possibilit de sauvegardes incrmentales. Un niveau est associ la sauvegarde. Le niveau 0 correspond une sauvegarde complte. Le niveau 1 correspond la sauvegarde des seuls chiers modis depuis le niveau 0. etc.
145
Mcanismes de sauvegarde
Utilitaires
dump, restore
146
Mcanismes de sauvegarde
Utilitaires
dump, restore
La commande pour relire une sauvegarde ralise par dump est restore (sur Solaris, utiliser
/sbin/ufsrestore).
On peut utiliser dump + restore pour dupliquer une arborescence. Par exemple :
147
Mcanismes de sauvegarde
Utilitaires
dump, restore
restore -f archive -i puis utiliser les commandes add fichier/dir, cd dir, delete fichier/dir, ls et la commande extract :
[root@localhost d]# restore -f /tmp/archive -i ... restore > ls .: etc/ restore > cd etc restore > ls ./etc: ... im_palette-small.pal restore > add yp.conf restore > ls ./etc: im_palette-small.pal
passwd.OLD
yp.conf
passwd.OLD
*yp.conf
148
Mcanismes de sauvegarde
Utilitaires
dump, restore
restore > extract You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 set owner/mode for .? [yn] y restore > quit [root@localhost d]# ls -Rl .: total 8 drwxr-xr-x 2 root root 4096 Jan 27 14:47 etc ./etc: total 4 -rw-r--r--
1 root
root
149
Mcanismes de sauvegarde
Utilitaire
tar
Cette commande a un immense avantage : elle est disponible sur la totalit des plateformes Unix.
Contrairement dump, elle permet la sauvegarde dune partie seulement dune partition. En fait, on peut sauvegarder des chiers ou directories sans aucun rapport entre eux.
Syntaxe :
150
Mcanismes de sauvegarde
Utilitaire
tar
ftp://ftp.lip6.fr/pub/gnu/tar-1.12.tar.gz
associ au GNU zip :
ftp://ftp.lip6.fr/pub/gnu/gzip-1.2.4.tar
Avantages : le GNU tar ne sauve pas les chiers avec un / initial ; il offre la possibilit de se cantonner au sein dun lesystem.
151
Mcanismes de sauvegarde
Utilitaire
tar
Problmes classiques avec tar : Il ne sait pas sauver convenablement les major et minor numbers des chiers de /dev. Pour sauver /dev, on prfrera plutt recrer les devices partir de /dev/MAKEDEV.
Par dfaut, il ne sait pas sauver un chier trous (les blocs intermdiaires non allous sont sauvs sous forme de caractre de code ASCII zro).
152
Mcanismes de sauvegarde
Utilitaire
tar
# tar cvf archive /etc [root@localhost /tmp]# tar cvf archive /etc tar: Removing leading / from member names etc/ etc/csh.cshrc etc/csh.login etc/exports etc/filesystems etc/group etc/host.conf etc/hosts.allow etc/hosts.deny ...
153
Mcanismes de sauvegarde
Utilitaire
tar
154
Mcanismes de sauvegarde
Utilitaire
tar
155
Mcanismes de sauvegarde
Utilitaire
tar
Sur Internet, il y a souvent des packages avec ".tar.gz" ou ".tgz" comme sufxes. Comment en extraire le contenu ?
156
Mcanismes de sauvegarde
Utilitaire
tar
157
Mcanismes de sauvegarde
Quelques rgles
1. Sauvegarder 2. Sauvegarder lorsque le lesystem est le moins actif : en mode mono-utilisateur pendant les priodes creuses dutilisation (la nuit par exemple) 3. Ne jamais restaurer de chiers dans le homedir dun utilisateur de peur dy effacer des chiers plus rcents que ceux de la sauvegarde. 4. Vriez priodiquement les sauvegardes. 5. Conserver un jeu de sauvegardes ok part des autres en cas de destruction des autres par un sinistre.
158
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mcanismes de sauvegarde
Quelques rgles
Mmoire virtuelle
processus Principe approximatif : Un processus a limpression davoir un espace mmoire > RAM. Cest la mmoire virtuelle. Lespace mmoire est dcoupe en segments de taille donne, les pages. On charge les pages dun processus en RAM au fur et mesure des besoins. Cest la pagination. Quand la RAM est "pleine", et que lon doit charger des pages, on copie sur disque de vieilles pages et on les limine de la RAM pour les remplacer par les nouvelles pages. Cest ce que lon appelle swapper.
Mmoire virtuelle
-a
-a
swapon -a qui
sur Solaris : cf /etc/vfstab : #device device mount #to mount to fsck point # /dev/dsk/c0t0d0s1 -
FS type swap
fsck pass -
165
Mmoire virtuelle
-s
-s
166
Mmoire virtuelle
-s
Comment connatre la taille du swap ? sur Linux : utiliser free # free total Mem: 129488 -/+ buffers: Swap: 259768
shared 4136
buffers 104824
sur Solaris : utiliser swap -l ou swap -s # /usr/sbin/swap -l swapfile dev swaplo blocks free swapfs 0 139408 123280 /dev/dsk/c0t3d0s1 32,25 8 98488 98488
# /usr/sbin/swap -s total: 8264k bytes allocated + 3520k reserved = 11784k used, \ 52632k available
167
Mmoire virtuelle
168
Mmoire virtuelle
Comment gnrer des chiers de swap ? 2 mthodes : via la commande mkfile si elle est disponible sur lUnix : # mkfile 50m grosfichier # ls -l grosfichier -rw------- 1 besancon 52428800 Nov 16 01:27 grosfichier via la commande dd : # dd if=/dev/zero of=grosfichier bs=1m count=50 50+0 records in 50+0 records out 52428800 bytes transferred in 3.533640 secs (14837052 bytes/sec) # ls -l grosfichier -rw------- 1 besancon 52428800 Nov 16 01:27 grosfichier
Faire ensuite :
# swapon /chemin/vers/grosfichier
169
Processus
Chapitre 27 : Processus
ps
COMMAND init [kflushd] [kupdate] [identd] [atd] xfs -droppriv -da [login] [kdm] [kwm] [tcsh] [tcsh] -bash [vi] vi probleme6.c
170
Processus
Comment bien utiliser "ps" ? Une bonne utilisation de "ps" repose sur la connaissance des diffrentes options employables. La difcult est que les options sont diffrentes selon que le systme est de type BSD ou AT&T. On retiendra : (BSD)
ps -aux
ps -edf
(AT&T)
171
Processus
Version BSD de ps
COMMAND -bash (bash-2.01) xdvi.bin partie-03.dvi gs -sDEVICE=x11 -dNOPAUSE -dSAFER -q - (gs-5.10) ps -x -bash (bash-2.01)
172
Processus
Version BSD de ps
rlogin alpha -bash (bash-2.01) xdvi.bin partie-03.dvi gs -sDEVICE=x11 -dNOPAUSE -dSAFER -q - (gs-5.10) ps -ax -bash (bash-2.01) -tcsh (tcsh-6.07)
173
ps -aux : tous les processus de la machine avec les noms de login associs
% ps -aux USER PID %CPU %MEM satish 24499 3.7 5.8 root 1 0.0 0.1 root 2 0.0 0.0 root 3 0.0 0.0 ... besancon 24578 0.0 0.7 besancon 24600 0.0 1.9 VSZ RSS 9320 7504 484 76 0 12 0 12 784 944 1108 2456 TT p5 ?? ?? ?? p7 p7 STAT SN Is DL DL Ss S STARTED 4:31PM Wed04PM Wed04PM Wed04PM 4:44PM 4:44PM
Processus
Version BSD de ps
TIME COMMAND 0:39.34 /usr/local/net 0:01.18 /sbin/init -1:25.50 (pagedaemon) 0:00.00 (vmdaemon) 0:00.36 -bash (bash-2. 0:00.60 xdvi.bin parti
-axw" :
Is
-w".
174
Processus
Version System-V de ps
175
Processus
Version System-V de ps
ps -f : full listing
% ps -edf UID PID PPID root 0 0 root 1 0 root 2 0 root 3 0 root 181 1 ... daemon 283 1 root 291 1 root 296 1 nobody 15130 291 besancon 16463 16461 ...
C 0 0 0 0 0 0 0 0 0 0
STIME 09:09:47 09:09:47 09:09:47 09:09:47 09:12:07 09:12:12 09:12:13 09:12:14 23:30:56 00:12:26
TTY ? ? ? ? ? ? ? ? ? pts/0
TIME 0:01 0:02 0:00 0:52 0:06 0:11 0:00 0:00 0:00 0:00
CMD sched /etc/init pageout fsflush /usr/lib/autofs/automountd /usr/sbin/lpd /usr/local/apache/bin/httpd /usr/local/admin/lib/idled /usr/local/apache/bin/httpd -csh
176
Processus
Utilitaire
top
top
ftp://ftp.groupsys.com/pub/top/
Son intrt : elle afche une liste des processus toutes les secondes
177
Processus
Syntaxes :
Processus
179
Processus
nice number
[-N] commande
180
Processus
Processus
SZ 16
STAT CPU TT R N 2 p1
182
Processus
uptime :
up
4:44,
4 users,
le temps de fonctionnement du systme le nombre dutilisateurs connects la charge du systme : 3 nombres reprsentant :
la moyenne de processus actifs durant la minute prcdente la moyenne de processus actifs durant les 5 dernires minutes la moyenne de processus actifs durant les 15 dernires minutes
183
Processus
Difcult de dnir une valeur normale : de nombreux processus en attente dune entre sortie donnent un fort indice de charge alors que le systme est en parfaite mesure de rpondre efcacement un seul processus sollicitant fortement la mmoire virtuelle de la machine en swappant sans cesse peut lui seul empcher la machine de rpondre alors que lindice de charge est bas on traite indiffremment les processus renics et ceux qui ne le sont pas On prendra comme valeur normale une valeur de 3.
On prfrera les renseignements renvoys par ps pour se faire une ide de la charge rlle du systme.
184
Processus
Processus en attente dcriture travers NFS Processus en attente dopration physique sur un priphrique Processus zombie, marqus par un Z ou <defunct> lorsque lon fait ps, gnr lorsquun
processus se termine et ne reoit pas ce moment l dacknowledgement de la part de son parent (par exemple parce que le processus pre est dj mort). Ces processus ne sont pas gnant : ils ne consomment plus de ressouces. Ils disparaitront au prochain reboot de la machine. La seule gne est la consommation dune entre processus dans le tableau interne du noyau de gestion des processus.
185
Processus
Threads
Chapitre 28 : Threads
Threads
0xFFF00000 (high address) perprocess kernel stack
Processus Unix
red zone
user area
ps string structure
signal code
environnment strings
env pointers
argv pointers
argc
user stack
heap
bss
symbol table
initialized data
initialized data
text
text
188
Threads
Processus Unix
Crer de nouveaux processus passe par la fonction C fork() Crer un nouveau processus, cest dupliquer toutes ces structures mmoire.
0xFFF00000 (high address) perprocess kernel stack perprocess kernel stack perprocess kernel stack
red zone
red zone
red zone
user area
user area
user area
ps string structure
ps string structure
ps string structure
signal code
signal code
signal code
environnment strings
environnment strings
environnment strings
argv strings
argv strings
argv strings
env pointers
fork()
env pointers
argv pointers
argv pointers
env pointers
argv pointers
argc
argc
argc
user stack
user stack
user stack
heap
heap
heap
bss
bss
bss
initialized data
initialized data
initialized data
text
text
text
Threads
Processus Unix
avant le fork()
aprs le fork()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { ... /* child */ ... /* code */ } ... ...
190
Threads
Processus Unix
avant le fork()
aprs le exece()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
aprs le exec()
... ... if ( fork() ) { ... /* parent */ ... /* code */ } else { exec(...) /* child */ ... /* code */ } ... ...
exec()
le fils reprend ici
191
Threads
DATA
DATA
STACK
STACK
STACK
STACK
Un processus traditionnel
Un processus multithread
192
Threads
Les threads sont un hritage du systme MACH qui y empruntent la terminologie : task, thread
Un processus Unix
Standards Posix : P1003.1b nal draft 14 (realtime) et P1003.1c nal draft 10 (multithreading)
193
Threads
exemple : serveur web Apache 2.x pour traiter plus de connexions en parallle cf http://httpd.apache.org Inconvnients des threads : penser en profondeur le code programmer : attention aux race conditions (les threads sont ordonnancs et excuts au hasard par lOS) attention la non rentrance du code (variables statiques ou globales a priori bannies)
utilisation de mutex ou de POSIX condition variable pour synchroniser les threads entre eux, avec risque de deadlocks malgr tout
Formation permanente ARS 194
Threads
% ps -e -o pid,user,lwp,nlwp,comm PID USER LWP NLWP COMMAND ... 361 root 1 8 /usr/sbin/nscd 361 root 2 8 /usr/sbin/nscd 361 root 3 8 /usr/sbin/nscd 361 root 4 8 /usr/sbin/nscd 361 root 5 8 /usr/sbin/nscd 361 root 6 8 /usr/sbin/nscd 361 root 7 8 /usr/sbin/nscd 361 root 8 8 /usr/sbin/nscd ...
195
Threads
-m :
% ps -m ps: error: Thread display not implemented. usage: ps -[Unix98 options] ps [BSD-style options] ps --[GNU-style long options] ps --help for a command summary
196
Threads
Si votre systme na pas de thread intgrs, se reporter aux GNU Portable Threads ou
Il y a des threads non Posix. Par exemple les threads Solaris, cf -lthread.
Pour un manuel de programmation, se reporter par exemple au manuel SUN intitul Multithread Programming Guide dURL ftp://192.18.99.138/802-5938/802-5938.pdf
197
Le dmon
Sur Linux :
% ls -l /etc/rc.d/init.d/crond -rwxr-xr-x 1 root root 1031 Feb 3 2000 /etc/rc.d/init.d/crond
Sur Solaris :
% ls -l /etc/init.d/crond -rwxr--r-- 4 root sys 513 Jul 16 1997 /etc/init.d/cron
198
Fichiers crontab
champ 1 : minutes, de 00 59. champ 2 : heures, de 00 23. champ 3 : jour du mois, de 1 31. champ 4 : mois, de 1 12. champ 5 : jour de la semaine, de 0 (dimanche) 6 (samedi). champ 6 : commande excuter.
Par exemple :
15 * */2 * 00 21 00 21 00 21 * * * * * * * * * * * * 1 3 5
199
Fichiers crontab
Lemplacement des chiers crontab dpend des systmes : Systme AIX HP-UX FreeBSD Linux Solaris Program
200
Les commandes programms sexcutent sans terminal associ. Il ny a donc pas de stdin ou
stdout associs. Il faut raliser soi-mme les redirections requises car sinon, tout ce qui est crit sur stdout ou stderr est envoy par mail au propritaire des chiers crontab.
202
crontab -e
Cela lance lditeur de texte indiqu par la variable denvironnement dfaut.
2.
203
/etc/cron.allow /etc/cron.deny
Solaris
/etc/cron.d/cron.allow /etc/cron.d/cron.deny
Ces 2 chiers ont la mme syntaxe : ils contiennent des noms de login.
cron.allow Prsent Prsent cron.deny Prsent Prsent Utilisateurs autoriss Ceux explicitement dans cron.allow Ceux explicitement dans cron.allow Tous sauf ceux dans cron.deny Uniquement root
Horloges Unix
Pour Unix, le dbut du temps est le 1 janvier 1970. La n du temps : le mardi 19 janvier 2038 4 h 14 min 7s (heure GMT) (cest--dire 2147483647 secondes
0x7fffffff)
Lhorloge sert dater les chiers, lancer des applications des moments prcis voulus (cf cron), dater des vnements, etc.
Problmes classiques : mise lheure dune horloge, consultation dune horloge, an 2000, etc.
205
Horloges Unix
[+format]
date +format utilise un format la printf avec des %. Cf la page de manuel de la fonction strftime.
Les bigrammes les plus utiles :
%H %M %S %T %m %d %y %Y
heure (00..23) minute (00..59) seconde (00..61) temps (hh :mm :ss) mois, (01..12) jour, (01..31) derniers chiffres de lanne (00..99) anne (1970. . .)
206
Horloges Unix
% date +%w 4
Avoir le numro de la semaine :
% date +%W 42
Pour des informations mathmatiques sur les dates (annes bissextiles, calcul du jour de la semaine etc., on pourra se reporter :
ftp://ftp.lip6.fr/pub/doc/faqs/sci-math-faq/dayWeek.gz
207
Horloges Unix
ftp://ftp.lip6.fr/pub/gnu/sh-utils/sh-utils-2.0.tar.gz
On peut grce cette commande calculer des choses impossibles calculer autrement :
% date Wed Aug
% date +%Y/%m/%d 1998/08/05 % date +%Y/%m/%d 1998/08/15 % date +%Y/%m/%d 1998/07/26 % date +%Y/%m/%d 1999/10/08 % date +%Y/%m/%d 1997/06/02 % date +%Y/%m/%d 1998/08/19
--date "10 days" --date "-10 days" --date "1 years 2 months 3 days" --date "-1 years -2 months -3 days" --date "1 fortnight"
208
Horloges Unix
Horloges Unix
Pour la France on prend MET-1DST (Middle European Time Daylight Saving Time) La variable denvironnement TZ permet de changer de fuseau horaire lors de lafchage de date.
Formation permanente ARS 210
Horloges Unix
machine
Cf ftp://ftp.inria.fr/network/time/rdate.shar.Z Problmes : synchronisation sur une seule machine blocage de la commande en cas de machine HS
211
Horloges Unix
La synchronisation se fait en considrant lheure de plusieurs machines de rfrences (quipes par exemple dhorloges atomiques) et en tenant compte des dlais de transmission via le rseau.
http://www.cru.fr/NTP/serveurs_francais.html
Formation permanente ARS 212
Horloges Unix
En pratique : 1. on choisit des serveurs de temps 2. on dsigne une machine du service comme serveur dheure pour le service 3. on y installe le package NTP ce qui se traduit par lancer le dmon xntpd 4. sur les machines du service, faire "ntpdate
Garde fou : on ne met pas la machine lheure si la diffrence dheure est trop grande :
Sep Sep too Sep 11 02:06:47 tournesol xntpd[93]: system event 4 status c621 11 02:06:47 tournesol xntpd[93]: time error -7390.467777 is way \ large (set clock manually) 11 02:06:47 tournesol xntpd[93]: system event 2 status c634
213
SYSLOG est le mcanisme standard de distribution des messages envoys par les programmes. Il fonctionne au dessus de UDP (port 514), donc en mode non connect. Cf RFC3164. Il agit comme un routeur des messages. Il nutilise aucune authentication des clients SYSLOG. Le programme associ sappelle
syslogd
214
mark, news, ntp, syslog, user, uucp, local0 local7 * est un caractre joker.
du nom du niveau de la priorit (dit level) du message Principaux noms rencontrs : emerg, alert, crit, err, warning, notice, info,
215
Par exemple :
Oct Oct Oct Oct Oct Oct Oct Oct 22 22 22 22 22 22 22 22 10:57:42 10:57:42 10:57:42 10:57:42 10:57:42 10:57:42 10:57:42 10:57:42 infosystems infosystems infosystems infosystems infosystems infosystems infosystems infosystems ftpd[4405]: ftpd[4405]: ftpd[4405]: ftpd[4405]: ftpd[4405]: ftpd[4405]: ftpd[4405]: ftpd[4405]: VirtualFTP Connect to: 129.199.120.252 USER anonymous PASS pir2cache@utc.fr ANONYMOUS FTP LOGIN FROM pir2cache.utc.fr TYPE Image MDTM pub/users/besancon/cookbook SIZE pub/users/besancon/cookbook PASV
216
syslogd. syslogd dcide quoi faire des messages sur la base de son chier de conguration, /etc/syslog.conf.
syslog.conf) :
facility.level[;facility.level]* \t action
La tabulation est indispensable.
217
Par "action", on dsigne les possibilits de distribution des messages : distribution des messages dans des chiers Indiquer pour cela un nom de chier via son path absolu ; par exemple /var/log/maillog
aiguillage des messages vers le dmon dune autre machine Indiquer pour cela un nom de machine ou son adresse IP, prcd de @ ; par exemple @serveur
afchage des messages sur un terminal particulier Indiquer pour cela le path absolu du terminal ; par exemple /dev/console
afchage des messages sur les terminaux de certains utilisateurs numrs Indiquer pour cela une liste des logins des utilisateurs (spars par une virgule) ; par exemple
218
# if a non-loghost machine chooses to have authentication messages # sent to the loghost machine, un-comment out the following line: #auth.notice ifdef(LOGHOST, /var/log/authlog, @loghost) mail.debug ifdef(LOGHOST, /var/log/syslog, @loghost)
# # non-loghost machines will use the following lines to cause "user" # log messages to be logged locally. # ifdef(LOGHOST, , user.err /dev/sysmsg user.err /var/adm/messages user.alert root, operator user.emerg * )
219
ou version Solaris :
*.emerg *.alert *.crit *.err *.warning *.notice *.info *.debug @sysloghost @sysloghost @sysloghost @sysloghost @sysloghost @sysloghost @sysloghost @sysloghost
Il redirige tout message vers la machine sysloghost qui centralise et stocke ce message. Il vaut mieux avoir trop de messages que pas du tout ou pas ceux qui sont intressants.
220
Sur la machine sysloghost, on stockera par exemple les messages de la faon suivante :
*.* /var/log/syslog
ou version Solaris :
*.emerg *.alert *.crit *.err *.warning *.notice *.info *.debug /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog /var/log/syslog
221
Si lon modie le chier /etc/syslog.conf, la modication est prise en compte en envoyant le signal SIGHUP au processus syslogd :
# ps -edf | grep syslogd root 339 1 0 # kill -HUP 339 Aug 04 ? 0:18 /usr/sbin/syslogd
Le signal SIGTERM arrte le processus ce qui se traduit par lmission du message SYSLOG :
Aug 19 15:02:54 cerise syslogd: going down on signal 15
Formation permanente ARS 222
-d :
# /usr/sbin/syslogd -d main(1): Started at time Mon Aug 19 15:03:51 2002 getnets(1): found 1 addresses, they are: 0.0.0.0.2.2 amiloghost(1): testing 192.168.1.1.2.2 conf_init(1): I am loghost cfline(1): (*.emerg /var/log/syslog) cfline(1): (*.alert /var/log/syslog) cfline(1): (*.crit /var/log/syslog) cfline(1): (*.err /var/log/syslog) cfline(1): (*.warning /var/log/syslog) cfline(1): (*.notice /var/log/syslog) cfline(1): (*.info /var/log/syslog) cfline(1): (*.debug /var/log/syslog) syslogd: version 1.88 Started: Mon Aug 19 15:03:51 2002 Input message count: system 0, network 0 # Outputs: 8
223
------------------------ priority = [file, facility] -----------------------0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 -------------------------------------------------0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X FILE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X FILE: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 X FILE: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 X FILE: 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 X FILE: 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 X FILE: 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 X FILE: 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 X FILE: ... sys_poll(13): sys_thread started init(1): syslogd: started main(1): off & running.... net_poll(14): net_thread started sys_poll(13): blocking, init_cnt=0 logmsg(15): msg dispatcher started
224
xlogmaster cf http://www.gnu.org/software/xlogmaster/ logiciel awacs cf http://www.gnu.org/software/awacs/ logiciel swatch cf ftp://ftp.stanford.edu/general/security-tools/swatch/ pour rsoudre le problme des logs qui grossissent : trimlog http://online.securityfocus.com/tools/118
logiciel
Formation permanente ARS 225
Autres syslog
226
Autres syslog
http://www.balabit.hu/products/syslog-ng/
227
2. syslogd est un dmon fonctionnant en mode user accs au compte root de la machine.
228
Avenir de SYSLOG
http://www.corest.com/products/corewisdom/CW01.php
229
PERL_NT_TOOLS/SYSLOGD
Cf http://www.ipbs.fr/logiciels/ntsyslogd/
230
Documentation
31.9 Documentation
Par exemple :
http://www.counterpane.com/log-analysis.html http://www.syslog.org
231