欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux服务器系统盘坏且系统盘为软raid的修复方法

程序员文章站 2022-04-13 15:48:29
1 需要换新盘的情况 1.1 一块盘grub损坏修复(可通过另一块盘进入系统的情况) 更换硬盘的方式,可以热插拔,也可以服务器断电后更换,但如果是热插拔,可能会导致盘符变更。坏了一块硬盘的情况下,软raid1恢复方法(以sdb为新更换的硬盘为例): 1.1.1 拷贝正常的那块硬盘分区信息到新的硬盘 ......

1 需要换新盘的情况

1.1 一块盘grub损坏修复(可通过另一块盘进入系统的情况)

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

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

 sfdisk -d /dev/sda | sfdisk -f /dev/sdb

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

[root@hn-ss1 ~]# 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@hn-ss1 ~]# 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 让内核重载分区表(若可以重启服务器不需执行此部)

 partprobe /dev/sdb

 

1.1.4 把第二块盘加入raid1中

 mdadm /dev/md0 -a /dev/sdb2

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

 

1.1.5 复制操作系统的前512字节的引导程序到新的硬盘

(最关键一步,否则开机无法正常引导,现场软raid同步后没法启动就是这个原因)

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

mkswap /dev/sdb1

swapon /dev/sdb1

 

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

 

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

cat /etc/fstab

uuid可通过blkid查看

 

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

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

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

 linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

linux服务器系统盘坏且系统盘为软raid的修复方法

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

 linux服务器系统盘坏且系统盘为软raid的修复方法

成功

 linux服务器系统盘坏且系统盘为软raid的修复方法

 

 

2 不换盘

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

检测方法

2.1 检查硬盘的是否正常

2.1.1 smartctl -a /dev/sdb

 linux服务器系统盘坏且系统盘为软raid的修复方法

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

2.1.2        smartctl -h /dev/sdb(一般用这个查就可以了),health为ok即表示硬盘没问题

 linux服务器系统盘坏且系统盘为软raid的修复方法

2.1.3 badblocks -sv /dev/sdb

全盘扫,很慢,不建议

 

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

2.2.1 检查raid状态

[root@gd-qy1-by1-se3 fonsview]# 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,执行:

mdadm /dev/md0 -r /dev/sdb

mdadm /dev/md0  -a /dev/sda2

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

mdadm /dev/md0  -a /dev/sda2

 

2.2.1 查看同步状态

cat /proc/mdstat