在不丢失数据的情况下调整 VPS 上的分区大小

在不丢失数据的情况下调整 VPS 上的分区大小

我有一台小型 VPS 服务器,磁盘空间为 40 GB。我额外购买了 40 GB,现在我想扩展/分区大小。

我的分区如下所示:

分区大小

/dev/vda1/boot并且/dev/vda5是我的/。我的 VPS 提供商添加了/dev/vda2。我不确定这是否正确,但我尝试过删除/dev/vda5/dev/vda2创建/dev/vda5,但我没有该选项,我只能重新创建 ID 为 2-4 的设备,而不是 ID 为 5 的设备/

答案1

有一个名为的实用程序growpart,一旦您的提供商扩展了您的虚拟磁盘,它就会安全地增加分区。您的情况中唯一的诡计是,他们在不需要时不必要地创建了一个扩展/逻辑 DOS 分区。因此,您必须调整扩展分区的大小,然后调整它所包含的逻辑分区的大小。

sudo apt install cloud-guest-utils

growpart实用程序接受磁盘和分区号作为单独的参数,因此要调整大小,/dev/vda2您需要写入:

sudo growpart /dev/vda 2

首先调整扩展分区的大小/dev/vda2,然后/dev/vda5以相同的方式调整大小。

sudo growpart /dev/vda 2
sudo growpart /dev/vda 5

现在您应该能够调整文件系统的大小。如果是 ext4,则resize2fs /dev/vda5可行。对于 XFS,请使用xfs_growfs /

答案2

从你的fdisk输出来看,你确实有一个 80 GB 的磁盘,其中 40 GB延长分区(/dev/vda2),其中包含 40 GB逻辑/dev/vda5保存文件系统的分区/。扩展分区实际上不包含任何文件,它只是逻辑分区的“容器”,可以克服我下面提到的 4 个分区的限制。然后有 40 GB 的未分配空间,不会fdisk以任何方式显示。

您可能有多种使用未分配空间的方法。我假设您没有使用 LVM,因为如果您使用 LVM,过程将完全不同,因为 LVM 有自己的工具来调整卷大小。但是您的fdisk输出并未显示任何有关 LVM 分区的信息。

我不建议删除并重新创建分区,fdisk因为这始终存在丢失数据的风险。因此,如果您想安全地执行此操作,可以尝试以下操作:

第一种选择是有两个 40 GB 的分区,并在这两个分区之间智能地分割文件。例如,如果您在 中保存了大量大文件/home,则可以使用新分区,/home而其他所有内容都/home将保留在旧分区上。要做到这一点:

  1. 使用在未分配的空间中fdisk创建另一个主分区(可能显示为!),并使用 将其格式化为新的 Linux 文件系统。总共最多可以有 4 个主分区或扩展分区,其中最多一个是扩展分区,因此有空间容纳另一个分区。这不是推荐的分区布局,主分区来自/dev/vda3mkfs /dev/vda3扩展分区,但它可能会起作用。

  2. 将您的/home目录重命名为/old_home(确保它目前未被使用,因此请从 root 身份执行此操作,且无需普通用户登录)并创建一个/home具有与旧目录相同所有者和权限的新目录。

  3. /dev/vda3使用以下/home命令挂载文件系统: mount /dev/vda3 /home。如果成功,您应该编辑/etc/fstab以使新文件系统在系统启动时正确自动挂载。您的/etc/fstab当前可能包含 vda1 和 vda5 的两行,如下所示(我现在正在编写这个,您的可能不同):

    /dev/vda5 / ext4 defaults 0 1

    /dev/vda1 /boot ext4 defaults 0 2

    为 vda3 添加类似的行,例如:

    /dev/vda3 /home ext4 defaults 0 2

    (如果您的文件中除了“ext4”或“defaults”之外还有其它内容,只需将这些参数复制到新行即可)。现在将任意文件写入新/home目录并重启系统。如果重启后您放入目录中的文件/home仍然存在,则表示/home已在启动时正确安装。

  4. 现在您可以将所有内容从移动/old_home/home,然后删除空/old_home目录。

我认为这种方法对我来说通常最安全、最简单,并且已经多次使用过。但是,它的缺点是实际有 2x40 GB 的空间,而不是单个 80 GB 的空间,这可能有时是好事,有时是坏事 - 例如,当您想避免系统磁盘意外被用户文件填满时,最好有/home一个单独的分区。

因此另一个选择是使用 GNU分开程序将调整您的 vda2 和 vda5 分区(首先是 vda2,然后是 vda5,因为前者包含后者)的大小至 80 GB。parted专门设计用于修改分区而不会丢失数据,但fdisk无法保证。我确信parted它在 Debian 存储库中,因此您可以使用它进行安装apt

调整分区大小后,使用命令resize2fs /dev/vda5将文件系统扩展/至 80 GB。

答案3

通常在这种情况下您会使用fdisk /dev/vda

  • 记下分区 2 和 5 的起始扇区。
  • 删除分区 5。
  • 删除分区 2。
  • 使用旧的起始扇区和新的结束扇区(默认值)重新创建分区 2。这是延长分割。
  • 使用旧的起始扇区和新的结束扇区(默认值)重新创建分区 5。这是逻辑分割。

在表被写入并激活(例如重新启动)之后,您仍然需要扩展文件系统/dev/vda5resize2fs适合该分区上的文件系统的任何内容。

最重要的是,在尝试此操作之前请确保您有良好的备份。

相关内容