1、第 7 章 磁盘阵列现今企业对存储设备的需求越来越大,相对的要求也越来越高。企业把越来越多的数据数字化后,存储设备的效率、安全性显然成为当今系统管理人员必须面对的问题。有什么方法可以提高存储设备的效率并确保其完整性?有,那就是磁盘阵列系统。7.1 磁盘阵列的介绍磁盘阵列(Redundant Array of Independent Disks,RAID)是把多个磁盘设备合并成为一个磁盘空间。7.1.1 磁盘阵列的功能一般来说,磁盘阵列可以提供 3 个功能。1整合闲置的磁盘空间你可以通过磁盘阵列,把原本闲置、不具经济价值的磁盘,整合成为一个新的磁盘空间。例如,把 3 个 2GB 的磁盘合并成为一
2、个 6GB 大小的磁盘空间,这样就可以更方便地存储数据。2提高磁盘读取的效率当磁盘阵列在写入数据时,会把数据拆解成若干等份,同时写入到各个磁盘中;在读取数据时,又会从各个磁盘中同时读出所需的数据。因为磁盘阵列具备如此的读取特性,让我们可以加快读取的速度,提高磁盘的效率。假设一个磁盘读写 100MB 数据需花费 1 分钟的时间,如果我们使用两个磁盘创建磁盘阵列时,同样的 100MB 大小的数据写入磁盘阵列时,由于每一个磁盘只负责存储 50MB的数据,因此,磁盘阵列只需花费半分钟的时间,就可完成写入的动作。3提供容错性磁盘阵列的第 3 个好处,就是具备容错性(Fault Tolerance)。由于
3、存储在磁盘阵列上的数据,实际上是分散在不同的磁盘中的,所以,当某一个磁盘发生故障时,磁盘阵列便可以从其他正常的磁盘中读取文件数据;另外,磁盘数组还允你加入新的磁盘来重建先前损坏的那个磁盘上的数据。7.1.2 磁盘阵列的等级磁盘阵列依照合并的方式不同,定义出磁盘阵列的等级(RAID Level)。目前已经定义的磁盘阵列等级包括 RAID-5、RAID-1、RAID-2 、RAID-3 、RAID-4、RAID-5、RAID-10、RAID1+0 等。不同等级的磁盘阵列,提供的功能、运行原理与特性也都不尽相同。以下仅介绍几种常见的磁盘阵列等级。1RAID-0RAID-0 俗称等量模式(Stripi
4、ng Mode)。RAID-0 可以由 2 个以上的磁盘合并成一个磁盘空间,它会将存入的数据切割成 n 份(n 为磁盘的数量),然后把每一份数据分别存储至每一个磁盘的区段(Chunk )中。例如,把一份 12KB 大小的数据,写入到由两个磁盘组成,区段(Chunk)为 4KB 的磁盘阵列时,磁盘阵列会以下列的方式写入磁盘。第一个 4KB 数据,写入到第一个磁盘的第一个区块。第二个 4KB 数据,写入到第二个磁盘的第一个区块。第三个 4KB 数据,写入到第一个磁盘的第二个区块。由于资料会被拆成若干等份存储在不同的组成磁盘中,因而可以加快读取的速度;组成的磁盘数量越多,速度就越快,而且还可以充分使
5、用每一个磁盘的空间,提供更大的磁盘空间。然而,RAID-0 也有其缺点。它的最大缺点就是缺乏容错性,因为数据同时被存储在不同的磁盘中,所以只要其中一个磁盘出故障,则整个 RAID-0 的磁盘空间都将无法继续使用。2RAID-1RAID-1 可以由 2 个(甚至更多)磁盘合并成为一个磁盘空间。当你把一份数据存储到RAID-5 的磁盘阵列时,RAID-1 磁盘阵列会把数据复制一份,存储到其他的磁盘中;由于每一个磁盘中的数据都一模一样,就像照镜子一样,所以 RAID-1 俗称“镜像模式(Mirroring Mode)“。由于数据在每一个磁盘中都有一份,因此,其中一块磁盘出故障,另外一块还会保存一份相
6、同的内容,RAID-1 会自动从正常的磁盘中继续读取数据。等到你修复故障的磁盘后,RAID-1 也会把正常磁盘的数据自动地同步到新加入的磁盘中。RAID-1 可以提供下列的好处。可提供容错:即使其中一个磁盘出故障,RAID-1 磁盘阵列还可以让你读取数据。可加快读取的速度:因为 RAID-1 磁盘阵列会在不同磁盘存储相同的数据;因此便可以同时从不同的磁盘读取相同的数据,因而提高读取的效率。RAID-1 也有其缺点,其的缺点如下。较浪费磁盘空间:因为数据需复制存储到其他磁盘,因此整个 RAID-5 磁盘阵列可用空间为整个磁盘空间的 1/n( n 为磁盘的数量)。无法提高写入的效率:因为 RAID
7、-1 磁盘阵列必须负责同步每一个磁盘中的资料,因此在写入数据到 RAID-1 磁盘阵列时,无法提高写入的效率。一般来说,RAID-1 的磁盘成本会高于其他等级的磁盘阵列,通常只用在需要高容错性的环境中。3RAID-5RAID-5 试图结合 RAID-0 与 RAID-1 的好处,同时避免它们的缺点。RAID-5 磁盘阵列由 3 个以上大小相同的磁盘组成。这与 RAID-5 类似,不过,不是RAID-5 的每一个区段(Chunk )都可以存储资料,因为 RAID-5 会在某些区段中存储同位检查码(Parity)。拥有 n 个磁盘的 RAID-5 磁盘阵列,会把第 n 个区段用来存储同位检查码。当
8、你把数据写入 RAID-5 的磁盘时,RAID-5 磁盘会把数据切割成若干等份,然后写入到不同的组成磁盘中;接着计算出每一份数据的同位检查码,再把同位检查码写入到其他磁盘中。值得注意的是,同位检查不是集中存储在同一个磁盘中的,而是分散存储在每一个磁盘里 。 当 RAID-5 磁盘阵列的某一个磁盘出故障时,RAID-5 会从其他正常的磁盘中取出故障磁盘数据的同位检查码,然后计算出故障磁盘的那一段数据。通过此技巧,让 RAID-5 可以提供容错性。而且 RAID-5 会把资料同时存储于多个磁盘里,又可以提高读取的效率。但 RAID-5 磁盘阵列也有缺点,由于 RAID-5 得计算出同位检查码,因此
9、如果使用的是由 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 个以上组成磁盘大小可以不用一样大需大小相同 需大小相同可用空间所有磁盘空间的总和单一磁盘大
10、小(N-1)*SN 为磁盘数量;S 为每一个磁盘的大小优点 读取快 写入快 增加可用空间 具备容错 读取快 读取快 具备容错 增加可用空间缺点 无容错 写入普通 浪费磁盘空间 写入慢 需更高的计算能力7.1.3 RHEL 的磁盘阵列Red Hat Enterprise Linux 支持两种磁盘阵列设备。硬件的磁盘阵列(Hardward RAID)通过磁盘阵列控制卡(RAID Controller Card)提供磁盘阵列的功能。要使用硬件的磁盘阵列,必须采购支持 Red Hat Enterprise Linux 的磁盘阵列控制卡,可能 需正确安装驱动程序,才能让 Red Hat Enterpri
11、se Linux 顺利使用硬件磁碟数组的设备。软件磁盘阵列(Software RAID)这是由 Linux 内核仿真磁盘阵列的功能,你无须安装额外的硬设备,只要你的 Linux 内核有支持,就可以直接使用。由于硬件磁盘阵列的功能是由磁盘阵列控制卡提供计算工作的,因而效率大大高于由Linux 内核的软件磁盘阵列;但硬件磁盘阵列得购买额外的设备,其成本会比软件磁盘阵列高出许多。虽然硬件磁盘阵列的成本比较高,但效率较好;如果是重要服务器,我还是建议你优先采用硬件磁盘阵列。虽然硬件磁盘阵列可以带来较高的效率,除了成本较高之外,还有一些问题得考虑。要在 Red Hat Enterprise Linux
12、系统中使用硬件磁盘阵列的设备,你必须正确地安装该磁盘设备驱动程序。如果 Red Hat Enterprise Linux 没有提供该硬件磁盘阵列的驱动程式,那就得安装厂商提供的驱动程序才行。如果连厂商都未提供驱动程序,那只能望“卡“ 而叹了;即使提供了驱动程序,但往往厂商提供的驱动程序都只适合某一个版本的内核,未来升级了内核,旧版的驱动程序就无法正常运行了。再者,硬件磁盘数组设备厂商通常会提供其专属的管理工具,你得学会该工具的使用方法,否则将无法顺利使用该设备。7.2 硬件磁盘阵列虽然说硬件磁盘阵列在使用上如此不便,但其效率却是远远高于软件磁盘阵列的。因此,硬件磁盘阵列系统在企业应用领域中,一
13、直都扮演着重要的角色。尤其这几年许多厂商纷纷开发价格低廉的硬件磁盘控制卡,更证明了其重要性。为了让 Red Hat Enterprise Linux 的用户可以更方便地使用硬件磁盘系统,有人致力于开发 dmraid 软件,让我们用一致的方式,使用各种硬件磁盘阵列设备。虽然 dmraid 可以提供标准的方式读取各种硬件磁盘阵列,但截至目前为止,dmraid 仍在开发中,也许会有一些 Bug 损坏磁盘与宝贵的资料。因此,我暂时还不建议你应用 dmraid 于重要服务器的 Red Hat Enterprise Linux 系统。本节将介绍如何通过 dmraid 来建立与管理硬件磁盘阵列系统。7.2.
14、1 dmraid 的介绍dmraid 全名为设备对应器磁盘阵列(Device Mapper RAID),利用 Linux 内核提供的设备对应器(Device Mapper )机制 ,为多种磁盘阵列设备提供磁盘阵列的设备文件,让用户可以在 Red Hat Enterprise Linux 系统中使用硬件磁盘阵列设备。dmraid 是由服务于 Red Hat 的 Heinz Mauelshagen 设计与开发的一个软件。如果你打算取得完整的 dmraid 信息,或想与作者联系,请登录其官方网站:http:/people.Red H 建立硬件磁盘阵列首先,来研究如何利用 dmraid 建立硬件磁盘阵
15、列,此步骤又包含几个动作。查看 dmraid 是否支持磁盘阵列设备。通过硬件磁盘阵列提供的设置工具设置磁盘阵列。启用硬件磁盘阵列设备。以下是对上述动作的详细讲解。1查看支持的硬件与模式由于 dmraid 仅支持部分硬件磁盘阵列的设备,而且不同版本的 dmraid 软件与 Linux 内核支持的硬件磁盘阵列设备种类也可能不相同。因此,在开始使用 dmraid 来建立硬件磁盘阵列前,你必须先检查 dmraid 是否支持你的硬件磁盘阵列设备。要查看你使用的 dmraid 支持哪些硬件磁盘阵列设备,请使用 dmraid -l 命令。rootlinux # dmraid -lasr : Adaptec
16、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
17、 Image(tm) Medley(tm)(0,1,10)via : VIA Software RAID(S,0,1,10)dos : DOS partitions on SW RAIDsrootlinux #上述的输出结果里,每一行代表支持的某一种硬件磁盘阵列设备,以及支持的磁盘阵列等级。以下列这行为例: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
18、 2设置磁盘阵列接着,请你利用硬件磁盘阵列设备所提供的配置方法,来建立磁盘阵列。这个部分的动作,会因为磁盘阵列设备的不同而有不同的配置方式。我计算机中 Silicon Image 磁盘阵列控制卡是通过计算机开机的 BIOS 阶段,来进行配置工作的。至于你使用的磁盘阵列设备如何建立磁盘阵列,请详细参阅其管理手册。3启动磁盘阵列设备最后,请使用 dmraid -a y 来启动磁盘阵列设备。启动后,Red Hat Enterprise Linux 会在/dev/mapper/目录中,产生该硬件磁盘阵列的设备文件。dmraid 产生的设备文件,以下列的格式命名:/dev/mapper/TYPE_UNI
19、QUENAME其中的 TYPE 是硬件磁盘设备的代号,以硬件磁盘阵列的代号作为 TYPE 的内容;而UNIQUENAME 则是该硬件设备的唯一识别码,通常由不规则的文字组成。以下是使用 dmraid 启动磁盘阵列设备的示范。rootlinux # ls /dev/mapper/control ? rootlinux # dmraid -a y rootlinux # ls /dev/mapper/control sil_aiadcdadagbj ? rootlinux # 目前 /dev/mapper/ 中,只有一个名为 control 的设备文件。 现在使用 dmraid 启动硬件磁盘阵列设
20、备。 成功启动后,在 /dev/mapper/ 中便产生了该磁盘阵列的设备文件。7.2.3 使用硬件磁盘阵列设备启动磁盘阵列设备后,你可以把该设备文件当做一个磁盘使用,例如对该磁盘阵列设备产生分区、制作文件系统等。每一个由 dmraid 管理的磁盘阵列设备的分区,其设备文件名称为:/dev/mapper/TYPE_UNIQUENAMEpNUMBER其中的 TYPE_UNIQUENAME 就是硬件磁盘阵列设备的名称,而 NUMBER 则是分区的编号。不过,对硬件磁盘阵列设备执行管理分区动作时,我建议你使用 parted 工具,而尽可能不要使用 fdisk,这是因为根据我的测试结果 ,发现通过 p
21、arted 新增或卸载分区后,Red Hat Enterprise Linux 会自动产生正确的分区设备文件;但使用 fdisk 却无法正常地更新分区设备文件。以下是我使用 parted 管理分区的示范。rootlinux # ls /dev/mapper/control sil_aiadcdadagbj ?rootlinux # parted /dev/mapper/sil_aiadcdadagbj mkpart p ext3 0 1024 orootlinux # parted /dev/mapper/sil_aiadcdadagbj printModel: Linux device-ma
22、pper(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/fstabrootlinux # ls /dev/mapper/control sil_aiadcdadagbj sil_aiadcdadagbjp1 ?rootlinux # 现在/dev/map
23、per/只有硬件磁盘阵列的设备文件。 我使用 parted 在 sil_aiadcdadagbj 设备中建立一个新的主要分区,作为 ext3 文件系统,其开始的位置为 0 MB,结束的位置为 1024MB。 完成后,利用 parted 查看 sil_aiadcdadagbj 设备的磁盘分区数据表,此处可发现刚刚新增的磁盘分区数据。 使用 parted 产生新的分区后,会自动产生该分区的设备文件。此处的sil_aiadcdadagbjp1 就是刚刚新增的分区的设备文件。如果要体验硬件磁盘阵列提供的功能,请直接读取 dmraid 提供的设备文件(以上述例子为:/dev/sil_aiadcdadag
24、bj),不要使用原有的磁盘机设备(例如/dev/sda)。7.2.4 管理硬件磁盘阵列建立完硬件磁盘阵列后,接着让我们来研究如何管理该磁盘阵列设备。1读取磁盘阵列设备如果你想知道目前的某一个硬件磁盘阵列设备是由哪些磁盘驱动器组成的,你可以使用 dmraid -r 查看:dmraid -r DEVICE.其中的 DEVICE 为磁盘驱动器设备的设备文件名称,省略时代表读取所有磁盘设备。以下是我使用 dmraid -r 读取磁盘驱动器信息的范例。rootlinux # dmraid -r/dev/sda: sil, “sil_aiadcdadagbj“, mirror, ok, 488395120
25、 sectors, data 0/dev/sdb: sil, “sil_aiadcdadagbj“, mirror, ok, 488395120 sectors, data 0rootlinux #上述显示结果中,每一行代表一个磁盘设备与其硬件磁盘阵列的相关信息。以上述/dev/sda 磁盘驱动器为例。属于 sil 硬件磁盘阵列设备。设备文件名称为 sil_aiadcdadagbj。操作为 RAID-5 等级,也就是镜像模式(Mirror Mode)。目前的配置为良好(ok)。共有 488395120 扇区。数据位移(Offset)的大小为 0。2查看磁盘阵列配置另外一种查看硬件磁盘阵列设备的
26、方法,则是利用 dmraid -s:dmraid -s RAID.其中的 RAID 为 dmraid 提供的磁盘阵列设备的设备文件名称,省略时代表所有的磁盘设备。以下是我使用 dmraid -s 查看磁盘阵列设备状态的示范。rootlinux # dmraid -s* Active Setname : sil_aiadcdadagbj size : 488395120stride : 0type : mirror status : ok subsets: 0devs : 2spares : 0rootlinux #3停用磁盘阵列设备最后,如果打算停用硬件磁盘阵列的话,你可以使用 dmraid
27、命令:dmraid -a n RAID.其中的 RAID 即是要停用的磁盘阵列设备的设备文件,如果没有指定 RAID,则代表所有磁盘阵列设备。不过,如果该硬件磁盘阵列上仍有分区的话,dmraid 将会返回错误信息。因此,请在停用硬件磁盘阵列设备之前,先卸载该磁盘设备上所有的分区。以下是我使用 dmraid -a n 停用磁盘阵列设备的示范。rootlinux # dmraid -a nRAID set “sil_aiadcdadagbj(null)1“ is not active ?rootlinux # ls /dev/mapper/control sil_aiadcdadagbj sil_
28、aiadcdadagbjp1 rootlinux # parted /dev/mapper/sil_aiadcdadagbj rm 1 ?信息: 如果必要,不要忘记更新 /etc/fstabrootlinux # ls /dev/mapper/control sil_aiadcdadagbj ?rootlinux # dmraid -a n ?rootlinux # ls /dev/mapper/control ?rootlinux # 现在我使用 dmraid 停用硬件磁盘阵列,但 dmraid 却返回错误信息,代表执行失败。 这是因为我的 sil_aiadcdadagbj 硬件磁盘阵列设备
29、上仍有其他分区。 所以,接着使用 parted 删除 sil_aiadcdadagbj 的第一个分区。 现在 sil_aiadcdadagbjp1 设备文件就消失了。 再次停用硬件磁盘阵列设备,这次就没有产生任何错误信息了。 成功地停用后,该磁盘设备的设备文件也跟着消失了。7.3 软件磁盘阵列软件磁盘阵列是由 Linux 内核提供的一项功能,只要你的 Linux 内核编译时有启动软件磁盘阵列功能,就可以享受磁盘阵列的好处,完全不需准备额外的硬设备,比起硬件磁盘阵列来说,是一个比较经济划算的解决方案。另外,软件磁盘阵列还有一个更胜于硬件磁盘阵列的优点,即跨平台。Red Hat Enterpris
30、e Linux 支持的软件磁盘阵列具备下列几项特性。 由内核提供目前的软件磁盘阵列功能是由 Linux 内核提供的。如果 Linux 内核在编译的时候没有启用这项功能的话,就无法使用软件磁盘阵列。Red Hat Enterprise Linux 已经把软件磁盘阵列功能编译到内置的内核中,因此,你不用重新编译内核,便可以直接在 Red Hat Enterprise Linux 中使用软件磁盘阵列提供的功能。以分区为组成单位Red Hat Enterprise Linux 的软件磁盘阵列以分区为软件磁盘阵列的组成单元,你可以把多个分区组成软件磁盘阵列的设备。你可以使用 mdadm 工具,在 Red
31、 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 的软件磁盘阵列的组成单元就是分区。但与一般的分区不一样的是:软件磁盘阵列组成单元的分区的
32、系统识别码(System ID)必须设置为“fd - Linux raid autodetect“。Red Hat Enterprise Linux 允许你使用同一个磁盘的不同分区产生磁盘阵列,也可以由多个磁盘的分区产生磁盘阵列;但前者无法提供容错性,也无法提升读取的效率。为了能享受磁盘阵列带来的容错性与高效率的好处,我强烈建议你尽量采用由不同磁盘的分区组成软件磁盘阵列。2设置 /etc/mdadm.conf/etc/mdadm.conf 是 mdadm 默认的配置文件,当 Red Hat Enterprise Linux 启动时,会依据这个文件中的设置来启动多重磁盘设备,以及软件磁盘阵列监控
33、服务。坦白说,这个步骤其实是可以省略的。因为磁盘阵列的信息实际上是存储在磁盘分区的超级区块(Superblock )中的,而不是/etc/mdadm.conf 文件里。但由于 Red Hat Enterprise Linux 启动过程的 rc.sysinit 时,会去检查有没有 /etc/mdadm.conf 这个文件。如果这个文件存在,才会去启用定义在 /etc/mdadm.conf 的软件磁盘设备;如果不存在,就不会自动启用软件磁盘设备了。所以,为了避免开机后 Red Hat Enterprise Linux 不会启用软件磁盘设备,建议你还是乖乖地完成这个步骤吧!Red Hat Enter
34、prise 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.c
35、onf-example 这个范例文件。3初始化多重磁盘设备最后一个步骤就是初始化多重磁盘设备(Multiple Disk Device ,MD)。多重磁盘设备就是 Red Hat Enterprise Linux 软件磁盘阵列的磁盘设备,你可以将若干个组成单元建立成为一个多重磁盘设备。与其他设备一样,每一个多重磁盘设备都会有一个设备文件代表它。Red Hat Enterprise Linux 的多重磁盘设备使用 /dev/mdN 的设备文件,其中的 N 范围为 031,一共可以建立 32 个多重磁盘设备。要初始化多重磁盘设备,你必须使用 mdadm -create 命令:mdadm -crea
36、te MD_DEVICE -level=LEVEL -raid-devices=N DEVICES.其中的 MD_DEVICE 就是多重磁盘的设备文件;而 LEVEL 则是你要建立的磁盘阵列等级;至于 N 则用来指出组成单元的数量;最后的 DEVICES 则是组成单元的设备文件名称。在初始化多重磁盘时,请注意以下两点。在早期的系统中,通过 raidtools 建立多重磁盘后,你必须手动启动多重磁盘装置;而在新版 的 Red Hat Enterprise Linux 后,使用 mdadm 会自动启动新建立的多重磁盘。每一个多重磁盘设备只能被建立一次。如果你的命令有错,将造成该多重磁盘装置无法使用
37、。如何删除多重磁盘设备?如果制作出错误的多重磁盘设备,有没有办法重新来过?可以。你可以依照下列的步骤,先删除错误的多重磁盘设备,然后重新再 来一遍。(1)停用多重磁盘设备,请参考 “启用与停用多重磁盘“ 的说明。(2)使用 mdadm -zero-superblock DEVICE 命令,清空每一个组成磁盘的超级区块(Superblock)。这样就可以重新建立多重磁盘设备了。以下是我将/dev/hda10 与/dev/hda11 以 raid1 的磁盘阵列等级产生/dev/md0 多重磁盘设备的示范。rootlinux # fdisk -l /dev/hda | grep Linux raid
38、/dev/hda10 1158 1170 104391 fd Linux raid autodetect ?/dev/hda11 1171 1183 104391 fd Linux raid autodetectrootlinux # mdadm -verbose -create /dev/md0 -level raid1 -raid-devices 2 /dev/hda10 /dev/hda11 mdadm: size set to 104320Kmdadm: array /dev/md0 started. ? rootlinux # /dev/hda10 与 /dev/hda11 是两个系
39、统识别码为 “fd - Linux raid autodetect“的分区,我将使用这两个分区来产生多重磁盘设备。 使用 mdadm -create 命令,建立 /dev/md0 这个多重磁盘设备,并指定 RAID 等级为 raid1;其组成设备为 /dev/hda10 与 /dev/hda11。 mdadm 告诉我们, /dev/md0 已经成功地建立出来了,并且会自动启动 /dev/md0 设备。这样一来你就可以把多重磁盘设备当做普通的分区使用了。7.3.2 管理软件磁盘阵列(1)在建立完软件磁盘阵列设备后,现在来研究如何管理多重磁盘设备。这里将介绍下列几项管理技术。如何查看多重磁盘设备的
40、详细状况。如何解决多重磁盘设备故障的状况。如何模拟故障的状况。启用与停用多重磁盘设备。如何监控多重磁盘设备。1查看多重磁盘详细状况查看多重磁盘设备的状况,有以下几种方式。通过 /proc/mdstat 文件直接读取/proc/mdstat 就可以取得内核中所记录的多重磁盘设备的配置信息,不过,这是比较低级的方式,并不建议你使用。使用 mdadm 工具我们也可以通过 mdadm -detail MD_DEVICE 的命令,查询 MD_DEVICE 的详细状况信息。以下是我使用这两种方式,查看软件磁盘设备的配置的示范。rootlinux # cat /proc/mdstatPersonalitie
41、s : raid1md0 : active raid1 hda111 hda100 104320 blocks 2/2 UUunused devices: rootlinux # mdadm -detail /dev/md0/dev/md0:Version : 00.90.03Creation Time : Sat Mar 15 18:46:14 2008Raid Level : raid1 ?Array Size : 104320(101.89 MiB 106.82 MB) Device Size : 104320(101.89 MiB 106.82 MB) Raid Devices : 2
42、 ?Total Devices : 2Preferred Minor : 0Persistence : Superblock is persistentUpdate Time : Sat Mar 15 18:46:27 2008State : clean ?Active Devices : 2 ?Working Devices : 2Failed Devices : 0 ?Spare Devices : 0UUID : 54914f3a:61874593:a1965938:804fcfb6Events : 0.2Number Major Minor RaidDevice State ?0 3
43、10 0 active sync /dev/hda101 3 11 1 active sync /dev/hda11rootlinux # 这里告诉我们/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/h
44、da11这里告诉我们,我的多重磁盘设备共有两个组成单元,一个是/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多
45、重磁盘的磁盘出现故障,应该怎么办?如果是具备容错功能的多重磁盘(例如 RAID-1、RAID-5),你完全不需要紧张,因为 Red Hat Enterprise Linux 会依照磁盘阵列的定义,把数据存储到同一个磁盘数组的其他磁盘上,你还是可以继续读取多重磁盘上的文件数据。之后,你只需依照下列的步骤,更换故障的磁盘,就可修复出现故障的多重磁盘了。(1)使用 mdadm MD_DEVICE -remove DEVICE 在线卸载出现故障的磁盘。(2)真正地卸载出故障的磁盘驱动器。(3)安装正常的磁盘驱动器后,再产生一个新的组成单元。(4)使用 mdadm MD_DEVICE -add DEVI
46、CE 在线加入新的组成单元。不管是在线卸载还是加入组成磁盘,都不需卸载文件系统。但在第二个步骤中,如果你的计算机不支持热插拔(Hot Swappable),则必须先关闭 Red Hat Enterprise Linux 才能卸载出现故障的磁盘;而在第三个步骤中,你必须重新产生一个新的、正常的组成单元,才能进行之后的动作。以下是我卸载出现故障的 /dev/hda10 并加入/dev/hda12 这个正常的分区的示范。rootlinux # mdadm -detail /dev/md0 | tail -n 31 3 11 1 active sync /dev/hda112 3 10 - fault
47、y spare /dev/hda10 ?rootlinux # mdadm /dev/md0 -remove /dev/hda10 mdadm: hot removed /dev/hda10rootlinux # mdadm -detail /dev/md0 | tail -n 3Number Major Minor RaidDevice State0 0 0 0 removed ?1 3 11 1 active sync /dev/hda11rootlinux # mdadm /dev/md0 -add /dev/hda12 ?mdadm: added /dev/hda12rootlinux
48、 # 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/hda11rootlinux # 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