如何在 Debian 8 上将分区大小调整为最大大小?

如何在 Debian 8 上将分区大小调整为最大大小?

我的问题是如何在不丢失任何数据的情况下调整 Debian 8 上的分区大小?我有 90 GB 的分区,但我的磁盘在 VPS 服务器上有 150 GB 的空间,所以 50 GB 是免费的,我想在不丢失任何数据的情况下添加这 50 GB,这就是它的表现方式:

2

我试过使用调整2fs大小命令,但这对我没有帮助,因为它显示了一个错误:

文件系统长度已达 n 个块。无需执行任何操作!

我已经使用 resize2fs 在 Debian 11 上扩展了一个分区,一切都很好,但我不知道为什么,它不想工作。

编辑

在此处输入图片描述

答案1

根据您的磁盘布局,您必须

(0)移走交换分区以留出扩展空间vda1;分区空间必须连续。为此目的:

  • 禁用交换,使用swapoff /dev/vda2/dev/vda2是您的交换设备文件。请务必检查我的论点)
  • parted /dev/vda rm partno使用where删除交换分区帕特诺交换分区号根据parted /dev/vda,(应该是 2 ?)
  • 使用 重新创建磁盘末尾的交换分区/dev/parted /dev/vda mkpart -4G -1s。这里的负数是从磁盘末尾开始的引用,这意味着分区跨越了最后的磁盘的 4GiB(-1s意味着分区在磁盘的最后一个扇区结束,这是不可能的,因为这将覆盖辅助 GPT 标头,因此parted将修改分区的确切开始/结束和对齐方式(系统将提示您)。该分区将使用相同的数字 2 创建。所以设备文件将被命名为/dev/vda2。你必须检查它。
  • 重新启用交换,mkswap /dev/vda2然后swapon /dev/vda2
  • RESUME=如果有,请更新中的行。此行指定用于休眠的分区,它以或/etc/initramfs-tools/conf.d/resume标识。您可以使用以下方法找到交换分区 UUID 或标签UUID=...LABEL=...blkid
  • 更新 fs 表中描述交换分区的行/etc/fstab。只需更新 UUID、标签或分区号(取决于文件中如何指定交换分区)

一旦交换被移走,你必须

(1)调整根分区的大小,现在它旁边有可用空间。您可以使用命令growpart(来自软件包cloud-utils)使分区使用所有可用空间。如果您无法在系统上获取此软件包,您可以使用子命令手动执行此操作resizepartparted仅告知分区号(1?)和结束位置(以块为单位)。请参阅parted /dev/vda获取预期的结束位置。parted将防止您意外覆盖交换。

(2)使用以下命令调整文件系统大小(ext4 可以在线增长,无需卸载)resize2fs /dev/vda1

这些步骤将解决您的问题,通常不会丢失数据。但是建议备份最重要的数据。

答案2

您需要删除交换分区,扩展数据分区并重新创建交换分区(如果需要)。

如果您有足够的可用内存(交换使用不多),您可以这样做而不中断服务。首先:swapoff /dev/vda2,释放交换。如果您无法做到这一点(内存不足),您需要停止消耗内存的服务,直到您可以禁用交换。

成功关闭 swapoff 后,运行fdisk /dev/vda并删除第二个分区。

现在确定您需要多少交换并计算它应该从哪里开始。例如,如果您想要拥有恰好 8 GiB(16777216 个扇区)的交换,并且您有恰好 150 GiB(314572800 个扇区)的磁盘,则您的交换应该从扇区 314572800-16777216 = 297795584 开始。因此,创建类型为 82(Linux 交换)的新 vda2 分区,该分区从此扇区和 314572799 开始(它应该会自行建议此值)。不要盲目使用我的数字,请自己计算,因为我对磁盘大小做出了假设——你在某种程度上隐藏了一些可以使该计算准确的信息。(并且以后不要发布控制台的屏幕截图,而只需将其复制并粘贴为文本,这样会更好。并且不要省略磁盘分区等信息,最好复制完整的输出;它不能被用来识别你或造成任何伤害,但可以让生活更轻松。)

当您在驱动器末端重新创建交换分区时,您可以扩展第一个分区。 详细描述见这个答案,所以我只在这里概述一下,您可以随时参考那里了解详细信息。

注意你的vda1开始位置是 2048 区。这非常重要!

  1. 删除第一个分区。是的,删除它。是的,在正在运行的系统上。什么也不会发生,也不会丢失任何东西。
  2. 创建新分区 1,它应从扇区 2048 开始,并结束于当前最后一个扇区 188745727 或之后。确保新分区从 2048 开始,并且不小于原来的大小!另请注意,它可能会检测到文件系统签名并建议将其擦除。不要擦拭
  3. 将更改提交到磁盘 ( w),fdisk 应退出并提示分区表已写入,但内核仍使用旧分区表。使用kpartxpartprobe重新加载它,如它所建议的那样。或者禁用交换/etc/fstab并重新启动(您需要禁用它,以便它不会因缺少交换签名而停止启动)。
  4. 此时,您lsblk应该已经显示新的分区大小。您可以使用 扩展文件系统resize2fs /dev/vda1。至于交换,使用 创建新的交换结构mkswap /dev/vda2,如果/etc/fstab使用 UUID 引用交换,则使用 mkswap 向您打印的新值更新它。

相关内容