当我尝试移动我的一个分区时,我收到了一些错误消息。以下是一些摘录:
Move /dev/sda7 to the left 00:05:09 ( ERROR )
(...)
check file system on /dev/sda7 for errors and (if possible) fix them 00:00:10 ( SUCCESS )
e2fsck -f -y -v /dev/sda7
(...)
move file system to the left 00:04:52 ( ERROR )
perform read-only test 00:04:52 ( ERROR )
using internal algorithm
read 114013242 sectors
finding optimal blocksize
(...)
read 113357882 sectors using a blocksize of 1024 sectors 00:04:36 ( ERROR )
22527034 of 113357882 read
Error while reading block at sector 385849832
23182394 sectors read ( ERROR )
(...)
libparted messages ( INFO )
Input/output error during read on /dev/sda
我应该怎么做才能有效地移动我的分区?
答案1
您的硬盘上有坏扇区。立即备份所有重要数据。然后运行磁盘实用程序并单击 SMART 诊断程序。运行长时间自检,完成后,查看以下属性的值:
离线无法纠正的当前待处理扇区重新分配扇区 Ct
如果无法纠正的计数不为零,或者重新分配或待处理的计数多于几个,则需要更换驱动器。如果只有几个待处理的,那么您可以尝试修复它们。首先,您需要确定坏扇区的编号。可以使用 badblocks 实用程序来完成此操作。然后,您可以使用 hdparm --read-sector 尝试从中读取以确保您拥有正确的扇区,然后使用 hdparm --write-sector 尝试用零重写该扇区。这将强制驱动器尝试纠正扇区,如果不能,将从备用池中重新分配它,将计数从待处理扇区移至重新分配。对所有坏扇区重复此操作。
答案2
这实际上让我解决了我的问题。普苏西确实很有帮助,但是对我来说太难了,我花了大约三个小时才搞定一切,并从他的帖子中提取出我感兴趣的内容。我不得不在维基百科、官方 Ubuntu 论坛和 Ask Ubuntu 中进行搜索。因此,我认为他的帖子是一个受欢迎的提示,但不是正确的答案。
- 在 Live-CD 上运行 Ubuntu。
- 使用系统 -> 管理 -> Gparted,禁用最终的交换分区(换句话说,“swapoff”)。此外,记下损坏的驱动器的名称,在我的情况下是“sda”
- 在终端中,运行命令
sudo badblocks -sv -b 512 <device-name>
,其中在我的情况下将 替换为/dev/sda
。经过长时间的等待,结果是损坏扇区的数字列表。 - 运行命令
sudo dd if=<device-name> of=/dev/null bs=512 count=1 skip=<sector>
,其中我将dev/sda
和替换为385850816
上一个命令给出的第一个数字。 - 对每个数字重复上一点。
- 要检查救援是否成功,请再次运行命令
sudo badblocks -sv -b 512 <device-name>
。它应该(在很长一段时间后)不会给出任何数字。
就我而言,它解决了我的问题,我又可以移动我的分区了。我不得不承认我真的不知道为什么,因为这里的命令似乎只有读取和写入命令。但无论如何,我再也没有遇到任何问题了。
答案3
您的硬盘似乎存在硬件问题,因此我建议您使用 ddrescue 或 gddrescue 等工具将其复制到另一个硬盘上。然后尝试修复文件系统(使用 fsck),如果此方法无效,请使用 photorec 或类似的救援工具。
或者,如果您有另一个磁盘的话,当然可以...