Cette interruption logicielle, offerte par le BIOS (donc indépendante du système d'exploitation) est l'une des plus importante de toutes, car elle régit tout accès physique aux disques. Elle est appelée par le système d'exploitation et le système de fichiers pour accéder (en lecture et écriture) aux informations contenues sur les disques. Elle est dotée d'un ensemble de fonctions servant d'API (Application Programming Interface) aux autres programmes.
Chaque fonction est spécifiée par le contenu du registre AH.
Le nombre de ces fonctions a évolué avec le temps et les versions des BIOS,
certaines sont devenues obsolètes, et en particulier sont apparues récemment
(2 ans environ) des extensions permettant la gestion de disques de taille
supérieure à 8 Go. Ces fonctions ont les n° 41h à 49h et
4Eh (et
sont appelées EBIOS)
Si le BIOS ne possède pas ces
extensions, il est impossible de gérer des disques de plus de 8
Go.
Il faut donc, au choix :
Abréviations utilisées :
ECC : Error Checking and Correction Code
EBIOS : Extended Basic Input Output System (les extensions de
l'int13h)
DAP : Disk Address Packet
Exemples d'utilisation :
Lecture "normale" d'un (ou plusieurs) secteur(s) :
Registre Valeur Appel AH 02h AL nombre de secteurs à lire CH bits 0 à 7 du n° de cylindre CL bits 6 et 7 : bits 8 et 9 du n° de cylindre bits 0 à 5 n° de secteur (1 à 63) DH n° de tête DL n° de disque 80h = 1er disque
81h= 2ème disque
...ES:BX pointeur de réception des données Retour AH code de retour (0 si succès) AL complément du code de retour (si AH=11h) retenue 0 succès 1 erreur Soit le 2ème disque d'un PC ayant 800 cylindres 255 têtes 63 secteurs par pistes.
On veut atteindre, sur le cylindre 524, tête 163, le secteur 47 (valeurs décimales)
(soit, en hexadécimal : 20C - A3 - 2F, ou en binaire 10 0000 1100 pour le n° de cylindre, 1010 0011 pour le n° de tête et 10 1111 pour le n° de secteur)
On aura donc (valeurs en hexadécimal) :
AH = 02
CH = 0C (partie basse du n° de cylindre)
CL = AF ( (10) venant du n° de cylindre et (10 1111) venant du n° de secteur )
DH = A3 (n° de tête)
DL = 81 (2ème disque)
ES:BX = (adresse du buffer)
Lecture "étendue" d'un (ou plusieurs) secteur(s) :
Registre Valeur Appel AH 42h DL n° de disque 80h = 1er disque
81h= 2ème disque
...DS:SI pointeur du DAP Retour AH code de retour (0 si succès) retenue 0 succès 1 erreur Description du DAP :
offset taille
(octets)rôle 00 1 taille de la structure en octets
(en principe doit être égale à 16, soit 10h)01 1 inutilisé (0) 02 1 nombre de secteurs à traiter
entre 1 et 12703 1 inutilisé (0) 04 2 offset du bloc mémoire pour le transfert 06 2 segment du bloc mémoire pour le transfert 08 8 n° logique absolu du 1er secteur à transférer,
compté à partir du début du disque physique (0)En reprenant le même exemple que précédemment (800 cylindres 255 têtes 63 secteurs par pistes).
Pour atteindre sur le cylindre 524, tête 163, le secteur 47 (valeurs décimales) :
En CTS, les cylindre et têtes sont numérotés à partir de 0, les secteurs à partir de 1.
En LBA, le 1er secteur a le n° logique 0
Ce secteur a le n° absolu : ((523 x 255)+162)x 63+ 46 = 8412247 (805C57h)
On aura donc (valeurs en hexadécimal) :
AH = 42
DL = 81 (2ème disque)
DS:SI = (adresse du DAP)
Contenu du DAP :
00 : 10
01 : 00
02 : 01 (1 secteur)
03 : 00
04 : xxxx (offset du buffer)
06 : xxxx (segment du buffer)
08 : 0000000000805C57
Dans les 2 cas (lecture "normale"
et lecture "étendue") on obtient le même résultat tant que
le n° de cylindre ne dépasse pas 1023.Au delà de cette valeur, il faut obligatoirement utiliser la lecture
étendue.
C'est pourquoi, dans le cas de disques ou partitions dépassant 8 Go (ce
qui implique des n° de cylindre>1023), les données CHS de la table de
partition du MBR (ou d'un EBR) sont fausses, et seules les informations
de n° de secteur et taille de partition sont utilisables, et donc
le recours aux extensions de l'interruption 13h est obligatoire.
On peut être amené à s'interroger sur la présence ou non des extensions
de l'interruption 13h dans le BIOS d'un système, ces extensions
conditionnant l'usage de disques de plus de 8Go..
Western Digital a conçu un ensemble d'utilitaires gratuits,
fonctionnant sous DOS, permettant de répondre à ce genre de question.
L'ensemble s'appelle WD's
32-Bit Pack Il contient en particulier l'outil WDTBLCHK.EXE,
dont voici un exemple de résultats :
WDTBLCHK 2.30 - Show Drive And System Info
(C) Copyright 1994-98 Western Digital Corporation
Drives Physically Detected: 1
Drives Reported By INT 13 : 1
[...]
>>>>>>>>>>>>>>>>>>>> INT 13 INFO: <<<<<<<<<<<<<<<<<<<<
INT 13 FUNCTION 8:
DRV ACTIVE CYL HDS SPT SZ(MB)
1 YES 1023 255 63 8414
2 NO 0 0 0 0
3 NO 0 0 0 0
4 NO 0 0 0 0
INT 13 FUNCTION 41/48 (EXTENSIONS):
DRV ACTIVE F41 F48 CYL HDS SPT SECTORS SZ(MB)
1 YES YES YES 17475 15 63 19640880 10056
2 NO NO NO ** NOT VALID ** ******* ******
3 NO NO NO ** NOT VALID ** ******* ******
4 NO NO NO ** NOT VALID ** ******* ******
[...]
>>>>>>>>>>>>>>>>>>> TRANSLATE INFO: <<<<<<<<<<<<<<<<<<
TRANSLATE MODE
DRIVE 1: LBA
DRIVE 2: DRIVE NOT ACTIVE
DRIVE 3: DRIVE NOT ACTIVE
DRIVE 4: DRIVE NOT ACTIVE
On a vu plus haut que l'accès à 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.
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
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 :
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 GoSous 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
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
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).
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)
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 FAT32 NTFS DOS 6.x 2 Go Win9X/ME 2 Go 128 Go NT4 4 Go 128 Go W2000/XP 4 Go 32 Go
*128 Go128 Go * : si créée sous Win9X/ME
En ce qui concerne
les disques de taille > 128 Go,
se reporter au chapitre qui leur est consacré plus
bas dans ce document.
Adresse (hexa) |
Contenu |
Taille |
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 |
013 | Nbre de secteurs dans le volume (variable) ou 0 si la partition est trop grande |
2 |
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) | 4 |
02B | Nom de volume (identique à celui figurant dans le répertoire racine) | 11 |
036 | Chaîne décrivant l e système de fichiers ("FAT12", "FAT16") | 8 |
03E à 1FD |
Routine de boot | 448 |
1FE | AA55 (code d'identification, id.secteur de partition) | 2 |
Remarques :
Adresse (hexa) |
Contenu |
Taille |
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 |
013 | Nbre de secteurs dans le volume (variable) ou 0 si la partition est trop grande |
2 |
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 | 12 |
040 à 1FD |
Routine de boot | 446 |
1FE | AA55 (code d'identification, id.secteur de partition) | 2 |
Remarques :
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.
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.
En définissant :
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
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!)
Taille partition
Taille des clusters suivant le
type de partitionminimale maximale FAT16 FAT32 NTFS 7 Mo 16 Mo ***** ***** 512 o 17 Mo 32 Mo 512 o ***** 512 o 33 Mo 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 512 o 513 Mo 1 Go 16 ko 4 ko 1 ko 1 Go 2 Go 32 ko 4 ko 2 ko 2 Go 4 Go 64 ko 4 ko 4 ko 4 Go 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
Remarques :
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éesDisquette 1.44 M
(FAT12)224
Disque dur
(FAT16)512
Disque dur
(FAT32)illimité
(seulement par
la capacité du disque)
Il n'y a pas de limitation dans une partition NTFS
Le nombre maximum de fichiers et dossiers dépend du type de partition.
Le nombre de fichiers ou dossiers dans un répertoire est
limité par la taille maximale d'un répertoire, qui est égale à
2^32 octets (la taille d'un fichier est codée sur 32 bits,
voir ci-dessous)
Étant donné qu'une entrée de répertoire utilise 32 octets, cela donne
2^32 /32 = 134 217 728 entrées
Mais cela ne signifie pas autant de fichiers, en raison des
noms longs de fichiers.
En effet, si on prend le cas (extrême) d'un fichier ayant un nom
de 254 caractères, il occupera dans le répertoire le contenant :
254 /13 (arrondi à la valeur supérieure) soit :
20 entrées pour le nom long
+ 1 entrée pour le nom court
soit un total de 21 entrées.
Cela ramène donc le nombre de fichiers à 6 391 320
(c'est un minimum, car heureusement tous les fichiers ne font pas 254
caractères!)
Mais il y a une autre limitation, qui est celle du nombre de
fichiers par partition, en raison du nombre maximum de clusters :
partition clusters fichiers FAT16 2^16-1 65 535 FAT32 2^22-1 4 194 303 (NB: NT4 n'est pas concerné par FAT32)
La seule limitation est celle due au nombre maximum de clusters :
partition clusters fichiers NFTS 2^32-1 4 294 967 295
Un fichier ne peut pas dépasser 2^32 octets, soit 4 Go, car la taille d'un fichier est stockée sur 4 octets dans l'entrée correspondante du répertoire qui le contient.
Un fichier ne peut pas dépasser 2^44 octets - 64 koctets, soit un peu moins de 16 To
On peut être surpris de voir la taille maximale de fichier (16 To)
supérieure à la taille maximale de disque (2 To).
Cela est du aux limitations supplémentaires sur la taille d'un disque (bits
réservés dans l'adressage d'un secteur,...).
La taille théorique maximale d'un disque NTFS est non pas de 2 To
mais de 2^64 soit 16777216 To !
La structure d'une entrée de répertoire (32 octets) est la suivante :
Nom court | Nom long | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Une entrée de nom long peut donc |
Une entrée de nom long
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 nom
long (4)00000100
0000011044 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 FFDa.r.t.a.g....e.
..t.x.t.........nom
long (3)00000120
0000013003 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.nom
long (2)00000140
0000015002 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. .nom
long (1)00000160
0000017001 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.nom
court00000180
000001904C 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 00LACONN~1TXT .'%.
&*&*..E.&*..3...Il y a 5 entrées au total :
- En 0x0100, la 4ème et dernière entrée (nom long) :
- repérée par le 1er octet égal à 0x44
- attribut (offset 0x10B) égal à 0x0F
- texte (Unicode) "artage.txt"
- En 0x0120, la 3ème entrée (nom long) :
- repérée par le 1er octet égal à 0x03
- attribut (offset 0x12B) égal à 0x0F
- texte (Unicode) "quand on la p"
- En 0x0140, la 2ème entrée (nom long) :
- repérée par le 1er octet égal à 0x02
- attribut (offset 0x14B) égal à 0x0F
- texte (Unicode) "ce s'accroit"
- En 0x0160, la 1ère entrée (nom long) :
- repérée par le 1er octet égal à 0x01
- attribut (offset 0x16B) égal à 0x0F
- texte (Unicode) "La connaissan"
- En 0x0180, l'entrée principale (nom court) :
- attribut (offset 0x18B) égal à 0x20 (fichier archive)
- texte (ASCII) "LACONN~1.TXT"
NB: le point séparateur n'est jamais indiqué explicitement dans les noms courts
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 !
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) :
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.
cf. davantage d'informations sur
FAT16 et FAT32
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.
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)
Depuis début 2002 environ sont apparus dans le commerce (Maxtor,
Seagate, ..) des disques de capacité dépassant 128 Go.
Or cela peut causer des problèmes avec les systèmes d'exploitation
usuels.
En effet, pour gérer (physiquement) les disques, le mode LBA (Logical Block Adressing), contenu dans les extensions de l'int13h du BIOS, réalise l'adressage (physique) d'un secteur via un mot de 28 bits (théoriquement 32, mais les 4 bits de poids fort sont réservés), si bien que la taille maximale d'un disque est avec ce système égale à 2^28 x 512 octets, soit :
= 137 438 953 472 octets,
= 131 072 Mo
= 128 Go
Pour pouvoir dépasser cette limite, il faut changer le mode d'adressage (de la même façon que NT4 fonctionnant au départ en mode CHS, c'est à dire 1024 cylindres de 255 pistes de 63 octets, ne pouvait pas adresser plus de 7.8 Go tant qu'on n'avait pas remplacé le driver ATAPI.SYS, mis à jour dans le SP4).
Donc avec le système actuel, il est IMPOSSIBLE d'utiliser un disque de taille > 128 Go!
Et il est totalement vain d'envisager, par exemple, la création de
plusieurs partitions de tailles inférieures à 128 Go, puisque TOUT ce qui
dépasse 128 Go est IGNORÉ! (tout comme du temps "CHS"
sous DOS ou NT4
tout ce qui dépassait 8 Go était là aussi ignoré)
Pour lever la limite des 128 Go, l'ANSI NCITS T13 Technical Committee a édité
une nouvelle norme appelée :
ATA Attachment - 6 with Packet Interface revision 3b
(document PDF de 496 pages!)
Big Drive
ATA/ATAPI-6
ATA 133
Dans cette norme l'adressage d'un secteur est fait sur 48 bits
(au lieu de 28).
La taille maximale d'un disque devient donc égale à 2^48 x 512 octets, soit :
= 144 115 188 075 855 872 octets
= 137 438 953 472 Mo
= 134 217 728 Go
= 131 072 To (Téraoctets)
= 128 Po (Pétaoctets)
Voici ce que dit Maxtor (un des premiers fabricants de disques de capacité > 128 Go) à ce sujet :
En raison de limitations dans Windows et de nombreux types de BIOS système, partitionner et formater des disques durs plus grands que 137 Gigaoctets sans le support adéquat de pilotes ou d'un contrôleur CAUSERA DES PERTES DE DONNEES lorsque la capacité au delà de la barrière des 137 Go sera utilisée.
Si votre carte mère a un jeu de puces Intel (810, 810E, 810E2, 815, 815, 815E, 815EP, 815P, 820, 820E, 830M, 830MP, 830MG, 840, 845, 850, ou 860) veuillez visiter http://www.intel.com/support/chipsets/iaa/ et télécharger le logiciel d' Intel "Application Accelerator".
Ce logiciel supporte la capacité totale des disques plus grands que 137 Go.
Si votre carte mère n'a pas un jeu de puces Intel, il est recommandé d'acheter une carte PCI Ultra ATA 133 supportant l'Adressage de Blocs Logiques 48 bits (LBA).
la version multi-langues de "Application Accelerator"
est disponible à l'adresse suivante :
ftp://aiedownload.intel.com/df-support/4857/a08/iaa23_multi.exe&URL=/4857/a08/iaa23_multi.exe
D'après le MSDN, les versions suivantes de Windows supportent le mode LBA 48 bits, sous réserve que le BIOS supporte ce mode :
[...]If the system BIOS for the computer does not support 48-bit LBA, the
BIOS will report a capacity for the hard disk equal to 128 GB, although the
actual capacity may be larger. In this case, Fdisk.exe is limited to the disk capacity as reported by the BIOS, and cannot use sectors larger than 128 GB on the hard disk. RESOLUTION : Update the system BIOS if possible. |
activent automatiquement le mode LBA 48 bits.
- Windows 2000 (jusqu'au SP2)
- Windows XP (sans SP)
par défaut, cette fonctionnalité n'est pas activée.
Il faut le faire manuellement, par ajout d'une entrée dans la Base de Registres.
Clef : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Atapi\Parameters\ Entrée : EnableBigLba Type : REG_DWORD Valeur : 0x00000001 Cette modification est disponible ici sous la forme d'un fichier 128Go.reg à fusionner dans la BDR depuis l'explorateur :
(fichier 128Go.reg 118 octets)Maxtor fourni aussi un utilitaire qui effectue cette modification de la Base de Registres
A ce sujet, Maxtor a mal interprété l'article de Microsoft (comme je l'avais fait auparavant)
On lit sur http://www.maxtor.com/en/support/downloads/big_drive_enabler.htm :
Maxtor's Big Drive Enabler is a one step executable that enables support for drives larger than 137 Gigabytes in Windows 2000 Service Pack 3 and XP Service Pack 1. Or l'article 303013 (en anglais) du MSDN dit ceci :
The preceding registry setting is ignored in Windows XP SP1 and later.
Si on a un disque > 128 Go et si on a activé ce mode via l'installation d'un service pack :
- le SP3 (Windows 2000)
- le SP1 (Windows XP)
il ne faut pas désinstaller le SP, sinon on s'expose à des pertes de données
On rencontre souvent les 2 valeurs "137 Go" et "128 Go"
Cela provient de l'éternelle confusion entre :
"milliers décimaux" (= 1000)
"milliers informatiques" (= 1024)
Comme on a pu le voir plus haut, La taille maximale en LBA standard est égale à 137 438 953 472 octets, ce qui peut se lire :
soit comme "137 milliards d'octets" (sous-entendu "décimaux")
soit comme "128 Gigaoctets" (sous-entendu "informatiques")
Evidemment, un commercial préférera la version "décimale", plus flatteuse ! ;+))
L'expression conforme est 128 Go.
Il existe depuis plus de 20 ans des normes concernant les disques durs (capacités et modes de transfert).
Elles ont la dénomination ATA, suivies d'un numéro (1 à
7 actuellement).
Le nom de chaque norme possède très souvent de nombreux synonymes,
sources de confusions fréquentes!
Sigles | Significations | Remarques |
AT | Advanced Technology | Appellation due à IBM pour désigner (en 1984) ses "nouveaux" PC à base de processeurs 80286. |
ATA | Advanced Technology Attachments | Normes de stockage de l'information sur disques durs (et CDROM et bandes) |
IDE | Integrated Drive Electronics | Norme initiale (apparue avant ATA, puis reprise dans ATA) |
EIDE | Enhanced Integrated Drive Electronics | Norme intermédiaire (apparue avant ATA, puis reprise dans ATA) |
ATAPI | ATA Packet Interface | Standard de configuration de lecteurs de CDROM et bandes magnétiques |
PIO | Programmed Input/Output | Transferts de données réalisés par le processeur |
DMA | Direct Memory Access |
Accès direct entre la mémoire et un périphérique, sans passer par le processeur |
UDMA | Ultra Direct Memory Access | Analogue à DMA, mais plus rapide |
LBA | Logical Block Addressing |
Norme d'adressage des secteurs d'un disque, s'effectuant par un nombre unique ("à plat") codé :
|
SMART | Self-Monitoring, Analysis, and Reporting Technology | Technologie servant à éviter des pertes de données en détectant et signalant des dysfonctionnements d'un disque dur. Cela requiert généralement des logiciels de tierce partie pour être utilisable. |
INCITS | InterNational Committee for Information Technology Standard | Organisme international de standardisation dans les domaines du stockage, traitement, transfert, affichage, gestion, organisation récupération de l'information. Il est accrédité par l'ANSI (American National Standards Institute) |
T13 | Nom du groupe de l'INCITS consacré à ATA (créé en décembre 1995) |
La colonne Date indique l'année à laquelle la norme a commencé à être envisagée, et non pas la date officielle de publication.
Norme | Nom officiel | Synonymes | Date | Modes supportés | Débits maximums (Mo/s) |
Nombre de
conducteurs du connecteur |
Remarques |
ATA-1 | ANSI X3.221-1994 | IDE | 1981 |
PIO mode 0 PIO mode 1 PIO mode 2 DMA Mode 0 |
3.33 4.16 5.22 8.33 |
40 | |
ATA-2 | ANSI X3.279-1996 |
EIDE Fast ATA |
1994 |
PIO mode 3 PIO mode 4 DMA mode 1 DMA mode 2 |
11.1 13.3 16.6 16.6 |
40 | Introduit le mode LBA (28 bits) |
ATA-3 | ANSI X3.298-1997 | 1996 |
PIO mode 3 PIO mode 4 DMA mode 1 DMA mode 2 |
11.1 13.3 16.6 16.6 |
40 | Ajoute, par rapport à ATA-2, la technologie SMART | |
ATA/ATAPI-4 | ANSI NCITS 317-1998 | UDMA 33 ATA/33 | 1997 |
UDMA mode 0 UDMA mode 1 UDMA mode 2 |
16.6 25.0 33.3 |
40 | Ajoute de nouvelles commandes ATAPI et un nouveau protocole de transfert Ultra DMA, avec contrôle d'intégrité des données (CRC) |
ATA/ATAPI-5 | ANSI NCITS 340-2000 | UDMA 66 ATA/66 | 1999 | UDMA mode 3 UDMA mode 4 |
44.4 66.6 |
80 |
Début du projet nommé
T13 Le doublement des conducteurs sert à limiter les "EMI" (electro-magnetic interference ) par insertion d'un conducteur de masse entre chaque conducteur, faisant ainsi office de blindage. |
ATA/ATAPI-6 | ANSI NCITS 361-2002 |
UDMA 100 ATA/100 |
2000 | UDMA mode 5 |
100 |
80 |
Finalisation du projet
T13 Passe le LBA de 28 à 48 bits (64 prévus), ce qui autorise des disques de capacité > 128 Go l'utilisation de disques > 128 Go nécessite certaines précautions au niveau du système d'exploitation pour que cette capacité soit reconnue! |
ATA/ATAPI-7 |
ANSI NCITS nnn-200x (en cours) |
UDMA 133 ATA/133 |
2003 (?) |
UDMA mode 6 | 133 | Introduit la nouvelle interface série SATA (Serial ATA) NB: ce n'est pas encore un standard! |
la norme ATA/ATAPI-7
bien que non finalisée à la date de rédaction de ce document est déjà
utilisée avec les disques ATA/133 spécification citée au préalable dans
ATA/ATAPI-6.