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 均损坏 (无法进入系统)
有一些之前已经换过系统盘, 没有按照上面的操作, 然后另一块也坏了, 此时两块硬盘都没法进入系统, 采用如下方法:
挂载光盘, 进应急模式修复
- 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@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
来源: https://www.cnblogs.com/wenquanli/p/10278274.html