当前位置: 首页>>技术问答>>正文


如何在不使用服务器上的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

最佳解决办法

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

替代解决方案:交换文件

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

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

    fallocate -l 512M /swapfile  
    

    要么

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

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

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

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

    /swapfile none swap defaults 0 0
    

更多细节见arch linux wiki

次佳解决办法

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

  • 您不希望丢失根分区上的信息。

  • 您没有物理访问硬盘驱动器才能使用LiveCD。这可以应用于虚拟环境或远程环境。对于虚拟机,如果将VM设置为从LiveCD启动,则仍可以设法从LiveCD启动。这是假设VM支持输出桌面GUI,您可以从中运行Gparted应用程序以轻松调整大小。但是,因为这不太可能,我认为你不能。

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

调整(增长)分区的大小

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

sudo resize2fs /dev/sda1

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

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也不支持在线收缩。如果您尝试这样做,您将获得以下信息:

command-line,partitioning,swap,ubuntu

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

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

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

  • 使用Ubuntu Server Live Image调整分区大小。对于这种情况,您需要进入此屏幕:并选择调整大小选项,如上图所示。从那里,您将选择新尺寸,因为从这里您可以卸下设备并根据需要收缩。

    command-line,partitioning,swap,ubuntu

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

第三种解决办法

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

如果可以卸载分区

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

sudo umount /dev/sda4

卸载分区。

sudo resize2fs /dev/sda4 196G

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

sudo cfdisk /dev/sda 

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

如果无法卸载分区

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6535.html,未经允许,请勿转载。