德克云技术联盟

标题: Linux软RAID:MDADM [打印本页]

作者: 李臻宇    时间: 2014-7-15 16:06
标题: Linux软RAID:MDADM
本帖最后由 李臻宇 于 2014-7-15 16:09 编辑



本文章适用于RedHat\CentOS\Fedora

什么是RAID?
RAID是英文Redundant Array of Independent Disks的缩写,即独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。组成磁盘阵列的不同方式成为RAID级别(RAID Levels)。

RAID是通过磁盘阵列与数据条块化方法相结合, 以提高数据可用率的一种结构.RAID 可分为RAID级别1到RAID级别6, 通常称为: RAID 0, RAID 1, RAID 2, RAID 3,RAID 4, RAID 5,RAID6.每一个RAID级别都有自己的强项和弱项. "奇偶校验"定义为用户数据的冗余信息, 当硬盘失效时, 可以重新产生数据.这份文档主要介绍常用的RAID0、1、5我们以图例来说明。

首先假设下面这个图形就是一块硬盘后面图中的每个硬盘都跟他一样。
|--------|
|_____|
|_____|   为了便于计算我们假定容量是10G
|_____|     
|_____|


_data___________            
   |           |
|-----|     |-----|
|_A1__|     |_A2__|
|_B1__|     |_B2__|     RAID0
|_C1__|     |_C2__|
|_D1__|     |_D3__|
这就是我们常说的RAID0
数据存储方式:分开存储在两块硬盘
优点:磁盘读取速度加快理.论值是速度x2但是实际只能达到180%
缺点:没有冗余.坏掉一块所有数据丢失
磁盘容量:10+10=20G

_data __________
   |           |
|-----|     |-----|
|__A__|     |__A__|
|__B__|     |__B__|     RAID1
|__C__|     |__C__|
|__D__|     |__D__|
这就是我们常说的RAID1
数据存储方式:两块硬盘存放同样的数据
优点:有冗余任意坏掉一块机器能够正常工作.
缺点:没有增加读取速度,并且浪费一块磁盘的容量
磁盘容量:10+10/2=10G

_data __________________________________
   |           |           |           |
|-----|     |-----|     |-----|     |-----|
|_A1__|     |_A2__| ... |.An..| ... |_Aa__|
|_B1__|     |_Bb__| ... |.Bn..| ... |_B2__|    RAID5
|_Cc__|     |_C1__| ... |.Cn..| ... |_C2__|
|_D1__|     |_D2__| ... |_Dn__| ... |_Dd__|
数据划分成A1,A2,..An。Aa是奇偶效验,例如丢失了A1那么就可以利用Aa与其他的对比生成A1
这就是我们常说的RAID5
数据存储方式:数据分别存储在n-1块硬盘上面
优点:读取速度理论增加n-1倍,并且有冗余
缺点:必须三块以上硬盘
磁盘容量:10(n-1)

ok下面让我们看看什么是RAID0+1
___data ________
   |           |
|-----|     |-----|
|_A1__|     |_A2__|
|_B1__| 1   |_B2__|  2
|_C1__|     |_C2__|
|_D1__|     |_D3__|
   |           |                  RAID0+1
   |           |                  磁盘1  磁盘2
|-----|     |-----|            磁盘3  磁盘4
|_A1__|     |_A2__|
|_B1__| 3   |_B2__|   4
|_C1__|     |_C2__|
|_D1__|     |_D3__|
如果你认真看了上面RAID0和RAID1的解释一定能够看懂
我们把磁盘1和磁盘3组成的RAID0设备看成一块磁盘
那么下面的磁盘2和4是另外一块磁盘,我们把13这个设备和24这个设备组合就组成了RAID1 on RAIN0 也就是我们常说的RAID0+1   


我们来看看IBM对RAID的介绍:
RAID 0: RAID 0 并不是真正的RAID结构, 没有数据冗余. RAID 0 连续地分割数据并并行地读/写于多个磁盘上. 因此具有很高的数据传输率. 但RAID 0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效, 将影响整个数据.因此RAID 0 不可应用于需要数据高可用性的关键应用.
RAID 1: RAID 1通过数据镜像实现数据冗余, 在两对分离的磁盘上产生互为备份的数据. RAID 1可以提高读的性能, 当原始数据繁忙时, 可直接从镜像拷贝中读取数据.RAID 1是磁盘阵列中费用最高的, 但提供了最高的数据可用率. 当一个磁盘失效, 系统可以自动地交换到镜像磁盘上, 而不需要重组失效的数据.
RAID 2: 从概念上讲, RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节. 然而RAID 2 使用称为"加重平均纠错码"的编码技术来提供错误检查及恢复. 这种编码技术需要多个磁盘存放检查及恢复信息, 使得RAID 2技术实施更复杂. 因此,在商业环境中很少使用.
RAID 3: 不同于RAID 2, RAID 3使用单块磁盘存放奇偶校验信息. 如果一块磁盘失效, 奇偶盘及其他数据盘可以重新产生数据. 如果奇偶盘失效,则不影响数据使用.RAID 3对于大量的连续数据可提供很好的传输率, 但对于随机数据, 奇偶盘会成为写操作的瓶颈.
RAID 4: 同RAID 2, RAID 3一样, RAID 4, RAID 5也同样将数据条块化并分布于不同的磁盘上, 但条块单位为块或记录. RAID 4使用一块磁盘作为奇偶校验盘, 每次写操作都需要访问奇偶盘, 成为写操作的瓶颈. 在商业应用中很少使用.
RAID 5: RAID 5没有单独指定的奇偶盘, 而是交叉地存取数据及奇偶校验信息于所有磁盘上. 在RAID5 上, 读/写指针可同时对阵列设备进行操作, 提供了更高的数据流量. RAID 5更适合于小数据块, 随机读写的数据.RAID 3 与RAID 5相比, 重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘.而对于RAID 5来说, 大部分数据传输只对一块磁盘操作, 可进行并行操作.在RAID 5中有"写损失", 即每一次写操作,将产生四个实际的读/写操作, 其中两次读旧的数据及奇偶信息, 两次写新的数据及奇偶信息.
RAID 6: RAID 6 与RAID 5相比,增加了第二个独立的奇偶校验信息块. 两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高. 即使两块磁盘同时失效,也不会影响数据的使用. 但需要分配给奇偶校验信息更大的磁盘空间, 相对于RAID 5有更大的"写损失". RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用.

在我们使用RAID之前我们来看看RAID 不能做什么?
    RAID 的容错功能设计用于避免由偶发的驱动器故障所产生的负面影响。这种设计非常好。但是,对于各种各样的可靠性问题,RAID 并非总是理想的解决方案。在生产环境中,在实现具有容错功能的 RAID (1、4、5) 之前,准确了解 RAID 能做什么及 不能 做什么至关重要。当处于依赖 RAID 的境况中时,我们不希望对它的作用抱有错误的认识。我们首先要澄清对 RAID 1、4 和 5 的一些常见错误认识。
    许多人认为,如果将所有重要数据保存在 RAID 1/4/5 卷上,就没有必要再对这些数据执行定期的备份。这是完全错误的 ― 理由如下。RAID 1/4/5 有助于避免由偶然的驱动器故障引起的意外 停机。但是,它并不能防止意外或恶意的 数据损坏 。如果读者在 RAID 卷上以 root 身份键入 "cd /; rm -rf *",那么顷刻之间您将丢失大量重要的数据,对于这种情况,就算拥有一个包含 10 个驱动器的 RAID-5 配置也无济于事。同样,如果您的服务器物理上失窃,或者建筑物失火,那么 RAID 也帮不上忙。毫无疑问,如果您没有实施备份策略,就不会拥有历史数据的档案文件 ― 如果某位同事删除了一批重要文件,您也无法将它们恢复。仅此一点就应该足以让您相信,在大多数情况下,即使是在考虑采用 RAID-1、4 和 5 之前,都应该规划并实施一种备份策略。
    在由劣质硬件组成的系统上实施软件 RAID 是另一种错误认识。如果您正在装配一台要承担重要任务的服务器,那么在预算许可的范围之内购买质量最好的硬件是合理的。如果您的系统不稳定或者散热不良,那么将陷入一种 RAID 无能为力的困境。与此类似,如果停电,RAID 显然也不能提供更长的正常运行时间。如果服务器计划担负任何比较重要的任务,请确保已为它配备了不间断电源 (UPS)。

下面我们在RHEL4中做一个这样的实验:
操作系统为Red Hat Enterprise Linux 4 update 3;
内核版本为2.6.9-34.EL;  
五块1GB SCSI接口的磁盘,其中整个系统安装在第一块磁盘,保留一块作为后面测试用,其它四块组成RAID 5。
在RHEL4u3下实现软件RAID是通过mdadm工具实现的,它是一个单一的程序,创建、管理RAID都非常方便,而且也很稳定。而在早期Linux下使用的raidtools,由于维护起来很困难,而且其性能有限,在RHEL4下已经不支持了。
实现过程

环境分析:我的服务器有四块闲置的SCSI硬盘,准备用他们做一个RAID5,其中三个做RAID5必须设备,多余的一块作为额外的冗余磁盘,当其中一个出现故障这块额外的磁盘会自动添加到RAID设备中,并且根据算法填充数据。
第一步:给四个硬盘划分空间格式化为fs格式。
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
后面四块硬盘重复上面的操作。
我们来查看一下



[root@localhost ~]# fdisk -l

Disk /dev/sda: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14          56      345397+  82  Linux swap
/dev/sda3              57         261     1646662+  83  Linux

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sde: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1         130     1044193+  fd  Linux raid autodetect

Disk /dev/sde: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1         130     1044193+  fd  Linux raid autodetect

下面一条命令就是创建我们的RAID的描述。
[root@localhost ~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
II_sse  :  2660.000 MB/sec
raid5: using function: pIII_sse (2660.000 MB/sec)
raid5: raid level 5 set md0 active with 2 out of 3 devices, algorithm 2
RAID5 conf printout:
--- rd:3 wd:2 fd:1
disk 0, o:1, dev:sdb1
disk 1, o:1, dev:sdc1
RAID5 conf printout:
--- rd:3 wd:2 fd:1
disk 0, o:1, dev:sdb1
disk 1, o:1, dev:sdc1
disk 2, o:1, dev:sdd1
RAID5 conf printout:
--- rd:3 wd:2 fd:1
disk 0, o:1, dev:sdb1
disk 1, o:1, dev:sdc1
disk 2, o:1, dev:sdd1
mdadm: array /dev/md0 started.
好了,这个时候硬盘开始狂转,备份数据以及写入奇偶效验了。我们可以来看看/proc/mdstart的状态



[root@localhost ~]# watch more /proc/mdstat
Every 2.0s: cat /proc/mdstat                            Fri May 26 10:46:29 2006

Personalities : [raid5]
md0 : active raid5 sdd1[3] sde1[4] sdc1[1] sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [===========>.........]  recovery = 55.7% (583040/1044096) finish=0.1min s
peed=44849K/sec
unused devices: <none>

新建或者重构之后我们来看看结果
Every 2.0s: cat /proc/mdstat                            Fri May 26 10:47:00 2006

Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

通过以上内容,可以很清楚地看出当前阵列的状态,各部分所代表的意思如下:“[3/3]”中的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,如果有一个设备损坏,则第二位数将减1;“[UUU]”标记当前阵列可以正常使用的设备情况,现假设/dev/sdb1出现故障,则该标记将变成[_UU],这时的阵列以降级模式运行,即该阵列仍然可用,但是不再具有任何冗余;“sdd1[2]”指阵列所包含的设备数为n,若方括号内的数值小于n,则表示该设备为活动设备,若数值大于等于n,则该设备为备份设备,当一个设备出现故障的时候,相应设备的方括号后将被标以(F)。 ok,我们知道这些参数,针对上面的结果来看看,[3/3]:我们的RAID设备有三个设备,并且三个设都都正常运行。 [UUU]表示我们运行的三个设备都没有问题。设备数是三,sdd1[2]:2=3 它是活动设备;sde1[3]:3=3 它是备份设备;sdc1[1]:1>3 它是活动设备sdb1[0] 0>3 它是活动设备。

好了我们来给他指定一个文件系统并且挂载使用
[root@localhost ~]# mkfs.ext3 /dev/md0
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
261120 inodes, 522048 blocks
26102 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

创建一个目录
[root@localhost ~]# mkdir /database
挂载RAID设备
[root@localhost ~]# mount /dev/md0 /database/
好了,为了让系统自动挂载我们编辑/etc/fstab,加入如下一条
/dev/md0                /database               ext3    defaults        0 0
为了测试我们给/database写一个文件
[root@localhost ~]# cd /database/
[root@localhost database]# vi test
[root@localhost database]# ls
lost+found  test
我们用df命令查看一下 根据前面的知识大家算算md0的容量是多大,别看上面的参数。
我们用四块硬盘 除去一块备份的磁盘那么真正使用就是3块 每块大小为1G
根据最开始的公式算算看 (3-1)X1=2G,跟命令结果对比一下。
[root@localhost database]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3              1620768    664272    874164  44% /
/dev/sda1               101086      8647     87220  10% /boot
none                     44828         0     44828   0% /dev/shm
/dev/md0               2055376     35884   1915084   2% /database



一个RAID搭建成功,我们来试试看如果坏掉一块磁盘是什么样的
[root@localhost ~]# mdadm /dev/md0 --force /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0

可以看到硬盘又开始狂转,填补数据。
[root@localhost ~]# watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat                            Fri May 26 11:00:27 2006

Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[3] sdc1[4](F) sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
      [==>..................]  recovery = 11.8% (124640/1044096) finish=0.3min s
peed=41546K/sec
unused devices: <none>
来看一下这个状态sdc1[4](F) 后面的标记 说明/dev/sdc1已经出现故障。[U_U]也可以明显看出中间有设备故障。不过我们还指定了个spare设备等几分钟重构之后我们再来看一下结果
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sde1[1] sdc1[3](F) sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
ok那块额外磁盘已经用上了
我们的RAID设备又正常运行了。原来的sde1变成了活动设备。
再查看一下我们刚才在/database下面写的文件有没有损坏
[root@localhost database]# cat /database/test
LZY Rain
LZY Fish

ok!很好,文件没问题
咱们再证明一下RAID5的冗余性,再坏掉一块硬盘看看
[root@localhost database]# mdadm /dev/md0 --force /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0
又开始补数据,过几分钟我们再次察看。
[root@localhost database]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[3](F) sde1[1] sdc1[4](F) sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]

unused devices: <none>
从结果我们看出我们的设备已经有一块出现故障。sdd1[3]、sdc1[4]分别作了(F)故障记号。

再来看看那个文件有没有发生变化
[root@localhost database]# cat /database/test
LZY Rain
LZY Fish
ok!仍然没问题。但是这时候已经给我们警告黄灯了。如果在坏一块我们的设备就完蛋了。
我们接着来做,从md0里面删除有故障设备
[root@localhost database]# mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1
[root@localhost database]# mdadm /dev/md0 -r /dev/sdd1
mdadm: hot removed /dev/sdd1
[root@localhost database]#
查看一下
[root@localhost database]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[1] sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]

unused devices: <none>
[root@localhost database]#
我们再给md0添加一个设备
[root@localhost database]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdf1[3] sde1[1] sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [=================>...]  recovery = 85.3% (892288/1044096) finish=0.0min speed=40558K/sec
unused devices: <none>
[root@localhost database]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdf1[2] sde1[1] sdb1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
我们再看看文件有没有问题
[root@localhost database]# cat /database/test
LZY Rain
LZY Fish

ok,我们试验成功。mdadm功能十分多这里也仅仅是介绍了一部分,最后给大家贴一个帮助文件。

常用阵列维护命令
1.启动阵列
# mdadm -As /dev/md0
该命令指启动/dev/md0阵列,其中“-A”指装载一个已存在的阵列;“-s”指查找mdadm.conf文件中的配置信息,并以此为依据启动阵列。
#mdadm -As
该命令指启动mdadm.conf文件中的所有阵列。
#mdadm -A /dev/md0 /dev/sd[b,c,d,e]1
如果没有创建mdadm.conf文件则可以采用上面这种启动方式。
2.停止阵列
# mdadm -S /dev/md0
3.显示指定阵列的详细信息
# mdadm -D /dev/md0
mdadm是linux下用于管理软件 raid 的工具



以下内容来自 manpage 页:

基本语法 : mdadm [mode] [options]

[mode]  有7种:

Assemble:将以前定义的某个阵列加入当前在用阵列。

Build:Build a legacy array ,每个device 没有 superblocks

Create:创建一个新的阵列,每个device 具有 superblocks

Manage: 管理阵列,比如 add 或 remove

Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。

Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态

Grow:改变raid 容量或 阵列中的 device 数目

可用的 [options]:

-A, --assemble:加入一个以前定义的阵列

-B, --build:Build a legacy array without superblocks.

-C, --create:创建一个新的阵列

-Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分

-D, --detail:打印一个或多个 md device 的详细信息

-E, --examine:打印 device 上的 md superblock 的内容

-F, --follow, --monitor:选择 Monitor 模式

-G, --grow:改变在用阵列的大小或形态

-h, --help:帮助信息,用在以上选项后,则显示该选项信息

--help-options

-V, --version

-v, --verbose:显示细节

-b, --brief:较少的细节。用于 --detail 和 --examine 选项

-f, --force

-c, --config= :指定配置文件,缺省为 /etc/mdadm/mdadm.conf

-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf

create 或 build 使用的选项:

-c, --chunk=:Specify chunk size of kibibytes.  缺省为 64.

--rounding=: Specify rounding factor for linear array (==chunk size)

-l, --level=:设定 raid level.

--create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.

--build可用:linear, raid0, 0, stripe.

-p, --parity=:设定 raid5 的奇偶校验规则:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric

--layout=:类似于--parity

-n, --raid-devices=:指定阵列中可用  device 数目,这个数目只能由 --grow 修改

-x, --spare-devices=:指定初始阵列的富余device 数目

-z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数

--assume-clean:目前仅用于 --build 选项

-R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。

-f, --force:通常mdadm不允许只用一个device 创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反。

-a, --auto{=no,yes,md,m**,*art,p}{NN}:


生成配置文件

mdadm的缺省配置文件为/etc/mdadm.conf,它主要是为了方便阵列的日常管理而设置的,对于阵列而言不是必须的,但是为了减少日后管理中不必要的麻烦,还是应该坚
持把这一步做完。

在mdadm.conf文件中要包含两种类型的行:一种是以DEVICE开头的行,它指明在阵列中的设备列表;另一种是以ARRAY开头的行,它详细地说明了阵列的名称、模式、阵列中活动设备的数目以及设备的UUID号。格式如下:

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=8f128343:715a42df: baece2a8: a5b878e0

以上的这些信息可以通过扫描系统的阵列来获取,命令为:

# mdadm -Ds

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=8f128343:715a42df: baece2a8: a5b878e0

devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1

使用vi命令,按照规定的格式编辑修改/etc/mdadm.conf文件

# vi /etc/mdadm.conf







欢迎光临 德克云技术联盟 (http://www.decoclouds.com/)