如何通过 Parted 命令行工具调整 GPT 分区大小。(使用 SSH 救援环境)

如何通过 Parted 命令行工具调整 GPT 分区大小。(使用 SSH 救援环境)

我有一台远程专用服务器,在初始安装操作系统后没有在线控制面板来调整分区大小,因此我使用基于 Debian 的救援环境来操作未安装的分区。问题是,当涉及到远程驱动器上的分区操作时,我有点笨,我尝试使用 GNU Parted 命令行工具,因为 GParted 不是一个选项,并且 fdisk 没用,因为驱动器是用 GPT 格式化的,结果发现从 2.4 版开始,resize 命令已被删除。因此,下面是从 parted 的打印命令中得到的我的分区列表:

Number  Start   End     Size    File system     Name     Flags
1      20.5kB  1049kB  1029kB                  primary  bios_grub
2      2097kB  21.0GB  21.0GB  ext4            primary
3      21.0GB  2000GB  1979GB  ext4            primary
4      2000GB  2000GB  536MB   linux-swap(v1)  primary

我需要弄清楚的是,如何将 #3 缩小到大约 1.2TB,然后扩展 #2 以填充 #3 缩小时移动的内容。我的 #2 分区已满,而 #3 分区还有剩余空间。

答案1

您想要做的事情可能可行,也可能不可行,这取决于当前安装的内容(必须安装的内容),以及您是否可以从其他介质启动以解决安装问题。这里要考虑的因素:

  • 始终牢记分割(一种简单的数据结构,定义一块磁盘空间的起点和终点,通常与类型代码等其他内容一起定义)和文件系统(保存在分区或其他容器中的更复杂的数据结构,例如 LVM 的逻辑卷)。如果您还未完全理解这种区别,请立即停止并研究它。
  • 您可以增加已安装的 ext2/3/4 文件系统的大小,但据我所知,您无法减小已安装的 ext2/3/4 文件系统的大小。该resize2fs实用程序通过命令行执行此任务。
  • 要调整分区大小,您可能必须删除该分区并在其位置创建一个新分区。可能需要指定扇区级精度的起点和终点,parted默认情况下不提供该精度。您需要设置unit s才能获得该精度;或者您可以使用gdisk,默认情况下提供扇区级精度。(尽管如此,默认情况下也会自动将分区对齐到 2048 个扇区值,因此您可能需要使用专家菜单上的选项gdisk调整对齐。)d
  • 文件系统调整大小操作通常不会改变文件系统的起始点。因此,如果您需要移动分区的起始点,则必须使用dd或其他工具移动整个文件系统的内容。根据移动的方向,可能需要在删除原始分区之前或之后执行此操作,并且可能需要在移动之前或之后创建新分区。如果移动操作与原始位置重叠,则必须非常小心执行此操作,以免破坏某些分区数据!
  • 分区和文件系统端点要格外小心。如果您缩小文件系统,然后重新创建一个稍小的新分区,则最终可能会破坏重要数据。我建议将文件系统缩小到比预期更小的程度,创建一个新分区,然后使用它将resize2fs文件系统扩展到新周围分区的大小。此过程可最大限度地减少大小不匹配的可能性。
  • 请记住,更改分区表后可能需要重新启动以使内核使用新表。

由于这些问题,尝试在不借助 GParted 或其他旨在协调分区和文件系统更改的工具的情况下执行您想做的事情可能会非常危险。它可以做到,但在指定扇区值时的一个失误可能会使你的磁盘变得毫无价值。你寻求帮助的事实让我不敢建议你尝试;对于从未做过这种事情的人来说,破坏生产系统的风险实在太大了。如果你别无选择,我强烈建议你在本地重新创建服务器并在副本上练习,然后再在远程服务器上尝试。

您可能需要考虑一些替代方案:

  • 使用 GParted-- 如果您可以从外部介质启动,则可以使用 GParted。您说这是远程服务器。许多此类系统都提供 BMC,使您能够连接虚拟 USB 驱动器并通过 Java 小程序查看虚拟控制台。使用此功能会非常慢,但应该可以让您运行 GParted 并更轻松、更安全地进行更改。
  • 创建附加分区-- 您可能能够缩小一个分区,然后创建一个新分区,而不是移动和扩大另一个分区。然后,您可以将数据从子目录移动到新分区,并将其挂载在该子目录的位置。这种方法基本上是折衷的;您仍然必须缩小一个分区,但可以避免执行更危险和更困难的移动操作。
  • 使用符号链接-- 您可以通过将一些文件从过满的分区中分离到不太满的分区,然后使用符号链接使它们可以在所需路径上访问来实现您的目标。这可能是最安全的方法。
  • 重新安装-- 如果您有足够的备份,您可以备份系统,使用更好的设置重新安装,并恢复原始数据。
  • 现场操作-- 如果您可以物理访问服务器,或者您有现场帮助,您(或您的帮助)可以像使用桌面系统一样使用 Ubuntu 安装 USB 闪存驱动器亲自完成此操作。根据此操作的重要性以及服务器相对于您的位置,甚至值得一去一趟来完成这项工作。
  • 添加磁盘-- 如果可以的话,您可以考虑添加一个磁盘,并将一些数据移动到其中。

将来,您可能需要考虑使用逻辑卷管理 (LVM),这使得这些操作更加简单和安全。LVM 的学习难度很大,但一旦掌握了基础知识,它就会大有帮助,因为您不必担心移动分区;文件系统的存储方式与文件系统中的文件一样,因此一旦缩小一个分区,就可以将另一个分区扩展到可用空间,而无需更改起点。LVM 还可以帮助您以新磁盘的形式添加空间。

答案2

这是我读到的一篇文章中的一个临时解决办法。似乎 %70 的空间使用量来自网络服务器,特别是 /var/www。所以我做的是:

cd /var
mv www /home
ln -s /home/www www
ll
lrwxrwxrwx  1 root root      9 Oct 18 12:33 www -> /home/www/

就像我说的,这是一个临时的修复,但我的根目录现在只有 30% 已满,而不是 100%。所以,在我可以调整分区大小之前,这会起作用。

相关内容