RAID with SSD USB Sticks

Normally it is always a risk to carry important data around on USB sticks. They can be lost, broken, or accidentally deleted. This article describes how to build a disk array with data mirroring from two USB sticks.

Hardware

Normal USB sticks have a limited number of overwrite operations on each cell. So every USB stick will break after a while. With some technology, we will avoid this in such a way that the risk of losing data is minimized.

Procedure

What are we going to do about it? We will build a software RAID out of both USB sticks, Linux can do that by default. And this is how it works:

We connect both USB sticks of the same size to the computer and use lsblk to see which devices are involved:

$ lsblk 

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sdc      8:32   1 119,3G  0 disk 
├─sdc1   8:49   1 119,2G  0 part 
sdd      8:48   1 119,3G  0 disk 
└─sdd1   8:49   1 119,2G  0 part 

In our case we are talking about the devices sdc and sdd each with about 119 GB space. The software RAID works on the basis of partitions. These partitions must be present, although not necessarily formatted.

Since we now want to convert these USB sticks into a highly available drive, we now write the disk array signatures to the sticks as user root with the command mdadm:

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1

We answer questions with y. Now the data from the partition of the first stick is synchronized with the data from the partition of the second stick. This can be observed as well:

$ cat /proc/mdstat 

Personalities : [raid1] 
md0 : active raid1 sdd1[1] sdc1[0]
      124975104 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  4.5% (5634304/124975104) finish=9.8min speed=201225K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Already during this process we can see that our RAID device now exists:

$ ls -l /dev/md0 

brw-rw---- 1 root disk 9, 0 26. Okt 13:24 /dev/md0

Since our device already exists, we can now create a file system on it:

$ sudo mkfs.ext4 /dev/md0

Now we can, if we want, set a label so that our new RAID is displayed with a nice name in the file explorers when we plug in the USB sticks:

$ sudo e2label /dev/md0 data

Delete RAID again

If you want to remove the whole RAID again, you have to unhook the file system first, then stop the array and then erase the super blocks on the two sticks:

$ sudo umount -l /dev/md0
$ sudo  mdadm --stop /dev/md0
mdadm: stopped /dev/md0

$ sudo mdadm --zero-superblock /dev/sdc1
$ sudo mdadm --zero-superblock /dev/sdd1