写在前面的话,研究下来,raid提供了数据保护的功能,比如raid1有两块硬盘互为镜像,一块盘坏了,系统可以正常运行。但是不代表着,拔下一块硬盘后,系统可以正常启动。因为系统把raid看作一个整体,少了一块硬盘,会认为是发生了错误,要么启动不成功,要么进入紧急模式。所以拔下一块硬盘然后再插入一块新硬盘后,往往系统可以启动。也就是raid对数据的保护和系统正常启动是两个概念。

安装centos6.7
1. CentOS安装过程配raid。参考:http://www.360doc.com/content/13/1209/21/14661619_335823338.shtml。

2. 选择bootloader device时,不要选择U盘,选择两块硬盘中的一个。

配置bootloader
1.似乎bootloader不会同步,需要在新加磁盘上执行grub-install /dev/sdX.
------------------------

可能的问题1:

执行grub-install报错:/dev/sda does not have any corresponding BIOS drive.

解决办法:

[root@zz grub]#grub      ## 进入grub
grub>find /grub/grub.conf
find /grub/grub.conf
(hd0,)
(hd1,)
grub>root (hd1,)
grub>setup (hd1) ## 配置hd1
grub>root (hd0,)
grub>setup (hd0)
grub>reboot
[root@zz grub]#grub-install /dev/sda
[root@zz grub]#grub-install /dev/sdb

可能的问题2:

拔下一块硬盘后,系统无法正常启动。显示:
failed to read image
Press any key to enter the menu Press any key to continue...

解决办法。参考:https://www.centos.org/forums/viewtopic.php?t=2094。

把硬盘接回去,正常启动。

[root@zz ~]#cd /boot/grub/
[root@zz grub]#vim device.map ## 发现,“(hd0) /dev/sdc”把第一块硬盘映射成了/dev/sdc,改为/dev/sda
(hd0) /dev/sdb
(hd0) /dev/sda
[root@zz grub]#vim grub.conf
##原始内容如下:
#boot=/dev/md0
default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
      [b]root (hd1,0)[/b]
      kernel ******** ## 省略若干信息
      initrd /initramfs-2.6.32-573.el6.x86_64.img

这里只有root (hd1,0),也就是/dev/sdb硬盘的配置,复制一份,把/dev/sda也加上,同时把title也稍微修改一下:

#boot=/dev/md0
default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
    [b]root (hd1,0)[/b]
    kernel ******** ## 省略若干信息
    initrd /initramfs-2.6.32-573.el6.x86_64.img
title CentOS 6 (2.6.32-573.el6.x86_64.1)
    [b]root (hd0,0)[/b]
    kernel ******** ## 省略若干信息
    initrd /initramfs-2.6.32-573.el6.x86_64.img

:wq回到shell,这时候执行 ,

cat /proc/mdstat

可能会看到如下(示例):

md2 : active raid1 sda3[] sdb3[]
blocks [/] [UU] md1 : active raid1 sdb2[] sda2[]
blocks [/] [U_]
[=>...................] recovery = 8.5% (/) finish=.0min speed=259783K/sec md0 : active raid1 sdb1[] sda1[]
blocks [/] [UU]

表示两块硬盘的其中一个分区正在同步数据([U_]说明一块硬盘是正常,一块不正常),后续操作**需要等待同步完成后进行**。

[root@zz grub]#dracut "initramfs-$(uname -r).img" $(uname -r) ## 不确定是否有用

注意点:
在grub.conf文件中有一行配置:

splashimage=(hd1,)/grub/splash.xpm.gz

这里面的(hd1,0)需要修改成目前还链接在电脑上的硬盘的标号。如果拔下来的硬盘是hd1,即/dev/sdb/,那么还在电脑内的硬盘为hd0,则这里需要修改成:

splashimage=(hd0,)/grub/splash.xpm.gz

最后,在**启动界面**,需要手动选择对应磁盘的title。比如目前电脑磁盘为hd0,那么就选择CentOS 6 (2.6.32-573.el6.x86_64.1)系统启动,否则可能会默认启动hd1的CentOS 6 (2.6.32-573.el6.x86_64),找不到硬盘报错。

测试
1. 测试时,在格式化一块硬盘之后,需要在BIOS里设置一下启动顺序,把已经格式化的硬盘放在最后一位,否则可能出错。

2. 使用parted确认raid信息,同时也可以看到/dev/sda/对应的硬盘编号。 (fdisk不能支持大于2T的磁盘,而且不支持gpt分区,所以这里使用parted工具)

参考:http://www.chinaz.com/server/2016/1017/595444.shtml

parted -l

3. 先用mdadm命令删除一块raid硬盘,这里选择删除sdb。

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md2 --remove /dev/sdb3
cat /prco/mdstat

4. 格式化硬盘然后重启:

mkfs /dev/sdb
reboot

5. 查看/dev/sda的分区信息

parted /dev/sda/ unit B print

6. 重新添加/dev/sdb到raid1 ,依次执行:

parted /dev/sdb
mklabel msdos ## 这里的分区标志和现有磁盘相同,可能是“gpt”
mkpart primary XXX1B YYY1B ## 按照/dev/sda/的分区大小创建分区
mkpart primary XXX2B YYY2B
mkpart primary XXX3B YYY3B
set raid on
set raid on
set raid on
quit

回到shell

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
mdadm --manage /dev/md2 --add /dev/sdb3
cat /proc/mdstat

可以看到,两块磁盘正在同步,等待同步完成
7. 同上配置bootloader,重启。

grub-install /dev/sdb
vim /boot/grub/grub.conf
vim /boot/grub/device.map
parted -l
reboot

8. 测试结果

parted -l
df -h
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
mdadm --detail /dev/md2

grub2的介绍可以参考鸟哥系列:http://linux.vbird.org/linux_basic/0510osloader.php#grub

raid1磁盘更换---测试的更多相关文章

  1. linux 磁盘IO测试工具:FIO (同时简要介绍dd工具测试)

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. 目前主流的第三方IO测试工具有fio.iomete ...

  2. 【Linux】磁盘读写 测试

    一.如何查看当前磁盘的IO使用情况 使用命令:iotop Total DISK READ: 3.89 K/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DI ...

  3. (转)AIX rootvg 镜像创建与磁盘更换

    # prtconf | grep disk # chdev -l hdisk1 -a pv=yes # extendvg rootvg hdisk1 # chvg -Qn rootvg # lsvg ...

  4. Linux dd工具磁盘读写测试分析

    话说,Linux 自带的dd工具测试硬盘读写速度只能提供一个大概的测试结果,而且是连续IO 而不是随机IO ,理论上文件规模越大,测试结果越准确.理论上bs越大,所测得性能越高. 上句来自网上,是不是 ...

  5. 磁盘io测试工具

    1. ATTO Disk Benchmark 2.DiskSpd磁盘性能测试工具

  6. 如何对Azure磁盘性能进行测试

    Azure的云存储一直是Azure比较自豪的东西,想到AWS的LSA后面有若干个9,搞得大家都以为它的存储最优秀,其实不然,Azure存储到现在没有丢过客户1bit的数据,但是Azure不会去说我们的 ...

  7. 使用 MegaCLI 检测磁盘状态并更换磁盘

    专栏首页阿dai_linux使用 MegaCLI 检测磁盘状态并更换磁盘 原 10

  8. 1-15-2-RAID1 企业级RAID磁盘阵列的搭建(RAID1、RAID5、RAID10)

    大纲: 1.创建RAID1 2.创建RAID5 3.创建RAID10 =============================== 1.创建RAID1 RAID1原理:需要两块或以上磁盘,可添加热备 ...

  9. DOS命令行(2)——Windows磁盘维护与管理

    预备知识 1 -- 磁盘 1.磁盘分区 主磁盘分区.扩展磁盘分区.逻辑分区 主磁盘分区是物理磁盘的一部分,它像物理上独立的磁盘那样工作.对于基本启动记录(MBR)的磁盘,在一个基本磁盘上最多可以创建四 ...

随机推荐

  1. Android中TextView设置最大长度,超出显示省略号

    今天在项目中碰到一个问题,在一个页面的顶部的标题栏显示公司的名字,但由于公司名称较长,显示不开,影响美观.故在网上查阅资料,在此做个小的总结. TextView中有个ellipsize属性,作用是当文 ...

  2. C++ string and wstring convert

    http://blog.sina.com.cn/s/blog_7632c6010100u1et.html http://www.codeproject.com/Tips/197097/Converti ...

  3. 001-window下运行linux

    一.概述 前提:有条件的情况下,自行安装 在windows上模拟linux环境,主要有三种方法: 1.VMware等虚拟机,缺点:占用系统资源多,运行速度慢. 2.Cygwin等模拟环境,用windo ...

  4. Python 集合(set)的使用总结

    集合的特点:去重.无序,因此无法通过下标取值. 1. 定义集合 s = set() #定义空的集合 s2 = {'} # 不是key -value形式的话就是集合,不是字典 s3 ={'} print ...

  5. python16_day20【Django_继续抽屉项目】

    一.djangoAdmin和表结构 1.项目名称 python manage startapp web # 前端页面 python manage startapp repository   # 只是数 ...

  6. 04 linux用户群组和权限

    作业一: 1)新建用户natasha,uid为1000,gid为555,备注信息为“master” 2)修改natasha用户的家目录为/Natasha 3)查看用户信息配置文件的最后一行 4)为na ...

  7. EasyUI合并行

    扩展一下 EasyUI   下面湿扩展EasyUI 合并行的方法 $.extend($.fn.datagrid.methods, { autoMergeCells: function (jq, fie ...

  8. vue-cli脚手架build目录中的webpack.base.conf.js配置文件

    转载自:http://www.cnblogs.com/ye-hcj/p/7082620.html webpack.base.conf.js配置文件// 引入nodejs路径模块 var path = ...

  9. matlab和mathematics最新的FTP地址

    https://dio.obspm.fr/interne/logiciels/matlab/ 分享一个地址,非常好的FTP网站.

  10. java synchronized关键字的底层实现

    每个对象都有一个锁(Monitor,监视器锁),class对象也有锁,如果synchronized关键字修饰同步代码块,通过反编译可以看到,其实是有个monitorenter和monitorexit指 ...