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

Joe*_*hew 4 linux debian partitioning ubuntu

我试图用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.
Run Code Online (Sandbox Code Playgroud)

不幸的是我不明白为什么这不起作用。这是一个 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
Run Code Online (Sandbox Code Playgroud)

Rod*_*ith 5

首先,我想非常清楚一个重要的区别:

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

/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 来完成这项工作。