一、MBR丢失
检查MBR信息:
dd if=/dev/vda of=/vda bs=512 count=1
cat vda| hexdump| less
重建MBR:
如果是grub2: 直接grub2-install –force /dev/vda (需强制安装,否则会报错。)
如果是grub: 先执行grub-recheck 再执行grub-install /dev/vda
二、文件系统异常
1、fdisk恢复分区
查看ext文件系统的其实扇区:
dd if=/dev/vda bs=512 count=4096 2>/dev/null | od -tx1 | perl -ne ‘
chomp;
if (/^([0-7]+)/s # 磁盘数据的位置
([0-9a-f][0-9a-f]/s){8} # 越过无关数据
53/sef/s # 模数
0[124]/s00/s0[123]/s00/s # 文件系统状态和出错后的行为配置
/x) {
my $s=int((oct $1)/512)-2;
print qq[$s $_/n];
}’
a.先通过模数找到文件系统的起始扇区(53ef是ext的模数所以此方法只适用ext
b.fdisk -u /dev/xxx 重新分区保证起始扇区和前面找到的一致即可云上默认都是单分区(fdisk默认是按照cylinder为单位的所以加-u指定以sector为单位)
c.新版本fdisk都是以2048为起始扇区的最小值的,如果分区起始扇区是63等小于2048的话,使用parted代替fdisk
2、testdisk恢复分区
a.运行testdisk /dev/xvdb(根据实际情况替换设备名),再选择Proceed(默认值)后按回车键。
b.选择分区表类型进行扫描:一般选择Intel(默认)。如果您的数据盘采用GPT分区,选择EFI GPT。
c.选择Analyse后按回车键。
d. 如果您没有看到没有任何分区信息,选择Quick Search后按回车键快速搜索。
e.在返回结果中会显示分区信息,如下图所示,选中分区后,按回车键。
f.选择Write保存分区。如果不是您需要的分区,可以选择Deeper Search继续搜索。
g.按Y键确认保存分区。
h.运行partprobe /dev/xvdb(根据实际情况替换设备名)手动刷新分区表。
i.重新挂载分区,查看数据盘里的数据情况。
2、testdisk恢复数据
a.按testdisk恢复分区 的第1步到第4步描述找到分区。
b.按P键列出文件。 返回结果如下图。
c.选中要恢复的文件,再按C键。选择目标目录。本示例中以恢复到 /home 为例。
如果您看到 Copy done! 1 ok, 0 failed 说明复制成功。如下图所示。
d.切换到 /home 目录查看。如果您能看到文件,说明文件恢复成功。
三、UUID冲突
ext4:
uuidgen | xargs tune2fs /dev/sda1 -U
指定uuid:
tune2fs -U 9f2d3e15-a78a-4f3d-8385-014b67864 /dev/sda1
xfs:
uuidgen | xfs_admin /dev/sdc1 -U
四、文件系统异常
查看超级块
mkfs.ext4 -n /dev/vdb1
尝试用超级块挂载
mount -t ext4 -o sb=131072 /dev/vdb1 /mnt/
尝试用超级块修复
fsck.ext4 -b 32768 /dev/vdb1
转载于:https://www.cnblogs.com/kcxg/p/10929287.html
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/245171.html