在 Linux 中调整分区大小 - 超级块错误中的错误魔法数字

在 Linux 中调整分区大小 - 超级块错误中的错误魔法数字

我正在尝试使用 parted 和 resize2fs 调整分区大小。

我尝试了以下操作:

#parted
Partition Table: msdos
Number  Start   End     Size    Type     File system     Flags
 1      2097kB  21.0GB  21.0GB  primary  ext4            boot
 2      21.0GB  500GB   479GB   primary  ext4
 3      500GB   500GB   536MB   primary  linux-swap(v1)

(parted) rm 2
(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? ext4
Start? 41GB
End? 500GB
(parted) q
Information: You may need to update /etc/fstab.

#resize2fs /dev/sda2
resize2fs 1.42.5 (29-Jul-2012)
resize2fs: Bad magic number in super-block while trying to open /dev/sda2
Couldn't find valid filesystem superblock.

不幸的是,我不明白为什么这不起作用。这是一个 ext4 分区。我想在不丢失数据的情况下调整分区大小。

fdisk list before operation:
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        4096    40962047    20478976   83  Linux
/dev/sda2        40962048   975718399   467378176   83  Linux
/dev/sda3       975718400   976764927      523264   82  Linux swap / Solaris

Now fdisk shows:
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        4096    40962047    20478976   83  Linux
/dev/sda2        80078848   975718399   447819776   83  Linux
/dev/sda3       975718400   976764927      523264   82  Linux swap / Solaris

答案1

首先,我想明确一个重要的区别:

  • 分区只是指向文件系统开始和结束位置的指针。在现代磁盘上,这些起点和终点以扇区值表示。
  • 文件系统是位于分区(或其他容器)内的复杂数据结构。通常,文件系统是相对于起点包含分区的。

以前您的/dev/sda2文件系统从扇区 40,962,048 开始。现在您将其改为从扇区 80,078,848 开始。因此,文件系统的关键早期部分现在开始隔板外面。打个比方,如果你以某种方式将一本平放在桌子上的参考书的封面向下移动一厘米左右,但书的任何一页都没有移动。当你打开这本书时,你会发现目录和第一章或第二章都不见了。这些页面现在会自由浮动,从书中抽离出来。因此,除非你通读整本书,否则你无法在书中找到任何东西——即使这样,部分内容也会丢失。

一般来说,任何涉及移动或调整开始分区的调整最好使用 GParted,它知道移动和调整分区大小以及文件系统数据结构的正确操作顺序,以确保一切正常运行。但即使是 GParted 在调整分区大小时也存在风险——尤其是涉及起始点时,因为这需要移动大量数据,因此错误、电源故障、硬件故障或其他问题都可能导致整个分区被破坏。如果您必须您可以在没有 GParted 的情况下执行此操作,但您必须完全理解我所概述的分区和文件系统之间的区别,并理解这种区别对执行各种操作(调整文件系统大小、移动文件系统、更改分区边界)的顺序的影响。

针对您的具体情况,我的建议是:

  1. 删除您的新/dev/sda2
  2. 使用其原始的起始和结束扇区值重新创建您的扇区/dev/sda2。确保这些是确切地和以前一样。
  3. 检查重新创建的内容/dev/sda2是否可以访问。
  4. 从 备份您的重要数据/dev/sda2
  5. 重新评估您是否真的需要移动分区的起点。我不知道您的最终目标是什么,所以我不能为您做到这一点。也许移动终点也可以(而且会更安全);或者添加另一个磁盘可能是更好的选择;或者也许您根本不需要重新分区。
  6. 如果必须对磁盘重新分区,请使用 GParted 来完成该工作。

答案2

相关内容