It is possible to upgrade RAID1 to RAID5 without losing data, but as any operation that involves stored data it is dangerous and may result in dataloss if not performed correctly, so be warned. Please be aware that this operation requires a Disk
ARRAY of N-disk where N ≥ 3.
The process to upgrade RAID1 to RAID5 without losing data, depending on the disk technology and array size, may be extremely slow and tedious. As the array gets upgraded, it will need to move data across all disks and generate parity. While doing so the machine will show degraded disk performance.
Table of Contents
- What is RAID
- Advantages of RAID5 over RAID1
- Upgrade Procedure
- Performing the upgrade
What is RAID
RAID, or Redundant Array of Inexpensive Disks is a data storage technology that combines multiple disk drives into one or more logical units, in order to achieve data redundancy, improved performance, or both. To do so, RAID employs techniques of data mirroring or/and data stripping.
Mirroring, like the name suggests, will copy identical data onto more than one disk drive. Stripping allows to spread data over more than one disk drive. There is also hybrid-RAID that employs multiple RAID techniques like RAID 1+0 often referred to as RAID 10.
A RAID array can be managed either by software or hardware. In case of an hardware-based solution, a dedicated controller will manage RAID operations and disk drives, while in software-based a software RAID implementation will manage RAID. Today, most modern operating systems include RAID support.
Advantages of RAID5 over RAID1
RAID 1 or disk mirroring, is the replication of data to two or more disks. RAID 1 is a typical choice for applications that require high availability. One of the main points for RAID 1 is the increased fault tolerance, as it can tolerate more than one disk drives failure. The
read performance is improved, but
write performance is the same as for a single disk and has no improvement.
RAID 5 is based on block-level stripping parity. The parity information is stripped across each disk drive on the array, enabling it to function even if one drive fails. This is also the main limitation of **RAID 5**, to maintain operation it is limited to one disk drive failure. RAID 5 requires at least three disks, but is often recommended to use five or above for performance reasons.
The RAID5 architecture enables read and write operations to span multiple drives, which results in better read and write performance.
In this guide we will show you how to upgrade RAID1 to RAID5 without losing data on and existing RAID1
To upgrade RAID1 to RAID5 without losing data we will go over the following process:
- Remove all devices from the RAID array but two
- Shrink the RAID array to the size of 2
- Upgrade the array
- Add all the devices back
- Grow the RAID array to the total number of disks
- Resize the filesystem
Please backup your data first. Errors may result in full data loss.
Performing the upgrade
Let’s go over the following steps to upgrade RAID1 to RAID5 without losing data:
- Remove all but two disks from the RAID1 by repeatedly executing:
mdadm ARRAY --fail DEVICE mdadm ARRAY --remove DEVICECode language: PHP (php)
ARRAY is the ID of the array like
DEVICE is a partition of that array like
- Change the size of the RAID1
ARRAYto two disks:
mdadm --grow ARRAY -n 2Code language: PHP (php)
- Change the type of
ARRAYfrom RAID1 to RAID5
mdadm --grow ARRAY -l 5Code language: PHP (php)
- Re-add all the disks removed in the first step. Unlike for
--remove, you have to specify the full path for
mdadm ARRAY --add-spare DEVICE DEVICE ...Code language: PHP (php)
- Grow the RAID5 to the number of available
mdadm --grow ARRAY -n DISKSCode language: PHP (php)
This is the slow part of the job, which may become daunting depending on the disks size. You may still work on the machine, but you should expect degraded performance.
- To monitor the job progress, use
watch -n0.5 cat /proc/mdstat
After the operation has finished, you can resize the filesystem.
- For ext4 use:
resize2fs ARRAYCode language: PHP (php)
- For xfs use:
xfs_growfs ARRAYCode language: PHP (php)
And that’s it. We have successfully finished how to upgrade RAID1 to RAID5 without losing data. Due to the data operations this may become a very tedious operation on systems with large disks. It is often faster to backup the data, delete the RAID1 array and create a fresh RAID5 array, then restore the data from the backup.
Hope you enjoyed it and you are welcome to leave a comment. For other amazing articles and guides, visit our blog.