3.7 Software mirroring and LVM

 <  Day Day Up  >  

Linux LVM does not provide mirroring functionality by itself. However, it can use mirroring achieved through a hardware RAID controller or through software.

More information on Linux software RAID can be found at:

http://en.tldp.org/HOWTO/Software-RAID-HOWTO.html

Currently, Linux supports linear md devices, RAID0 (striping), RAID1 (mirroring), and RAID4 and RAID5. Because we can use LVM for linear device and striping, and do not have enough disks for RAID5, we are going to create RAID1, a software mirror.

3.7.1 Using YaST to create RAID

From the LVM point of view, a RAID device (/dev/md0) is just storage, so we need to create mirrored disks or partitions first and place an LVM volume group on it. This can be achieved by YaST, as shown in Example 3-5.

First, we create two partitions which we will use for our RAID, as shown in Figure 3-7. We need at least two because we want to mirror them, which only makes sense when the partitions reside on different physical hard disks.

Figure 3-7. Creating a RAID device with YaST, step1

graphics/03fig07.jpg

Next , we choose the RAID level we want to use, as shown in Figure 3-8. For mirroring, we choose RAID1. We do not recommend using striping through RAID, because you can achieve the same result by using LVM.

Figure 3-8. Choosing desired RAID level

graphics/03fig08.jpg

Now we can assign our RAID partitions, /dev/sda3 and /dev/sdb3, to a newly created RAID device, /dev/md0 ,as shown in Figure 3-9 on page 125.

Figure 3-9. Assigning RAID type partitions in order to create a device

graphics/03fig09.jpg

In order to be able to use our mirrored device for LVM, we are not going to format it; see Figure 3-10.

Figure 3-10. No format is chosen

graphics/03fig10.jpg

However, it is possible to format and mount the mirrored device directly.

Now we can use /dev/md0 as a normal storage device. We can create an LVM volume group on it and LVM volumes in it, as shown in Figure 3-11 on page 127.

Figure 3-11. Placing a volume group and volumes on raid device /dev/md0

graphics/03fig11.jpg

Restriction

We do not recommend using software RAID or LVM for the root and the boot partition. In our testing, although we were able to configure it, the system hung on the reboot.


3.7.2 Using the command line to create RAID

In Example 3-12 on page 128 we have two disks; a small part of the first is used for / partition and a swap device, and the second disk is empty.

We can create a logical partition on our first disk and mirror it to the partition on the second disk. For better compatibility and performance, we choose to span identical cylinders .

Example 3-12. Starting point software RAID
 # fdisk -l Disk /dev/sda: 255 heads, 63 sectors, 17849 cylinders Units = cylinders of 16065 * 512 bytes    Device Boot    Start       End    Blocks    Id  System /dev/sda1   *         1         1      8001    41  PPC PReP Boot /dev/sda3            15       537   4200997+   83  Linux /dev/sda4           538     17848 139050607+    5  Extended /dev/sda5           538       799   2104483+   82  Linux swap Disk /dev/sdb: 255 heads, 63 sectors, 17849 cylinders Units = cylinders of 16065 * 512 bytes    Device Boot    Start       End    Blocks   Id   System 

First we create a RAID partition on the first disk (we type: fdisk /dev/sda, n, l , Enter, Enter, t, 6, fd ).

  • n - new

  • l - logical

  • enter - use default starting cylinder

  • enter - use default ending cylinder

  • t - change type

  • 6 - number of partition which type we want change

  • fd - Type Linux Software RAID autodetect

Example 3-13. Creating a RAID partition on the first disk
  fdisk /dev/sda  The number of cylinders for this disk is set to 17849. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs    (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):  n  Command action    l   logical (5 or over)    p   primary partition (1-4)  l  First cylinder (800-17848, default 800): Using default value 800 Last cylinder or +size or +sizeM or +sizeK (800-17848, default 17848): Using default value 17848 Command (m for help): t Partition number (1-6): 6 Hex code (type L to list codes): fd Changed system type of partition 6 to fd (Linux raid autodetect) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks. 

In Example 3-14, we create a RAID partition on the second disk and use 800 as a start cylinder in order to be analog to the first one. We will lose additional space anyway if we are going to mirror the partitions.

Example 3-14. Creating a RAID partition on the second disk
 Command (m for help): n Command action    e   extended    p   primary partition (1-4) p Partition number (1-4): 4 First cylinder (1-17849, default 1): 800 Last cylinder or +size or +sizeM or +sizeK (800-17849, default 17849): Using default value 17849 Command (m for help): t Partition number (1-4): 4 Hex code (type L to list codes): fd Changed system type of partition 4 to fd (Linux raid autodetect) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks. 

Now we have partition sda6 and sdb4 ready for RAID. In order to define what kind of RAID we want to create, we edit /etc/raidtab as shown in Example 3-15.

Example 3-15. /etc/raidtab file
 raiddev /dev/md0         raid-level   raid1         nr-raid-disks   2         chunk-size      32         persistent-superblock 1         device          /dev/sda6         raid-disk       0         device          /dev/sdb4         raid-disk       1 

Now we run the mkraid command in order to create a RAID device defined in /etc/raidtab, as shown in Example 3-16.

Example 3-16. mkraid
 #  mkraid /dev/md0 handling MD device /dev/md0 analyzing super-block disk 0: /dev/sda6, 136946061kB, raid superblock at 136945984kB disk 1: /dev/sdb3, 136954125kB, raid superblock at 136954048kB 

We can watch the status of our RAID device by issuing the cat /proc/mdstat command, as shown in Example 3-17.

Example 3-17. Checking RAID status
 # cat /proc/mdstat Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 sdb3[1] sda6[0]       136945984 blocks [2/2] [UU]       [>....................]  resync = 1.8% (2538560/136945984) finish=140.7min speed=15917K/sec unused devices: <none> 

Note

We do not need to wait for reconstruction to finish in order to use the RAID device; the synchronization is done using idle I/O bandwidth. The process is transparent, so we can use the device (place LVM on it, partition and mount) although the disks are not synchronized yet. If one disk fails during the synchronization, we will need our backup tape.


Now we can create a volume group and add /dev/md0 to it, as shown in Example 3-18.

Example 3-18. Creating VG on RAID device
 # vgcreate raidvg /dev/md0 vgcreate -- INFO: using default physical extent size 4 MB vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte vgcreate -- doing automatic backup of volume group "raidvg" vgcreate -- volume group "raidvg" successfully created and activated 

And a logical volume in this volume group, as shown in Example 3-19.

Example 3-19. Creating LV in raidvg
 lvcreate -L 20G -n mirrordata1 raidvg lvcreate -- doing automatic backup of "raidvg" lvcreate -- logical volume "/dev/raidvg/mirrordata1" successfully created 

This newly created volume can be formatted and mounted.

 <  Day Day Up  >  


Quintero - Deploying Linux on IBM E-Server Pseries Clusters
Quintero - Deploying Linux on IBM E-Server Pseries Clusters
ISBN: N/A
EAN: N/A
Year: 2003
Pages: 108

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net