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

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

+--------------------------------+--------+ | ext4 | Free | +--------------------------------+--------+ 

我怎么能这样做?

我见过使用resize2fs但是我不明白它是否调整了分区大小。

另一个解决scheme是使用fdisk但我不想删除我的分区和松散的数据。 我怎么能简单地增加分区而不丢失任何文件?

注意:我正在讨论一个没有LVM的未装入的数据分区,我有备份,但是我想避免在恢复上花费一些时间。

您必须先卸载分区。 如果你不能卸载它(例如,它是你的根分区或系统需要运行的其他东西),请改用System Rescue CD之类的东西。

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

  2. resize2fs /dev/whatever

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

  4. 重新安装你的分区。

虽然我从来没有见过这个失败,但请先备份数据!

是的,如果您的分区已经sorting,您可以在线增长EXT4 fs。 你有分区分类吗? 你有LVM吗?

 sudo resize2fs /dev/drive_to_grow 

fdisk会调整你的分区的大小,如果这是一个根分区(或者事实上有任何挂载的分区),它将不得不首先被卸载。 所以离线最有可能!

至于与磁盘/磁盘操作有关的任何事情,我强烈build议备份和testing,并了解恢复过程。

Parted在Centos上的ext4上不起作用。 我不得不使用fdisk来删除和重新创build分区,这(我validation)工作,而不会丢失数据。 我遵循http://geekpeek.net/resize-filesystem-fdisk-resize2fs/中的步骤。 简而言之,他们在这里:

 $ sudo fdisk /dev/sdx > c > u > p > d > p > w $ sudo fdisk /dev/sdx > c > u > p > n > p > 1 > (default) > (default) > p > w 

parted可以resize分区和他们的文件系统。

您可以使用fdiskcfdisk修改(或重新创build)分区(只要确保不会更改其开始边界),然后重新启动并调整resize2fs 。 但总的来说,最好使用LVM-2而不是MBR / GPT,因为它允许你在不重新启动内核的情况下引入这些更改。

请注意,在某些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 

这里/ 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 

只是为了澄清我如何做这个任何人仍然阅读这个线程。
如果是要调整的启动分区,则必须从bootcd或bootusb“rescue”驱动器启动,该驱动器只是一个Live Linux。 这使您可以在计算机上运行Linux,而不是您要更改的驱动器。

我认为在这种情况下最好的“救援”光盘或USB将是一个可启动的gparted USB或CD
您需要救援图像的情况
1.要扩展的分区是最后一个分区,但是从它启动并且无法卸载它。
sda1 =开机(或交换)
sda2 =交换(或启动)
sda3 = /
未使用的空间

  1. 如果要扩展的分区不是最后一个分区,则必须使用gparted引导映像来移动或调整分区的大小。
    sda1 =开机
    sda2 = /(要展开的分区不是最后一个)
    sda3 =交换
    未使用的空间

如果你想改变一个不是“根”分区(/)的挂载分区,就像/ home这个不同的分区一样,那么就不需要使用救援映像。 如果是最后一个分区,情况尤其如此。
sda1 =开机
sda2 = /
sda3 = / home
未使用的空间
-要么-
sda1 = /
sda2 = / home
未使用的空间

当我从一个较小的驱动器或SSD中取出一张图像并将其移动到一个更大的SSD时,就是这种情况。

在这种情况下,只需要在扩展时卸载/ home。 但是要卸载/ home,您需要确保您没有login到其主目录在其中的任何用户帐户。 由于“root”用户的主目录直接位于系统根目录下,因此,如果您可以login到root用户,则可以卸载/ home

我注销一个GUI(KDE / Gnome / etc)会话并使用[CTRL] + [ALT] + [F1]调出一个shell会话。
如果您刚刚登出用户login,则可能需要Linux 20-30秒才能完成closures任何文件,因此您可能会尝试卸载/ home。
1. umount / home(我重试这个命令,如果它失败了30秒,然后去看其他会话,看看我是否“cd / home / xxx”的某处。
2. parted / dev / sda
一个。 resizex(x =要resize的分区,使用“p”得到分区列表)
湾 inputresize =“-1”的最后一个扇区(减1表示磁盘末端有1个扇区)
C。 q(退出分手)
3 resize2fs / dev / sda“x”(x =要resize的分区,这也会重新安装文件系统)
4. df -m(我检查/ home以validation它resize)
我从来没有丢失过的文件或使用这种方法损坏驱动器。

祝你好运