SSD Cloning Guide: SATA to NVMe¶
Overview¶
This guide will help you clone your Kingston SH103S3 (120GB SATA SSD) to your Kingston SNV2S500G (500GB NVMe) drive.
Estimated Time: 45-60 minutes
Downtime Required: Yes (30-60 minutes)
⚠️ CRITICAL WARNINGS¶
- BACKUP YOUR DATA FIRST - Always have a backup before cloning
- Double-check drive names -
ddwill completely overwrite the target drive - Verify source/target - Wrong drive selection = data loss
- Do NOT clone while OS is running - Boot from Live USB
Prerequisites¶
- USB drive (4GB+) for Live Linux
- Backup of important data
- 45-60 minutes of server downtime scheduled
- Access to BIOS/UEFI settings
Method 1: Boot from Live USB (RECOMMENDED)¶
Step 1: Create Live USB¶
# Download Ubuntu Live ISO (or SystemRescue)
# On another computer:
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso
# Create bootable USB (replace sdX with your USB drive)
sudo dd if=ubuntu-22.04.3-desktop-amd64.iso of=/dev/sdX bs=4M status=progress
sync
Alternative: Use Rufus (Windows) or Etcher (cross-platform) to create bootable USB
Step 2: Boot from Live USB¶
- Insert the USB drive into your server
- Reboot and enter BIOS/UEFI (usually F2, F12, or DEL key)
- Set USB as first boot device
- Boot into "Try Ubuntu" (not Install)
Step 3: Identify Your Drives¶
# Open terminal in Live USB environment
# List all drives
lsblk
# Example output:
# NAME SIZE TYPE MOUNTPOINT
# sda 120G disk <- Your current OS drive (SATA)
# ├─sda1 512M part <- EFI partition (if UEFI)
# └─sda2 119G part <- Root partition
# nvme0n1 500G disk <- Target drive (NVMe)
# nvme1n1 512G disk <- Other NVMe
# nvme2n1 512G disk <- Other NVMe
# Verify which drive has your OS
sudo fdisk -l /dev/sda
⚠️ CRITICAL: Confirm /dev/sda is your source and /dev/nvme0n1 is your target!
Step 4: Clone the Drive¶
# Clone SATA SSD to NVMe
# This copies EVERYTHING: partitions, bootloader, data
sudo dd if=/dev/sda of=/dev/nvme0n1 bs=64K status=progress conv=noerror,sync
# Explanation:
# if=/dev/sda <- Source drive (input file)
# of=/dev/nvme0n1 <- Target drive (output file)
# bs=64K <- Block size (faster than default)
# status=progress <- Show progress
# conv=noerror,sync <- Continue on errors, pad with zeros
# Expected time: 20-40 minutes for 120GB
During cloning, you'll see:
Step 5: Verify the Clone¶
# After cloning completes, verify partition table
sudo fdisk -l /dev/nvme0n1
# Check filesystems
sudo fsck -n /dev/nvme0n1p2 # -n = no changes, just check
Step 6: Expand Partition (Optional)¶
Your NVMe is 500GB but the clone is only 120GB. To use the extra space:
# Install parted if not available
sudo apt install parted
# Expand the partition table
sudo parted /dev/nvme0n1
(parted) print # Show current partitions
(parted) resizepart 2 100% # Resize partition 2 to use all space
(parted) quit
# Resize the filesystem
sudo e2fsck -f /dev/nvme0n1p2 # Check filesystem first
sudo resize2fs /dev/nvme0n1p2 # Expand filesystem
Step 7: Update BIOS Boot Order¶
- Shutdown the system:
sudo shutdown -h now - Remove the Live USB
- Enter BIOS/UEFI settings (F2, F12, or DEL during boot)
- Change boot order:
- First boot device: Kingston SNV2S (NVMe0)
- Second boot device: Kingston SH103S3 (SATA) - as backup
- Save and exit
Step 8: Test the New Drive¶
- System should boot from NVMe
-
Verify you're on the right drive:
-
Check system logs for errors:
-
Test critical services:
Step 9: Monitor for a Few Days¶
Run the system on NVMe for 2-3 days to ensure stability
Step 10: Repurpose Old SATA Drive¶
Once you're confident the NVMe works perfectly:
Option A: Keep as backup (recommended for 1-2 weeks)
Option B: Wipe and use for storage
# Wipe the old drive
sudo dd if=/dev/zero of=/dev/sda bs=1M count=100 status=progress
# Create new partition
sudo fdisk /dev/sda
# (n = new partition, w = write)
# Format
sudo mkfs.ext4 /dev/sda1
# Mount
sudo mkdir /mnt/storage
sudo mount /dev/sda1 /mnt/storage
Method 2: Single-User Mode (If No Live USB Available)¶
Step 1: Backup Important Data¶
Step 2: Enter Rescue Mode¶
# Reboot to single-user mode
sudo systemctl isolate rescue.target
# Enter root password when prompted
Step 3: Remount Root as Read-Only¶
Step 4: Clone the Drive¶
Step 5: Reboot¶
Then follow Steps 6-10 from Method 1.
Method 3: LVM Snapshots (Zero Downtime - Advanced)¶
Only if you're using LVM!
Check if you're using LVM:¶
If using LVM:¶
# Create snapshot (10GB should be enough for changes during clone)
sudo lvcreate -L 10G -s -n root_snapshot /dev/vg0/root
# Clone the snapshot (system keeps running!)
sudo dd if=/dev/vg0/root_snapshot of=/dev/nvme0n1 bs=64K status=progress
# Remove snapshot after cloning
sudo lvremove /dev/vg0/root_snapshot
# Still need brief downtime to install bootloader - see Method 1, Step 7
Troubleshooting¶
Clone fails with "No space left on device"¶
- Cause: Target drive is smaller than source
- Solution: Your NVMe (500GB) is larger than SATA (120GB), so this shouldn't happen
- If it does: Check you have the right source/target drives
System won't boot from NVMe¶
- Check BIOS boot order - Ensure NVMe is first
- Bootloader issue - May need to reinstall GRUB:
Filesystem errors after clone¶
Clone is very slow¶
- Check if you're cloning the right direction (should be SATA→NVMe, not NVMe→SATA)
- Try larger block size:
bs=128Korbs=1M
Expected Performance Improvement¶
After moving to NVMe, you should see:
| Metric | SATA SSD | NVMe SSD | Improvement |
|---|---|---|---|
| Sequential Read | ~550 MB/s | ~3,500 MB/s | 6.4x faster |
| Sequential Write | ~520 MB/s | ~3,000 MB/s | 5.8x faster |
| Random Read IOPS | ~90K | ~500K | 5.6x faster |
| Boot Time | 30s | 10-15s | 2-3x faster |
Quick Reference Commands¶
# List drives
lsblk
# Clone drive (replace with your actual device names!)
sudo dd if=/dev/sda of=/dev/nvme0n1 bs=64K status=progress conv=noerror,sync
# Check clone progress (from another terminal)
sudo kill -USR1 $(pgrep ^dd)
# Verify filesystem
sudo fsck -n /dev/nvme0n1p2
# Check NVMe health
sudo smartctl -a /dev/nvme0n1
# Expand partition after clone
sudo parted /dev/nvme0n1
(parted) resizepart 2 100%
(parted) quit
sudo resize2fs /dev/nvme0n1p2
Checklist¶
- Backup important data
- Create Live USB
- Schedule maintenance window
- Boot from Live USB
- Verify source/target drives with
lsblk - Clone with
ddcommand - Verify clone completed successfully
- Expand partition to use full 500GB (optional)
- Change BIOS boot order
- Test boot from NVMe
- Monitor for 2-3 days
- Repurpose or wipe old SATA drive
Additional Notes¶
- Time estimate: 20-40 min for cloning + 10-15 min for setup = 45-60 min total
- Your current drives:
- Source:
/dev/sda- Kingston SH103S3 120GB SATA (92% life, 3.9 years old) - Target:
/dev/nvme0n1- Kingston SNV2S500G 500GB NVMe (99% life, 2.4 months old) - Power stability: Address the 254 unsafe shutdowns on the NVMe after cloning
- Consider UPS or check PSU
- Review system logs:
journalctl -b -p err
Support Resources¶
- smartmontools documentation: https://www.smartmontools.org/
- dd manual:
man dd - GRUB troubleshooting: https://www.gnu.org/software/grub/manual/
- NVMe tools:
man nvme
Last Updated: November 8, 2025
Guide Version: 1.0
Full CLone Guide.¶
`
Clone System Disk from /dev/sda to /dev/nvme3n1¶
1. Prepare Target Disk¶
2. Sync Filesystems Before Cloning¶
3. Clone the Disk¶
4. Sync After Cloning¶
5. Check Filesystem on Clone¶
# Unmount if mounted
sudo umount /mnt/nvme3-root
# Force filesystem check
sudo e2fsck -f /dev/nvme3n1p1
6. Change UUIDs on Clone¶
Change ext4 root partition UUID¶
Change FAT32 EFI partition UUID¶
7. Verify New UUIDs¶
Confirm that nvme3n1p1 and nvme3n1p2 have different UUIDs than sda1 and sda2.