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 : 

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)

L'opération de "partage", ou partitionnement, est effectuée par :

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 primaire Partition étendue
Partition logique Partition étendue
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é :

MBR

Partition 1
(primaire) (FAT)

Partition 2
(primaire) (FAT)

Partition 3
(étendue)

Partition 4
(primaire) (NTFS)

BS FAT Root Files BS FAT Root Files

EBR

Partition
logique 3.1

Partition
étendue 3.2

BS

MFT

Files

MFT bis Files BS bis
BS       EBR Partition logique 3.2.1 Partition 
étendue 3.2.2
BS       EBR Partition logique 3.2.2.1 ...
BS      
 
Abréviation Signification Commentaire
MBR Master Boot Record secteur de partition principal
EBR Extended Boot Record secteur de partition secondaire : contient la table des partitions d'une partition étendue
BS Boot Sector secteur de boot
Root répertoire racine Limité en taille sous FAT12 ou FAT16
FAT File Allocation Table table de chaînage de clusters (agrégats de secteurs) permettant l'adressage et la reconstitution des fichiers
a donné son nom au type de partition du même nom, utilisé par DOS, Windows 95/98, Windows NT
NTFS NT File Sytem système de fichiers utilisé par Windows NT/W2K/XP
MFT Master File Table composant important d'une partition NTFS. Contient la table des fichiers, index, droits,...


Ce disque (physique) est composé de :

On pourra attribuer p.ex. :

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...)

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
1BA Signature (sous Windows NT/2000/XP/2003) 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 :

Structure d'une entrée dans la table de partition

Adresse
(hexa)

Offset dans le 
MBR (ou EBR)
(hexa) Entrées :

Contenu

Taille
(octets)

1 2 3 4
00 1BE 1CE 1DE 1EE Etat de la partition :
- 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
08 1C6 1D6 1E6 1F6 Distance en secteurs entre secteur de partition
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.

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 et >
Linux R
Be OS R R
= supporté
= non supporté
= supporté mais à l'aide de produit tiers (driver, logiciel, ..)
  • 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
R = ReadOnly (Lecture seule)
ISO9660 = format standard des CDROM 

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 +   DRDOS 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

NTFS corrompue (NT)
Syrinx boot

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é
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
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 :

Explication de la zone vide de 7.8 Mo vue parfois sur un disque

Quand on examine un disque avec un outil de partitionnement (tel que Partition Magic ®) , on constate parfois la présence d'une zone vide, non formatée, de 7.8 Mo en début de disque.
Cette zone est inaccessible (on ne peut pas la supprimer).

(capture d'écran réalisée avec Server Magic ®)

Cela provient des règles et mécanismes mêmes de partitionnement d'un disque, évoqués précédemment.

On rappelle que dans un disque PHYSIQUE :

On a donc le schéma suivant d'un disque, organisé en "c" cylindres de "p" pistes par cylindre et de "s" secteurs par piste :

   

Disque de c cylindres

  pistes / cylindres C0 C1 ... Ci ... Cc-1
p pistes
par
cylindre
p0 S1/S2/.../Ss S1/S2/.../Ss ... S1/S2/.../Ss ... S1/S2/.../Ss
p1 S1/S2/.../Ss S1/S2/.../Ss ... S1/S2/.../Ss ... S1/S2/.../Ss
p2 S1/S2/.../Ss S1/S2/.../Ss ... S1/S2/.../Ss ... S1/S2/.../Ss
...

...

...

...

...

...

...

pp-1 S1/S2/.../Ss S1/S2/.../Ss ... S1/S2/.../Ss ... S1/S2/.../Ss

Le plus souvent :

nombre de cylindres du disque : c= variable (p.ex.553 pour 4.3 Go)
nombre de secteurs par piste : s= 63
nombre de pistes par cylindre : p= 255

Exemple 1 : cas d'un disque avec au moins une partition primaire

on aura les attributions de secteurs suivantes :

   

Disque de c cylindres

  pistes / cylindres C0 C1 ... Ci ... Cc-1
p pistes
par
cylindre
p0

MBR-------

PPPPPPPP ... XXXXXXXX ... S1/S2/.../Ss
p1 PPPPPPPP PPPPPPPP ... XXXXXXXX ... S1/S2/.../Ss
p2 PPPPPPPP PPPPPPPP ... XXXXXXXX ... S1/S2/.../Ss
...

...

...

...

...

...

...

pp-1 PPPPPPPP PPPPPPPP ... XXXXXXXX ... S1/S2/.../Ss
   

MBR + partition P

 

partition X

   

Commentaires :

Exemple 2 : disque sans partition primaire

on aura les attributions de secteurs suivantes :

   

Disque de c cylindres

  pistes / cylindres C0 C1 ... Ci ... Cc-1
p pistes
par
cylindre
p0

MBR-------

EBR------- ... LLLLLLLLL ... S1/S2/.../Ss
p1 ----------- LLLLLLLLL ... LLLLLLLLL ... S1/S2/.../Ss
p2 ----------- LLLLLLLLL ... LLLLLLLLL ... S1/S2/.../Ss
...

...

...

...

...

...

...

pp-1 ----------- LLLLLLLLL ... LLLLLLLLL ... S1/S2/.../Ss
   

MBR

EBR +
partition L
 

partition L

   

Commentaires :

Dans le cas de la plupart des disques, qui ont 63 secteurs par piste, 255 pistes par cylindre, cela donne :

cylindre 0 complet : 255 x 512 x 63 = 8225280 octets
piste 0 du cylindre 1 : 512 x 63 = 32256 octets

TOTAL :

= 8257536 octets
    soit 7,8 Mo
Voilà l'explication de cette zone de 7.8 Mo,
apparemment mystérieuse et que l'on ne peut pas supprimer!