User:Svamberg/Software RAID

From FAIWiki

Jump to: navigation, search

You might want to read Setup_harddisks_2 for an update on the status of a fai integrated solution.

Contents

Prerequisite

  • mdadm package in NFSROOT
  • your install and running kernel must supported software raid

Install

You need two hooks if you want to support software raids based on mdadm. Your kernels need to support software raid.

  • get the main hook mountdisks.SW_RAID and store it in the $FAI/hooks/ directory
  • save the following lines as mountdisks.SW_RAID.source in the $FAI/hooks directory
#!/bin/sh
. $LOGDIR/disk_var.sh
  • add class SW_RAID to your $FAI/class/ configuration

Configure

Configuration is stored as the $SW_RAID_CONFIG variable, a syntax of which is

md_raid_device[raid_options]=devices:mountpoint:filesystem[,mkfs_options]:mount_options:boot

  raid_options - raid_level[,mdadm_option[,next_mdadm_option[,...]]]
  devices - first_device,[next_device,[,...]]][;first_spare_device[,next_spare_device[,...]]]

For example:

SW_RAID_CONFIG="
md0[mirror]=/dev/sda1,/dev/sdb1:/boot:ext3::
md1[mirror]=/dev/sda2,/dev/sdb2:/:ext3:rw,errors=remount-ro:boot
md2[mirror]=/dev/sda5,/dev/sdb5:none:swap::
md3[linear]=/dev/sda7,/dev/sdb7:/mnt/data:ext3,-T news::
"

Example

As an example, let's assume we have two identical disks. We need all raids in mirror.

Partitioning

Before using raid you need to partition the disks by editing the $FAI/disk_config file.

# <type> <mountpoint> <size in mb> [mount options]     [;extra options]

disk_config sda
primary  /boot        100        rw                     ; boot -j ext3
primary  /            10000      rw,errors=remount-ro ; -j ext3
logical  -            2000                               
logical  -            2000                        
logical  -            1024-      
logical  -            1000

disk_config sdb
primary  -            100        
primary  -            10000      
logical  -            2000                         
logical  -            2000                         
logical  -            1024-     
logical  -            1000       

Configure raids

Add the raid configuration into the .var file (in $FAI/class directory):

SW_RAID_CONFIG="
md0[mirror]=/dev/sda1,/dev/sdb1:/boot:ext3::
md1[mirror]=/dev/sda2,/dev/sdb2:/:ext3:rw,errors=remount-ro:boot
md3[mirror]=/dev/sda5,/dev/sdb5:none:swap::
md4[mirror]=/dev/sda6,/dev/sdb6:none:swap::
md5[mirror]=/dev/sda7,/dev/sdb7:/var:ext3::
md6[mirror]=/dev/sda8,/dev/sdb8:/var/cache/openafs:ext3::
"

Result

After installation /proc/mdstat says:

Personalities : [linear] [raid0] [raid1] [raid5] 
md1 : active raid1 sde2[1] sdd2[0]
      10241344 blocks [2/2] [UU]
      
md3 : active raid1 sde5[1] sdd5[0]
      2048192 blocks [2/2] [UU]
      
md4 : active raid1 sde6[1] sdd6[0]
      2048192 blocks [2/2] [UU]
      
md5 : active raid1 sde7[1] sdd7[0]
      56211328 blocks [2/2] [UU]
      
md6 : active raid1 sde8[1] sdd8[0]
      1028032 blocks [2/2] [UU]
      
md0 : active raid1 sde1[1] sdd1[0]
      104320 blocks [2/2] [UU]
      
unused devices: <none>