如何在不使用服务器上的GUI的情况下使用命令行调整分区大小?

我只通过终端访问服务器,我不能使用gparted等图形工具!
我需要它,因为我想从root的一部分创建一个新的分区约768mb来创建一个交换分区。

# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda 20G 1.3G 18G 7% / udev 10M 0 10M 0% /dev tmpfs 199M 4.9M 194M 3% /run tmpfs 100M 12K 100M 1% /run/user tmpfs 5.0M 4.0K 5.0M 1% /run/lock 

如果安装了存储设备上的任何分区,则无法缩小/编辑分区。 因此,为了卸载和编辑根文件系统,需要关闭操作系统。 然后启动进入实时系统并按照其他答案中的描述编辑分区。

替代解决方案:交换文件

作为创建整个分区的替代方法,交换文件提供了即时改变其大小的能力,并且更容易完全删除。 交换文件可以热插拔 。 即可以在不卸载/关闭操作系统的情况下添加和删除。

  1. 创建一个名为/swapfile的512 MB文件。 这将是我们的交换文件。

     fallocate -l 512M /swapfile 

    要么

     dd if=/dev/zero of=/swapfile bs=1M count=512 
  2. 设置正确的权限(因为世界可读的交换文件是一个巨大的本地漏洞):

     chmod 600 /swapfile 
  3. 创建正确大小的文件后,将其格式化为swap:

     mkswap /swapfile 
  4. 激活交换文件:

     swapon /swapfile 
  5. 编辑/etc/fstab并为交换文件添加一个条目:

     /swapfile none swap defaults 0 0 

在arch linux wiki上有更多细节。

首先要知道,如果您正在使用它,则无法resize以缩小根分区(这称为在线缩小)。 你只能在线发展它。 resize2fs命令支持此function。 我将假设以下内容:

  • 您不希望丢失根分区上的信息。
  • 您无法使用硬盘驱动器进行物理访问以使用LiveCD。 这可以应用于虚拟环境或远程环境。 对于虚拟机,如果将VM设置为从LiveCD启动,则仍可以设法从LiveCD启动。 这是假设VM支持输出桌面GUI,您可以从中运行Gparted应用程序以轻松resize。 但是,由于这不太可能,我认为你做不到。

您可以调整两种类型的分区,LVM分区或逻辑卷管理器分区支持自Galaxy创建以及我们大多数人使用的标准分区以来的在线resize(缩小/增长)。 目前,唯一一个几乎100%支持完全在线resize(Shrink / Grow)的是btrfs文件系统(目前仍处于开发阶段)。 我将解释如何在ext4文件系统中执行大多数人使用的普通分区。

调整(增长)分区的大小

要扩展分区,可以使用挂载的根目录来完成。 要做到这一点,只需:

 sudo resize2fs /dev/sda1 

如果您已经准备好合并空白空间。 之后我建议重新启动以使更改生效。 上面的命令将调整为允许的最大值。 如果您希望resize到特定大小,那么只需在末尾添加大小:

 sudo resize2fs /dev/sda1 25G 

请注意,如果要指定25.4 GB,则不能使用“。”。 你需要降低一个度量单位。 在这种情况下,从GB到MB,所以它看起来像这样:

 sudo resize2fs /dev/sda1 25400M 

这样你就有了25.4G的分区

调整(缩小)分区的大小

缩小分区是一个两步过程,包括:

  • 根据需要减少文件系统的大小。
  • 减小底层块设备的大小以匹配文件系统的大小。

在减少文件系统容量之前,您需要减小块设备(可以是分区或逻辑卷)的大小。 由于这不适用于任何ext *文件系统,因此无法将其从20 GB缩小到19.5 GB以创建500 MB交换系统。

即使Ext4也不支持在线收缩。 如果您尝试这样做,您将获得以下内容:

在此处输入图像描述

据我所知,你唯一的赌注是:

  • 在同一台服务器上安装另一个Ubuntu版本(在另一个分区上),然后可以用它来缩小原始Ubuntu服务器的根分区。

  • 以实际需要的大小从头开始安装Ubuntu服务器

  • 使用Ubuntu Server Live Image调整分区大小。 在这种情况下,您需要进入以下屏幕:

    在此处输入图像描述

    并选择“resize”选项,如上图所示。 从那里你将选择新尺寸,因为从这里你可以卸下装置并根据需要缩小它。

另外一个帮助是gparted文件系统支持http://gparted.org/features.php ,它提供了一个非常详细的受支持列表,包括它们是否有完整的在线resize。 Btrfs就是其中之一。

答案取决于您是否可以卸载要收缩的分区。 在您的情况下,您可能无法卸载分区。 在Linux(UNIX / MAC OS)中, 挂载分区是指使用文件系统并将其映射到挂载点(在您的情况下为/ )。 卸载意味着您停止使用文件系统,并删除到挂载点的映射。 您无法卸载包含正在运行的操作系统的文件系统。

如果可以卸载分区

让我们假设你想缩小安装到/data /dev/sda4上的200GB ext4分区。 它目前包含音乐和电影或类似内容,因此您可以暂时卸载它。 您想要创建4GB交换。

 sudo unmount /dev/sda4 

卸载分区。

 sudo resize2fs /dev/sda4 196G 

假设有足够的空间,将ext4文件系统的大小调整为196 GB。 现在,您必须缩小分区。 我目前相信您需要使用cfdisk删除现有分区,并在其位置重新创建一个较小的分区。 然后,您还可以为交换创建新分区。

 sudo cfdisk /dev/sda 

会给你一个基于文本的gui来检查你的分区表。 我建议您在此时将分区表print到文件或屏幕,并记下当前配置作为备份。 然后,您可以选择/dev/sda4delete该分区。 取而代之的是,将显示free space 。 使用new创建一个196 GB的新分区,并将类型设置为ext4。 然后,移动到尾随空闲空间并创建类型为swap的4GB交换分区。 注意:我没有测试这些命令,因为我现在无法使用我/

如果无法卸载分区

您无法收缩已安装的ext3 / 4分区(请参阅resize2fs联机帮助页)。 当您从/运行操作系统时,无法卸载/ 。 这意味着你必须启动另一个操作系统(例如从USB密钥)来进行更改。

在您的情况下,它是一个远程服务器(最有可能在KVM上),因此您可能无法从USB /实时操作系统映像启动。 可能还有其他方法可以通过管理GUI更改vServer提供程序的分区。 我相信这是你目前最好的选择。