Organisation d`un disque dur et de ses partitions

Transcription

Organisation d`un disque dur et de ses partitions
partition-boot-2002
page 1/22
Principes du partitionnement & information FAT-BOOT…
(source : http://www.bellamyjc.net/fr/)
•
•
•
•
•
•
•
Organisation d'un disque dur et de ses partitions
Structure du secteur de partition (MBR)
Structure d'une entrée dans la table de partition
Tableau des types de partition
Tailles limites de partitions dues aux interfaces et au BIOS
Tailles limites dues aux types de partition (FAT et NTFS)
Secteur de boot de partition FAT12 ou FAT16 (DOS, Windows 3.x, Windows 9x, Windows
NT)
•
•
•
•
•
•
•
•
Secteur de boot de partition FAT32 (Windows 9x, Windows 2000)
Les clusters d'une partition FAT
Nombre maximum d'entrées à la racine d'une partition FAT
Structure d'une entrée de répertoire FAT et noms longs
Comparaison entre FAT(32) et NTFS
Mécanisme de boot d'un PC
Le formatage bas niveau
La séquence de BOOT de Windows NT
Organisation d'un disque dur et de ses partitions
Les catégories de partition ("primaire", "étendue", "logique") sont des notions INDÉPENDANTES de
tout système d'exploitation. C'est lié UNIQUEMENT à la plate-forme matérielle, à savoir INTEL (et
compatibles)
Le partitionnement permet de découper un disque PHYSIQUE en plusieurs "morceaux" (partitions),
cela étant d'ailleurs totalement indépendant des systèmes d'exploitation que l'on va y mettre (DOS,
Win98, WinNT, W2k, Linux, Novell, Solaris, ...). Les raisons qui motivent ce partage sont multiples :
•
•
•
Coexistence de différents systèmes d'exploitation (DOS, Windows NT, LINUX, OS/2,...)
Taille physique d'un disque trop grande par rapport à ce que peut gérer le système d'exploitation
utilisé (p.ex. les premiers DOS ne pouvaient pas "adresser" des partitions de plus de 32 Moctets,
les suivants plus de 2 Goctets,...)
Séparation physique, pour des questions de sécurité, du système, des applications, des
données,...
On peut comparer un disque (physique) à une armoire, dans laquelle on va mettre des rayonnages (=
les partitions), qui vont servir à accueillir aussi bien de la vaisselle, du linge, des bouteilles,...et
permettre ainsi de faire un peu d'ordre dans tout ce bazar hétéroclite!
Le problème (historique) est qu'au départ (et il est quasi impossible de revenir dessus, pour des
questions de compatibilité avec l'existant) seulement 4 "rayonnages" au maximum ont été prévus. (De
plus, DOS et Windows 95/98 ne permettent pas de créer plus d'une partition primaire - je me suis
toujours demandé pourquoi! - mais ils acceptent des disques ayant plus d'une partition primaire, les
partitions primaires supplémentaires ayant été créées en utilisant p.ex. "Partition Magic", "FDISK" de
LINUX ou "WINDISK" de WinNT).
Un tel rayonnage constitue une partition "PRIMAIRE" (ou "PRINCIPALE", les deux appellations sont
équivalentes) Comme on peut être amené à avoir plus de 4 rangements différents, et bien l'un de ces
rayonnages va contenir un "gros" tiroir compartimenté. Ce tiroir s'appelle partition "ÉTENDUE", et
chaque compartiment du tiroir sera une partition "LOGIQUE".
Toujours pour des questions historiques (au départ, les disques étaient tout petits, comparés à ceux de
maintenant), on ne peut créer que un ou deux compartiments, le 2ème étant alors un nouveau tiroir,
"emboîté" dans un compartiment. Et ce "petit" tiroir peut à nouveau contenir 2 compartiments, un pour
du rangement (=partition LOGIQUE), et un autre pour un nouveau tiroir, et ainsi de suite, à l'infini
(jusqu'à ce qu'il n'y ait plus de place du tout)
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 2/22
L'opération de "partage", ou partitionnement, est effectuée par :
•
•
•
•
Fdisk (aussi bien sous DOS, Win98 que Linux)
Windisk (sous Windows NT)
Diskmgmt.msc (MMC sous Windows 2000)
des outils dédiés tels que "Partition Magic" , "Ranish Partition Manager", ...
Le partitionnement n'existe QUE POUR LES DISQUES DURS (et non pour les disquettes)
Ensuite, la "préparation" des zones de rangements (=des cloisons dans les compartiments créés) est
effectuée par l'outil Format (sous DOS/Windows).
Donc un disque pourra avoir la structure suivante :
DISQUE PHYSIQUE
Partition étendue
Partition primaire
Partition étendue
Partition logique
Partition logique Partition étendue
Partition logique
Ce disque possède 1 partition PRIMAIRE (celle où on va stocker le système d'exploitation
généralement), et 3 partitions LOGIQUES (ce sont les seules qui nous intéressent : les "contenus", les
partitions ÉTENDUES n'étant que des "contenants")
Voici un autre exemple, plus détaillé :
Partition 1
(primaire) (FAT)
Partition 2
(primaire) (FAT)
Partition 3
(étendue)
Partition
logique
3.1
Partition 4
(primaire) (NTFS)
Partition
étendue 3.2
MBR
Partition
Partition
logique 3.2.1 étendue 3.2.2
BS FAT Root Files BS FAT Root Files EBR
BS
EBR
BS
EBR
Partition
logique 3.2.2.1
BS MFT Files
MFT
BS
Files
bis
bis
...
BS
MBR : Master Boot Record (secteur de partition principal)
EBR : Extended Boot Record (secteur de partition secondaire : contient la table des partions d'une partition étendue)
BS: Boot Sector (secteur de boot)
Root : répertoire racine (FAT)
FAT : File Allocation Table, a donné son nom au type de partition du même nom, utilisé par DOS, Windows 95/98, Windows
NT
la FAT est une table de chaînage de clusters (agrégats de secteurs) permettant l'adressage et la reconstitution des fichiers
NTFS : NT File Sytem, utilisé par Windows NT
MFT : Master File Table, un composant de NTFS
Ce disque (physique) est composé de :
•
•
3 partitions "PRIMAIRES" (dont la 1ère est celle où on va mettre le système d'exploitation
généralement)
3 partitions LOGIQUES (ce sont les seules qui nous intéressent : les "contenus", les partitions
ÉTENDUES n'étant que des "contenants")
On pourra attribuer p.ex. :
•
•
•
la 1ère logique aux applications de bureautique
la 2ème aux documents (bitmaps, documents Word, Excel, texte,..),
la 3ème aux applications Internet (navigateurs, zones de téléchargement, FTP, ...).
Tout dépend de "l'humeur" de l'utilisateur (en ce qui me concerne, j'ai une partition "outils de
développement", une "gravure de CD", une "outils de dessin", une "utilitaires", une "backup vitaux", une
pour la mémoire virtuelle...)
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 3/22
Le secteur de partition principal (MBR) est situé au début du disque (tête 0, cylindre 0, secteur 1),
comme tout secteur il a une taille de 512 octets.
Il est chargé par le BIOS à l'adresse mémoire 0000:7C00 (si une disquette n'a pas "pris la main").
Ensuite, le BIOS teste si le dernier mot (de 16 bits) de ce secteur est égal à 0xAA55, qui indique que le
disque a bien été partitionné (sinon, un message d'erreur est affiché par le BIOS). Si c'est effectivement
le cas, le programme de partition qui réside au début de ce secteur est lancé.
Structure du secteur de partition
Adresse
(hexa)
Contenu
Taille
(octets)
000 Programme de partition
442
1B8 Signature (sous Windows NT/2000)
4
1BE 1ère entrée dans la table de partition
16
1CE 2ème entrée dans la table de partition
16
1DE 3ème entrée dans la table de partition
16
1EE 4ème entrée dans la table de partition
16
1FE AA55 (code d'identification)
2
Remarques :
•
•
On constate qu'il ne peut pas y avoir plus de 4 partitions dites primaires (cette limite
peut être contournée à l'aide des partitions étendues)
L'information de 4 octets située à l'offset 1B8 est utilisée seulement par Windows
NT/2000 pour "signer" le disque physique. Cette opération est exécutée par le
gestionnaire de disques (Windisk) la première fois qu'il est lancé (ou après ajout ou
remplacement du disque). Cette valeur est recopiée dans la base de registres, dans la
clef HKEY_LOCAL_MACHINE\SYSTEM\DISK, entrée "Information" (et
éventuellement dupliquée dans l'entrée "VirtualInfo"), et se situe entre l'offset 0034 et
0037 pour le 1er disque. Les emplacements des signatures des autres disques
éventuels dépendent du nombre de partitions de chaque disque).
NB : Un disque doit être signé pour qu'il puisse être géré par Windisk.
Structure d'une entrée dans la table de partition
Offset dans le
Adresse MBR (ou EBR)
(hexa) (hexa) Entrées :
1
2
3
4
Contenu
Taille
(octets)
Etat de la partition :
00 1BE 1CE 1DE 1EE - 00 : partition non active
- 80 : partition active
1
01 1BF 1CF 1DF 1EF N° de tête où commence la partition
1
02 1C0 1D0 1E0 1F0 N° de secteur et cylindre où commence la partition
2
04 1C2 1D2 1E2 1F2 Type de partition :
1
05 1C3 1D3 1E3 1F3 N° de tête où finit la partition
1
06 1C4 1D4 1E4 1F4 N° de secteur et cylindre où finit la partition
2
Distance en secteurs entre secteur de partition
08 1C6 1D6 1E6 1F6
et secteur de boot de la partition
4
0C 1CA 1DA 1EA 1FA Taille de la partition en nombre de secteurs de 512 octets
4
Une partition étendue se compose d'une nouvelle table de partition, de structure identique à
celle de la table principale, permettant ainsi un chaînage vers des partitions supplémentaires
"encapsulées" à la suite.
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 4/22
Tableau des types de partition
Les partitions peuvent être de différents types (méthode de "rangement"). Chaque type définit ce qu'on
appelle un "système de fichiers" ("FS" ou FileSystem en anglais), lequel est, la plupart du temps,
fonction du système d'exploitation ("OS" ou OperatingSystem en anglais), mais la correspondance
n'est pas forcément biunivoque.
Certains systèmes d'exploitation sont très "fermés", n'acceptant qu'un seul système de fichiers (DOS
p.ex.), d'autres au contraire sont très "ouverts", acceptant à la fois leur propre système de fichiers et
celui d'autres systèmes d'exploitation (Linux et BeOS p.ex.). Cette ouverture peut toutefois se limiter à
des accès en lecture seule.
Il est néanmoins possible d'accéder - dans certains cas - à un type de FS non reconnu par un OS
à l'aide de produits spécifiques, (commerciaux ou freewares). Par exemple le logiciel Explore2Fs est un
freeware qui permet la lecture (et même l'écriture) de partitions EXT2 (Linux) sous Windows.
Le nom des FS est généralement un acronyme ("FAT" = File Allocation Table, "NTFS" = New Technology
File System, ...)
Voici un tableau succinct donnant les correspondances entre OS et FS :
OS / FS
ISO9660 FAT12 FAT16 FAT32 NTFS
EXT2
BeFS
DOS 6.x
Windows 95 <OSR2
Windows 95 OSR2 et >
Windows NTx
Windows 2000
Linux
R
Be OS
R
R
= supporté
= non supporté
= supporté mais à l'aide de produit tiers (driver, logiciel, ..)
•
•
•
R
ISO9660
le driver FAT32.SYS permet l'accès à des partitions FAT32 sous Windows NT4
l'outil NTFS98 permet l'accès à des partitions NTFS et NTFS5 sous Windows
9x
l’outil NTFSDOS Pro permet l'accès à des partitions NTFS et NTFS5 sous DOS
= ReadOnly (Lecture seule)
= format standard des CDROM
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 5/22
Le type d'une partition étant défini par un octet, il existe théoriquement 255 systèmes de fichiers
possibles.
Dans le tableau ci-dessous, les codes des partitions sont en hexadécimal.
Plusieurs types de partition peuvent être désignés par le même code (p.ex. HPFS d'OS/2 et NTFS de
NT).
code
type
code
type
code
type
code
type
00
partition non définie
40
VENIX
80
MINIX (-> 1.4a)
C0
CTOS
REAL/32 secure
NTFT
01
FAT12 (< 10 M)
41
MINIX + DRDOS
Personal RISC Boot
Power PC Reference
Platform
81
MINIX (1.4b ->)
Mitac Disk Manager
C1
FAT-12 DRDOS
02
XENIX root
42
Linux swap + DRDOS
SFS
Windows 2000
82
Solaris X86
LINUX swap
Prime
C2
Linux swap cachée
03
XENIX /usr
43
Linux native +
83
LINUX native (ext2fs)
C3
Linux cachée
04
FAT16 (< 32 M)
44
non attribué
84
OS/2 cachée
Hibernation
C4
FAT16 < 32M DRDOS
05
étendue
45
Boot-US boot manager
EUMEL/Elan
85
Linux étendue
C5
non attribué
06
FAT16 (> 32 M et <2 G)
46
EUMEL/Elan
86
agrégat FAT (NT)
C6
FAT16 >= 32M DRDOS
FAT16 corrompue (NT)
07
OS/2 HPFS
NT NTFS
Advanced UNIX
QNX2.x
47
EUMEL/Elan
87
agrégat NTFS (NT)
C7
08
AIX boot
SplitDrive
Commodore DOS
DELL spanning
QNX 1.x et 2.x
48
EUMEL/Elan
88
non attribué
C8
non attribué
09
AIX data
Coherent FileSystem
49
non attribué
89
non attribué
C9
non attribué
0A
OS/2 boot manager
Coherent swap
OPUS
4A
non attribué
8A
Linux Kernel
CA
non attribué
0B
FAT32 (>2 G et <2047 G)
4B
non attribué
8B
FAT32 miroir
CB
FAT32 DRDOS
0C
FAT32x = idem 0B + LBA
4C
non attribué
8C
FAT32x miroir
CC
FAT32x DRDOS
0D
non attribué
4D
QNX4.x
8D
FAT12 cachée
(FreeFDISK)
CD
CTOS
0E
FAT16x = idem 06 + LBA
4E
QNX4.x 2ème part.
8E
Linux Logical Volume
Manager
CE
FAT16x DRDOS
0F
étendue"x" = idem 05 +
LBA
4F
QNX4.x 3ème part.
Oberon
8F
non attribué
CF
non attribué
10
OPUS
50
OnTrack Disk Manager
Lynx RTOS
Oberon native
90
FAT16 cachée
(FreeFDISK)
D0
REAL32
11
FAT12 cachée
51
OnTrack Disk Manager
RW
Novell
91
étendue cachée
(FreeFDISK)
D1
Multiuser DOS secured
FAT12
12
Diagnostics COMPAQ
52
Microport
CP/M
92
FAT16 large cachée
(FreeFDISK)
D2
non attribué
13
non attribué
53
Disk Manager 6.0 Aux3
93
Amoeba
Linux native cachée
D3
non attribué
AFPA TMSI Châtellerault
DRDOS
NTFS corrompue (NT)
Syrinx boot
Version du 17/Juillet/2002
partition-boot-2002
page 6/22
14
FAT16 (< 32 M) cachée
54
Disk Manager 6.0
Dynamic Drive Overlay
94
Amoeba bad block table
D4
Multiuser DOS secured
FAT16 <32M
15
non attribué
55
EZ-Drive
95
MIT EXOPC native
D5
Multiuser DOS secured
étendue
16
FAT16 (> 32 M) cachée
56
Golden Bow
EZ-BIOS
96
non attribué
D6
Multiuser DOS secured
FAT16 >=32M
17
HPFS - NTFS cachée
57
DrivePro
VNDI
97
FAT32 cachée
(FreeFDISK)
D7
non attribué
18
AST Windows swapfile
58
non attribué
98
FAT32x cachée
(FreeFDISK)
D8
CP/M-86
19
Willowtech Photon coS
59
non attribué
99
DCE376 logical drive
D9
non attribué
1A
non attribué
5A
non attribué
9A
FAT16x cachée
(FreeFDISK)
DA
Non-FS Data
1B
FAT32 cachée
5B
non attribué
9B
étendue X cachée
(FreeFDISK)
DB
Digital Research CP/M
Concurrent CP/M
Concurrent DOS
CTOS
KDG Telemetry SCPU
boot
1C
FAT32x cachée
5C
Priam EDisk
9C
non attribué
DC
CTOS
1D
non attribué
5D
non attribué
9D
non attribué
DD
CTOS cachée
1E
FAT16x cachée
5E
non attribué
9E
non attribué
DE
non attribué
1F
non attribué
5F
non attribué
9F
BSD/OS
DF
DG/UX virtual disk
manager
20
Willowsoft OFS1
60
non attribué
A0
hibernation
E0
ST AVFS
21
Oxygen File System
61
SpeedStor
A1
réservé
E1
SpeedStor FAT12
22
Oxygen Extended
62
non attribué
A2
non attribué
E2
non attribué
23
réservé
63
Unix System V
GNU HURD
A3
réservé
E3
SpeedStor
24
NEC DOS 3.x
64
Novell 286
PC-ARMOUR
A4
réservé
E4
SpeedStor étendue
25
non attribué
65
Novell 386
A5
BSD
E5
réservé
26
réservé
66
Novell Netware SMS
A6
OpenBSD
E6
réservé
27
non attribué
67
Novell
A7
NEXTSTEP
E7
non attribué
28
non attribué
68
Novell
A8
non attribué
E8
non attribué
29
non attribué
69
Novell Netware NSS
A9
NetBSD
E9
non attribué
2A
non attribué
6A
non attribué
AA
Fat 12 1.44Mb Olivetti
EA
non attribué
2B
non attribué
6B
non attribué
AB
non attribué
EB
Be FS
2C
non attribué
6C
non attribué
AC
non attribué
EC
non attribué
2D
non attribué
6D
non attribué
AD
non attribué
ED
non attribué
2E
non attribué
6E
non attribué
AE
ShagOS filesystem
EE
EFI MBR
2F
non attribué
6F
non attribué
AF
ShagOS swap partition
EF
EFI
30
non attribué
70
DiskSecure Multi-Boot
B0
non attribué
F0
Linux/PA-RISC boot
loader
31
réservé
71
réservé
B1
réservé
F1
SpeedStor
32
non attribué
72
réservé
B2
non attribué
F2
DOS 3.3+ secondary
partition
33
réservé
73
réservé
B3
réservé
F3
réservé
34
réservé
74
Scramdisk
B4
réservé
F4
SpeedStor large
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 7/22
Prologue single-volume
35
Journaling FS OS/2 ou
eCS
75
IBM PC/IX
B5
non attribué
F5
Prologue multi-volume
36
réservé
76
réservé
B6
réservé
F6
réservé
37
non attribué
77
VNDI
B7
BSDI BSD/386
F7
non attribué
38
THEOS ver 3.2 2 Go
78
XOSL Bootloader
B8
BSDI BSD/386 swap
F8
non attribué
39
Plan 9
THEOS ver 4 spanned
79
non attribué
B9
non attribué
F9
non attribué
3A
THEOS ver 4 4Go
7A
non attribué
BA
non attribué
FA
non attribué
3B
THEOS ver 4 étendue
7B
non attribué
BB
non attribué
FB
VMware File System
3C
PartitionMagic recovery
7C
non attribué
BC
non attribué
FC
VMware Swap
3D
non attribué
7D
non attribué
BD
non attribué
FD
Linux raid
3E
non attribué
7E
non attribué
BE
Solaris 8 boot
FE
SpeedStor > 1024 cyl
IBM PS/2 IML
Windows NT Disk
Administrator
Linux Logical Volume
Manager
3F
non attribué
7F
non attribué
BF
non attribué
FF
Xenix Bad Block Table
Remarques :
•
Les n° de cylindre et de secteur sont codés sur 16 bits (2octets ) de la façon suivante :
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
<-------- Cylindre ---------> <--- Secteur --->
•
Attention : les bits 6 et 7 représentent les bits de poids fort du cylindre (donc à faire passer a gauche du bit 15)
Par exemple, si en 1D0 on trouve 4106, cela signifie (notation "little endian", donc 06 est l'octet de poids fort)
•
octets
07 06 05 04 03 02 01 00 07 06 05 04 03 02 01 00
0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1
<---------06----------> <-------- 41 --------->
C/S
bruts
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
<-------- Cylindre ---------> <--- Secteur --->
0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1
|__|
/---<------------<-----/
|--|
C/S
réels
•
•
•
•
•
•
0 1 0 0 0 0 0 1
= cylindre 0x106 (262)
1
0
0 0 0 0 0
= secteur 0x1
1
LBA = LogicalBlock Addressing, dispositif du BIOS permettant l'accès à des disques de plus de 1024 cylindres
par utilisation d'extensions de l'interruption logicielle 13h
Si le bit 4 du type de la partition est mis à 1, cela permet de cacher la partition (xxx1xxxx)
Ex.: 83 = Linux native / 93 = Linux native cachée
Pour des partitions de taille <8 Go, les informations situées aux offsets 08 et 0C (distance et taille) sont
redondantes par rapport aux informations situées aux offsets 01/02 et 05/06 (Cylindre, Tête et Secteur - CHS en
anglais)
Pour des partitions de taille >8 Go, seules les informations situées aux offsets 08 et 0C (distance et taille) sont
valides. En effet, pour de telles partitions le n° de cylindre dépasse 1024, et donc ne peut pas être codé sur 10 bits,
donc les informations situées aux offsets 02 et 06 sont fausses. De plus, il est nécessaire que les extensions de
l'interruption 13h du BIOS soient disponibles pour gérer ces informations en mode LBA
Si un agrégat de partition (sous Windows NT) vient à être défectueux, le bit 6 du type de la partition est mis à 1,
donnant ainsi les valeurs 0xC6 (FAT) et 0xC7 (NTFS)
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
•
•
•
page 8/22
La partition de Diagnostics COMPAQ est en réalité une partition FAT de 6 à 64 Mo environ, bootable, dans laquelle
COMPAQ stocke des outils de configuration et diagnostics
Sous Windows 2000, si une entrée de la table de partition possède le type 0x42, alors W2k ignore la table et utilise
sa propre table ainsi qu'un schéma de partitionnement propriétaire LDM (Logical Disk Manager)
Un certain nombre de PC portables (IBM Thinkpad, Toshiba, Sony VAIO,...) mettent en oeuvre une partition
d'hibernation ayant le code 0xA0
Tailles limites de partitions dues aux interfaces et au BIOS
Sigles :
•
•
•
IDE = Integrated Drive Electronics. En réalité, on devrait utiliser l'appellation ATA = AT
Attachments). C'est une norme de configuration des disques durs, pour lesquels le contrôleur du
disque est intégré au disque lui-même.
EIDE = Enhanced Integrated Drive Electronics. En réalité, on devrait utiliser l'appellation ATA-2,
ou encore le nom officiel ANSI X3TD10948D
LBA = Logical Block Addressing. C'est une technique EIDE qui permet de remplacer l'adresse
physique d'un secteur (CTS = Cylindre - Tête - Secteur, ou CHS en anglais = Cylinder - Head Sector) par une adresse linéaire absolue du secteur sur 32 bits (ou 28, les 4 1ers bits pouvant
être réservés).
Cet acronyme LBA est source de confusion. En effet, il est pris parfois pour "Large Block
Addressing", désignant une (ancienne maintenant) méthode de conversion de l'adresse
physique CTS en une adresse logique CTS, dans laquelle un même facteur donné multiplie le
nombre de têtes et divise le nombre de cylindres afin que n° de cylindre soit toujours inférieur à
1024.
Interface IDE
Un enregistrement d'un disque se fait à l’aide de l’interruption 13h, en lui passant
comme paramètres les n° de cylindre, secteur et tête, les deux premiers (cylindre et
secteur) étant codés dans les registres CH et CL.
•
•
•
•
Un numéro de cylindre est code sur 10 bits, soit une plage 0-1023
Un numéro de secteur est code sur 6 bits, soit une plage 1-63 (le secteur 0 n'est
pas adressé)
Par ailleurs, l'interface matérielle WD1003 gère 16 têtes au maximum
Un secteur comprend 512 octets
On en déduit la taille maximale d’une partition IDE
= 1024 x 63 x 16 x 512
= 528482304 octets
= 504 Moctets.
Interface EIDE
La norme EIDE supporte par contre 255 têtes (au lieu de 16). Donc la capacité maximale
devient :
= 1024 x 63 x 255 x 512
= 8422686720 octets
= 7.9 Goctets, arrondis communément à 8 Go
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 9/22
BIOS LBA
L'adressage d'un cylindre est toujours limité à 1024, en raison des 10 bits prévus pour cela. Les disques
peuvent dépasser physiquement cette valeur. Pour contourner cette limitation, il y a essentiellement 2
méthodes :
•
•
Translation d'adresse : un BIOS compatible EIDE va "transformer" l'adressage CTS "physique"
en adressage CTS "logique", par exemple en multipliant par 2 le nombre de têtes et en divisant le
nombre de cylindres par 2. Ainsi, un disque de 1500 cylindres et 24 têtes (physiques) sera "vu"
comme un disque de 750 cylindres (<1024) et 48 têtes.
Cette méthode ne permet pas de dépasser la limite des 8 Go !!
Adressage LBA (géré par le BIOS) : l'adressage d'un secteur est linéaire (sur 32 bits en
théorie). C'est la seule méthode possible pour dépasser la limite des 8 Go. Elle est basée sur
l'utilisation de nouvelles fonctions (extensions) de l'interruption 13h. Il faut donc posséder un
BIOS doté de ces extensions.
Un secteur ayant une taille de 512 octets, la taille maximale d'un disque est théoriquement
= 2^32 x 512 octets
= 2 To
Comme pour l'instant seulement 28 bits sur 32 sont utilisés pour adresser les secteurs,
la taille maximale d'un disque (et a fortiori d'une partition) est actuellement
= 2^28 x 512 octets
= 128 Go
Tailles limites dues aux types de partition (FAT et NTFS)
FAT16
Les partitions FAT16 codant les n° de clusters sur 16 bits, le nombre maximal de
clusters est donc limité à 2^16 = 65 536.
Comme un cluster ne peut dépasser (sous DOS, Windows 95 et Windows 98) 32 768
octets, la taille maximale d'une partition FAT16 est donc
= 65536x32768
= 2147483648 octets
= 2 Go
Sous NT4/W2K/XP, en utilisant des clusters de 64 ko (au lieu de 32ko), la taille
maximale d'une partition FAT16 (qui ne sera accessible que par ces systèmes) est :
= 4 Go
FAT32
Les partitions FAT32 (reconnues sous Windows 95 OSR2, Windows 98, Windows 2000,
WIndows XP) codant les n° de clusters sur 32 bits, le nombre maximal de clusters est
donc limité à 2^32 = 4 294 967 296.
La taille maximale THÉORIQUE d'une partition FAT32 est donc
= 2^32 x 32768
= 4 294 967 296 x 32768
= 140 737 488 355 328 octets
= 128 To
En réalité, les n° de clusters sont codés seulement sur 28 bits, les 4 bits de poids forts
étant réservés.
= 2^28 x 32768
= 268 435 456 x 32768
De plus, certains n° de clusters sont réservés (n° de clusters fictifs indiquant cluster
invalide, vide, ...), ce nombre maximal tombe à 268 435 445.
Donc la taille maximale EFFECTIVE THÉORIQUE d'une partition FAT32 est donc :
= 268 435 445 x 32768
= 8 796 092 661 760 octets = 8 To
mais compte tenu de la limitation EIDE citée plus haut, la taille maximale RÉELLE d'une
partition FAT32 est en réalité = 8 Go
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 10/22
FAT32x
Pour dépasser cette limite, Microsoft a créé un nouveau type de partition, appelé
FAT32X, supporté seulement par Windows 95 OSR2, Windows 98, Windows Me et
par Windows 2000/XP, qui permet d'utiliser des partitions de taille supérieure à cette
limite des 8 Goctets.
Elle est subordonnée obligatoirement à l'utilisation des extensions de l'interruption 13h
du BIOS (mode LBA).
La FAT se trouve en particulier déplacée à la fin de la partition (au lieu de suivre le
secteur de boot).
La taille limite des partitions FAT32X est
= 128 Go (= la limite due au mode LBA).
sous Windows 2000/XP, la taille maximale d'une FAT32X est
= 32 Go (restriction due à l'outil de formatage).
Mais Windows 2000/XP peut néanmoins accéder à des partitions créées par Windows
95 OSR2/98/Me et de tailles supérieures à 32Go (jusqu'à 128 Go).
NTFS
En ce qui concerne les partitions NTFS, il n'y pas vraiment de limite, puisque leur taille
maximale est en théorie
= 2^64 octets
= 16 Eo (Exaoctets).
Mais compte tenu des limitations BIOS dues au mode d'adressage des secteurs, la taille
effective maximale d'une partition NTFS est
= 2 To (128 Go actuellement)
RECAPITULATIF
A l'heure actuelle (BIOS, types de partitions et systèmes disponibles), les tailles
maximales de partitions en fonction du système d'exploitation (OS) et du système
de fichiers (FS) sont :
OS
/ FS
FAT16
DOS 6.x
2 Go
Win9X/ME
2 Go
NT4
4 Go
W2000/XP
4 Go
FAT32
NTFS
128 Go
128 Go
32 Go
*128 Go
128 Go
* : si créée sous Win9X/ME
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 11/22
Secteur de boot de partition FAT12 ou FAT16
(DOS, Windows 3.x,
Windows 9x, Windows NT)
Adresse
(hexa)
Contenu
Taille
(octets)
000 Instruction de saut à la routine de boot
3
003 Nom du fabricant et n° version(p.ex.MSWIN4.0)
8
00B Octets par secteur (0x200 = 512)
2
00D Secteurs par cluster (variable)
1
00E Nbre secteurs réservés (1)
2
010 Nbre de FAT (2)
1
011 Nbre d'entrées répertoire racine (0x200 = 512)
2
Nbre de secteurs dans le volume (variable)
ou 0 si la partition est trop grande
2
013
015 Descripteur de support (0xF8 pour un disque dur)
1
016 Nbre de secteurs par FAT
2
018 Nbre de secteurs par piste (variable)
2
01A Nbre de têtes (variable)
2
01C Distance entre 1er secteur du volume et 1er secteur du support
4
020
Nbre de secteurs dans le volume (variable)
si la valeur contenue à l'offset 013 est nulle
4
024
N° BIOS du disque physique (commence à 0x00 pour les disquettes, et
0x80 pour les disques durs)
1
025 A l'origine, n° de tête du secteur de boot. Inutilisé sauf par Windows NT
1
026 Signature. Inutilisé sauf par Windows NT
1
027 N° de série du disque (créé au formatage à partir de la date)
02B Nom de volume (identique à celui figurant dans le répertoire racine)
036 Chaîne décrivant l e système de fichiers ("FAT12", "FAT16")
03E
Routine de boot
à 1FD
1FE AA55 (code d'identification, id.secteur de partition)
4
11
8
448
2
Remarques :
•
•
•
•
•
La zone qui s'étend de l'offset 00B à l'offset 023 s'appelle "BIOS Parameter Block" (BPB)
La zone qui s'étend de l'offset 024 à l'offset 03D s'appelle "extended BIOS Parameter Block" (EBPB)
L'information située à l'offset 01C reprend celle contenue à l'offset 08 de l'entrée correspondante de la table de
partition
L'octet situé à l'offset 025 est utilisé par Windows NT pour indiquer une partition à contrôler par chkdsk au
redémarrage. Le bit 0 à 1 indique que le disque doit être vérifié, et le bit 1 à 1 indique qu'en plus une analyse de
surface doit être déclenchée. Cet octet est remis à 0 lors d'un arrêt normal du PC.
L'octet situé à l'offset 026 est utilisé par Windows NT pour "signer" la partition. Il doit être égal à 0x28 ou 0x29
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 12/22
Structure d'un secteur de boot de partition FAT32
(Windows 9x,
Windows 2000)
Adresse
(hexa)
Contenu
Taille
(octets)
000 Instruction de saut à la routine de boot
3
003 Nom du fabricant et n° version(p.ex.MSWIN4.0)
8
00B Octets par secteur (0x200 = 512)
2
00D Secteurs par cluster (variable)
1
00E Nbre secteurs réservés (1)
2
010 Nbre de FAT (2)
1
011 Nbre d'entrées répertoire racine : inutilisé
2
Nbre de secteurs dans le volume (variable)
ou 0 si la partition est trop grande
2
013
015 Descripteur de support (0xF8 pour un disque dur)
1
016 Nbre de secteurs par FAT. Toujours à 0x0000 en FAT32 (cf offset 024)
2
018 Nbre de secteurs par piste (variable)
2
01A Nbre de têtes (variable)
2
01C Distance entre 1er secteur du volume et 1er secteur du support
4
020
Nbre de secteurs dans le volume (variable)
si la valeur contenue à l'offset 013 est nulle
4
024 Nbre de secteurs par FAT32 (remplace l'information à l'offset 016)
4
028 Indicateurs servant au "mirroring" de la FAT.
2
02A N° de version du système de fichiers
2
02C N° du 1er cluster du répertoire racine
4
030 N° du secteur du fichier d'information système (0xFFFF s'il n'existe pas)
2
032 N° du secteur de sauvegarde de boot (0xFFFF s'il n'existe pas)
2
034 réservés
040
Routine de boot
à 1FD
1FE AA55 (code d'identification, id.secteur de partition)
12
446
2
Remarques :
•
•
•
La zone qui s'étend de l'offset 00B à l'offset 03F s'appelle "BIOS Parameter Block" (BPB) et est spécifique à la
FAT32
Mirroring de la FAT( offset 028) : les 4 bits de poids faibles indiquent le n° de la FAT
active, et le bit 8 indique si cette FAT doit être dupliquée vers les autres copies de la
FAT
A la différence de FAT12 ou FAT16, le répertoire racine d'une FAT32 n'a pas un emplacement fixe, lequel est
défini par l'informations contenue à l'offset 02C. Ainsi, sa taille n'est pas limitée, et en conséquence, le nombre
maximal d'entrées (offset 011) n'a plus raison d'être.
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 13/22
Les clusters d'une partition FAT
Un fichier n'occupe pas sur disque exactement sa taille utile, mais le multiple - immédiatement supérieur
à cette taille - de la taille d'un cluster, un cluster étant égal à "N" secteurs , et "N" étant une puissance
de 2.
Intérêt des clusters
1. Physiquement on ne peut lire/écrire des données sur un disque autrement que par secteurs,
qui représentent une certaine quantité d'octets. La taille des secteurs a été fixée
"universellement" à 512 octets (on pourrait théoriquement imaginer des secteurs de ce qu'on
veut, de préférence des puissances de 2, par exemple 1 octet, mais les têtes des disques seraient
tellement sollicitées dans tous les sens qu'elles tomberaient en panne au bout de peu de temps
d'utilisation !)
2. Il faut être capable d'adresser les dits secteurs. Cela va dépendre du système de fichiers
utilisé. Dans le cas de FAT16, on a une table de taille FIXE (et donc limitée), composée de mot
de 16 bits, qui permet de repérer un secteur ou paquet de secteurs : le cluster.
En FAT16, on peut repérer au maximum 65536 "entités" (en réalité moins, car il y a des valeurs
réservées, la valeur réelle étant de 65525 ) ou clusters.
Donc si on choisit des clusters de 1 secteur, ce qui est optimal pour perdre le moins possible
d'octets, on ne pourra adresser pas plus de 65536 secteurs, de 512 octets, ce qui représente
33554432 octets, soit 32 Mo! Avec des clusters de 16 secteurs (= 16 x 512 octets = 8192
octets, ou 8 ko ), on monte à 512 Mo, ce qui est déjà un peu mieux.
Le maximum qu'on puisse obtenir en FAT16 est réalisé en utilisant des clusters de 64 secteurs
(=32768 octets) d'où 2147483648 octets soit 2 Go, taille maximale possible en FAT16 (32768
est une limite car pour d'autres considérations, sous DOS et Win9x, la taille d'un cluster doit être
strictement inférieure à 2^16 octets, soit 65536, donc la puissance de 2 immédiatement
inférieure à 65536 est bien 32768).
Sous NT4 et au delà, on peut - théoriquement - avoir des clusters de 262144 octets)
En FAT32, le nombre de clusters est (théoriquement) égal à 2^32 (au lieu de 2^16), donc la
taille maximale d'une partition est beaucoup plus grande, ou, à taille de partition égale, une
FAT32 autorisera des clusters plus petits qu'en FAT16. Ainsi, une partition de 1.5 Go demandera
des clusters de :
- 32 ko en FAT16
- 4 ko en FAT32
Cependant, il n'est pas forcément toujours judicieux de prendre des clusters très petits. En effet, plus la
taille des clusters est petite, et plus le risque de fragmentation des fichiers augmente. Ce qu'on gagne en
espace disque, on va le perdre en performance.
Méthode de calcul
En définissant :
•
•
•
•
tp : taille de la partition en octets
nmax : nombre maximal de clusters (65536 en FAT16)
ts : taille d'un secteur en octets (512)
tm : taille minimale d'un cluster en octets
On a la relation suivante :
tm = 2^(int(n)+k)*512 avec :
n = max(log2(tp/ts/nmax),1)
k = 0 si (n - int(n))=0
k = 1 si (n - int(n))>0
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 14/22
Exemple 1 :
FAT16 (65536 clusters)
tp = 1256 Mo => 1317011456 octets
tp/ts/nmax = 39,25
log2(tp/ts/nmax) = 5,295..
int(log2(tp/ts/nmax))= 5
k=1
tm = 2^6*512 = 32768
Exemple 2 :
FAT16 (65536 clusters)
tp = 512 Mo => 536870912 octets
tp/ts/nmax = 16
log2(tp/ts/nmax) = 4
int(log2(tp/ts/nmax)) = 4
k=0
tm = 2^4*512 = 8192
Ainsi, sur une partition FAT16 de 2Go, les clusters faisant 32 ko, un fichier de 1 octet (oui, je sais, c'est
rare!) occupe malgré tout 32768 octets ! (32767 inutilisés). Un de 32800 occupera 65536 octets
(perte=32736) ...
Sur une FAT16 de 500 Mo, => clusters de 8192 octets, le même fichier de 32769 occupera 40960 octets
(perte=8160)
Plus les clusters sont gros, plus il y a de la perte d'espace (sauf si les tailles de TOUS les fichiers
sont exactement des multiples entiers de la taille des clusters, ce qui est statistiquement assez rare!)
Tableau récapitulatif
Taille partition
Taille des clusters
suivant le
type de partition
minimale maximale FAT16 FAT32
7 Mo
16 Mo
17 Mo
32 Mo
***** *****
NTFS
512 o
512 o
*****
512 o
64 Mo
1 ko
512 o
512 o
65 Mo
128 Mo
2 ko
1 ko
512 o
129 Mo
256 Mo
4 ko
2 ko
512 o
257 Mo
512 Mo
8 ko
4 ko
513 Mo
1 Go
1 Go
2 Go
32 ko
4 ko
2 ko
4 Go
64 ko
4 ko
4 ko
8 Go
*****
4 ko
4 ko
8 Go
16 Go
*****
8 ko
4 ko
16 Go
32 Go
*****
16 ko
4 ko
32 Go
2 To
*****
32 ko
4 ko
33 Mo
2 Go
4 Go
16 ko
4 ko
512 o
1 ko
Remarques :
•
•
plage 7 à 16 Mo : c'est FAT12 qui est utilisée (=> clusters de 2 ko)
sous Windows 2000 : on ne peut créer de FAT32 >32 Go, mais on peut utiliser des FAT32 > 32Go
créées par ailleurs (Windows 9x, Partitionneur,...).
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 15/22
Nombre maximum d'entrées à la racine d'une partition FAT
Le répertoire racine d'un disque formaté en FAT12 ou FAT16 est fixe, et dépend du type de support
(disque dur ou disquette)
En conséquence, le nombre de fichiers ou de répertoires que peut contenir le répertoire racine de ce
type de partitions est limité (ce qui n'est pas le cas avec la FAT32).
Support
Nombre maximum d'entrées
Disquette 1.44 M
(FAT12)
224
Disque dur
(FAT16)
512
Disque dur
(FAT32)
illimité
(seulement par la capacité du disque)
Structure d'une entrée de répertoire FAT et noms longs
La structure d'une entrée de répertoire (32 octets) est la suivante :
Nom court
Offset
(hexa)
Champ
Taille
(octets)
00 Nom de fichier
8
08 Extension
3
0B Attributs
1
0C Réservé
10
16 Heure
2
18 Date
2
1A 1er cluster
2
1C Taille fichier
4
total
32
Nom long
Offset
(hexa)
Champ
00 N° d'entrée
01 Nom UNICODE
Taille remarques
(octets)
1
10 =5 caractères
0B Attributs
1 toujours 0x0F
0C Checksum
2
0E Suite nom
12 =6 caractères
1A Réservé
2
1C Suite nom
4 =2 caractères
total
32
Une entrée de nom long peut donc contenir au maximum 13 caractères
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 16/22
L'octet d'attributs est ainsi défini :
Bit Attribut
7 réservé
6 réservé
5 archive
4 sous-répertoire
3 nom de volume
2 fichier système
1 fichier caché
0 fichier lecture seule
•
•
L'octet d'attribut d'un fichier ordinaire ("archive" seul) est égal à 0x20
Une entrée de nom long est caractérisée par un attribut dans lequel les 4 derniers bits sont
TOUS à 1 (volume, système, caché, lecture seule), soit 0x0F.
Un nom long sera défini sous la forme de PLUSIEURS entrées supplémentaires, qui vont PRÉCÉDER
l'entrée PRINCIPALE (= celle qui contient le nom court). L'ordre a énormément d'importance!
En particulier, il ne faut surtout pas utiliser un outil de TRI de nom de fichiers dans un répertoire (je
pense à l'antique "DS" - Directory Sort - des Norton Utilities des années 1985). Si on exécute un tel outil,
c'est le désordre assuré dans le répertoire!
Par ailleurs, le nom long est exclusivement représenté en UNICODE (2 octets par caractère).
Le 1er octet de l'entrée indique le n° d'ordre de l'entrée (0x01, 0x02, ...), la dernière entrée se voyant
le bit 6 mis à 1 (p.ex. 0x42 au lieu de 0x02)
Exemple :
Soit le fichier de nom : "La connaissance s'accroit quand on la partage.txt"
49 caractères au total => il faudra 4 entrées de nom de nom long, 52=4x13 étant
l'entier multiple de 13 immédiatement supérieur à 49.
Windows a déterminé comme nom court : "LACONN~1.TXT"
Pour cela, il prend les 6 premiers caractères du nom long en éliminant tout ce qui n'est
pas lettre ou chiffre (espace p.ex.), convertit en majuscules, ajoute le caractère tilde "~"
, puis un chiffre (en fonction de ce qui existe déjà comme noms de fichier), et enfin
rajoute la dernière extension (si elle existe)
Dans le répertoire contenant ce fichier, on trouve ceci :
Entrées
Offset
Octets
Transcription
00000100
nom
long (4) 00000110
44 61 00 72 00 74 00 61 00 67 00 0F 00 8C 65 00
2E 00 74 00 78 00 74 00 00 00 00 00 FF FF FF FF
Da.r.t.a.g....e.
..t.x.t.........
00000120
nom
long (3) 00000130
03 71 00 75 00 61 00 6E 00 64 00 0F 00 8C 20 00
6F 00 6E 00 20 00 6C 00 61 00 00 00 20 00 70 00
.q.u.a.n.d.... .
o.n. .l.a... .p.
00000140
nom
long (2) 00000150
02 63 00 65 00 20 00 73 00 27 00 0F 00 8C 61 00
63 00 63 00 72 00 6F 00 69 00 00 00 74 00 20 00
.c.e. .s.'....a.
c.c.r.o.i...t. .
00000160
nom
long (1) 00000170
01 4C 00 61 00 20 00 63 00 6F 00 0F 00 8C 6E 00
6E 00 61 00 69 00 73 00 73 00 00 00 61 00 6E 00
.L.a. .c.o....n.
n.a.i.s.s...a.n.
00000180
00000190
4C 41 43 4F 4E 4E 7E 31 54 58 54 20 00 27 25 8C
26 2A 26 2A 00 00 45 8C 26 2A FC 0A 33 00 00 00
LACONN~1TXT .'%.
&*&*..E.&*..3...
nom
court
Il y a 5 entrées au total :
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 17/22
1. En 0x0100, la 4ème et dernière entrée (nom long) :
o repérée par le 1er octet égal à 0x44
o attribut (offset 0x10B) égal à 0x0F
o texte (Unicode) "artage.txt"
2. En 0x0120, la 3ème entrée (nom long) :
o repérée par le 1er octet égal à 0x03
o attribut (offset 0x12B) égal à 0x0F
o texte (Unicode) "quand on la p"
3. En 0x0140, la 2ème entrée (nom long) :
o repérée par le 1er octet égal à 0x02
o attribut (offset 0x14B) égal à 0x0F
o texte (Unicode) "ce s'accroit"
4. En 0x0160, la 1ère entrée (nom long) :
o repérée par le 1er octet égal à 0x01
o attribut (offset 0x16B) égal à 0x0F
o texte (Unicode) "La connaissan"
5. En 0x0180, l'entrée principale (nom court) :
o attribut (offset 0x18B) égal à 0x20 (fichier archive)
o texte (ASCII) "LACONN~1.TXT"
NB: le point séparateur n'est jamais indiqué explicitement dans les
noms courts
Comparaison entre FAT(32) et NTFS
Comme son nom l'indique : NTFS = "New Technology File System"
Ce système de fichier est né avec Windows NT (1993) (mais il a évolué depuis 1993).
C'est le système de fichiers par excellence de Windows NT/2000/XP.
NTFS a été conçu pour combler les lacunes existant dans le système FAT ("File Allocation Table")
utilisé par DOS et Windows 95/98/ME.
NTFS est incomparablement supérieur à FAT !
FAT
C'est un système très "basique", composé de 3 parties (je fais abstraction du secteur de boot qui est
commun à tout système) :
•
•
•
une table des n° de clusters (la FAT proprement dite), en général doublée
un répertoire "racine"
la zone des données (fichiers et sous répertoires)
Un répertoire est un ensemble d'entrées de 32 octets, dans lequel on trouve diverses informations dont le
n° du 1er cluster.
A partir de ce n°, le système d'exploitation va lire la FAT, et à l'adresse correspondant à ce n° de cluster,
il trouve un code qui lui indique soit que le fichier n'a pas d'autres clusters, soit le n° du n° de cluster
suivant, et ainsi de suite.
NTFS
C'est un système de fichier SÉCURISÉ et JOURNALISÉ, bien avant EXT3FS ou ReiserFS du monde
Linux!
Cela veut dire qu'il possède une procédure de restauration du système de fichiers permettant de
reconstruire rapidement les données du disque après "plantage" du système.
•
Dès le départ, NTFS a su gérer des noms longs de fichiers (<255 caractères) (repris dans les
FAT 16 ou 32 de Windows 95/98/ME, au prix d'un bricolage innommable d'entrées
supplémentaires!!!)
Ces noms utilisent UNICODE, ce qui permet la conservation des noms quand les fichiers sont
copiés vers d'autres systèmes.
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
•
•
•
•
•
•
•
•
•
•
•
•
•
•
page 18/22
Etant compatible POSIX, NTFS sait distinguer minuscules/majuscules et mémorise la dernière
ouverture de fichier.
NTFS sait fixer des attributs aux fichiers tels que "exécution seule" (comme sous UNIX)
NTFS permet la tolérance de pannes (utilisation de "RAID5"), ce qui fait que dans un ensemble
de disques sur une machine, l'un d'eux peut tomber en panne sans que cela affecte le système ni
perde des données (il y a "reprise" automatique par les autres)
NTFS a été conçu DES LE DEPART pour être évolutif.
NTFS permet de fixer des droits très finement en ce qui concerne l'accès aux fichiers (lecture,
écriture, exécution, parcours de répertoire, ...), par personnes et/ou par groupe, ...
Les partitions NTFS sont limitées à 2^64 octets (= 18 446 744 073 709 551 616).
NTFS permet le chiffrement individuel des données
NTFS permet la gestion de quotas (dans le cas de plusieurs utilisateurs sur la même machine)
NTFS permet la création de liens symboliques (comme sous UNIX)
NTFS autorise la création de flux multiples (plusieurs flux de données pour le même fichier,
p.ex. un bitmap et sa miniature, un fichier Word et son résumé, ...)
NTFS gère les fichiers "clairsemés" (pour des fichiers de très grande taille, le système ne
réserve pas de place là où il y a une suite de zéros binaires). Très utile pour des fichiers vidéo par
exemple.
NTFS gère les points de montage (comme sous UNIX) de différentes unités physiques dans
une même arborescence logique.
NTFS tient à jour un journal des modifications.
NTFS permet la création de "reparse points" (je n'ai pas trouvé de traduction satisfaisante)
dont le rôle est de définir des attributs supplémentaires à des dossiers et fichiers.
Tout est sécurisé sous NTFS.
Par exemple, la MFT ("Master File Table", qui est un peu à NTFS ce que la table FAT est à une
partition FAT) possède une copie, mais située en plein milieu du disque, et susceptible de se
déplacer, en fonction de l'état physique du disque.
Le secteur de boot est également dupliqué (à la fin de la partition)
cf. davantage d'informations sur NTFS et sa MFT,
ainsi que sur le site Microsoft un très bon article à ce sujet (bien que datant de plus de 3 ans)
FAT (16 ou 32) n'est donc à conserver que :
•
•
si on a un système multiboot (partage de partitions avec des systèmes d'exploitation non "NT")
pour la partition de SWAP (fichier pagefile.sys).
En effet, dans une partition NTFS, la copie de la MFT se trouvant en plein milieu, cela
fragmenterait le fichier de swap en 2 parties, ce qui n'est pas bon au niveau performances.
Les différences de performances entre FAT et NTFS :
•
•
Lecture:
NTFS est plus rapide que FAT en lecture (car un index général réside dans la MFT, et les
fichiers < 1ko sont
copiés aussi dans la MFT)
Ecriture :
Par contre, NTFS est plus lent que FAT en écriture, compte tenu de toutes les informations de
sécurité, quota, chiffrement, flux, ... qu'il a à inscrire en plus des données.
Mais cela est un inconvénient minime, qui ne peut gêner que les "puristes" maniaques de la
nanoseconde! ;+))
Personnellement, à choisir, je préfère nettement un système lent et sûr à un système rapide mais
peu fiable!
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 19/22
Mécanisme de boot d'un PC
Le programme de partition, décrit précédemment, et situé à l'adresse 0000:7C00, :
1. identifie la partition active, définie soit par FDISK, par Windisk (NT), ou par un outil
comme System Commander.
2. détecte le système d'exploitation à lancer
3. se déplace à l'adresse 0000:0600
4. charge le secteur de boot correspondant à l'adresse 0000:7C00
5. lance le programme de boot qu'il contient, par un saut à l'adresse 0000:7C00
Ce (mini) programme cherche sur le disque un (ou deux) autre(s) programme(s) et lui passe la main.
Le nom de ce programme est également stocké dans le secteur de boot (à la fin généralement).
Ce(s) programme(s) s'appelle(nt) :
•
•
•
•
pour DOS : IO.SYS et MSDOS.SYS (ou IBM....COM )
pour Window 95/98 : IO.SYS (MSDOS.SYS n'étant plus qu'un fichier texte de config) +
WINBOOT.SYS
NB: ce dernier fichier est en réalité IO.SYS de Windows 95, renommé ainsi lors d'un démarrage
du précédent DOS
pour Windows NT : NTLDR (="NT" Loader)
pour LINUX : LILO (=Linux Loader)
Dans le cas de DOS, il contient la majeure partie de l'OS. Dans le cas de NT (et aussi de Linux), ce
programme n'est qu'une étape intermédiaire, avant de charger réellement l'OS.
•
•
•
Boot avec Windows NT installé :
le mécanisme complet de démarrage est décrit ailleurs ("Les séquences du démarrage de
Windows NT")
Boot avec DOS ou Windows 95/98 seul installé :
Il y a exécution de IO.SYS et MSDOS.SYS
Boot avec DOS et Windows 95/98 installés :
Dans le cas de Windows 95/98, si on a demandé de garder l'ancien système (DOS), la racine
contient les fichiers supplémentaires :
o MSDOS.DOS
o IO.DOS
o COMMAND.DOS
o AUTOEXEC.DOS
o CONFIG.DOS
Ce sont les 2 fichiers systèmes du précédent DOS (p.ex. 6.22), le processeur de commande et
les 2 fichiers de démarrage habituels AUTOEXEC.BAT et CONFIG.SYS, tous renommés car
Windows 95 utilise les mêmes. Quand on appuie sur la touche F8 lors du démarrage de Windows
95, on peut choisir de booter sur l'ancien OS (DOS). Dans ce cas, Windows 95 effectue les
opérations suivantes :
1) Renommage des fichiers Windows95
MSDOS.SYS
MSDOS.W40
IO.SYS
WINBOOT.SYS
COMMAND.COM
COMMAND.W40
AUTOEXEC.BAT
AUTOEXEC.W40
CONFIG.SYS
CONFIG.W40
2) Renommage des fichiers DOS
MSDOS.DOS
MSDOS.SYS
IO.DOS
IO.SYS
COMMAND.DOS
COMMAND.COM
AUTOEXEC.DOS
AUTOEXEC.BAT
CONFIG.DOS
CONFIG.SYS
Le contrôle est passé alors à IO.SYS "DOS", mais le secteur de boot n'est pas modifié. Ainsi, si on reboote
(donc sous DOS à ce moment là), le programme de boot va tester l'existence du fichier WINBOOT.SYS, et
c'est lui qui va être chargé à la place de IO.SYS. Le renommage des fichiers va alors être inversé
MSDOS.DOS, ....)
(MSDOS.SYS
NB : Si on a renommé ou détruit sous DOS le fichier winboot.sys, Windows 95 ne pourra pas démarrer
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 20/22
Le formatage bas niveau
C'est une opération magnétique, effectuée :
•
•
une seule fois pour toute en usine par le constructeur d'un disque dur
chaque fois qu'on formate une disquette (j'exclus le formatage rapide)
Le programme de formatage bas niveau détermine la taille de secteurs à utiliser (512 octets en principe),
le nombre de têtes, le nombre de pistes (ou cylindres) et le nombre de secteurs par piste, tout cela à
partir d'informations codées "électriquement" dans le disque dur par le constructeur.
Dans le cas d'une disquette, ces infos sont standardisées, fonction du type de support (p.ex. pour
les disquettes Haute Densité 3"1/2 : 512 octets par secteur, 2 têtes, 80 pistes,18 secteurs par piste, soit
1.44Mo de capacité), ou transmises en paramètres au programme :
format a: /F:taille /T:pistes /N:secteurs
Ce programme vérifie tous les secteurs un par un, en les magnétisant et en lisant le résultat, et stocke
sur le disque des informations d'erreur éventuelle et d'identification pour chaque secteur. En effet, un
secteur va être accédé par la suite par un n° logique, or ce n° ne correspond jamais à l'ordre physique
des secteurs, pour des questions de performances. Compte tenu de l'inertie du mécanisme et du temps
de lecture lui-même, quand on lit un secteur (LOGIQUE) donné, il est impossible de lire "posément" le
suivant immédiat (géométriquement parlant), car la tête a souvent dépassé le début! On est alors obligé
de faire un tour quasi complet.
Donc le suivant (LOGIQUE) a intérêt à être PHYSIQUEMENT plus loin (non contigu du précédent). Ce
décalage correspond à ce qu'on appelle le "facteur d'entrelacement" (Interleaving" en anglais). Il
dépend de la vitesse de rotation du disque et de la vitesse de traitement du contrôleur de disque. Par
exemple, un facteur de "6" signifie qu'il faut "sauter" 5 secteurs physiques après avoir accédé à un
secteur pour accéder au secteur logique suivant.
Donc une erreur sur ce facteur peut rendre le disque inutilisable.
C'est pourquoi le formatage bas niveau d'un disque dur :
•
•
•
est effectué par le constructeur, qui possède toutes les données relatives à son produit
NE DOIT PAS être effectué par l'utilisateur final, car les risques d'erreur sont beaucoup trop
grands.
NE DOIT être effectué par l'utilisateur final QUE SI le disque est vraiment "mort", et donc
dans ce cas on ne risque plus rien!
Ce programme varie suivant les disques, et est généralement fourni par le constructeur du disque (ou
disponible sur son site Web). Il est rarement interchangeable d'une marque à une autre. A ce stade, il
n'est encore question que de disque PHYSIQUE dans son ensemble, indépendamment de tout système
d'exploitation.
L’opération qui suit le formatage bas niveau est le partionnement, abondamment décrit plus haut.
Puis a lieu, pour chaque partition, le Formatage logique.
Il consiste en la "préparation" des zones de rangements (= les cloisons dans les compartiments créés) et
est effectué par l'outil FORMAT (sous DOS, Windows), WINDISK (sous NT), MKFS (sous Linux), ...
Ce cloisonnement va permettre d'organiser et de prévoir un "catalogue" (vierge au début) de tout ce
qu'on va mettre dans le compartiment par la suite. Cette organisation varie suivant les systèmes de
fichiers prévus (supportés par le système d'exploitation correspondant).
Si on prend le cas de DOS (ou Windows 9x), le formatage logique va créer successivement :
•
•
•
un secteur de démarrage (bootsector) (il y a un secteur de boot quel que soit le système : DOS,
Windows 9x, Windows 2000, Linux, BeOS,..)
une table de "localisation" (= la FAT) de tous les secteurs de chaque fichier, des secteurs
défectueux et des secteurs libres.
un catalogue principal (= le répertoire racine)
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 21/22
Les opérations de "préparation" d'un disque avant usage sont donc :
Disque dur :
•
•
•
formatage bas niveau (chez le constructeur, effectué UNE FOIS POUR
TOUTES, sauf accident grave)
partitionnement (par l'utilisateur, effectué en principe une fois, mais peut être
complété, mis à jour, éventuellement)
formatage logique de chaque partition (par l'utilisateur, effectué en principe
une fois, avant ou au cours de l'installation d'un système d'exploitation dans le
cas d'une partition système, une ou plusieurs fois dans le cas d'une partition non
système)
Disquette :
•
•
formatage bas niveau et, IMMÉDIATEMENT après, formatage logique (par
l'utilisateur, ou depuis quelques années maintenant par le fabricant).
Il n'y a pas de partitionnement sur une disquette, donc il n'y a pas de
MBR, car elle ne contient qu'une seule partition.
Les séquences du démarrage de Windows NT
1. Le secteur de boot lance le programme NTLDR
2. NTLDR recherche les fichiers suivants :
- BOOT.INI
- NTDETECT.COM
- NTBOODD.SYS (seulement dans le cas de disque SCSI, et si le BIOS de la carte SCSI a été
désactivé)
- BOOTSECT.DOS (éventuellement)
3. Il bascule le processeur en mode 386
4. Il lance un gestionnaire de fichiers très simple, basé sur l'INT13h (disque IDE) ou en utilisant
NTBOODD.SYS (disque SCSI)
5. Il lit BOOT.INI, affiche les options correspondantes à l'écran et attend le choix de l'utilisateur
6. Si NT n'a pas été choisi, il charge le fichier BOOTSECT.DOS (ou un autre si le nom d'un fichier
image de secteur de boot a été explicitement indiqué) à la place du secteur de boot initial, puis
lui passe le contrôle
7. Si NT a été choisi, il lance NTDETECT.COM, caractérisé par l'affichage à l'écran du message
suivant (ou similaire, suivant la version de NT)
"NTDETECT Vxxx checking Harware..."
8. NTDETECT.COM inspecte :
- le n° d'identification du PC
- la carte vidéo
- le type de clavier
- les ports séries et parallèles
- les lecteurs de disquettes
- la souris (si elle existe)
9. Ensuite il crée la partie du registre concernant le matériel.
Ces données, non permanentes, peuvent se retrouver dans la section
HKEY_LOCAL_MACHINE\Hardware
Cette section est donc reconstruite à chaque démarrage de l'ordinateur
10. Puis intervient le lancement du noyau :
- Chargement du "HAL" (Hardware Abstract Layer), qui permet au système d'être indépendant
du matériel, et de NTOSKRNL, qui va lire les données situées dans
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, afin de déterminer les drivers et
services à charger possédant un statut de démarrage "amorcé" (cf. Panneau de
configuration/Périphériques).
Cette phase est caractérisée par l'affichage à l'écran de "OS Loader Vxxx ........", chaque point
correspondant à un pilote.
11. Initialisation du noyau
L'écran devient bleu et passe en mode 50 lignes, avec affichage d'un message comme "
Microsoft Windows NT Version 4...."
Le noyau inspecte a nouveau la clef HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,
pour les pilotes possédant un statut de démarrage "système". Cette phase est caractérisée par
AFPA TMSI Châtellerault
Version du 17/Juillet/2002
partition-boot-2002
page 22/22
l'affichage à l'écran d'une suite de points, chaque point correspondant à un pilote. Un nouveau
"CurrentControlSet" est construit, mais non sauvegardé.
12. Chargement des services
Le gestionnaire de services (SMSS.EXE) est lancé, charge le sous-système Win32, et les services
possédant un statut de démarrage "automatique". Un nouveau "CurrentControlSet" est construit
13. Lancement du sous-système Windows
Une copie de "CurrentControlSet" est copiée dans "Dernière bonne configuration connue".,
WINLOGON.EXE est lancé, lequel inspecte la clef
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon et recherche la
valeur de l'entrée System, qui contient les noms des sous-systèmes( p.ex. ISASS.EXE,
gestionnaire de sécurité locale)
14. A ce moment apparaît (enfin!) la boite de dialogue invitant à appuyer sur CTRL-ALT-SUPP pour
démarrer une session
AFPA TMSI Châtellerault
Version du 17/Juillet/2002