FreeBSD 11.0-RELEASE-p7 i386 system drive imaging and migration
wblock at wonkity.com
Tue Jan 31 00:52:02 UTC 2017
On Mon, 30 Jan 2017, David Christensen wrote:
> On 01/30/17 07:28, Warren Block wrote:
>> On Sun, 29 Jan 2017, David Christensen wrote:
>>>> Writing SSDs with dd is not good, limiting their wear leveling.
>>> That's why I used zcat rather than dd for writing to the cloned SSD.
>>> If/when I know enough to use zfs send/ receive, that will be best.
>> zcat is no different than dd in this case. When you write a binary
>> image, the SSD can't tell which blocks are truly in use, because they
>> have all been written.
> Taking the image with 'dd' will grab all blocks -- in-use, used, never used
> (zero-freed and available for writing). On restoration, it all gets written.
> Yes, it's wasteful. But it's 2+ steps I can do by hand off the top of my
> head; rather than 18+ steps, most of which I've never done.
> I used 'zcat' in the hope that many 512 byte blocks would be sent to the SSD
> per system call, rather than 'dd' making one system call for each and every
> 512 byte block. (I also experimented with 'bs=1M', but adding 'conv=sync'
> resulted in a bad destination image.) Given the microcontroller and RAM
> buffer in the SSD, it might not matter.
The number of blocks written is the important part, and that is the
same. Because every block in a disk or filesystem has been written, the
SSD sees them as in use. If you overprovision by leaving part of the
disk unpartitioned or with an unused partition, it would help.
The only time to not give a larger buffer size to dd is when you want it
to write odd multiples of 512 bytes. Otherwise, it always does better
with at least bs=32K, and for flash it might as well be bs=1m. If it
errors out, there is a problem with the source file or, more likely, the
destination device. I don't generally use conv=sync. If it has an
error, I don't want it to try to skip over it, but just fail.
More information about the freebsd-questions