zoukankan      html  css  js  c++  java
  • raid1磁盘更换---测试

    写在前面的话,研究下来,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,0)
      (hd1,0)
    grub>root (hd1,0)
    grub>setup (hd1)    ## 配置hd1
    grub>root (hd0,0)
    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[0] sdb3[1]
              4883648 blocks [2/2] [UU]
    
    md1 : active raid1 sdb2[2] sda2[0]
              195310144 blocks [2/1] [U_]
              [=>...................] recovery = 8.5% (16775552/195310144) finish=17.0min speed=259783K/sec
    
    md0 : active raid1 sdb1[1] sda1[0]
              39061952 blocks [2/2] [UU]    

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

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

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

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

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

    splashimage=(hd0,0)/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 1 raid on
    set 2 raid on
    set 3 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

  • 相关阅读:
    Web系统可复用架构
    asp.net mvc 2 简简单单做开发 实现基本数据操作操作RepositoryController<T>
    asp.net mvc 2 简简单单做开发 使用DataContext扩展方法Find<TEntity>(TEntity obj) 遇到的问题
    asp.net mvc 2 简简单单做开发 自定义DropdownList控件
    asp.net mvc 2 DisplayTemplates 的使用
    linq to sql 扩展方法
    asp.net mvc 2 简简单单做开发 通用增删改基本操作通用页面
    asp.net mvc 2 简简单单做开发 自定义Controller基类
    JNLP启动相关的东东
    easyexcel往已存在的excel文件里追加数据
  • 原文地址:https://www.cnblogs.com/starRebel/p/8884787.html
Copyright © 2011-2022 走看看