Move OS from old slow disk to new SSD

Hi - Is there a way (thats easy for a novice) to move the OS from an old slow spinning disk to a new SSD ?

Essentially I have Leap on a 500Gb SATA disk and want to move it to a new NVMe 256Gb SSD.

Any help as always appreciated.

Assuming that, both disks can be present in the system –

  • probably the case because, the hardware interfaces are different …

I would simply reinstall the openSUSE Leap onto the new SSD as system disk and, once the installation has completed – usually less than an hour – mount the HDD and consider what to do about the user directories –

  • With both disks present, you can use the SSD as a system disk plus time-critical user directories and –
  • use the HDD as general-purpose space for user directories.

Invest in a couple of >1 TiB SATA HDDs plus USB disk cases – use them as backup disks and, backup your user directories before reorganising the partitions on the existing HDD.

Clonezilla will do it.

I would recommend a fresh install esp on an nvme (assuming the system will boot from nvme?) check the nvme to see if it supports/configured for 4k LBA rather than 512 and configure prior to install…

If you need to ask, don’t. I’ve done it, but I have a ton of experience in cloning and migration. As malcolmlewis wrote, best to install fresh, then migrate from the old HDD that which is needed on the new, particularly when going to a smaller disk, or to NVME, and certainly when doing both together.

Since you should be doing a fresh install, I suggest installing 15.3 instead. Its release is imminent. Once you’ve done your first round of updates to the RC after official release is announced, you’ll have exactly the same thing as if you waited until after, and that might be the case without the wait. There will be little to nothing changed between latest RC and official release.

KISS works best, even for beginners. When I reassembled the i3-4130 built in 2014 I partitioned its 250GB SATA SSD with:

  • EFI system partition vfat
  • System partition btrfs
Model: ATA CT250MX500SSD1 (scsi) 
Disk /dev/sda: 250GB 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags:  

Number  Start   End     Size    File system  Name  Flags 
 1      1049kB  106MB   105MB   fat16              boot, esp 
 2      106MB   250GB   250GB   btrfs 

I copied data from the old disks as needed. Later I shrank the btrfs partition by 50 GB and installed Windows on the free space at the end of the disk.

Hi All,

NVMe is bootable (bios upgrade on ML30 did the trick)
Tested by installing Win 10 first , the reinstalled 15.2 (sorry didnt read all posts first)
Almost all back to where I was on old disk (can I measure disk IO performance ?), DNS Server isnt working properly and thats about it.

Try that:

**erlangen:~ #** hdparm -tT /dev/nvme0n1p4          

 Timing cached reads:   38052 MB in  1.99 seconds = 19160.51 MB/sec 
 Timing buffered disk reads: 6062 MB in  3.00 seconds = 2020.54 MB/sec 
**erlangen:~ #**

More: How fast are your disks? Find out the open source way, with fio | Ars Technica

If on GNOME, can use gnome-disks to benchmark…

Tools like nvme as well as output from inxi…

 inxi -Dxxz
Drives:    Local Storage: total: 594.64 GiB used: 135.35 GiB (22.8%) 
           ID-1: /dev/nvme0n1 vendor: Silicon Power model: SPCC M.2 PCIe SSD size: 476.94 GiB speed: 31.6 Gb/s lanes: 4 

Comprehensive review with numerous best value items:,3891.html

Some random write performance comparison: File size: 16GB, block size: 1MB

erlangen:/home # fio --name=random-write --ioengine=posixaio  --rw=randwrite --bs=1m --size=16g --numjobs=1 --iodepth=1 --runtime=60  --time_based --end_fsync=1

Western Digital WD40EZRX-22SPEB0 size:3.64 TiB (HDD)

**write: IOPS=71, BW=71.8MiB/s (75.3MB/s)(7869MiB/109574msec); 0 zone resets **
bw (  KiB/s): min= 2048, max=2799616, per=100.00%, avg=144448.58, stdev=374412.15, samples=111 
iops        : min=    2, max= 2734, avg=141.06, stdev=365.64, samples=111 
cpu          : usr=0.46%, sys=0.11%, ctx=7874, majf=0, minf=27 

Crucial CT2000BX500SSD1 size: 1.82 TiB (SATA SSD)

**write: IOPS=266, BW=266MiB/s (279MB/s)(20.9GiB/80586msec); 0 zone resets **
bw (  KiB/s): min= 2048, max=3381248, per=100.00%, avg=430461.49, stdev=608242.29, samples=102 
iops        : min=    2, max= 3302, avg=420.37, stdev=593.99, samples=102 
cpu          : usr=1.26%, sys=4.02%, ctx=61322, majf=0, minf=27 

Samsung SSD 850 EVO 500GB size: 465.76 GiB (SATA SSD)

**write: IOPS=425, BW=426MiB/s (446MB/s)(29.3GiB/70482msec); 0 zone resets **
bw (  KiB/s): min=204800, max=3348480, per=100.00%, avg=610488.32, stdev=549709.20, samples=100 
iops        : min=  200, max= 3270, avg=596.18, stdev=536.83, samples=100 
cpu          : usr=2.36%, sys=5.00%, ctx=57379, majf=0, minf=26 

Samsung SSD 950 PRO 512GB size: 476.94 GiB (NVMe PCIe 3.0 x4)

**write: IOPS=884, BW=885MiB/s (928MB/s)(54.1GiB/62559msec); 0 zone resets **
bw (  MiB/s): min=   16, max= 3372, per=100.00%, avg=1115.37, stdev=719.11, samples=98 
iops        : min=   16, max= 3372, avg=1115.37, stdev=719.11, samples=98 
cpu          : usr=1.63%, sys=10.78%, ctx=164127, majf=0, minf=28 

Dual channel DIMM size: 32 GiB speed: 2133 MT/s

**write: IOPS=7731, BW=7731MiB/s (8107MB/s)(453GiB/60001msec); 0 zone resets **
bw (  MiB/s): min= 5988, max= 8264, per=100.00%, avg=7732.89, stdev=390.79, samples=119 
iops        : min= 5988, max= 8264, avg=7732.89, stdev=390.79, samples=119 
cpu          : usr=13.01%, sys=1.46%, ctx=463988, majf=0, minf=25


RAM is fastest, use NVMe PCIe 3.0 x4 if available, SATA is fine for system and home, HDD is fine for backup.

So not as fast as i thought but still not too awful ?

Timing cached reads: 24158 MB in 1.99 seconds = 12165.12 MB/sec
Timing buffered disk reads: 4144 MB in 3.00 seconds = 1381.33 MB/sec

The SSD is a Sandisk WD Black 2018/PC SN720 256Gb

Unfortunately my knowledge of Linux (in general) is extremely limited (mostly to gui stuff) so dont know if i’ve done the “fio” bit correctly or not

random-write: (g=0): rw=randwrite, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024
KiB-1024KiB, ioengine=posixaio, iodepth=1
Starting 1 process
random-write: Laying out IO file (1 file / 16384MiB)
Jobs: 1 (f=1): [F(1)][100.0%][eta 00m:00s]
random-write: (groupid=0, jobs=1): err= 0: pid=5208: Fri May 28 07:51:36 2021
write: IOPS=419, BW=420MiB/s (440MB/s)(26.8GiB/65312msec); 0 zone resets
slat (usec): min=7, max=1153, avg=41.12, stdev=31.13
clat (nsec): min=253, max=3359.7M, avg=2090161.07, stdev=20825382.34
lat (usec): min=167, max=3359.8k, avg=2131.28, stdev=20825.98
clat percentiles (usec):
| 1.00th= 206], 5.00th= 253], 10.00th= 265], 20.00th= 302],
| 30.00th= 482], 40.00th= 742], 50.00th= 766], 60.00th= 807],
| 70.00th= 848], 80.00th= 947], 90.00th= 9372], 95.00th= 12387],
| 99.00th= 15401], 99.50th= 17433], 99.90th= 20579], 99.95th= 24773],
| 99.99th=[200279]
bw ( KiB/s): min=90112, max=3184640, per=100.00%, avg=506687.76, stdev=438539.49, sa
iops : min= 88, max= 3110, avg=494.80, stdev=428.26, samples=110
lat (nsec) : 500=0.03%, 750=0.02%, 1000=0.02%
lat (usec) : 2=0.01%, 4=0.02%, 250=3.91%, 500=26.35%, 750=12.75%
lat (usec) : 1000=39.95%
lat (msec) : 2=5.45%, 4=0.15%, 10=3.01%, 20=8.20%, 50=0.11%
lat (msec) : 100=0.01%, 250=0.01%, 500=0.01%, >=2000=0.01%
cpu : usr=1.68%, sys=3.23%, ctx=45981, majf=0, minf=24
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,27399,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
WRITE: bw=420MiB/s (440MB/s), 420MiB/s-420MiB/s (440MB/s-440MB/s), io=26.8GiB (28.7GB)
, run=65312-65312msec

It looks excellent. See also You may try the worst case (bs=4k) too:

erlangen:/home # fio --name=random-write --ioengine=posixaio --rw=randwrite --bs=4k --size=4g --numjobs=1 --iodepth=1 --runtime=60 --time_based --end_fsync=1
random-write: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=posixaio, iodepth=1
Starting 1 process
random-write: Laying out IO file (1 file / 4096MiB)
Jobs: 1 (f=1): [w(1)][100.0%][eta 00m:00s]                          
random-write: (groupid=0, jobs=1): err= 0: pid=6748: Fri May 28 09:57:44 2021
**  write: IOPS=103k, BW=403MiB/s (422MB/s)(24.0GiB/61022msec); 0 zone resets**
    slat (nsec): min=566, max=1022.3k, avg=1128.75, stdev=494.20
    clat (nsec): min=95, max=3654.5k, avg=4702.12, stdev=3985.82
     lat (usec): min=3, max=3655, avg= 5.83, stdev= 4.04
    clat percentiles (nsec):
     |  1.00th= 4128],  5.00th= 4192], 10.00th= 4256], 20.00th= 4256],
     | 30.00th= 4320], 40.00th= 4384], 50.00th= 4512], 60.00th= 4576],
     | 70.00th= 4640], 80.00th= 4896], 90.00th= 5280], 95.00th= 5664],
     | 99.00th= 7008], 99.50th= 8384], 99.90th=[22912], 99.95th=[37120],
     | 99.99th=[70144]
**    bw (  KiB/s): min=69712, max=680440, per=100.00%, avg=599186.29, stdev=146807.06, samples=84**
**    iops        : min=17428, max=170110, avg=149796.57, stdev=36701.77, samples=84**
  lat (nsec)   : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (usec)   : 2=0.01%, 4=0.06%, 10=99.68%, 20=0.15%, 50=0.09%
  lat (usec)   : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%
**   cpu          : usr=16.10%, sys=26.29%, ctx=6377688, majf=0, minf=28**
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,6291457,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=403MiB/s (422MB/s), 403MiB/s-403MiB/s (422MB/s-422MB/s), io=24.0GiB (25.8GB), run=61022-61022msec

Disk stats (read/write):
  nvme0n1: ios=0/1405412, merge=0/1564, ticks=0/7824595, in_queue=7824981, util=67.42%
erlangen:/home #