如何扩展 ext4 分区和文件系统?

mim*_*ipc 80 partition filesystems ext4 centos

我有一个带有 320GB ext4 分区的 400GB 磁盘。我想扩大 ext4 分区以使用左侧空间(80GB 的可用空间)。

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

我见过有人在使用,resize2fs但我不明白它是否会调整分区大小。

另一种解决方案是使用fdisk但我不想删除我的分区和松散的数据。如何在不丢失任何文件的情况下简单地扩展分区?

注意:我说的是一个没有 LVM 的未挂载的数据分区,我有备份,但我想避免花一些时间在恢复上。

Flu*_*lup 79

您必须从卸载分区开始。如果您无法卸载它(例如,它是您的根分区或系统需要运行的其他东西),请使用System Rescue CD 之类的东西。

  1. 运行parted,或者gparted如果您更喜欢 GUI,并调整分区大小以使用额外空间。我更喜欢gparted它,因为它为您提供了一个很好的图形表示,与您在问题中绘制的非常相似。

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (只是为了找出你是否安全)

  4. 重新挂载您的分区。

虽然我从未见过这种失败,但请先备份您的数据!

  • `resize2fs` 手册页说: *如果文件系统已挂载,则可用于扩展已挂载文件系统的大小,假设内核支持在线调整大小。(在撰写本文时,Linux 2.6 内核支持对使用 ext3 和 ext4 挂载的文件系统进行在线调整大小。)。* 然而,调整已挂载文件系统的大小是一个更危险的操作,因为内核在运行时很容易冻结或崩溃,很少锻炼代码,使您的文件系统处于不良状态。 (12认同)
  • 对于 ext4,在 RHEL 5 上可能是 `resize4fs`。 (2认同)
  • 用根文件系统扩展分区应该可以正常工作,只要: `1.` 你不改变起始扇区号。`2.` 您在更改分区表后重新启动,然后再进行下一步。 (2认同)
  • 请注意,如果您希望单个分区填满整个设备,`parted` 的 `resizepart` 命令了解大小“100%”。 (2认同)

Chr*_*ris 28

是的,如果您已经对分区进行了排序,则可以在线增加 EXT4 fs。你有分区排序吗?你有LVM吗?

sudo resize2fs /dev/drive_to_grow
Run Code Online (Sandbox Code Playgroud)

fdisk将调整您的分区大小,是的,但如果这是根分区(或者实际上是任何已安装的分区),则必须先卸载它。所以很可能离线!

对于与磁盘/文件系统操作相关的任何事情,我强烈建议进行备份、经过测试、易于理解的恢复过程。

  • 在我的 debian XEN 服务器上,我使用 `lvextend +40G /dev/vg0/volumeName` 调整了我的逻辑卷的大小,然后以 root 身份登录到 vm 并输入 `resize2fs /dev/xvda2` **增长正在运行的根文件系统**到新的最大值。我不确定是否需要这样做,但我在此操作后重新启动了虚拟机。一切似乎都很好。 (2认同)
  • @rubo77 不,不需要重启, (2认同)
  • 2022 更新:parted 可以扩展分区,即使它已安装和使用(对我来说没有数据丢失) (2认同)

WSR*_*WSR 10

请注意,在某些 VDS 服务器上,您可能有非主根分区,需要先调整扩展分区容器的大小

例如,您刚刚升级了您的计划并拥有以下内容:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4
Run Code Online (Sandbox Code Playgroud)

这里 /dev/vda2 - 是您的扩展容器。和 /dev/vda5 - 我们需要将其调整为完整可用空间的主分区。

最简单的方法:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
Run Code Online (Sandbox Code Playgroud)


Chr*_*ski 8

使用growpartresize2fs示例:

$ growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=39999455 end=40001503 new: size=80000991,end=80003039
$ resize2fs /dev/sda1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 10000123 (4k) blocks long.
Run Code Online (Sandbox Code Playgroud)


sho*_*hok 6

接受的答案有些过时:调整 ext4 文件系统的大小最好在线完成完成,而不是离线完成,因为在线扩展代码路径比离线扩展代码路径更常用。

更困难的事情可能是扩展底层分区,除非您使用 LVM并且卷组中有可用空间。要在线扩展分区,可以使用fdiskparted; 然后,您必须运行kpartx <device>以通知内核更改。如果使用LVM,则需要pvresize先调整刚刚调整大小的分区lvresize卷之前。

最后,您可以发布resize2fs您的文件系统。