Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1853084
  • 博文数量: 334
  • 博客积分: 11301
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 10:19
个人简介

路虽弥,不行不至;事虽少,不做不成。

文章分类

全部博文(334)

文章存档

2013年(4)

2012年(19)

2011年(27)

2010年(71)

2009年(45)

2008年(15)

2007年(84)

2006年(69)

分类: LINUX

2006-11-14 10:26:33

转载:
            
Mdadm: A New Tool For Linux Software RAID Management


By Derek Vadala
Expert Author
Article Date: 2003-01-13

raidtools has been the standard software RAID management package for Linux since the inception of the software RAID driver. Over the years, raidtools have proven cumbersome to use, mostly because they rely on a configuration file (/etc/raidtab) that is difficult to maintain, and partly because its features are limited. In August 2001, Neil Brown, a software engineer at the University of New South Wales and a kernel developer, released an alternative. His mdadm (multiple devices admin) package provides a simple, yet robust way to manage software arrays. mdadm is now at version 1.0.1 and has proved quite stable over its first year of development. There has been much positive response on the Linux-raid mailing list and mdadm is likely to become widespread in the future. This article assumes that you have at least some familiarity with software RAID on Linux and that you have had some exposure to the raidtools package.

Installation


, issue make install to compile, and install mdadm and its documentation. In addition to the binary, some manual pages and example files are also installed.

# tar xvf ./mdadm-1.0.1.tgz
# cd mdadm-1.0.1.tgz
# make install


Alternatively, you can download and install the package file found under the RPM directory at the same URL (

Starting an Array


Assemble mode is used to start an array that already exists. If you created an /etc/mdadm.conf you can automatically start an array listed there with the following command:


# mdadm -As /dev/md0
mdadm: /dev/md0 has been started with 2 drives.

The -A option denotes assemble mode. You can also use --assemble. The -s or --scan option tells mdadm to look in /etc/mdadm.conf for information about arrays and devices. If you want to start every array listed in /etc/mdadm.conf, don't specify an md device on the command line.


If you didn't create an /etc/mdadm.conf file, you will need to specify additional information on the command line in order to start an array. For example, this command attempts to start /dev/md0 using the devices listed on the command line:


# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1

Since using mdadm -A in this way assumes you have some prior knowledge about how arrays are arranged, it might not be useful on systems that have arrays that were created by someone else. So you may wish to examine some devices to gain a better picture about how arrays should be assembled. The examine options (-E or --examine) allows you to print the md superblock (if present) from a block device that could be an array component.


# mdadm -E /dev/sdc1
/dev/sdc1:
 Magic : a92b4efc
 Version : 00.90.00
 UUID : 84788b68:1bb79088:9a73ebcc:2ab430da
 Creation Time : Mon Sep 23 16:02:33 2002
 Raid Level : raid0
 Device Size : 17920384 (17.09 GiB 18.40 GB)
 Raid Devices : 4
 Total Devices : 4
Preferred Minor : 0
 Update Time : Mon Sep 23 16:14:52 2002
 State : clean, no-errors
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
 Spare Devices : 0
 Checksum : 8ab5e437 - correct
 Events : 0.10
 Chunk Size : 128K
 Number Major Minor RaidDevice State
this 1 8 33 1 active sync /dev/sdc1
 0 0 8 17 0 active sync /dev/sdb1
 1 1 8 33 1 active sync /dev/sdc1
 2 2 8 49 2 active sync /dev/sdd1
 3 3 8 65 3 active sync /dev/sde1

mdadm's examine option displays quite a bit of useful information about component disks. In this case we can tell that /dev/sdc1 belongs to a RAID-0 made up of a total of four member disks. What I want to specifically point out is the line of output that contains the UUID. A UUID is a 128-bit number that is guaranteed to be reasonably unique on both the local system and across other systems. It is a randomly generated using system hardware and timestamps as part of its seed. UUIDs are commonly used by many programs to uniquely tag devices. See the uuidgen and libuuid manual pages for more information.


When an array is created, the md driver generates a UUID for the array and stores it in the md superblock. You can use the UUID as criteria for array assembly. In the next example I am going to activate the array to which /dev/sdc1 belongs using its UUID.


# mdadm -Av /dev/md0 --uuid=84788b68:1bb79088:9a73ebcc:2ab430da /dev/sd*

This command scans every SCSI disk (/dev/sd*) to see if it's a member of the array with the UUID 84788b68:1bb79088:9a73ebcc:2ab430da and then starts the array, assuming it found each component device. mdadm will produce a lot of output each time it tries to scan a device that does not exist. You can safely ignore such warnings.


Managing Arrays


Using Manage mode you can add and remove disks to a running array. This is useful for removing failed disks, adding spare disks, or adding replacement disks. Manage mode can also be used to mark a member disk as failed. Manage mode replicates the functions of raidtools programs such as raidsetfaulty, raidhotremove, and raidhotadd.


For example, to add a disk to an active array, replicating the raidhotadd command:


# mdadm /dev/md0 --add /dev/sdc1

Or, to remove /dev/sdc1 from /dev/md0 try:


# mdadm /dev/md0 --f ail /dev/sdc1 --remove /dev/sdc1

Notice that I first mark /dev/sdc1 as failed and then remove it. This is the same as using the raidsetfaulty and raidhotremove commands with raidtools. It's fine to combine add, fail, and remove options on a single command line as long as they make sense in terms of array management. So you have to fail a disk before removing it, for example.


Monitoring Arrays


Follow, or Monitor, mode provides some of mdadm's best and most unique features. Using Follow/Monitor mode you can daemonize mdadm and configure it to send email alerts to system administrators when arrays encounter errors or fail. You can also use Follow mode to arbitrarily execute commands when a disk fails. For example, you might want to try removing and reinserting a failed disk in an attempt to correct a non-fatal failure without user intervention.


The following command will monitor /dev/md0 (polling every 300 seconds) for critical events. When a fatal error occurs, mdadm will send an email to sysadmin. You can tailor the polling interval and email address to meet your needs.


# mdadm --monitor --mail=sysadmin --delay=300 /dev/md0

When using monitor mode, mdadm will not exit, so you might want to wrap it around nohup and ampersand:


# nohup mdadm --monitor --mail=sysadmin --delay=300 /dev/md0 &

Follow/Monitor mode also allows arrays to share spare disks, a feature that has been lacking in Linux software RAID since its inception. That means you only
need to provide one spare disk for a group of arrays or for all arrays. It also means that system administrators don't have to manually intervene to shuffle around spare disks when arrays fail. Previously this functionality was available only using hardware RAID. When Follow/Monitor mode is invoked, it polls arrays at regular intervals. When a disk failure is detected on an array without a spare disk, mdadm will remove an available spare disk from another array and insert it into the array with the failed disk. To facilitate this process, each ARRAY line in /etc/mdadm.conf needs to have a spare-group defined.


DEVICE	/dev/sd*
ARRAY 	/dev/md0 level=raid1 num-devices=3 spare-group=database	
 UUID=410a299e:4cdd535e:169d3df4:48b7144a
ARRAY	/dev/md1 level=raid1 num-device=2 spare-group=database	
 UUID=59b6e564:739d4d28:ae0aa308:71147fe7

In this example, both /dev/md0 and /dev/md1 are part of the spare group database. Just assume that /dev/md0 is a two-disk RAID-1 with a single spare disk. If mdadm is running in monitor mode (as I showed earlier), and a disk in /dev/md1 fails, mdadm will remove the spare disk from /dev/md0 and insert it into /dev/md1.


mdadm has many other options that I haven't covered here. I strongly recommend reading its manual page for further details. Remember, you don't have to switch to mdadm. raidtools is still in development, and it has the benefit of many years of development. But, I find that mdadm is a worthy replacement. It is both feature rich and intuitive, and there's no harm in trying out alternatives.



About the Author:
">Derek Vadala is the author of O'Reilly's upcoming book, "Managing RAID on Linux."
covers everything system administrators need to know to put together a system that can support RAID. You will learn about the different types of RAID, along with associated technologies and issues, and how to choose the best RAID system for your needs. With a step-by-step, hands-on approach, the author guides you through the installation of either Linux software RAID or a hardware RAID card

转载:

 


阅读(2577) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~