{{TOC}}
Introduction
RAID (Redundant Array of Independent Disks) is a data storage virtualization technology that combines multiple physical disk drive components into a logical unit for the purposes of data redundancy (except RAID 0) and performance improvement, or both. You do not need a RAID controller to set up a RAID array. As it does not require specific hardware, a RAID array can be, if needed, relocated to another Linux-run server anytime.
However, please note that the RAID technology does not replace backup. Your data are only protected from one of disk components becoming inoperative. They can be lost as the result of file system problems or accidental file removal. Besides, the second disk may be damaged during the data recovery, due to its high-rate use during this operation.
To install Calculate Linux on a software RAID, you have to partition a disk, copy the resulting partition table to the other disk drives and, finally, create a RAID array from these identical partitions. For instance, let’s create a RAID 5 array on the /dev/sda, /dev/sdb and /dev/sdc volumes. Note that you can use a two-disk RAID 1 as well, two being the minimum size.
First make sure that Calculate Utilities were updated to v3.5.7.
Creating a RAID array
We suggest partitioning your disk " as recommended by Calculate":/main/en/disk_partitioning. It means creating a swap volume, a system volume, a partition to update your CL from and user partitions containing user settings.
Partition a disk with fdisk:
fdisk /dev/sda
# create a new GPT partition table
g <Enter>
# create the "BIOS boot” partition
n <Enter><Enter><Enter> +50M <Enter> t <Enter> 4 <Enter>
# create a partition for the RAID array
n <Enter><Enter><Enter><Enter> t <Enter> 2 <Enter> 29 <Enter>
# save and exit
w <Enter>
You may also want to use a script. Just replace with your preferred sizes for the swap and system partitions:
DISK=/dev/sda
echo -e "g\nn\n\n\n+50M\nt\n4\nn\n\n\n+n\n\n\n\nt\n5\n29\nw" | fdisk $DISK
Copy the partition table to the second disk:
# copy the partition table from /dev/sda to /dev/sdb
sgdisk -R /dev/sdb /dev/sda
# copy the partition table from /dev/sda to /dev/sdc
sgdisk -R /dev/sdc /dev/sda
# regenerate UUID tables on sdb
sgdisk -G /dev/sdb
# regenerate UUID tables on sdc
sgdisk -G /dev/sdc
You can now create your RAID 5.
mdadm --create /dev/md0 --level=5 --raid-devices=3 --metadata=1.2 /dev/sda2 /dev/sdb2 /dev/sdc2
Wait for the array to be completed:
watch cat /proc/mdstat
System installation
Install Calculate Linux on RAID:
cl-install -D /dev/md0
Congratulations, your system has been installed! You may reboot now.
Data recovery
If a RAID component is down, booting your system may take much more time. The reason is that the bootloader waits for the RAID to be completed.
To add a disk, proceed as follows:
* copy the partition table to the new disk(that is, from /dev/sda to /dev/sdb)
sgdisk -R /dev/sdb /dev/sda
sgdisk -G /dev/sdb
* add the partition to the array
mdadm /dev/md0 -a /dev/sdb2
* wait for the RAID to be built
watch cat /proc/mdstat
Note: If a disk is replaced with a bigger one, you can use the extra space to create new partitions.
Notification settings
You can configure your notification policy to be notified whenever your RAID fails.
Any SMTP mailer will do. We recommend nullmailer, supplied with Calculate Linux Desktop. To configure nullmailer, run:
emerge --config nullmailer
Then specify an operating SMTP server in /etc/nullmailer/remotes
, as shown below:
smtp.example.org smtp
Now launch the nullmailer
daemon and add it as an autostart job:
/etc/init.d/nullmailer start
rc-update add nullmailer
In /etc/mdadm.conf
, add the addresses your mails will be sent from and to:
MAILADDR inbox@mail.address
MAILFROM outbox@mail.address
Send a test message to see if everything works:
mdadm --monitor /dev/md2 --test --oneshot
Constant RAID disk names
On a newly installed system, all disk names will be different from what they were at creation time. It doesn’t matter for bootup, as we in Calculate use UUIDs instead of boot addresses. Nevertheless, if you need specific naming, feel free to edit the /etc/mdadm.conf
file:
mdadm --detail --scan >> /etc/mdadm.conf
Here is an example etc/mdadm.conf
:
ARRAY /dev/md/0 metadata=1.2 name=calculate:0 UUID=70f5926c:34e9e21f:b54b65d6:938a99ab
As it must be called at bootup, you should add it to /etc/dracut.conf.d/mdadm.conf
:
mdadmconf="yes"
You may now reset the boot settings:
cl-setup-boot