goy*_*999 5 linux hard-drive gparted partitioning partition-recovery
我正在尝试复制已损坏的驱动器的分区结构,我所拥有的所有信息是它有一个 MBR,使用一个 msdos 分区表(不确定这是否重要?)并且有 9 个分区,看起来像这样:
/dev/sda,sector 0 is MBR
/dev/sda1 is kernel (RAW) - 190MB
/dev/sda2 is swap (SWAP) - 478MB
/dev/sda4 is rescue (RAW) - 190MB
/dev/sda5 is root - ext3 - 4.66GB
/dev/sda6 is app - ext3 - 4.66GB
/dev/sda7 is config - ext3 - 6.1MB
/dev/sda8 is user - ext3 - 956MB
/dev/sda9 is maps - ext3 - rest of drive
Run Code Online (Sandbox Code Playgroud)
由于 sda3 “丢失”,我猜那是扩展分区?但是,当尝试在 gparted 或 Ubuntu 磁盘工具中执行此操作时,下一个逻辑分区将被命名为 sda5 而不是 sda4。我将把文件系统复制到所有脚本中都有硬编码设备名称的驱动器,因此数字需要完全匹配。
有没有办法将 sda5 重命名为 sda4?或者也许我完全不喜欢扩展分区?
任何帮助将不胜感激,谢谢。
我可以帮助解决其中的部分问题。
如果磁盘使用MBR分区表,那么正如您所怀疑的那样,它必须使用扩展分区,因为MBR只能支持四个主分区。这也是GPT分区表受到青睐的原因之一。他们没有这个限制。它们还支持更大的分区。
当 Linux 查看磁盘驱动器时,它会将设备分配给在驱动器上按顺序找到的每个分区。如果该驱动器是它看到的第一个驱动器,它将称为 /dev/sda,并且其上的分区将从 /dev/sda1 开始分配。所以你不能重命名这些。
最好不要完全依赖设备名称来解决您遇到的问题类型。大多数人使用分区的 UUID 来引用它们,这是一个很大的改进。我更进一步,使用独特的、人类可读/有意义的分区标签来引用分区。如果您有多个驱动器,则无法保证每次启动时都会以相同的顺序识别它们,因此一次为 /dev/sdb 的设备可能在另一次为 /dev/sdc。当您的可移动磁盘在物理连接到系统之前甚至无法获取设备文件时,情况会变得更糟。UUID 更加稳定,但如果您调整分区大小或移动分区,UUID 也会发生变化。标签不会被修改,而是依赖于您对它们进行唯一命名。
我不知道为什么 /dev/sda4 被跳过 - 特别是如果交换已经分配给 /dev/sda2。我不知道如何解决这个问题。如果您查看新驱动器,/dev/sda4 应该在的位置应该有“某些东西”。也许 /dev/sda3 填满了磁盘的其余部分,但即使它填满了,我认为 /dev/sda4 仍然是其中的第一个扩展分区。或者,也许相反,它不会填充磁盘的其余部分,因此 /dev/sd4 被保留用于整个 /dev/sd3 扩展分区之后的空间。
作为一种可能的解决方法,如果您有权访问另一台计算机,则可以在其上构建新驱动器,获取所有新分区的 UUID 或标签,然后通过 sed 运行所有脚本以更改所有设备引用以使用 UUID 或标签。如果您愿意,您甚至可以切换到 GPT 分区方案。