Cette sous-section introduit les termes concernant les disques durs. Si vous les connaissez déjà ces termes et tous les concepts, vous pouvez ne pas la lire.
La figure 3.1 montre une image schématique des parties importantes d'un disque dur. Un disque dur est composé d'un ou plusieurs plateaux circulaires3.2, dont l'une ou les deux surfaces sont recouvertes d'un matériau magnétique utilisé pour enregistrer les données. Une tête de lecture-écriture par surface examine, ou modifie, les données enregistrées. Les plateaux tournent autour d'un axe commun, à une vitesse de l'ordre de 3600 tours par minute, bien que les disques hautes performances aient des vitesses encore supérieures. Les têtes se déplacent radialement par rapport aux plateaux ; ce mouvement, combiné avec la rotation des plateaux permet aux têtes d'accéder à toutes les parties des surfaces.
Le processeur (CPU) et le disque communiquent via un contrôleur disque. Cela dispense le reste du système de savoir comment utiliser le disque puisque les contrôleurs des différents types de disques utilisent la même interface vers le reste de l'ordinateur. Ainsi, l'ordinateur peut simplement dire << Hé, le disque : donne-moi ce que je veux >>, au lieu de produire de longues et complexes séries de signaux électriques pour déplacer les têtes au bon endroit, d'attendre que la position correcte vienne sous la tête et de faire tous les autres trucs déplaisants nécessaires. (En réalité, l'interface avec le contrôleur est plutôt compliquée, mais bien moins que si elle n'existait pas.) Le contrôleur peut remplir aussi d'autres fonctions comme << cacher >> le disque ou remplacer automatiquement un secteur défectueux.
La description ci-dessus suffit généralement pour comprendre le partie matérielle. Il y a aussi une foule d'autres choses, comme le moteur qui fait tourner les plateaux et déplace les têtes, et l'électronique qui commande les opérations des parties mécaniques, mais tout ceci n'est pas nécessaire pour comprendre le principe de fonctionnement d'un disque dur.
Les surfaces sont généralement divisées en cercles concentriques, appelés pistes, et celles-ci sont à leur tour divisées en secteurs. Ce découpage est utilisé pour spécifier les emplacements sur le disque et pour permettre l'allocation d'espace disque aux fichiers. Pour trouver un emplacement donné sur le disque dur, on peut dire : << surface 3, piste 5, secteur 7 >>. En général, le nombre de secteurs est le même pour toutes les pistes, mais certains disques durs en mettent d'avantage dans les pistes extérieures (tous les secteurs ont la même taille physique, et donc on peut en mettre plus dans les pistes extérieures qui sont plus longues). Typiquement, un secteur contient 512 octets de données. Le disque lui-même ne peut gérer des volumes de données inférieurs à un secteur.
Chaque surface est divisée en pistes (et en secteurs) de la même façon. Ceci signifie que lorsque la tête d'une surface est sur une piste, les têtes des autres surfaces sont aussi sur les pistes correspondantes. Toutes ces pistes prises ensemble forment un cylindre. Déplacer les têtes d'une piste (cylindre) à une autre exige un certain laps de temps : en plaçant les données souvent accédées ensemble (par exemple, un fichier) de façon à ce qu'elles soient sur le même cylindre, on n'a donc plus besoin de déplacer les têtes pour lire l'ensemble du fichier. Ceci accroît les performances. Il n'est pas toujours possible de placer les données de cette façon ; les fichiers dont les tronçons sont stockés en plusieurs endroits du disque sont dits fragmentés.
Le nombre de surfaces (ou de têtes, ce qui est la même chose), de cylindres et de secteurs varie beaucoup ; la spécification de chacun de ces nombres est appelée géométrie d'un disque dur. Sur un PC, a géométrie est généralement stockée dans une mémoire spéciale, sauvegardée par batterie et appelée RAM CMOS, que le système d'exploitation peut consulter au moment du lancement du système ou lors de l'initialisation du pilote.
Malheureusement, le BIOS3.3 du PC possède une limitation dans sa conception, qui interdit de spécifier un numéro de piste supérieur à 1024 dans la RAM CMOS, ce qui est insuffisant pour un gros disque. Pour contourner cela, le contrôleur du disque dur ment à propos de la géométrie, et traduit les adresses données par l'ordinateur en quelque chose qui correspond à la réalité. Par exemple, un disque dur peut avoir 8 têtes, 2048 pistes, et 35 secteurs par piste3.4. Son contrôleur peut mentir à l'ordinateur et prétendre qu'il a 16 têtes, 1024 pistes et 35 secteurs par piste, n'excédant ainsi pas la limite sur les pistes, et traduire les adresses que l'ordinateur lui donne en divisant par 2 le numéro de tête et en doublant le numéro de piste. En réalité, le calcul peut être plus compliqué car les nombres ne sont pas aussi pratiques qu'ici (mais, encore une fois, les détails ne sont pas nécessaires pour comprendre le principe). Cette traduction modifie la vue qu'a le système d'exploitation de l'organisation du disque, rendant ainsi impraticable l'astuce consistant à mettre toutes les données sur un seul cylindre pour améliorer les performances.
La traduction n'intervient que pour les disques IDE. Les disques SCSI utilisent un numéro de secteur séquentiel (le contrôleur traduit un numéro séquentiel de secteur en un triplet tête, cylindre et secteur), et une méthode complètement différente pour les échanges entre le CPU et le contrôleur. Les disques SCSI sont donc isolés du problème. On notera, toutefois, que l'ordinateur peut quand même ne pas connaître la géométrie réelle d'un disque SCSI.
Puisque Linux ne connaît souvent pas la géométrie réelle d'un disque, ses systèmes de fichiers n'essaient même pas de stocker le contenu de chaque fichier sur un nombre minimal de cylindres distincts. Au lieu de cela, il essaie d'assigner des secteurs consécutifs aux fichiers, ce qui donne presque toujours des performances similaires. La question est encore compliquée par les caches du contrôleur et les lectures anticipées qu'il fait automatiquement.
Chaque disque dur est représenté par un fichier spécial distinct. Il peut (généralement) n'y avoir que deux ou quatre disques durs IDE. Ils sont désignés, respectivement, par /dev/hda, /dev/hdb, /dev/hdc, et /dev/hdd. Les disques durs SCSI sont désignés par /dev/sda, /dev/sdb, et ainsi de suite. Des conventions similaires existent pour désigner les autres types de disque durs ; voir [Anv] pour plus d'informations. On notera que les fichiers pilotes des disques durs donnent accès au disque entier, sans tenir compte des partitions (qui seront étudiées plus loin), et qu'il est facile de semer la pagaille dans les partitions ou les données si l'on n'y prend pas garde. Les fichiers pilotes des disques sont généralement uniquement utilisés pour accéder au << master boot record >> (qui sera aussi étudié plus tard).