使用dd克隆250GB SSD至500GB SSD后分区无法识别求助
嘿,我来帮你捋清楚这个问题——你用dd克隆250GB SSD到500GB盘时,在超出原盘实际可访问空间后出现IO错误,这本身确实可能是正常的(毕竟原盘没有那么多数据),但装回原盘后分区看不到,大概率是下面这些原因,咱们一步步排查修复:
最可能的“低级错误”:dd命令搞反了输入输出设备
这是用dd克隆磁盘时新手最容易踩的坑!如果你不小心把if(要克隆的源盘)和of(目标盘)写反了,相当于把空的500GB目标盘的内容(可能是空白分区表甚至无分区)写入了你的250GB原盘,直接覆盖了原盘开头的分区表数据,自然就识别不出分区了。
当然,也有可能是克隆过程中外接设备连接不稳定,或者原盘本身存在坏块,导致读取原盘分区表时出现损坏。
排查与修复步骤
1. 先确认原盘能被系统识别
把原SSD重新外接回你的Ubuntu 16.04电脑,打开终端运行下面的命令,看看系统能不能识别到这块磁盘:
lsblk
你会看到类似/dev/sda、/dev/sdb的设备名,对应不同的磁盘,通过大小(250GB)找到你的原盘。如果能看到磁盘设备,但下面没有列出分区,那基本就是分区表损坏了。
2. 用testdisk修复分区表(首选方案)
testdisk是Linux下恢复分区表的神器,操作也不算复杂:
- 先安装它:
sudo apt-get update && sudo apt-get install testdisk
- 启动工具:
sudo testdisk
- 跟着向导走:
- 选
Create生成日志文件(方便后续排查) - 选中你的250GB原盘设备(一定要看清楚大小,别选错500GB的目标盘!)
- 选择分区表类型:如果原盘之前用的是GPT(现在新电脑大多是这个)就选
GPT,老电脑可能是Intel(对应MBR),不确定的话选Intel试试 - 选
Analyze开始分析磁盘 - 选
Quick Search快速搜索丢失的分区 - 找到分区后,按
P可以预览分区里的文件,确认是不是你原来的数据 - 确认没问题后,按
Write把修复后的分区表写入磁盘,然后按Q退出 - 重新插拔原盘,或者运行
sudo partprobe让系统重新识别分区
- 选
3. 检查磁盘健康状态
如果testdisk找不到分区,或者修复后还是有问题,可能是原盘本身有坏块,用smartctl检查一下:
sudo smartctl -a /dev/sdx # 把sdx换成你的原盘设备名,比如sda
重点看Reallocated_Sector_Ct(重新分配扇区数)和Current_Pending_Sector(待修复扇区数),如果这两个数值不为0,说明磁盘有物理坏块,可能需要考虑更换磁盘,或者用badblocks标记坏块后继续使用(但坏块会越来越多,建议备份数据)。
4. 用photorec恢复文件(分区表彻底损坏时用)
如果分区表完全救不回来,还可以用photorec(和testdisk是一套工具)直接恢复文件:
sudo photorec
跟着向导操作:选择原盘、分区类型、恢复文件的存储位置(一定要选其他磁盘,别选原盘本身,避免覆盖数据),它会扫描磁盘并恢复能识别的文件,比如文档、图片、视频这些。
以后克隆的注意事项
为了避免再踩坑,给你几个小建议:
- 用
dd克隆前,一定要用lsblk确认磁盘大小,250GB的是源盘(if),500GB的是目标盘(of),反复核对! - 克隆时可以加
status=progress参数看进度,命令示例:
sudo dd if=/dev/sdx of=/dev/sdy bs=4M status=progress
- 如果你只想克隆已使用的分区,不想克隆整个空磁盘,推荐用clonezilla,它更安全,还能自动调整分区大小适配更大的目标盘。
内容的提问来源于stack exchange,提问作者raggot

