Should I avoid putting two SSDs in a RAID1 configuration due to performance degradation?

I have a workstation system that will have two 64GB industrial SSDs, and the plan is to have both disks in a RAID1 configuration for redundancy which is set up in the kickstart. The system will be running CentOS 7. In looking into this, I discovered that the RHEL Storage Administration Guide doesn't recommend RAID1 for SSDs.

Red Hat also warns that software RAID levels 1, 4, 5, and 6 are not recommended for use on SSDs. During the initialization stage of these RAID levels, some RAID management utilities (such as mdadm) write to all of the blocks on the storage device to ensure that checksums operate properly. This will cause the performance of the SSD to degrade quickly.

Is this something I should be seriously concerned with? Are there alternatives for redundancy that I can use?

According to RHEL documentation again, LVM mirroring now leverages MD software RAID, so the RAID warning also applies to that.

More info: The SSDs are Swissbit X-200 series (SATA), and it looks like overprovisioning is at 40%.

Hardware RAID won't be an option, according to the hardware team.


Solution 1:

I wouldn't quite recommend Linux software RAID with SSDs, especially for boot. I'd make the decision based on the potential failure scenario(s) and what the impact of downtime is. For industrial SSDs, I've typically used them standalone, without RAID.

If this workstation were to fail, how quickly can you 1). recovery from backups or 2). rebuild/reimage?

What type of SSDs are these (make/model)? If they're overprovisioned, this may not be too much of an issue. If they're SATA and connected to the motherboard, you'll have some TRIM options.

You can use an entry-level LSI hardware RAID controller to ease deployment and recovery. At least the underlying RAID will be transparent to the OS.


Edit:

These are highly overprovisioned industrial SSDs. Configure the RAID 1 mirror as normal and just monitor the drives over time.

Solution 2:

Is this something I should be seriously concerned with?

No

Are there alternatives for redundancy that I can use?

I prefer hardware RAID controllers but that's a personal thing, you're fine like this.

Solution 3:

Question you should ask is when that documentation was written. They generally use the same material and update it if required, and SSD technology has changed since then.

Even though they are industrial, write and read performance is not the same. The documentation is referring to write performance, but with a mirror setup, you will get better read performance with /boot and / mounts.

So questioning the documentation in some respects is worthwhile.

Solution 4:

You can use it without much problems in soft RAID1 configuration (even if the SSD was not so much overprovisioned), but only provided you TRIM on it after creating.

You can do it by on of the following:

  • using new enough kernel which supports MD passing TRIM to SSD (at least 3.8.something IIRC, but please check), and running fstrim(8) (from util-linux package) nightly

  • using new enough kernel and having "discard" mount option on it (for ext4/xfs). Note that this is lower performance than above, as TRIM is nonqueueable, and this does not take advantage of batching above

  • on older kernels, run nightly cron run of mdtrim. Be sure to test in with provided test script before putting important data on it!

Also note that it all applies only for filesystem directly on softRAID. It won't work for most all hardware RAIDs. Also, it (currently) won't work if you have LVM or some other layer on top of MD softraid. You'll need big overprovisioning to survive those (and luckily you have 40% of it, so you're fine).