The TRIM command allows an OS to inform an SSD which sectors contain data, and which are free. This allows the disk to re-use free sectors internally and improves wear leveling.
Now, if an SSD is cloned to anoher via dd
, each single sector is copied to the target disk. However, dd
does not know if the content of the sectors is actually data, or unused. That is, it can not send a TRIM command to the target disk. To my understanding, the target disk has to consider EACH written sector as used.
The only way around would be if the used/free information is somehow stored in the sectors themself, and so is copied by dd
to the new disk.
So, how is it done? Is there a problem?
fstrim
them all after cloning. (Although,sparse
might help you avoid writing all-zero blocks...? That's technically irrelevant with whether the source block was TRIM'd before cloning though.)