Red Hat Enterprise Linux 5系统管理宝典 第7章 磁盘阵列

来源:互联网 发布:淘宝双十一总销售额 编辑:程序博客网 时间:2024/05/22 01:26

本文转载于 http://book.51cto.com/art/200902/110750.htm

另外,在百度文库也能下载本文的PDF版本 http://wenku.baidu.com/view/e131a865f5335a8102d22024.html




第7章 磁盘阵列

现今企业对存储设备的需求越来越大,相对的要求也越来越高。企业把越来越多的数据数字化后,存储设备的效率、安全性显然成为当今系统管理人员必须面对的问题。有什么方法可以提高存储设备的效率并确保其完整性?

有,那就是磁盘阵列系统。

7.1  磁盘阵列的介绍

磁盘阵列(Redundant Array of Independent Disks,RAID)是把多个磁盘设备合并成为一个磁盘空间。

7.1.1  磁盘阵列的功能

一般来说,磁盘阵列可以提供3个功能。

1.整合闲置的磁盘空间

你可以通过磁盘阵列,把原本闲置、不具经济价值的磁盘,整合成为一个新的磁盘空间。例如,把3个2GB的磁盘合并成为一个6GB大小的磁盘空间,这样就可以更方便地存储数据。

2.提高磁盘读取的效率

当磁盘阵列在写入数据时,会把数据拆解成若干等份,同时写入到各个磁盘中;在读取数据时,又会从各个磁盘中同时读出所需的数据。因为磁盘阵列具备如此的读取特性,让我们可以加快读取的速度,提高磁盘的效率。

假设一个磁盘读写100MB数据需花费1分钟的时间,如果我们使用两个磁盘创建磁盘阵列时,同样的100MB大小的数据写入磁盘阵列时,由于每一个磁盘只负责存储50MB的数据,因此,磁盘阵列只需花费半分钟的时间,就可完成写入的动作。

3.提供容错性

磁盘阵列的第3个好处,就是具备容错性(Fault Tolerance)。

由于存储在磁盘阵列上的数据,实际上是分散在不同的磁盘中的,所以,当某一个磁盘发生故障时,磁盘阵列便可以从其他正常的磁盘中读取文件数据;另外,磁盘数组还允你加入新的磁盘来重建先前损坏的那个磁盘上的数据。


7.1.2  磁盘阵列的等级

磁盘阵列依照合并的方式不同,定义出磁盘阵列的等级(RAID  Level)。目前已经定义的磁盘阵列等级包括RAID-5、RAID-1、RAID-2、RAID-3、RAID-4、RAID-5、RAID-10、RAID1+0等。

不同等级的磁盘阵列,提供的功能、运行原理与特性也都不尽相同。以下仅介绍几种常见的磁盘阵列等级。

1.RAID-0

RAID-0 俗称等量模式(Striping Mode)。RAID-0 可以由2个以上的磁盘合并成一个磁盘空间,它会将存入的数据切割成n份(n为磁盘的数量),然后把每一份数据分别存储至每一个磁盘的区段(Chunk)中。

例如,把一份12KB大小的数据,写入到由两个磁盘组成,区段(Chunk)为 4KB的磁盘阵列时,磁盘阵列会以下列的方式写入磁盘。

第一个4KB数据,写入到第一个磁盘的第一个区块。

第二个4KB数据,写入到第二个磁盘的第一个区块。

第三个4KB数据,写入到第一个磁盘的第二个区块。

由于资料会被拆成若干等份存储在不同的组成磁盘中,因而可以加快读取的速度;组成的磁盘数量越多,速度就越快,而且还可以充分使用每一个磁盘的空间,提供更大的磁盘空间。

然而,RAID-0也有其缺点。它的最大缺点就是缺乏容错性,因为数据同时被存储在不同的磁盘中,所以只要其中一个磁盘出故障,则整个RAID-0的磁盘空间都将无法继续使用。

2.RAID-1

RAID-1可以由2个(甚至更多)磁盘合并成为一个磁盘空间。当你把一份数据存储到RAID-5的磁盘阵列时,RAID-1磁盘阵列会把数据复制一份,存储到其他的磁盘中;由于每一个磁盘中的数据都一模一样,就像照镜子一样,所以RAID-1俗称"镜像模式(Mirroring Mode)"。

由于数据在每一个磁盘中都有一份,因此,其中一块磁盘出故障,另外一块还会保存一份相同的内容,RAID-1会自动从正常的磁盘中继续读取数据。等到你修复故障的磁盘后,RAID-1也会把正常磁盘的数据自动地同步到新加入的磁盘中。

RAID-1可以提供下列的好处。

可提供容错:即使其中一个磁盘出故障,RAID-1磁盘阵列还可以让你读取数据。

可加快读取的速度:因为RAID-1磁盘阵列会在不同磁盘存储相同的数据;因此便可以同时从不同的磁盘读取相同的数据,因而提高读取的效率。

RAID-1也有其缺点,其的缺点如下。

较浪费磁盘空间:因为数据需复制存储到其他磁盘,因此整个RAID-5磁盘阵列可用空间为整个磁盘空间的 1/n(n为磁盘的数量)。

无法提高写入的效率:因为RAID-1磁盘阵列必须负责同步每一个磁盘中的资料,因此在写入数据到RAID-1磁盘阵列时,无法提高写入的效率。

一般来说,RAID-1的磁盘成本会高于其他等级的磁盘阵列,通常只用在需要高容错性的环境中。

3.RAID-5

RAID-5试图结合RAID-0与RAID-1的好处,同时避免它们的缺点。

RAID-5磁盘阵列由3个以上大小相同的磁盘组成。这与RAID-5类似,不过,不是RAID-5的每一个区段(Chunk)都可以存储资料,因为RAID-5会在某些区段中存储同位检查码(Parity)。拥有n个磁盘的RAID-5磁盘阵列,会把第n个区段用来存储同位检查码。

当你把数据写入RAID-5的磁盘时,RAID-5磁盘会把数据切割成若干等份,然后写入到不同的组成磁盘中;接着计算出每一份数据的同位检查码,再把同位检查码写入到其他磁盘中。值得注意的是,同位检查不是集中存储在同一个磁盘中的,而是分散存储在每一个磁盘里 。

当RAID-5磁盘阵列的某一个磁盘出故障时,RAID-5会从其他正常的磁盘中取出故障磁盘数据的同位检查码,然后计算出故障磁盘的那一段数据。通过此技巧,让RAID-5可以提供容错性。而且RAID-5会把资料同时存储于多个磁盘里,又可以提高读取的效率。

但RAID-5 磁盘阵列也有缺点,由于RAID-5得计算出同位检查码,因此如果使用的是由 Linux 内核提供的软件磁盘阵列,那么在每次读取数据时,都得使用电脑的 CPU 进行计算同位检查码的工作,这对于一台忙碌的Red Hat Enterprise Linux 来说,会降低系统的效率。

上述3个等级的磁盘阵列的差异,如表7-1所示。

表7-1  磁盘阵列差异表

 

RAID-0

RAID-1

RAID-5

俗称

等量模式(Stripe)

镜射模式(Mirror)

具同位检查功能的等量模式(Stripe Set With Parity)

组成磁盘数量

2个以上

2个以上

3个以上

组成磁盘大小

可以不用一样大

需大小相同

需大小相同

可用空间

所有磁盘空间的总和

单一磁盘大小

N-1)*S

N为磁盘数量;S为每一个磁盘的大小

优点

•  读取快

•  写入快

•  增加可用空间

•  具备容错

•  读取快

•  读取快

•  具备容错

•  增加可用空间

缺点

•  无容错

•  写入普通

•  浪费磁盘空间

•  写入慢

•  需更高的计算能力





7.1.3  RHEL的磁盘阵列

Red Hat Enterprise Linux 支持两种磁盘阵列设备。

硬件的磁盘阵列(Hardward RAID)

通过磁盘阵列控制卡(RAID Controller Card)提供磁盘阵列的功能。要使用硬件的磁盘阵列,必须采购支持 Red Hat Enterprise Linux 的磁盘阵列控制卡,可能 需正确安装驱动程序,才能让 Red Hat Enterprise Linux 顺利使用硬件磁碟数组的设备。

软件磁盘阵列(Software RAID)

这是由 Linux 内核仿真磁盘阵列的功能,你无须安装额外的硬设备,只要你的Linux 内核有支持,就可以直接使用。

由于硬件磁盘阵列的功能是由磁盘阵列控制卡提供计算工作的,因而效率大大高于由Linux 内核的软件磁盘阵列;但硬件磁盘阵列得购买额外的设备,其成本会比软件磁盘阵列高出许多。

虽然硬件磁盘阵列的成本比较高,但效率较好;如果是重要服务器,我还是建议你优先采用硬件磁盘阵列。

虽然硬件磁盘阵列可以带来较高的效率,除了成本较高之外,还有一些问题得考虑。

要在Red Hat Enterprise Linux系统中使用硬件磁盘阵列的设备,你必须正确地安装该磁盘设备驱动程序。如果 Red Hat Enterprise Linux没有提供该硬件磁盘阵列的驱动程式,那就得安装厂商提供的驱动程序才行。如果连厂商都未提供驱动程序,那只能望"卡"而叹了;即使提供了驱动程序,但往往厂商提供的驱动程序都只适合某一个版本的内核,未来升级了内核,旧版的驱动程序就无法正常运行了。再者,硬件磁盘数组设备厂商通常会提供其专属的管理工具,你得学会该工具的使用方法,否则将无法顺利使用该设备。



7.2  硬件磁盘阵列

虽然说硬件磁盘阵列在使用上如此不便,但其效率却是远远高于软件磁盘阵列的。因此,硬件磁盘阵列系统在企业应用领域中,一直都扮演着重要的角色。尤其这几年许多厂商纷纷开发价格低廉的硬件磁盘控制卡,更证明了其重要性。为了让 Red Hat Enterprise Linux的用户可以更方便地使用硬件磁盘系统,有人致力于开发dmraid 软件,让我们用一致的方式,使用各种硬件磁盘阵列设备。

虽然 dmraid 可以提供标准的方式读取各种硬件磁盘阵列,但截至目前为止,dmraid 仍在开发中,也许会有一些Bug损坏磁盘与宝贵的资料。因此,我暂时还不建议你应用 dmraid 于重要服务器的Red Hat Enterprise Linux系统。

本节将介绍如何通过 dmraid 来建立与管理硬件磁盘阵列系统。

7.2.1  dmraid 的介绍

dmraid 全名为设备对应器磁盘阵列(Device Mapper RAID),利用Linux内核提供的设备对应器(Device Mapper)机制 ,为多种磁盘阵列设备提供磁盘阵列的设备文件,让用户可以在 Red Hat Enterprise Linux系统中使用硬件磁盘阵列设备。

dmraid 是由服务于Red Hat的 Heinz Mauelshagen设计与开发的一个软件。如果你打算取得完整的dmraid信息,或想与作者联系,请登录其官方网站:http://people.Red Hat.com/heinzm/sw/dmraid/。



7.2.2  建立硬件磁盘阵列

首先,来研究如何利用 dmraid建立硬件磁盘阵列,此步骤又包含几个动作。

查看 dmraid 是否支持磁盘阵列设备。

通过硬件磁盘阵列提供的设置工具设置磁盘阵列。

启用硬件磁盘阵列设备。

以下是对上述动作的详细讲解。

1.查看支持的硬件与模式

由于dmraid仅支持部分硬件磁盘阵列的设备,而且不同版本的dmraid软件与 Linux 内核支持的硬件磁盘阵列设备种类也可能不相同。因此,在开始使用dmraid来建立硬件磁盘阵列前,你必须先检查dmraid是否支持你的硬件磁盘阵列设备。

要查看你使用的 dmraid 支持哪些硬件磁盘阵列设备,请使用 dmraid -l 命令。

[root@linux ~]# dmraid -lasr    : Adaptec HostRAID ASR(0,1,10) ddf1 : SNIA DDF1(0,1,4,5,linear) hpt37x : Highpoint HPT37X(S,0,1,10,01) hpt45x : Highpoint HPT45X(S,0,1,10)Isw    : Intel Software RAID(0,1)jmicron: JMicron ATARAID(S,0,1)lsi    : LSI Logic MegaRAID(0,1,10)nvidia : NVidia RAID(S,0,1,10,5)pdc    : Promise FastTrack(S,0,1,10)sil    : Silicon Image(tm) Medley(tm)(0,1,10)via    : VIA Software RAID(S,0,1,10)dos    : DOS partitions on SW RAIDs[root@linux ~]#

上述的输出结果里,每一行代表支持的某一种硬件磁盘阵列设备,以及支持的磁盘阵列等级。以下列这行为例:

nvidia  : NVidia RAID(S,0,1,10,5)

该硬件磁盘阵列设备的详细信息如表7-2所示。

表7-2  硬件磁盘阵列设备的详细信息

项目

说明

设备代号

NVIDIA

全名

NVIDIA RAID

支持的等级

SPAN、RAID-0、RAID-1、RAID-1+0 与RAID-5

2.设置磁盘阵列

接着,请你利用硬件磁盘阵列设备所提供的配置方法,来建立磁盘阵列。这个部分的动作,会因为磁盘阵列设备的不同而有不同的配置方式。我计算机中Silicon Image磁盘阵列控制卡是通过计算机开机的BIOS阶段,来进行配置工作的。至于你使用的磁盘阵列设备如何建立磁盘阵列,请详细参阅其管理手册。

3.启动磁盘阵列设备

最后,请使用 dmraid -a y 来启动磁盘阵列设备。

启动后,Red Hat Enterprise Linux会在/dev/mapper/目录中,产生该硬件磁盘阵列的设备文件。dmraid产生的设备文件,以下列的格式命名:

/dev/mapper/TYPE_UNIQUENAME

其中的TYPE是硬件磁盘设备的代号,以硬件磁盘阵列的代号作为TYPE的内容;而UNIQUENAME 则是该硬件设备的唯一识别码,通常由不规则的文字组成。

以下是使用dmraid启动磁盘阵列设备的示范。

[root@linux ~]# ls /dev/mapper/control ?①  [root@linux ~]# dmraid -a y ②[root@linux ~]# ls /dev/mapper/control  sil_aiadcdadagbj ?③ [root@linux ~]#

① 目前 /dev/mapper/ 中,只有一个名为 control 的设备文件。

② 现在使用 dmraid 启动硬件磁盘阵列设备。

③ 成功启动后,在 /dev/mapper/ 中便产生了该磁盘阵列的设备文件。




7.2.3  使用硬件磁盘阵列设备

启动磁盘阵列设备后,你可以把该设备文件当做一个磁盘使用,例如对该磁盘阵列设备产生分区、制作文件系统等。

每一个由 dmraid 管理的磁盘阵列设备的分区,其设备文件名称为:

/dev/mapper/TYPE_UNIQUENAMEpNUMBER

其中的TYPE_UNIQUENAME 就是硬件磁盘阵列设备的名称,而 NUMBER 则是分区的编号。

不过,对硬件磁盘阵列设备执行管理分区动作时,我建议你使用 parted工具,而尽可能不要使用fdisk,这是因为根据我的测试结果 ,发现通过parted 新增或卸载分区后,Red Hat Enterprise Linux会自动产生正确的分区设备文件;但使用fdisk却无法正常地更新分区设备文件。

以下是我使用 parted 管理分区的示范。

[root@linux ~]# ls /dev/mapper/control  sil_aiadcdadagbj ?①[root@linux ~]# parted /dev/mapper/sil_aiadcdadagbj mkpart p ext3 0 1024 o②[root@linux ~]# parted /dev/mapper/sil_aiadcdadagbj printModel: Linux device-mapper(dm)Disk /dev/mapper/sil_aiadcdadagbj: 250GBSector size(logical/physical): 512B/512B Partition Table: msdosNumber  Start    End      Size    Type       File system  旗标1  0.51kB  1024MB  1024MB    主分区 ?③
信息: 如果必要,不要忘记更新 /etc/fstab
[root@linux ~]# ls /dev/mapper/control  sil_aiadcdadagbj  sil_aiadcdadagbjp1 ④?[root@linux ~]#

① 现在/dev/mapper/只有硬件磁盘阵列的设备文件。

② 我使用 parted 在sil_aiadcdadagbj设备中建立一个新的主要分区,作为ext3文件系统,其开始的位置为0 MB,结束的位置为 1024MB。

③ 完成后,利用parted查看 sil_aiadcdadagbj设备的磁盘分区数据表,此处可发现刚刚新增的磁盘分区数据。

④ 使用parted产生新的分区后,会自动产生该分区的设备文件。此处的sil_aiadcdadagbjp1就是刚刚新增的分区的设备文件。

如果要体验硬件磁盘阵列提供的功能,请直接读取 dmraid 提供的设备文件(以上述例子为:/dev/sil_aiadcdadagbj),不要使用原有的磁盘机设备(例如/dev/sda)。


7.2.4  管理硬件磁盘阵列

建立完硬件磁盘阵列后,接着让我们来研究如何管理该磁盘阵列设备。

1.读取磁盘阵列设备

如果你想知道目前的某一个硬件磁盘阵列设备是由哪些磁盘驱动器组成的,你可以使用dmraid -r查看:

dmraid -r [DEVICE...]

其中的DEVICE为磁盘驱动器设备的设备文件名称,省略时代表读取所有磁盘设备。

以下是我使用dmraid -r读取磁盘驱动器信息的范例。

[root@linux ~]# dmraid -r/dev/sda: sil, "sil_aiadcdadagbj", mirror, ok, 488395120 sectors, data@ 0/dev/sdb: sil, "sil_aiadcdadagbj", mirror, ok, 488395120 sectors, data@ 0[root@linux ~]#

上述显示结果中,每一行代表一个磁盘设备与其硬件磁盘阵列的相关信息。以上述/dev/sda 磁盘驱动器为例。

属于sil硬件磁盘阵列设备。

设备文件名称为 sil_aiadcdadagbj。

操作为RAID-5等级,也就是镜像模式(Mirror Mode)。

目前的配置为良好(ok)。

共有 488395120 扇区。

数据位移(Offset)的大小为 0。

2.查看磁盘阵列配置

另外一种查看硬件磁盘阵列设备的方法,则是利用dmraid -s:

dmraid -s [RAID...]
其中的RAID为dmraid 提供的磁盘阵列设备的设备文件名称,省略时代表所有的磁盘设备。以下是我使用dmraid -s 查看磁盘阵列设备状态的示范。
[root@linux ~]# dmraid -s*** Active Setname : sil_aiadcdadagbj size : 488395120stride : 0type : mirror status : ok subsets: 0devs : 2spares : 0[root@linux ~]#

3.停用磁盘阵列设备

最后,如果打算停用硬件磁盘阵列的话,你可以使用dmraid 命令:

dmraid -a n [RAID...]

其中的RAID即是要停用的磁盘阵列设备的设备文件,如果没有指定RAID,则代表所有磁盘阵列设备。

不过,如果该硬件磁盘阵列上仍有分区的话,dmraid将会返回错误信息。因此,请在停用硬件磁盘阵列设备之前,先卸载该磁盘设备上所有的分区。

以下是我使用dmraid -a n停用磁盘阵列设备的示范。

[root@linux ~]# dmraid -a nRAID set "sil_aiadcdadagbj(null)1" is not active ?①[root@linux ~]# ls /dev/mapper/control  sil_aiadcdadagbj  sil_aiadcdadagbjp1 ②[root@linux ~]# parted /dev/mapper/sil_aiadcdadagbj rm 1 ?③
信息: 如果必要,不要忘记更新 /etc/fstab
[root@linux ~]# ls /dev/mapper/control  sil_aiadcdadagbj ?④[root@linux ~]# dmraid -a n ?⑤[root@linux ~]# ls /dev/mapper/control ?⑥[root@linux ~]#

① 现在我使用dmraid停用硬件磁盘阵列,但dmraid却返回错误信息,代表执行失败。

② 这是因为我的sil_aiadcdadagbj硬件磁盘阵列设备上仍有其他分区。

③ 所以,接着使用parted删除sil_aiadcdadagbj的第一个分区。

④ 现在sil_aiadcdadagbjp1设备文件就消失了。

⑤ 再次停用硬件磁盘阵列设备,这次就没有产生任何错误信息了。

⑥ 成功地停用后,该磁盘设备的设备文件也跟着消失了。



7.3  软件磁盘阵列

软件磁盘阵列是由Linux 内核提供的一项功能,只要你的Linux内核编译时有启动软件磁盘阵列功能,就可以享受磁盘阵列的好处,完全不需准备额外的硬设备,比起硬件磁盘阵列来说,是一个比较经济划算的解决方案。

另外,软件磁盘阵列还有一个更胜于硬件磁盘阵列的优点,即跨平台。Red Hat Enterprise Linux 支持的软件磁盘阵列具备下列几项特性。

由内核提供

目前的软件磁盘阵列功能是由 Linux 内核提供的。如果 Linux 内核在编译的时候没有启用这项功能的话,就无法使用软件磁盘阵列。

Red Hat Enterprise Linux已经把软件磁盘阵列功能编译到内置的内核中,因此,你不用重新编译内核,便可以直接在Red Hat Enterprise Linux中使用软件磁盘阵列提供的功能。

以分区为组成单位

Red Hat Enterprise Linux 的软件磁盘阵列以分区为软件磁盘阵列的组成单元,你可以把多个分区组成软件磁盘阵列的设备。

你可以使用mdadm工具,在 Red Hat Enterprise Linux 系统中,建立与管理软件磁盘阵列。本节中将介绍如何通过 mdadm 工具,来建立并管理软件磁盘阵列。





7.3.1  建立软件磁盘阵列

要在Red Hat Enterprise Linux 建立软件磁盘阵列有3大步骤。

(1)产生组成单元。

(2)设置 /etc/mdadm.conf。

(3)初始化多重磁盘设备。

1.产生组成单元

由于Red Hat Enterprise Linux中的软件磁盘阵列是由多个分区组成的,所以,Red Hat Enterprise Linux的软件磁盘阵列的组成单元就是分区。但与一般的分区不一样的是:软件磁盘阵列组成单元的分区的系统识别码(System ID)必须设置为"fd - Linux raid autodetect"。

Red Hat Enterprise Linux 允许你使用同一个磁盘的不同分区产生磁盘阵列,也可以由多个磁盘的分区产生磁盘阵列;但前者无法提供容错性,也无法提升读取的效率。

为了能享受磁盘阵列带来的容错性与高效率的好处,我强烈建议你尽量采用由不同磁盘的分区组成软件磁盘阵列。

2.设置 /etc/mdadm.conf

/etc/mdadm.conf是mdadm默认的配置文件,当Red Hat Enterprise Linux启动时,会依据这个文件中的设置来启动多重磁盘设备,以及软件磁盘阵列监控服务。

坦白说,这个步骤其实是可以省略的。因为磁盘阵列的信息实际上是存储在磁盘分区的超级区块(Superblock)中的,而不是/etc/mdadm.conf文件里。

但由于Red Hat Enterprise Linux启动过程的rc.sysinit时,会去检查有没有 /etc/mdadm.conf这个文件。如果这个文件存在,才会去启用定义在 /etc/mdadm.conf的软件磁盘设备;如果不存在,就不会自动启用软件磁盘设备了。

所以,为了避免开机后Red Hat Enterprise Linux 不会启用软件磁盘设备,建议你还是乖乖地完成这个步骤吧!

Red Hat Enterprise Linux默认不会提供/etc/mdadm.conf,你得自己产生出来。最简洁的内容如下:

DEVICE /DEV/HDA10 /DEV/HDA11ARRAY /DEV/MD0 DEVICES=/DEV/HDA10,/DEV/HDA11

其中的DEVICE参数用来指出系统中有哪些多重磁盘的组成单元;而ARRAY参数则用来定义每一个多重磁盘设备是由哪些磁盘设备组成的。

关于 /etc/mdadm.conf 的语法,你可以读取 mdam.conf(5)的手册页(man page);此外,也可参阅 /usr/share/doc/mdadm-VERSION/目录中的mdadm.conf-example这个范例文件。

3.初始化多重磁盘设备

最后一个步骤就是初始化多重磁盘设备(Multiple Disk Device ,MD)。多重磁盘设备就是Red Hat Enterprise Linux 软件磁盘阵列的磁盘设备,你可以将若干个组成单元建立成为一个多重磁盘设备。

与其他设备一样,每一个多重磁盘设备都会有一个设备文件代表它。Red Hat Enterprise Linux 的多重磁盘设备使用 /dev/mdN 的设备文件,其中的N范围为0~31,一共可以建立32个多重磁盘设备。

要初始化多重磁盘设备,你必须使用mdadm --create 命令:

mdadm --create MD_DEVICE \--level=LEVEL \--raid-devices=N \DEVICES...

其中的MD_DEVICE 就是多重磁盘的设备文件;而 LEVEL 则是你要建立的磁盘阵列等级;至于 N 则用来指出组成单元的数量;最后的 DEVICES 则是组成单元的设备文件名称。

在初始化多重磁盘时,请注意以下两点。

在早期的系统中,通过raidtools建立多重磁盘后,你必须手动启动多重磁盘装置;而在新版 的Red Hat Enterprise Linux后,使用mdadm会自动启动新建立的多重磁盘。

每一个多重磁盘设备只能被建立一次。如果你的命令有错,将造成该多重磁盘装置无法使用。

如何删除多重磁盘设备?

如果制作出错误的多重磁盘设备,有没有办法重新来过?

可以。你可以依照下列的步骤,先删除错误的多重磁盘设备,然后重新再 来一遍。

(1)停用多重磁盘设备,请参考 "启用与停用多重磁盘" 的说明。

(2)使用mdadm --zero-superblock DEVICE命令,清空每一个组成磁盘的超级区块(Superblock)。

这样就可以重新建立多重磁盘设备了。

以下是我将/dev/hda10 与/dev/hda11以raid1的磁盘阵列等级产生/dev/md0多重磁盘设备的示范。

 [root@linux ~]# fdisk -l /dev/hda | grep 'Linux raid'/dev/hda10 1158 1170 104391 fd Linux raid autodetect ?①/dev/hda11 1171 1183 104391 fd Linux raid autodetect[root@linux ~]# mdadm --verbose --create /dev/md0 \> --level raid1 \> --raid-devices 2 \> /dev/hda10 /dev/hda11 ②mdadm: size set to 104320Kmdadm: array /dev/md0 started. ?③ [root@linux ~]#

① /dev/hda10 与 /dev/hda11 是两个系统识别码为 "fd - Linux  raid autodetect"的分区,我将使用这两个分区来产生多重磁盘设备。

② 使用 mdadm --create 命令,建立 /dev/md0 这个多重磁盘设备,并指定RAID等级为 raid1;其组成设备为 /dev/hda10 与 /dev/hda11。

③ mdadm告诉我们,/dev/md0已经成功地建立出来了,并且会自动启动/dev/md0设备。这样一来你就可以把多重磁盘设备当做普通的分区使用了。




7.3.2  管理软件磁盘阵列(1)

在建立完软件磁盘阵列设备后,现在来研究如何管理多重磁盘设备。这里将介绍下列几项管理技术。

如何查看多重磁盘设备的详细状况。

如何解决多重磁盘设备故障的状况。

如何模拟故障的状况。

启用与停用多重磁盘设备。

如何监控多重磁盘设备。

1.查看多重磁盘详细状况

查看多重磁盘设备的状况,有以下几种方式。

通过 /proc/mdstat 文件

直接读取/proc/mdstat就可以取得内核中所记录的多重磁盘设备的配置信息,不过,这是比较低级的方式,并不建议你使用。

使用 mdadm 工具

我们也可以通过 mdadm --detail MD_DEVICE 的命令,查询 MD_DEVICE 的详细状况信息。

以下是我使用这两种方式,查看软件磁盘设备的配置的示范。

 [root@linux ~]# cat /proc/mdstatPersonalities : [raid1]md0 : active raid1 hda11[1] hda10[0]     104320 blocks [2/2] [UU]

unused devices: <none>
[root@linux ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Mar 15 18:46:14 2008
Raid Level : raid1 ?①
Array Size : 104320(101.89 MiB 106.82 MB) ②
Device Size : 104320(101.89 MiB 106.82 MB)
Raid Devices : 2 ?③
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sat Mar 15 18:46:27 2008
State : clean ?④
Active Devices : 2 ?⑤
Working Devices : 2
Failed Devices : 0 ?⑥
Spare Devices : 0

UUID : 54914f3a:61874593:a1965938:804fcfb6
Events : 0.2

Number Major Minor RaidDevice  State ?⑦
0       3      10         0   active sync     /dev/hda10
1       3      11         1   active sync     /dev/hda11
[root@linux ~]#

① 这里告诉我们/dev/md0的RAID等级。

② 磁盘阵列的大小。

③ 成单位数量。

④ /dev/md0目前的配置。

⑤ 启用中的组成单位有几个。

⑥ 故障的组成单位数量。

⑦ 每一个组成单位的详细信息。

当你使用mdadm --detail的方式查看多重磁盘的状况时,需注意下面的信息:

Number Major Minor RaidDevice  State0       3       10     0    active sync    /dev/hda101         3       11     1    active sync    /dev/hda11

这里告诉我们,我的多重磁盘设备共有两个组成单元,一个是/dev/hda10,另外一个则是 /dev/hda11。这两个组成单元的状态都是启用中(active),并且正在同步其中的资料(sync),这表示我的/dev/md0 目前是在正常的运行中。

2.解决多重磁盘设备的故障

如果有一天,你发现多重磁盘的配置出现例如下面的信息,那表示/dev/hda10出故障了。

Number Major Minor RaidDevice  State0       0       0        0   removed 1       3       11       1   active sync   /dev/hda112        3    10     -    faulty spare /dev/hda10

多重磁盘的磁盘出现故障,应该怎么办?

如果是具备容错功能的多重磁盘(例如 RAID-1、RAID-5……),你完全不需要紧张,因为Red Hat Enterprise Linux 会依照磁盘阵列的定义,把数据存储到同一个磁盘数组的其他磁盘上,你还是可以继续读取多重磁盘上的文件数据。之后,你只需依照下列的步骤,更换故障的磁盘,就可修复出现故障的多重磁盘了。

(1)使用 mdadm MD_DEVICE --remove DEVICE 在线卸载出现故障的磁盘。

(2)真正地卸载出故障的磁盘驱动器。

(3)安装正常的磁盘驱动器后,再产生一个新的组成单元。

(4)使用mdadm MD_DEVICE --add DEVICE在线加入新的组成单元。

不管是在线卸载还是加入组成磁盘,都不需卸载文件系统。但在第二个步骤中,如果你的计算机不支持热插拔(Hot Swappable),则必须先关闭Red Hat Enterprise Linux才能卸载出现故障的磁盘;而在第三个步骤中,你必须重新产生一个新的、正常的组成单元,才能进行之后的动作。

以下是我卸载出现故障的 /dev/hda10并加入/dev/hda12这个正常的分区的示范。

 [root@linux ~]# mdadm --detail /dev/md0 | tail -n 31      3     11     1    active sync  /dev/hda112      3     10      -    faulty spare /dev/hda10 ?①[root@linux ~]# mdadm /dev/md0 --remove /dev/hda10 ②mdadm: hot removed /dev/hda10[root@linux ~]# mdadm --detail /dev/md0 | tail -n 3Number Major Minor RaidDevice  State0      0       0        0    removed ?③1      3      11        1    active sync    /dev/hda11[root@linux ~]# mdadm /dev/md0 --add /dev/hda12 ?④mdadm: added /dev/hda12[root@linux ~]# mdadm --detail /dev/md0 | tail -n 3Number  Major Minor RaidDevice State2       3      12        0     spare rebuilding   /dev/hda12 ?⑤1       3      11        1     active sync       /dev/hda11[root@linux ~]# mdadm --detail /dev/md0 | tail -n 3   ⑥Number  Major Minor RaidDevice State0       3      12        0     spare sync     /dev/hda12 ?3      11        1     active sync       /dev/hda11

① 我发现我的 /dev/hda10出故障了。

② 先使用mdadm 从 /dev/md0在线卸载/dev/hda10这个出故障的磁盘。

③ 你会发现,此时我的/dev/md0只剩下一个可用的磁盘设备了。

④ 然后使用mdadm在线加入 /dev/hda12到/dev/md0多重磁盘。

⑤ 现在/dev/md0正在重建/dev/hda12的资料。

⑥ 最后,我的/dev/md0 的组成单元就变成/dev/hda11与/dev/hda12两个了。




7.3.2  管理软件磁盘阵列(2)

3.模拟故障

除非你的系统负载很高,不然想要让 Red Hat Enterprise Linux 碰上磁盘出故障的机会少之又少。那有没有什么办法可以让我们在平时练习出故障时的解决步骤,以免在故障真正出现的时候手忙脚乱呢?

有的,Red Hat Enterprise Linux 的软件磁盘阵列,可以仿真磁盘故障的情况。我们只需要使用 mdadm配合--set-faulty就可以让多重磁盘设备仿真故障的情况:

mdadm MD_DEVICE --set-faulty DEVICE...
其中的DEVICE是要仿真故障的组成单元的设备文件。当我们模拟故障时,Red Hat Enterprise Linux 会对不同等级的多重磁盘采取不同的模拟动作。
RAID-0

直接删除多重磁盘,也就是说我们无法再救回RAID-0的多重磁盘。

RAID-5与RAID-5等提供容错等级

把模拟故障的设备标识为故障,接着以RAID的定义把数据存储到其他设备上。

以下是我仿真磁盘故障的示范。

 [root@linux ~]# mdadm --detail /dev/md0 | tail -n 3Number Major Minor RaidDevice  State0 3    12      0        active sync  /dev/hda12 ?①1 3    11      1        active sync     /dev/hda11[root@linux ~]# mdadm /dev/md0 --set-faulty /dev/hda12  ②mdadm: set /dev/hda12 faulty in /dev/md0[root@linux ~]# mdadm --detail /dev/md0 | tail -n 31 3     11     1  active sync /dev/hda112 3     12     -  faulty spare /dev/hda12 ?③[root@linux ~]#

① 目前的 /dev/hda12 是正常运行的。

② 现在,我使用 mdadm 将 /dev/hda12 模拟成为故障。

③ 你会发现,现在 /dev/hda12 的状态变成了故障。

4.启用与停用多重磁盘

要使用磁盘阵列,必须先启用(Enable)多重磁盘;如果需要取消Red Hat Enterprise

Linux 磁盘阵列的功能,你可以停用(Disable)多重磁盘。启用与停用多重磁盘需以下列命令进行。

启用:mdadm --assemble --scan [MD_DEVICE]。

停用:mdadm --stop --sacn [MD_DEVICE]。

其中的MD_DEVICE为多重磁盘的设备文件;如果没有指定MD_DEVICE,则会依据 /etc/mdadm.conf 中的定义,启用所有的多重磁盘设备。

事实上,当Red Hat Enterprise Linux 开机时,会检查/etc/mdadm.conf文件是否存在,如果有,Red Hat Enterprise Linux 就会去执行mdadm--assemble --scan,mdadm 便会根据 /etc/mdadm.conf 的设置启动所有的多重磁盘;然而,如果 Red Hat Enterprise Linux 不允许重新开机的话,那你就得自己手动停用再启用一次,以模拟开机时启用多重磁盘的动作。

以下是我手动启用与停用多重磁盘的示范。

 [root@linux ~]# mdadm --stop /dev/md0 ?①mdadm: stopped /dev/md0[root@linux ~]# mdadm --detail /dev/md0mdadm: md device /dev/md0 does not appear to be active. ②[root@linux ~]# mdadm --assemble --scan /dev/md0 ?③mdadm: /dev/md0 has been started with 2 drives. ?④[root@linux ~]# mdadm --detail /dev/md0 ?⑤/dev/md0:Version : 00.90.03Creation Time : Sat Mar 15 18:46:14 2008Raid Level : raid1Array Size : 104320(101.89 MiB 106.82 MB)Device Size : 104320(101.89 MiB 106.82 MB) Raid Devices : 2Total Devices : 2Preferred Minor : 0Persistence : Superblock is persistent
Update Time : Sat Mar 15 18:50:35 2008State : cleanActive Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0
UUID : 54914f3a:61874593:a1965938:804fcfb6Events : 0.8
Number Major Minor RaidDevice State0 3 12 0 active sync /dev/hda121 3 11 1 active sync /dev/hda11[root@linux ~]#


① 我先停用 /dev/md0。

② 停用后,使用 mdadm --detail 查看 /dev/md0,mdadm 告诉我们,因为/dev/md0 尚未被启用,所以无法查看其配置。

③ 接着,使用 mdadm 启用 /dev/md0。

④ mdadm 告诉我们,已经顺利地启用 /dev/md0 了。

⑤ 现在,你就可以使用 mdadm --detail 查看 /dev/md0 的配置了。

5.监控多重磁盘设备

刚才我提过,你可以使用mdadm查看目前多重磁盘设备的配置;然而你又不可能隔三岔五地使用mdadm -detail查看配置。为了解决你查看多重磁盘配置的不便,Red Hat Enterprise Linux提供了一个名为mdmonitor的服务,你只要启动mdmonitor服务,它就会帮你监控每一个多重磁盘的配置;一旦发现有某一个多重磁盘故障了,它会直接寄出如图7-1 所示的电子邮件给超级用户。

要启动 mdmonitor 服务,你可以这样做:

[ROOT@LINUX ~]# SERVICE MDMONITOR START启动 MDMONITOR:                                  [确定][ROOT@LINUX ~]#
(点击查看大图)图7-1  mdmonitor 寄出的通知信





7.4  本章小结

在企业应用领域中,磁盘阵列是一个必备而且大量使用的技术。如果你是将Red Hat Enterprise Linux 导入到企业网络环境中,我会强烈地建议你,一定要彻底了解在 Red Hat Enterprise Linux 系统中建立与管理磁盘阵列的技术。






































原创粉丝点击