UNIX
SCO
19/02/1997 TIM / P.MICHAUD
INDEX
- LES DISQUES ET UNIX SCO
@
- Structure mécanique d'un
disque dur @
- Structure logique d'un disque dur
@
- EXEMPLE D'ORGANISATION D'UN DISQUE
- STRUCTURE GENERALE @
- Nom Unix pour les disques physiques et partitions
- NORMALISATION DES NOMS DE DEVICES DISQUES
@
- Les DEVICES
- Secteur PHYSIQUE 0
- Structures internes des partitions
et divisions @
- GENERALITES
- PARTITION MS-DOS
- CONTENU DES PARTITION ET DIVISIONS UNIX
- STRUCTURE DETAILLEE DU FILESYSTEM
@
- Les différents types de filesystems
- Les blocs
- Le superblock pour les filesystems
AFS et EAFS
- Table des INODES pour les filesystems
AFS et EAFS
- AUTRES FILESYSTEMS
- Adressage du Fichier par son Inode
(filesystem AFS et EAFS)
- Informations présente dans les zones disque Unix
@
- CONTENU GENERAL
- LE BOOT
- LE SWAP
- LES FILESYSTEMS ET AUTRES ZONES DISQUES
- BOOT DES SYSTEMES COMPATIBLES PC
- Restriction du Boot des systèmes
compatibles PC


- Tous les disques physiques sont identifiés sous unix
par des noms de devices (fichiers spéciaux) dans le répertoire
/dev, /dev/dsk ou /dev/rdsk.
- Ils ont pour noms [r]hdx0 ou xs0.
- La première lettre " r " est optionnelle
et elle indique si le device utilise les buffers disques Unix
(hdx0) ou pas (rhdx0).
- Le " x " indique le numéro
d'ordre d'installation du disque en commançant par 0. (hd00
= disque système de boot)
- Certaines zones de disques contiennent des secteurs de boot
ainsi que la description de la ou des zones qu'il gèrent.
- Le disque physique est découpé en partitions
pouvant contenir différents systèmes d'exploitation.
- Les partitions Unix peuvent être également découpées
en divisions contenant soit Unix soit des données client
soit des zones utiles pour Unix.
Au premier disque physique /dev/hd00, correspondent 4 partitions
possibles:
- /dev/hd01
- /dev/hd02
- /dev/hd03
- /dev/hd04.
Au second disque physique /dev/hd10, correspondent les partitions
:
- /dev/hd11
- /dev/hd12
- /dev/hd13
- /dev/hd14.
etc...
Il est possible de donner à peu près les noms que
l'on veut à ces fichiers. Néanmoins il est prévu
une certaine normalisation de ces noms qui peut d'ailleurs changer
d'une version d'Unix à une autre.
Ces fichiers spéciaux se trouvent dans /dev, /dev/dsk et
/dev/rdsk.
ACCES | NOM FICHIER
| VARIABLES | EXEMPLES
|
Disques complèts | [r]hdx0 ou xs0
[r]hdxa ou xsa
[r]dmx57all
| x = numéro d'ordre du disque
m = numéro minor
x = numéro d'ordre du disque
| /dev/hd10, /dev/hd1a
/dev/rdsk/1s0
/dev/d1257all
|
Partitions | [r]hdxy ou [r]xsy
| x = numéro d'ordre du disque
y = numéro de partition
| /dev/rhd12 |
Divisions
| [r]dmx5z
| m = numéro minor
x = numéro d'ordre du disque
z = numéro de division
| /dev/d1250
/dev/d1251 /dev/d1252 |
Partition DOS | [r]hdxd ou xsd
| x = numéro d'ordre du disque
| /dev/hd2d |
Disque système | /dev/[r]boot
/dev/[r]root
/dev/[r]swap
/dev/[r]recover
/dev/[r]usr
/dev/[r]restart
/dev/[r]u
| La division pour le boot du système sous OPEN SERVER 5.
La division contenant le système.
La division mémoire virtuelle.
La division utilisé lors des réparations automatiques.
La division des fichiers systèmes aditionnels et des utilisateurs.
La division de stockage temporaire de la mémoire pour l'UPS ALTOS.
La division contenant des données utilisateur.
| |
Voir également : hd (HW)
- Définition d'un device
- Un device driver est un programme intégré à
Unix (fichier /unix) qui permet de gérer des fonctions
système ou même des interfaces.
- Pour que l'utilisteur puisse accéder aux périphériques
gérés par ces devices drivers, Unix utilise des
nom des fichiers : les fichiers devices ou fichiers spéciaux.
- Les fichiers devices se trouvent en général
dans /dev et sont repérables par le type affiché
en début de ligne quand on tape la commande " ls
-l " et par deux chiffres (respectivment numéro
major et numéro minor), séparés par une virgule,
qui figurent à la place de la taille du fichier.
- Le numéro major repère le numéro du programme
device driver dans Unix.
- Le numéro minor est un paramètre passé
au programme device driver afin qu'il puisse déterminer
la fonctionnalité à obtenir (pour un disque, cela
peut correspondre aux différentes zones disques comme le
disque entier, les partitions et les divisions)
- Le type de fichier peut être soit " b "
soit " c ".
- Un périphérique accédé par un
fichier de type " c " ne passe pas par les
buffer systèmes assignés aux disques contrairement
au fichier de type " b " (fichier en mode
bloc).
- Un périphérique accédé par un
fichier de type " c " est appelé " raw
device " (fichier en mode caractères).
- Suivant l'opération que l'on effectue avec le fichier
(par exemple lecture ou écriture), le système appelle
la fonction correspondante dans le programme device driver. (sous-programme
de lecture ou sous-programme d'écriture dans cet exemple).
- Numérotation des minors et majors des fichiers devices
disques
- Il y a 64 minors associés à chaque disques.
- Par exemple pour le disque 0 les minors vont de 0 à
63 et pour le disque 1 de 64 à 123. Dans ce cas le même
major sera utilisé. ( major = 1 en général
pour les 4 premiers disques installés )
- Un même major peut supporter 256 minors c'est à
dire 4 disques ; au delà, le système change de numéro
major et choisi un numéro libre.
- Les numéros minors suivent un ordre précis.
(Voir hd (HW))
- Exemple de numéros majors et minors assignés
:
DEVICE
|
MAJOR
|
MINOR OPEN SERVER
|
MINOR ALTOS UNIX SCO
|
/dev/boot
/dev/root
/dev/swap
/dev/usr
/dev/recover
/dev/hd0a
/dev/hd00
/dev/hd01
/dev/hd02
/dev/hd03
/dev/hd04
/dev/hd0d
/dev/d94050
/dev/d94051
/dev/d94057all
/dev/d1350
/dev/d1351
/dev/d1353
/dev/d1356
/dev/d1357all
|
1
1
1
1
1
1
1
1
1
1
1
1
94
94
94
1
1
1
1
1
|
40
42
41
43
46
47
0
15
23
31
39
48
40
41
47
232
233
235
238
239
|
non
40
41
42
46
47
0
15
23
31
39
48
40
41
47
232
233
235
238
239
|
- Remarques sur les minors
- Il est à noter que les divisions qui sont comunément
utilisées s'étalent de 40 à 46 ; 47 représente
toute la zone Unix.
- Lorsqu'on passe au second disque on rajoute 64 à ces
valeurs.
- D'une façon plus générale la première
division commence à ( n x 64 ) + 40 avec n = numéro
d'ordre du disque installé en commançant à
0.
- Pour /dev/d1350, ce disque étant le quatrième
déclaré dans le système (disque numéro
3), le minor de la première division devient ( 3 x 64 )
+ 40 = 232.
- Voir hd (HW).
- Ce secteur en tout début de disque contient :
- Le programme (image dans /etc/priboot.hd) déterminant
le choix de la zone disque contenant le système à
utiliser (partition active).
- Les informations nécessaires pour les 4 partitions
possibles :
- Le type d'O/S dans chaque partition.
- L'emplacement précis de chaque partition sur le disque.
- Lorsque le disque est fraichement formatté, le seul
device accessible est [r]hdx0 : en effet les informations
concernant la structure du disque sont contenus dans le secteur
0. Les autres devices n'ont donc pas encore de signification bien
que les noms puissent exister.
- Lorsque le " fdisk " est effectué,
le secteur 0 est mis en place. (avec éventuellement le
boot primaire (fdisk sous dos) et informations sur les partitions).
- La commande " dparam " peut être
utilisée pour installer le demi secteur 0 contenant le
programme de boot primaire.
- Le fdisk et le dparam sont effectués automatiquement
à l'installation du système.
- Les devices partitions deviennent accessibles après
le fdisk.
- Une partition est un disque virtuel contenu dans un disque
physique.
- Sur un disque physique, il peut y avoir jusque 4 partitions.
- Toutes les partitions sont identifiées sous Unix par
des noms de devices dans le répertoire /dev. Des noms de
devices sont également déclarés dans /dev/dsk
et /dev/rdsk.
- Les devices partitions et divisions ne seront reconnus par
les systèmes d'exploitation (ici DOS ou UNIX) que si un
certain format y est inscrit.
- Une partition Unix peut être découpée
en divisions.
- Une partition peut contenir 7 divisions au maximum qu'il est
possible de délimiter en utilisant la commande divvy. (la
septième représente tout le disque).
- La division doit être structurée (voir divvy)
pour être utilisable sous Unix SCO.
- Lorsqu'une division a été déclarée
dans Unix (mount), l'utilisateur peut alors voir une arborescence
de fichiers et de répertoires.
- Plusieurs divisions peuvent être nécessaires
pour séparer différents types d'informations comme
les fichiers system Unix (division root) ou les programmes clients
(division u ou usr).
- Divvy inscrit les informations des divisions en début
de la partition concernée.
- Suivant les versions d'Unix, on ne retrouve pas les divisions
toujours dans le même ordre.
Pour MS-DOS il suffit de faire " format drive:
/S " pour créer :
- Le secteur secondaire de boot avec un descriptif de cette
partition MS-DOS.
- Les FATs.
- Le répertoire root.
- Une zone spécifique peut être présente
au début de la partition. Elle contient les secteurs de
boot pour Unix (boot secondaire).
- Cette zone est préparée au moment de l'installation
du système (avant le fdisk et le divvy) ou en manuel par
les commandes " dd if=/dev/hdboot0 of=/dev/rhd01 "
et " dd if=/dev/hdboot0 of=/dev/rhd01 seek=2 ".
- hdboot0 commence en début de partition (secteur 0 de
la partition) et fait 1 secteur de long.
- hdboot1 commence en secteur 2 dans la partition et fait environ
19k de long (38 secteurs).
- Avec Unix il faut créer des divisions dans les partitions
avant d'y installer, éventuellement, une structure interprétable
par Unix : le FILESYSTEM.
- Ceci est effectué à l'aide de la commande " divvy "
qui déclare les différentes divisions et y installe
les " file systems " (structures d'accueil
des données) qui sont composés d'un superbloc, d'une
I-NODE table et d'au moins un répertoire racine.
- Le divvy est l'équivalent du " format drive: "
sous DOS avec en plus une notion de sous-ensembles dans la partition.
- Les informations sur les divisions sont inscrits au début
de la partition concernée.
- Les Filesystems dans les divisions
- Un filesystem (structure d'accueil des données) peut
être créé sur la division si nécessaire.
- Ceci n'est pas obligatoire : certains logiciels, comme les
bases de données, peuvent vouloir ne pas passer par le
système Unix pour accéder aux données car
il peut y avoir une manière plus adaptée au logiciel
pour ranger les données dans la zone qui sera réservée
à ce logiciel.
- Certaines divisions sont également nécessires
pour le fontionnement du système comme l'UPS ALTOS (restart
partition), la mémoire virtuelle (swap) ou le système
de nettoyage des disques en cas de problème (recover).
- Lorsque des filesystems sont créés, la structure
suivante est préparée :
- Le SUPERBLOCK.
- La table des I-NODE (contenant des informations relatives
aux fichiers).
- Le répertoire racine de la division.
- Utilisation des filesystems dans Unix
- Un filesystem n'est pas utilisable tel quel : Lorsqu'on visualise
le contenu des disques physiques, des partition ou des divisions,
par leurs fichiers spéciaux, on n'observe qu'une suite
d'octèts difficiles à interpréter.
- Pour pouvoir manipuler des fichiers et des répertoires,
il faut signaler à Unix qu'une nouvelle structure de fichier
est disponible pour les utilisateurs
- La commande à utiliser est un mount (par exemple " mount
/dev/d1250 /usr1 ").
- La commande mount permet de déclarer à Unix
qu'une division contient une structure d'accueil de fichiers (un
filesystem), qu'il faut la raccorder à un répertoire
existant sur un disque préalablement monté et à
chaque fois que l'utilisateur demandera un fichier ou un répertoire
sous ce répertoire, Unix analysera le filesystem et présentera
à l'utilisateur les informations demandées.
Les transactions liées au filesystem sont regroupées
dans un " intent log " (/.ilog0001) qui permet
une récupération rapide des files systems AFS (open
server), EAFS (open server) et HTFS. Ces transactions ne concernent
que la structure du disque, pas les données.
TYPE | DESCRIPTION
| DIVERS |
XENIX | File system XENIX |
|
S51K | AT&T Unix File system System 5 blocs de 1Ko
| FS : 2GO max, fichiers : 14 caract., #inode : 16 bits, nb files par FS : 65535
|
AFS | Acer - Altos File System
| extension de S51K. Cluster 16Ko (blocs contigus pour fichiers). Free blocs : bitmap
|
EAFS | Extended Acer - Altos File System
| Fichiers : 255 caract. max. Liens symboliques. Extension de AFS.
|
HTFS | High Throughput File System
(non bootable)
| #Inodes : 32 bits. FS : 1T0. nb files par FS : 227. Liens symboliques (nom < 53 caractères stockés directement dans Inode). File versioning (undelete). Extension de EAFS. Taille fichier : 2GO. Nouvelle structure des répertoires. Protection de la structure des disques contre les coupures (intent loging, checkpointing).
|
DTFS | DeskTop File System
(non bootable)
| FS : 1TO. Compression temps réel. taille variable des blocs (512 à 4KO). Allocation dynamique des Inodes. Liens symboliques (nom < 108 caractères stockés directement dans Inode). File versioning (undelete). Protection des fichiers contre les coupures (sync on close (commit des updates à la cloture d'un fichier), shadow paging (commit des updates en une seule opération disque)). nb files par FS : 231. Taille fichier : 2GO. Nouvelle structure des répertoires.
|
RCKRDG | RoCKRiDGe file system (CD-ROM)
| noms de devices possibles, fichiers executables, liens symboliques, nom de répertoires longs, arborescence à plus de 8 niveaux.
|
HS | High Sierra file system (CD-ROM)
| |
ISO9660 | ISO9660 file system (CD-ROM)
| |
| | |
NFS | Network File Sharing |
|
| | |
NUCAM | Passerelle SCO pour les file systems NETWARE (NOVELL) : Netware Automounter
| |
NUCFS | Passerelle SCO pour les file systems NETWARE (NOVELL)
| |
| | |
DOS | File system DOS |
|
LMCFS | Lan Manager Client File System
| |
- Le disque est découpé au moment du formatage
bas niveau en secteurs de 512 octèts. Ces secteurs peuvent
être regroupés en unités appelés blocs
dans Unix.
- En général les blocs Unix font 1 Ko, 2Ko ou
4 Ko.
- La déclaration de la taille des blocs est effectué
au moment de la création du filesystem (par " divvy "
qui lance la commande " mkfs ").
- Il est possible d'attribuer des tailles de blocs différents
suivant les partitions. Le choix de cette taille n'est pas modifiable
dans le divvy standard.
Le bloc 1 au début de chaque filesystem est appelé
Superblock.
Il contient un ensemble d'informations qui caractérisent
le filesystem. Le superbloc est présent en mémoire
et recopié périodiquement sur le disque par la commande
sync (30 secondes).
Il permet en outre l'allocation dynamique de l'espace disque.
les informations qui caractérisent le superbloc sont :
- Taille en blocs de la INODE LIST
- Taille en blocs du volume disque
- nombre total de blocs de données
- Nombre total de blocs libres
- Liste des blocs libres
- Nombre Total d'Inodes
- Nombre d'Inodes libres
- Liste des Inodes libres
- Flags de l'état du filesystem et de Read Only
- Nombre total de blocs
- Nombre total d'Inodes
- Nom du filesystem
- Un certain nombre de blocs juste après le superblock
contiennent la table des Inodes appelée ILIST.
- La taille de la table des INODES est prévue au moment
de la création du filesystem. (par " mkfs "
lancé par " divvy ")
- Cette taille est fixe et ne peut être changée
qu'en regénérant le file system.
- Une inode est un descripteur unique de 64 octets, pour chaque
ensemble de données appartenant au système. Ces
ensembles de données peuvent être soit des répertoires
dans lesquels figurent des noms de fichiers, soit les fichiers
eux mêmes.
- L'Inode contient les données suivantes:
- Type du fichier.
- Nombre de liens.
- Propriétaire (UID) et groupe (GID).
- Taille du fichier en octets.
- Des pointeurs (13) indiquent les blocs utilisés par
l'inode. Des indirections d'adresses peuvent être utilisées.
- Date du dernier accès.
- Date de dernière modification.
- Date de création.
- Les filesystems du type " DTFS " peuvent
avoir des INODES éparpillées dans le filesystem.
- Voir " les différents types de filesystems "
précédemment.
Une Inode contient 13 adresses de 3 octets pour adresser son fichier
dans la zone de données du filesystem :
Voir " EXEMPLE D'ORGANISATION D'UN DISQUE "
pour la localisation de ces informations sur le disque.
La partition UNIX principale est la partition contenant le noyau
UNIX, c'est à dire le filesystem root. Elle peut se présenter
comme suit :

Un programme de chargement initial (boot) est chargé en
mémoire automatiquement lors de la mise en route du système.
Les boots sont à plusieurs niveaux et s'appellent les uns
les autres. Voir plus loin.
- La zone swap est un complément à la mémoire
centrale.
- Un processus comprend le programme lui même, les données
et une pile de registres (stack).
- Quand un processus est chargé, une partie ou la totalité
de son espace mémoire est en mémoire centrale.
- Les processus en attente d'exécution peuvent être
recopiés sur la zone swap afin de libérer de l'espace
en mémoire centrale pour des processus actifs.
- Un processus peut également rester résident
en swap s'il est censé être utilisé fréquemment
(chargement plus rapide).
- De toute façon, la swap doit être suffisamment
large pour accueillir l'ensemble des process qui vont tourner
simultanément en mémoire.
- En général la swap est 1,5 fois à 3 fois
plus grande que la mémoire.
- Le " swapping " est donc le transfert
d'informations en attente de traitement de la mémoire centrale
vers disque dur puis la remise en mémoire centrale de ces
mêmes informations lorsque le processus devra être
réactivé.
- Le swap est utilisé également lors d'un problème
grave de matériel : Unix s'arrête alors en affichant
un message " panic " et parfois il effectue
une sauvegarde de l'image mémoire en swap pour analyse.
Le message est alors " trying to dump xxxx pages ... ".
On peut éventuellement arrêter le système
lors de cette sauvegarde si on ne désire pas utiliser ce
dump. Au redémarrage, le système demandera si on
désire effectuer une copie de cette image mémoire
vers un média (répondre non) puis il demandera si
on désire ou non retirer cette image de la swap (répondre
oui).
- Lorsqu'un système utilise la swap, ses performances
se dégradent. Il faut alors conseiller l'augmentation de
la mémoire.
- Pour connaître la taille de la swap : " swap
-l "
- Pour savoir si la swap a été sollicitée
: " sar -r 1 1 "
Le filesystem root contient l'arborescence de base de l'ensemble
des fichiers du système UNIX.
Les filesystems utlisateurs sont des filesystems réservés
aux utilisateurs. Ils contiennent également une arborescence
de fichiers qui seront vus par l'intermédiaire du l'arborescense
de root.
La zone recover est la zone de disque des informations sur des
erreurs éventuelles du fsck (le système de contrôle
de l'intégrité de la structure du filesystem).
- Le système effectue un reset général
de ses composants dès qu'il est mis sous tension.
- Le reset appliqué au microprocesseur qui commence à
lire ses instructions à une adresse fixe FFFF:0 en EPROM
(le BIOS).
- Les tests internes sont effectués puis suivant le " setup ",
le boot est effectué sur disquette ou sur disque.
- Pour booter sur le disque, le microprocesseur lit le secteur
0 du disque déclaré en unité bootable et
le place en mémoire puis il l'exécute.
- Le secteur 0 contient un programme et les informations sur
les partitions avec la partition active à utiliser pour
la suite.
- Le programme ainsi exécuté détermine
la partition active (bootable), charge à son tour le premier
secteur (boot secondaire) de la partition active et l'exécute.
- Le boot secondaire est différent suivant le système
d'exploitation utilisé. Pour Unix il est considéré
comme le " boot stage 1 " et il charge les
quelques secteurs qui suivent. ( " boot stage 2 "
)
- Ce boot secondaire charge ensuite le fichier /boot ( /stand/boot
sur un OPEN SERVER ) qui affiche " boot : "
et permet à l'administrateur quelques manipulation de base.
Ce programme charge alors /unix suivant la demande de l'utilisateur
( ou /stand/unix sur OPEN SERVER ).
- Le programme /unix (ou /stand/unix) contient le noyeau unix
et ses drivers. Il initialise les différets modules hardware
et software selon une configuration préalable puis il démarre
à son tour quelques process nécessaire au fonctionnement
d'Unix et /etc/init.
- /etc/init le process #1 est le père de tous les autres
process à venir et démarre dans l'état choisis
par l'utilisateur : le run level. Deux run levels seulement sont
possible au moment du démarrage. Ce choix s'effectue lors
de la question :
Type CONTROL-d to proceed with normal startup,
(or give root password for system maintenance):
- Suivant le " run level choisis ", init
utilise les lignes correspondantes dans /etc/inittab.
- Suivant /etc/inittab, init démarre alors plusieurs
process nécessaires au système puis un ensemble
de programmes contenus dans un répertoire correspondant
au " run level " (/etc/rc2.d pour le run level
2 par exemple). Enfin les " logins " sont
envoyés au écrans devant se connecter par l'intermédiaire
du programme /etc/getty qui fonctionne avec un fichier de paramétrage
: /etc/gettydefs.
- Lors d'un arrêt système (shutdown, haltsys, reboot)
un run level est également attribué et une les programmes
qui ont été lancés par init sont en général
stoppés correctement et dans le bon ordre toujours suivant
le paramétrage de /etc/inittab. En effet, chaque méthode
d'arrêt correspond également à un run-level
( 0 = haltsys, 5=reboot, 6=shutdown).
REMARQUE : La structure de fichier (filesystem) commence à
être exploitée après le chargement de /boot.
- Il y a toujours une et une seule partition active sur un disque
physique partitionné.
- Le file system bootable doit se situer dans les 1024 premiers
cylindres du disque. (limitation du BIOS)
- S'il existe une partition Dos, elle doit occuper les 1024
premiers cylindres (limitation du BIOS) du disque physique concerné.