恢复分区 - 表仍然存在于正在运行的系统中


5

HY, 我意外地在linux上覆盖了我的第一个1M硬盘(使用dd)。所以,分区表已经消失了。我仍然可以使用/ dev / sda2(依此类推)访问所有分区(第一个除外),因此数据仍然存在。我只需要分区边界来恢复表。我怎样才能做到这一点? Linux-Kernel必须仍然知道它们,因为所有挂载点仍然有效。 fdisk -l /dev/sda 不起作用,因为它实际上读取分区表。

谢谢!


您正在使用哪些文件系统...有时您可以根据文件系统标记找到分区的开始和结束......只是一个想法
RobotHumans

Answers:


6

可以读取分区的范围 /sys/block/sda/sda1/start/sys/block/sda/sda1/size 等等。值在扇区中。 在执行任何其他操作之前记下这些值,尤其是重新启动。

获得值后,可以使用重新创建分区 fdisk。使用 u 命令将单元切换到扇区,然后通过输入创建分区

  • n
  • p 主/ l ogical / e xtended
  • 分区号(逻辑分区除外:按顺序执行)
  • 初始部门
  • + 行业规模

我找到了那些sys文件并将值写下来,但是如何使用重新创建分区 fdisk?你是什​​么意思 expert menu?谢谢!
theomega

@theomega:我的意思是 x “额外的功能(仅限专家)”菜单,但实际上它不需要,你只需要使用 u 命令切换到扇区。
Gilles

谢谢你,你救了我的命!虽然大小值显然比分区的大小短(或者我输入的是大小而不是最后一个扇区)。我通过将每个分区的结尾设置为下一个分区的start-1来修复它,并接受fdisk提供的最后一个分区的大小。
user157726

5

问题问题已经过去差不多两年了。昨天我们处于完全相同的情况:我们有一个带有2个磁盘的Linux软件RAID级别1。其中一个磁盘坏了,必须更换。我们交换了磁盘,然后想要将分区表从剩余的(工作)磁盘复制到新磁盘。不幸的是,我们将空分区表从新磁盘复制到旧磁盘。幸运的是,我们在重新启动计算机之前立即发现了这一点,因此正确的分区表在内核中仍处于活动状态。以下是我们为解决此问题所做的工作:

  • 我们从中提取了分区数据 /sys/block/ 文件系统如Gilles的回答所述。
  • 我们的系统使用了 GUID分区表 ,所以我们无法使用 fdisk 但不得不使用 gdisk 代替。
  • gdisk 与...非常相似 fdisk 除了没有必要指定 u 对于部门。
  • 我们用。创建了分区 精确 从中提取的数据 /sys/block/。还有其他类似问题的答案可以说将分区大小减少一个,但这对我们来说并不是必需的。
  • 使用guid分区表,主分区和扩展分区之间不再有区别。
  • sys/block 文件系统不包含有关文件系统类型的信息,因此我们使用它们提取它们 mount
  • 使用guid分区表,不再有可引导标志。如果要还原的分区表来自可引导磁盘,则必须存在具有类型的分区 BIOS boot partition (通常是第一个分区)。

用分区表写完后 gdisk,我们能够重新启动系统,一切运行正常。



1

我认为其他答案不够全面,并留有错误的余地。 这是一个实际的恢复工作的例子,我在任何地方都没有提到过一个小小的警告。 从/ sys / block / sda / *获取扇区开始和大小时,你必须记住从大小中减去1,否则你将关闭1个扇区。

还记得在fdisk中为扇区模式命中“u”。

这是我成功遵循的例子: 步骤1 - 在/ sys / block / sda / sda1中找到您的设备目录(更改/ sda和/ sda1以匹配您的磁盘设备名称和分区号)。

你必须在'start'和'size'上做一只猫,它代表分区的起始扇区,'size'代表它有多少扇区。

取大小值并从中减去1,否则您将无法获得原始或正确的结果

fdisk / dev / sda

按u更改为/ sys / block / sda所经过的扇区

/ SYS /块/ SDA [root @ server1 sda] #cat sda1 / start 2048 [root @ server1 sda] #cat sda1 / size 1024000

[root @ server1 sda] #cat sda2 / start 1026048 [root @ server1 sda] #cat sda2 / size 1464121344

步骤2 - 使用fdisk获取上面的扇区信息并输入它(记住在告诉fdisk结束扇区时从大小中减去1)

运行后,“按u”切换到扇区模式:

fdisk / dev / sda

命令(m求助):n 命令行动    扩展    p主分区(1-4) p 分区号(1-4):1 第一部门(63-1465149167,默认63):2048 最后一个扇区,+扇区或+大小{K,M,G}(2048-1465149167,默认1465149167):+ 102490

命令(m求助):n 命令行动    扩展    p主分区(1-4) p 分区号(1-4):2 第一部门(63-1465149167,默认63):1026048 最后一个扇区,+扇区或+大小{K,M,G}(1026048-1465149167,默认1465149167):+ 1464121343

http://realtechtalk.com/Linux_How_To_Recover_Partition_Table_from_Kernel_and_Restore_CentosDebian_etc-1772-articles

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.