Table of Contents
突然VPN无法登录了,本地登录服务器,悲摧了,一块盘不见了,尝试重新挂载 失败.
尝试重启,再挂载,当然还是不行,因为是一块PCI-E SSD 卡,非常担心数据搞不出来。
1. 先备份
保险起见,先dd出来,因为本地没有足够大的空间,尝试将现有信息保存到另外一台主机,
在有空间的主机(192.168.1.2)运行:
ssh root@192.168.1.1 "dd iflag=fullblock conv=sync,noerror if=/dev/nvme0n1 |gzip -1 -" |dd of=/mnt/nvme.bak
还好可以执行,庆幸SSD盘似乎没有挂的很彻底。没有高兴太久,发现800G的盘 dd出来只有267G,看了下warning,似乎是因为中间有坏块读不出来,造成dd出来 的后面的部分,覆盖了前面的内容。
按理dd应该有选项避免这种情况,但是没查到,感觉过于复杂,不友善放弃。换 ddrescue,没看到可以支持管道到远端,放弃。换ddrescue。是的 ddrescue 和ddrescue 是两个不同的软件。 命令够简单: 在故障磁盘(/dev/nvme0n1)所在主机执行
dd_rescue /dev/nvme0n1 - | ssh root@192.168.1.2 "cat - > /mnt/filename.img"
执行效果不错,速度更是令人惊喜,千兆网络可以跑满。用dd只有一半速度。 关键是文件大小基本靠谱。
2. 恢复
备份完成后在原始磁盘上尝试修复。 直接上大招
xfs_repair -L /dev/nvme0n1
输出如下:
xfs_repair -L /dev/nvme0n1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... ALERT: The filesystem has valuable metadata changes in a log which is being destroyed because the -L option was used. xfs_repair: libxfs_device_zero write failed: Input/output error
没戏。
尝试从备份出来的文件进行恢复。
xfs_repair -Lf /mnt/filename.img
尝试挂载这个文件
mount /mnt/filename.img /media/ ls /media
运气不错,至少看起来大部分文件都在。
3. 重新启用该SSD
SSD还没有完全故障,还是要利用起来。看了下xfs似乎没有排除坏块的选项,用ext4重新格式化,再挂载。(当然,这次要定期做好备份)
mkfs.ext4 -c -c /dev/nvme0n1