ubuntu server:RAID 10的故障处理
创始人
2024-04-17 13:51:24
0

◆故障处理

下面我们来模拟RAID发生故障时的处理。

◆从RAID中移除设备

正在使用的设备是不允许移除的,要想移除,必须先将其标记为fail。如果你的RAID中有某个设备发生故障,要移除的话,也需要先将其标记为fail。

1.移除单个RAID物理卷

假设sda1分区发生异常,我们需要将其移除。

下面我们将物理卷sda1从RAID中移除:

$ sudo mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1

mdadm: set /dev/sda1 faulty in /dev/md0

mdadm: hot removed /dev/sda1

如果你打算将移除的设备清空,以便做其他用途,那么你必须将超级块清除掉,否则系统会认为该设备仍然属于某个RAID阵列:

$ sudo mdadm --zero-superblock /dev/sda1

2.移除整个硬盘

要从RAID中移除整个硬盘,需要先将该硬盘上所有的RAID物理卷都移除。

比如,我们要将***块硬盘sda整个移除,就需要将sda1、sda2、sda3全部标记为fail,然后将其全部移除:

ubuntu server:RAID 10 的故障处理

mdadm: set /dev/sda3 faulty in /dev/md2

mdadm: hot removed /dev/sda3

现在,如果在支持热插拔的服务器上,你就可以将该硬盘拔出了。

◆添加已有RAID物理卷

向RAID中添加设备,使用--add指令即可。

如果要添加的设备上已经创建好RAID物理卷,比如我们刚才移除的sda1、sda2、sda3设备,添加过程很简单:

$ sudo mdadm /dev/md0 --add /dev/sda1

mdadm: re-added /dev/sda1

$ sudo mdadm /dev/md1 --add /dev/sda2

mdadm: re-added /dev/sda1

$ sudo mdadm /dev/md2 --add /dev/sda3

mdadm: re-added /dev/sda1

◆更换全新硬盘

1.移除坏硬盘

假设整个sda已经无法使用,我们需要用全新的硬盘将其替换掉。首先,将sda的所有分区从RAID中移除:

$ sudo mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1

$ sudo mdadm /dev/md1 --fail /dev/sda2 --remove /dev/sda2

$ sudo mdadm /dev/md2 --fail /dev/sda3 --remove /dev/sda3

移除后,查看一下RAID状态,看看是不是真的移除了:

ubuntu server:RAID 10 的故障处理

我们可以看到,sda的设备已经不在RAID中了,RAID10的状态变成了3个Up设备:[_UUU]。

现在,如果是在支持热插拔的服务器上,你就可以将硬盘拔出了。

2.插入硬盘

虽然***块硬盘从RAID中移除了,现在系统仍然可以启动。这是因为sdb变成了***块硬盘,现在grub配置中的hd0实际上就是sdb。所以,即使***块硬盘坏掉,在不需要更改grub配置的情况下,系统仍然能够启动。

如果你是在真实的服务器上做实验,而且服务器支持硬盘的热插拔,不需要重新启动服务器,直接将“坏”硬盘拔出,换上新硬盘即可。

由于我们是在VMware中做实验,不支持热插拔,所以要添加新硬盘的话必须关机:

$ sudo halt

#p#

关机后,在VMware中,先加入一块新硬盘,再删除原先的***块“坏”硬盘。请注意,如果你先删除旧硬盘再加入新硬盘,VMware会把新硬盘作为SCSI0:0加入,对Linux来说也就是sda;由于这是一块全新的硬盘,上面还没有grub,所以如果作为sda的话,会导致系统无法启动。

新硬盘加好后,开机。

是的,在缺少***块硬盘、只剩下3块好硬盘的情况下,系统的确还能够正常启动。现在,你体会到我们这个方案的优越性了吧!

系统启动后,我们来看一下现有硬盘的情况:

$ sudo fdisk -l

你应该看到,原有的3块硬盘,位置都往前移动了,原先的sdb成了现在的sda,新加入的硬盘成了sdd。(如果你是在真实服务器上,没有重新启动服务器,而使用热插拔加入新硬盘,那么新硬盘仍然是sda。)

3.新硬盘分区

为了方便,我们直接将现有硬盘的分区信息,复制到新硬盘上:

$ sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdd

现在,我们的新硬盘已经分好区,可以加入RAID了。

4.将新分区加入RAID

在把新分区加入到RAID之前,我们先来查看一下md1的详细信息:

ubuntu server:RAID 10 的故障处理

可以看到,目前只有3个设备在md1中工作,原先的***个设备已经被移除了。

好,现在我们将sdd2加入md1:

$ sudo mdadm /dev/md1 --add /dev/sdd2

命令执行后,mdadm会重建md1,你可以查看创建进度和状态:

$ sudo mdadm --detail /dev/md1

[...]

Rebuild Status : 7% complete

[...]

Number Major Minor RaidDevice State

4 8 50 0 spare rebuilding /dev/sdd2

[...]

根据分区的大小,重建过程的时间长短会不一样。等重建结束,其状态应该是这样:

ubuntu server:RAID 10 的故障处理

然后,我们把md0和md2也重建:

$ sudo mdadm /dev/md0 --add /dev/sdd1

$ sudo mdadm /dev/md2 --add /dev/sdd3

#p#

5.设置grub

***,还需要设置一下grub,否则新硬盘无法启动系统:

$ sudo grub

grub> root (hd3,0)

grub> setup (hd3)

grub> quit

如果你是在真实服务器上,新硬盘为sda,则应该将grub安装在hd0上。

好,现在新硬盘已经加入到RAID中,将原先的坏硬盘替换掉了。

◆添加备用硬盘

如果我们的RAID阵列中有备用设备,那么,在某个设备发生故障时,系统会自动将备用设备替换上,我们也就不需要进行手工更换的操作了。

我们可以在安装Ubuntu之初,就为RAID准备好备用硬盘,在创建RAID设备时使用-x或者--spare-devices=选项将备用物理卷添加到RAID中。

当然,我们也可以事后再添加备用硬盘;只是不能使用--spare-devices=选项,而要采用--add了。

在添加之前,我们先看一下RAID中有没有备用设备:

$ sudo mdadm --detail /dev/md1 | grep Spare

Spare Devices : 0

可见,当前RAID阵列中没有备用设备。

#p#

◆插入新硬盘

现在,我们按照上一节中介绍过的步骤,向服务器中添加一块新硬盘。

系统启动后,我们来看一下现有硬盘的情况:

$ sudo fdisk -l

你应该看到有sde设备,这个设备就是我们新加入的硬盘。

◆新硬盘分区

为了简化操作,我们还是直接将现有硬盘的分区信息,复制到新硬盘上:

$ sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sde

好,现在我们的新硬盘已经分好区,可以加入RAID了。

◆新分区加入RAID

下面我们将新硬盘上的3个分区,分别加入md0、md1、md2这3个RAID阵列:

$ sudo mdadm /dev/md0 --add /dev/sde1

$ sudo mdadm /dev/md1 --add /dev/sde2

$ sudo mdadm /dev/md2 --add /dev/sde3

现在来查看一下md0中有没有备用设备:

ubuntu server:RAID 10 的故障处理

可以看到,总设备的数量、工作中的设备数量、备用设备数量,都发生了改变。

同样的,你也可以查看md1和md2的详细信息,应该都有了1个备用设备。

#p#

◆设置grub

我们需要事先将备用硬盘的grub设置好,以防万一:

$ sudo grub

grub> root (hd4,0)

grub> setup (hd4)

grub> quit

◆故障模拟

现在,我们假设sda1出了故障,我们把它标记为fail:

$ sudo mdadm /dev/md0 --fail /dev/sda1

mdadm: set /dev/sda1 faulty in /dev/md0

现在,我们来看看备用设备是否已经自动启用:

ubuntu server:RAID 10 的故障处理

可以看到,备用设备sde1的确已经自动进入工作状态了,而sda1被标记为“失败”了。

当sda1的故障被修复后,我们可以重新把它加入到RAID中来,使其成为备用设备。因为sda1已经被标记为fail,我们必须先将其移除,重新加入:

$ sudo mdadm /dev/md0 --remove /dev/sda1

$ sudo mdadm /dev/md0 --add /dev/sda1

◆RAID10的空间扩展

假设现在系统的硬盘空间不够用了,需要添加新的硬盘。

很遗憾,目前mdadm只支持RAID1、RAID5、RAID6的grow操作,也就是说,我们无法直接为RAID10扩展存储空间。

如果一定要向现有的RAID10阵列中添加新硬盘、增加空间,我们不得不按照下面的步骤:

(1)备份数据;

(2)创建新的RAID阵列;

(3)恢复数据。

也就是说,要想扩展RAID10的存储空间,除非重建。

不过,我们可以和LVM结合,采用RAID+LVM的方案,在RAID上面建立LVM,这样就可以随意扩展存储空间了。这正是我们将在下一章中要介绍的内容。

【编辑推荐】

  1. Ubuntu创始人:放眼未来 我看好ubuntu的发展
  2. Ubuntu创始人:开源将促进软件服务模式发展
  3. Ubuntu Linux系统平台下架设JSP运行环境配置

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...