Lo que sucede cuando los datos se escriben en un disco de estado sólido es digno de varios artículos (buen resumen aquí ), porque es muy complicado y depende de la tecnología subyacente. La historia corta es que los SSD en general no pueden escribir cero bits en la memoria. En cambio, tienen que poner a cero (borrar) una sección completa de la memoria, y luego pueden almacenar datos después de eso simplemente escribiendo los que están en ella. Por lo general, en estos días escriben bloques de 512 bytes pero borran una página de 8 bloques que es 4096. Esto, y el hecho de que cada ciclo de escritura / borrado causa cierto desgaste físico de la memoria y la memoria finalmente se desgasta, hace que los SSD sean muy diferentes que girar discos duros magnéticos.
Dejando eso de lado, las unidades SATA (y las unidades AFAIK SAS) no implementan un comando nativo para copiar datos de un sector a otro. (O al menos nada en la especificación SATA o SAS lo requiere, por lo que el sistema operativo no puede contar con que dicho comando esté disponible). Por lo tanto, una copia de archivo en una partición implicará leer los datos de un sector de unidad en la memoria del host y luego escribir vuelve a la unidad en un sector diferente.
Esto se debe a que, en lo que respecta al sistema operativo, una unidad es un conjunto de sectores lógicos numerados, y todo lo que puede hacer es leer de los sectores y escribir en los sectores. El sistema operativo no puede indicarle a la unidad que reasigne sectores.
Además, el sistema de archivos (HFS +, NTFS, ext3, etc.) es un conjunto de estructuras de datos que imponen orden en un conjunto de bloques lógicos. Esas estructuras de datos implementan "archivos", "nombres de archivo", "directorios", "permisos", etc. Entonces, sí, cuando mueve un archivo de un directorio a otro, no se copia; solo se actualizan los datos del sistema de archivos que indican en qué directorio se encuentra el archivo.
El concepto de una partición es que es un conjunto de sectores lógicos en la unidad reclamada por un único sistema de archivos. El corolario de eso es que un sistema de archivos no puede acceder a sectores fuera de su partición. En gran parte, esta es una característica de seguridad, pero también se deriva del hecho de que las estructuras de datos del sistema de archivos están construidas alrededor de la contabilidad de cada sector de la unidad bajo la propiedad del sistema de archivos, y no es trivial agregar o eliminar sectores a esas estructuras. Es por eso que debe ejecutar rutinas especiales para ajustar el tamaño de una partición y también por qué los sistemas de archivos insisten en ejecutarse en un conjunto contiguo de sectores.
Por lo tanto, no es práctico y peligroso implementar una copia de archivo simplemente transfiriendo sectores de un sistema de archivos a otro. En un disco magnético giratorio, también sería una pesadilla de rendimiento, porque aunque el disco hará excepciones para sectores defectuosos, en general se encarga de que los sectores se ubiquen físicamente de manera que se optimice la velocidad de lectura y escritura de números consecutivos sectores.
Además, 2 sistemas de archivos pueden no almacenar datos de archivos de la misma manera en el disco, lo que significa que el intercambio de sectores no funcionaría incluso si fuera práctico. Incluso si son exactamente los mismos tipos de sistemas de archivos, digamos NTFS, uno puede estar usando cifrado o compresión y el otro no, o ambos pueden cifrar los datos, pero con diferentes claves. No es un requisito que los datos en el archivo sean exactamente lo que está almacenado en el disco, todo lo que tiene que almacenarse es una transformación reversible de los datos, para que el sistema de archivos pueda obtener los datos del archivo haciendo algo con Los datos en el disco. Entonces, a menos que ambos sistemas de archivos estén usando exactamente la misma transformación, simplemente intercambiar sectores no lograría el objetivo de transferir los datos del archivo.
Por todas estas razones, es demasiado trabajo para muy poca ganancia para los escritores del sistema operativo y los escritores del sistema de archivos implementar una característica que optimice los movimientos a través de particiones para SSD. Por lo tanto, cualquier movimiento de partición cruzada será una lectura y una escritura.
Dentro del SSD, es una historia ligeramente diferente. Aunque el sistema operativo no le dijo a la unidad que está copiando datos de un lugar a otro, las escrituras en SSD son tan caras (y complicadas) que los controladores SSD hacen mucho trabajo para minimizar las escrituras. Algunos SSD llegan a intentar detectar cuándo un sector que se está escribiendo en el almacenamiento coincide con un sector ya almacenado y marcan esa pieza física de memoria como ahora asignada a 2 sectores lógicos diferentes en lugar de copiarla, haciendo en el nivel de la unidad interna lo que el El sistema operativo no pudo.
Pero no cuentes con eso.
mv
tendrían que cooperar, mezclando en gran medida las capas de abstracción.