1 需要换新盘的情况

1.1 一块盘grub损坏修复

一块盘grub损坏修复(可通过另一块盘进入系统的情况)。更换硬盘的方式,可以热插拔,也可以服务器断电后更换,但如果是热插拔,可能会导致盘符变更。坏了一块硬盘的情况下,软raid1恢复方法(以sdb为新更换的硬盘为例):

1.1.1 拷贝硬盘分区信息

拷贝正常的那块硬盘分区信息到新的硬盘

[root@ ~]#sfdisk -d /dev/sda | sfdisk -f /dev/sdb

1.1.2 查看sdb的分区与sda是否一致

[root@ ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 300.0 GB, 300000000000 bytes

255 heads, 63 sectors/track, 36472 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         523     4194304   82  Linux swap / Solaris

Partition 1 does not end on cylinder boundary.

/dev/sdb2   *         523       36473   288773120   fd  Linux raid autodetect

[root@ ~]# fdisk -l /dev/sda

Disk /dev/sda: 300.0 GB, 300000000000 bytes

255 heads, 63 sectors/track, 36472 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000dafc6

Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1         523     4194304   82  Linux swap / Solaris

Partition 1 does not end on cylinder boundary.

/dev/sda2   *         523       36473   288773120   fd  Linux raid autodetect

1.1.3 让内核重载分区表

(若可以重启服务器不需执行此部)

[root@ ~]# partprobe /dev/sdb

1.1.4 把第二块盘加入raid1中

[root@ ~]# mdadm /dev/md0 -a /dev/sdb2

等数据同步到SDB 完成之后执行

1.1.5 复制操作系统的引导程序

(复制操作系统的前512字节的引导程序到新的硬盘,最关键一步,否则开机无法正常引导,现场软raid同步后没法启动就是这个原因)

[root@ ~]# dd if=/dev/sda of=/dev/sdb bs=512 count=1

ps:硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。被复制到物理内存的内容就是Boot Loader,即grub。

1.1.6 添加新盘swap

[root@ ~]# mkswap
/dev/sdb1

[root@ ~]# swapon
/dev/sdb1

上面命令只在未重启时生效

1.1.7 修改fstab

修改fstab中已经被换掉的硬盘的UUID为新swap的UUID,保证swap重启服务器可以生效

[root@ ~]# cat
/etc/fstab

UUID可通过blkid查看

1.2 两块盘grub均损坏(无法进入系统)

有一些之前已经换过系统盘,没有按照上面的操作,然后另一块也坏了,此时两块硬盘都没法进入系统,采用如下方法:

挂载光盘,进应急模式修复

Bash-4.1# chroot /mnt/sysimage

Sh-4.1# grub

Grub > root (hd0,1)

Grub> setup (hd0)

Grub> quit

Sh-4.1# exit

Bash-4.1# reboot

成功

2 不需要换盘的情况

现场存在硬盘没问题,但是掉raid的情况(大部分是这种情况)

检测方法

2.1 检查硬盘的是否正常

2.1.1 smartctl -a /dev/sdb

注意上面得输出,标注位置没有错误,表示硬盘没问题

2.1.2 smartctl -H /dev/sdb

一般用这个查就可以了,health为ok即表示硬盘没问题

2.1.3 badblocks -sv /dev/sdb

全盘扫,很慢,不建议

2.2若硬盘没问题,重新同步即可

2.2.1 检查raid状态

[root@ ~]# mdadm -D /dev/md0

/dev/md0:

Version : 1.0

Creation Time : Tue Apr 29 15:19:50 2014

Raid Level : raid1

Array Size : 288772984 (275.40 GiB 295.70 GB)

Used Dev Size : 288772984 (275.40 GiB 295.70 GB)

Raid Devices : 2

Total Devices : 2

Persistence
: Superblock is persistent

Intent Bitmap : Internal

Update Time : Mon Jul  4 15:05:56
2016

State : active, degraded

Active Devices : 1

Working Devices : 1

Failed Devices : 1

Spare Devices : 0

Name : example.sz.fonsview.com:0

UUID : 8c78cdee:b6be167c:85cce8f9:9e2fe8e8

Events : 26915749

Number   Major   Minor  
RaidDevice State

0       0        0       
0      removed

1       8       18       
1      active sync   /dev/sdb2

0       8        2       
-      faulty
spare   /dev/sda2

若红色字体部分为faulty,执行:

[root@ ~]# mdadm /dev/md0 -r /dev/sdb

[root@ ~]# mdadm /dev/md0  -a /dev/sda2

若红色字体部分为remove,执行:

[root@ ~]# mdadm /dev/md0  -a /dev/sda2

2.2.1 查看同步状态

[root@ ~]# cat /proc/mdstat

linux服务器系统盘坏且系统盘为软raid的修复方法的更多相关文章

  1. Linux服务器断电导致挂载及xfs文件损坏的修复方法

    系统文件损坏后进入紧急修复模式,无法进行维护工作 welcome to emergency mode!after logging in ,type "journalctl -xb" ...

  2. window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法

    摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sud ...

  3. Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法

    python通过ssh连接linux服务器,部分服务器出现如下异常 03:50:48.725 FAIL ftp operation failed, Incompatible ssh peer (no ...

  4. Linux服务器更换主板后,网卡识别失败的处理方法

    1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...

  5. linux服务器中不支持soap及bcmul函数的结局方法

    新的程序里用了webserice接口,部到服务器,先是提示:bcmul() 函数不可用,网上搜索一番,得知这是php的高精度函数,需要在编译php的时候加入此模块,于是在编译脚本里增添 “–enabl ...

  6. linux服务器没网情况下手动安装软件几个方法

    1,找到一个有网的服务器,使用yumdownloader gcc,获取需要的rmp包: 2,在http://pkgs.org 下下载所需要的rpm包

  7. 阿里云linux服务器到期后续费,网站打不开解决方法之一

    续费后打不开网站,可能会出现不同情况,这里只记录我遇到的问题 问题描述:服务器到期后续费,网站打不开. 解决尝试: 1.重启服务器nginx    /etc/init.d/nginx restart ...

  8. vmware 安装 kali linux 系统到U盘 启动错误(initramfs:) 修复方法

    安装kalilinux到U盘 启动之后出现这个错误: 这是grub路径不对. 解决办法: 在这模式下可以输入命令:blkid 查看所列举出的磁盘 找到你的U盘系统 TYPE="ext4&qu ...

  9. Java远程连接Linux服务器并执行命令及上传文件

    最近再开发中遇到需要将文件上传到Linux服务器上,至此整理代码笔记. 此种连接方法中有考虑到并发问题,在进行创建FTP连接的时候将每一个连接对象存放至 ThreadLocal<Ftp> ...

随机推荐

  1. shell编程中的if语句

    if语句在任何编程中都是必不可少.至关重要的分支语句,shell也是如此,只不过各种编程中的方式和格式有点不太一样 shell编程中的if语句基本格式如下: if [ X$1 = XA ];then ...

  2. python中合并数组的方法

    一.数组纵向合并 1.使用np.vstack()函数 [code] #数组 a = [[1,2,3],[4,5,6]] b = [[1,1,1],[2,2,2]] #纵向合并 c = np.vstac ...

  3. redis的安装使用以及在python中操作redis

    一.Redis介绍: Redis可以看作是一个key-value的存储系统,它为我们提供了丰富的数据结构,包括lists,sets,ordered sets和hashes.还包括了对这些数据结构的丰富 ...

  4. 获取屏幕宽度,将view移出屏幕再移动回来

    public class MainActivity extends AppCompatActivity { private TextView kuandu; float curTranslationX ...

  5. [java初探总结篇]__java初探总结

    前言 终于,java初探系列的学习,要告一阶段了,java初探系列在我的计划中是从头学java中的第一个阶段,知识主要涉及java的基础知识,所以在笔记上实在花了不少的功夫.虽然是在第一阶段上面花费了 ...

  6. Hibernate懒加载解析

    Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来 ...

  7. Hadoop2源码分析-YARN 的服务库和事件库

    1.概述 在<Hadoop2源码分析-YARN RPC 示例介绍>一文当中,给大家介绍了YARN 的 RPC 机制,以及相关代码的演示,今天我们继续去学习 YARN 的服务库和事件库,分享 ...

  8. 一篇极好的Git 总结

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯工蜂发表于云+社区专栏 常用命令 简单的,常用的命令也就几个.但是想非常熟练使用,怕是要记住几十个. Workspace:工作区( ...

  9. Java 8 新特性-菜鸟教程 (7) -Java 8 Nashorn JavaScript

    Java 8 Nashorn JavaScript Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java ...

  10. jquery实现点击文字后变成文本框且可修改

    $(function() { //获取class为caname的元素 $(".caname").click(function() { var td = $(this); var t ...