Cosa succede quando i dati vengono scritti su un disco a stato solido è degno di numerosi articoli (un buon riassunto qui ), perché è molto complicato e dipende dalla tecnologia sottostante. La storia breve è che gli SSD in generale non possono scrivere zero bit in memoria. Invece, devono azzerare (cancellare) un'intera sezione di memoria, e quindi possono archiviare i dati dopo semplicemente scrivendo quelli su di essa. In genere in questi giorni scrivono blocchi di 512 byte, ma cancellano una pagina di 8 blocchi che è 4096. Questo, e il fatto che ogni ciclo di scrittura / cancellazione causi un po 'di usura fisica della memoria e la memoria alla fine si esaurisca, rendono gli SSD molto diversi rispetto alla rotazione di HDD magnetici.
A parte questo, le unità SATA (e le unità AFAIK SAS) non implementano un comando nativo per copiare i dati da un settore all'altro. (O almeno nulla nelle specifiche SATA o SAS lo richiede, quindi il sistema operativo non può contare sul fatto che tale comando sia disponibile.) Quindi una copia di file su una partizione implica la lettura dei dati da un settore di unità nella memoria host e quindi la scrittura ritorna all'azionamento in un altro settore.
Questo perché, per quanto riguarda il sistema operativo, un'unità è un insieme di settori logici numerati e tutto ciò che può fare è leggere da settori e scrivere in settori. Il sistema operativo non può dire all'unità di rimappare i settori.
Inoltre, il file system (HFS +, NTFS, ext3, ecc.) È un insieme di strutture di dati che impongono l'ordine su un insieme di blocchi logici. Tali strutture di dati implementano "file", "nomi file", "directory", "autorizzazioni", ecc. Quindi, sì, quando si sposta un file da una directory all'altra, non viene copiato; vengono aggiornati solo i dati del file system che indicano in quale directory si trova il file.
Il concetto di una partizione è che si tratta di un insieme di settori logici sull'unità rivendicati da un singolo file system. Il corollario di ciò è che un file system non può accedere a settori esterni alla sua partizione. In gran parte questa è una caratteristica di sicurezza, ma deriva anche dal fatto che le strutture di dati del file system sono tutte costruite attorno alla contabilizzazione di ogni settore dell'unità sotto la proprietà del file system, ed è banale aggiungere o rimuovere settori a quelle strutture. Questo è il motivo per cui è necessario eseguire routine speciali per regolare le dimensioni di una partizione e anche perché i file system insistono per l'esecuzione su un insieme contiguo di settori.
Pertanto, non è pratico e pericoloso implementare una copia di file in quanto trasferisce semplicemente settori da un file system a un altro. Su un disco magnetico rotante, sarebbe anche un incubo di prestazioni, perché sebbene l'unità farà eccezioni per i settori danneggiati, in generale organizza che i settori siano posizionati fisicamente in modo tale da ottimizzare la velocità di lettura e scrittura di numeri progressivamente numerati settori.
Inoltre, 2 file system potrebbero non archiviare i dati dei file allo stesso modo sul disco, il che significa che i settori di scambio non funzionerebbero anche se fossero pratici. Anche se sono esattamente gli stessi tipi di file system, diciamo NTFS, uno potrebbe usare la crittografia o la compressione e l'altro no, oppure entrambi potrebbero crittografare i dati, ma con chiavi diverse. Non è necessario che i dati nel file siano esattamente ciò che è archiviato sul disco, tutto ciò che deve essere archiviato è una trasformazione reversibile dei dati, in modo che il file system possa ottenere i dati del file facendo qualcosa con i dati sul disco. Quindi, a meno che entrambi i file system non utilizzino esattamente la stessa trasformazione, semplicemente lo scambio di settori non raggiungerebbe l'obiettivo di trasferire i dati del file.
Per tutti questi motivi, è troppo lavoro per un guadagno troppo poco per gli scrittori del sistema operativo e gli autori del file system per implementare una funzione che ottimizza le mosse tra le partizioni per gli SSD. Quindi ogni mossa tra partizioni sarà una lettura e una scrittura.
All'interno dell'SSD, è una storia leggermente diversa. Sebbene il sistema operativo non abbia comunicato all'unità che sta copiando i dati da una posizione all'altra, le scritture su SSD sono così costose (e complicate) che i controller SSD fanno molto lavoro per ridurre al minimo le scritture. Alcuni SSD arrivano al punto di provare a rilevare quando un settore in fase di scrittura nello spazio di archiviazione corrisponde a un settore già archiviato e contrassegnano quel pezzo di memoria fisica come attualmente mappato su 2 diversi settori logici anziché copiarlo, facendo a livello di unità interna ciò che il Il sistema operativo non potrebbe.
Ma non ci contare.
mv
dovrebbero cooperare, mescolando notevolmente i livelli di astrazione.