Ce qui se passe lorsque les données sont écrites sur un disque SSD mérite plusieurs articles (bon résumé ici ), car il est très compliqué et dépend de la technologie sous-jacente. L'histoire courte est que les SSD en général ne peuvent pas écrire zéro bit dans la mémoire. Au lieu de cela, ils doivent mettre à zéro (effacer) toute une section de mémoire, puis ils peuvent stocker des données après cela en les écrivant simplement. Généralement, ces jours-ci, ils écrivent des blocs de 512 octets mais effacent une page de 8 blocs, ce qui correspond à 4096. Cela, et le fait que chaque cycle d'écriture / effacement entraîne une certaine usure physique de la mémoire et que la mémoire finit par s'user, rend les SSD très différents que de faire tourner des disques durs magnétiques.
Mis à part cela, les disques SATA (et les disques AFAIK SAS) n'implémentent pas de commande native pour copier les données d'un secteur à un autre. (Ou du moins, rien dans les spécifications SATA ou SAS ne l'exige, donc le système d'exploitation ne peut pas compter sur une telle commande étant disponible.) Ainsi, une copie de fichier sur une partition impliquera la lecture des données d'un secteur de lecteur dans la mémoire hôte, puis l'écriture il revient sur le lecteur dans un secteur différent.
En effet, en ce qui concerne le système d'exploitation, un lecteur est un ensemble de secteurs logiques numérotés, et tout ce qu'il peut faire est de lire des secteurs et d'écrire dans des secteurs. Le système d'exploitation ne peut pas dire au lecteur de remapper les secteurs.
De plus, le système de fichiers (HFS +, NTFS, ext3, etc.) est un ensemble de structures de données qui imposent l'ordre sur un ensemble de blocs logiques. Ces structures de données implémentent des "fichiers", "noms de fichiers", "répertoires", "autorisations", etc. Donc, oui, lorsque vous déplacez un fichier d'un répertoire à un autre, il n'est pas copié; seules les données du système de fichiers indiquant dans quel répertoire se trouve le fichier sont mises à jour.
Le concept d'une partition est qu'il s'agit d'un ensemble de secteurs logiques sur le disque revendiqué par un système de fichiers unique. Le corollaire à cela est qu'un système de fichiers peut ne pas accéder aux secteurs en dehors de sa partition. Il s'agit en grande partie d'une fonction de sécurité, mais elle découle également du fait que les structures de données du système de fichiers sont toutes construites autour de la prise en compte de chaque secteur du lecteur appartenant au système de fichiers, et il n'est pas trivial d'ajouter ou de supprimer des secteurs à ces structures. C'est pourquoi vous devez exécuter des routines spéciales pour ajuster la taille d'une partition et aussi pourquoi les systèmes de fichiers insistent pour s'exécuter sur un ensemble contigu de secteurs.
Il est donc peu pratique et dangereux d'implémenter une copie de fichier en transférant simplement des secteurs d'un système de fichiers à un autre. Sur un lecteur magnétique en rotation, ce serait également un cauchemar pour les performances, car bien que le lecteur fasse des exceptions pour les secteurs défectueux, il prévoit généralement que les secteurs soient physiquement situés de manière à optimiser la vitesse de lecture et d'écriture des numéros numérotés consécutivement. secteurs.
De plus, 2 systèmes de fichiers peuvent ne pas stocker les données de fichiers de la même manière sur le disque, ce qui signifie que l'échange de secteurs ne fonctionnerait pas même si c'était pratique. Même s'ils sont exactement les mêmes types de système de fichiers, par exemple NTFS, l'un peut utiliser le chiffrement ou la compression et l'autre non, ou les deux peuvent chiffrer les données, mais avec des clés différentes. Il n'est pas obligatoire que les données du fichier correspondent exactement à ce qui est stocké sur le disque, tout ce qui doit être stocké est une transformation réversible des données, afin que le système de fichiers puisse obtenir les données du fichier en faisant quelque chose avec les données sur le disque. Donc, à moins que les deux systèmes de fichiers n'utilisent exactement la même transformation, le simple échange de secteurs n'atteindrait pas l'objectif de transfert des données de fichier.
Pour toutes ces raisons, il est tout simplement trop de travail pour trop peu de gain pour les rédacteurs de système d'exploitation et les rédacteurs de système de fichiers d'implémenter une fonctionnalité qui optimise les déplacements sur les partitions pour les SSD. Ainsi, tout mouvement entre partitions sera une lecture et une écriture.
À l'intérieur du SSD, c'est une histoire légèrement différente. Bien que le système d'exploitation n'ait pas indiqué au lecteur qu'il copiait les données d'un endroit à un autre, les écritures sur les SSD sont si chères (et compliquées) que les contrôleurs SSD font beaucoup de travail pour minimiser les écritures. Certains disques SSD vont jusqu'à essayer de détecter lorsqu'un secteur en cours d'écriture sur le stockage correspond à un secteur déjà stocké et de marquer ce morceau de mémoire physique comme mappant maintenant sur 2 secteurs logiques différents plutôt que de le copier, en faisant au niveau du lecteur interne ce que le OS ne pouvait pas.
Mais ne comptez pas là-dessus.
mv
devraient coopérer, mélangeant considérablement les couches d'abstraction.