我正在尝试使用 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 的情况下执行此操作,但您必须完全理解我所概述的分区和文件系统之间的区别,并理解这种区别对执行各种操作(调整文件系统大小、移动文件系统、更改分区边界)的顺序的影响。
针对您的具体情况,我的建议是:
- 删除您的新
/dev/sda2
。 - 使用其原始的起始和结束扇区值重新创建您的扇区
/dev/sda2
。确保这些是确切地和以前一样。 - 检查重新创建的内容
/dev/sda2
是否可以访问。 - 从 备份您的重要数据
/dev/sda2
。 - 重新评估您是否真的需要移动分区的起点。我不知道您的最终目标是什么,所以我不能为您做到这一点。也许移动终点也可以(而且会更安全);或者添加另一个磁盘可能是更好的选择;或者也许您根本不需要重新分区。
- 如果必须对磁盘重新分区,请使用 GParted 来完成该工作。