替代解决方案:交换文件

替代解决方案:交换文件

我只能通过终端访问服务器,无法使用 GParted 等图形工具!
我想从根目录的一部分(约 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

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

替代解决方案:交换文件

作为创建整个分区的替代方案,交换文件提供了以下功能:随时改变其大小,并且更容易被彻底去除。交换文件可热插拔. 无需卸载/关闭操作系统即可添加和删除 ie。

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

    fallocate -l 512M /swapfile  
    

    或者

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

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

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

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

    /swapfile none swap defaults 0 0
    

更多详情请访问Arch Linux 维基

答案2

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

  • 您不想丢失根分区上的信息。
  • 您无法物理访问硬盘驱动器以使用 LiveCD。这适用于虚拟环境或远程环境。在虚拟环境中,如果您将 VM 设置为从 LiveCD 启动,您仍然可以设法从 LiveCD 启动。这是假设 VM 支持输出桌面 GUI,您可以从中运行 Gparted 应用程序以轻松调整大小。但由于这种情况不太可能发生,我认为您不能。

有两种类型的分区可以调整大小,LVM 分区或逻辑卷管理器分区,自星系诞生以来就支持在线调整大小(缩小/增长)和我们大多数人使用的标准分区。目前,唯一几乎 100% 支持完全在线调整大小(缩小/增长)的是 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 也不支持在线缩减。如果你尝试这样做,你将得到以下结果:

在此处输入图片描述

据我所知,你唯一的选择是:

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

  • 从头开始安装 Ubuntu 服务器,大小根据你实际需要而定

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

    在此处输入图片描述

    然后选择“调整大小”选项,如上图所示。从那里,您将选择新的大小,因为从这里您可以卸载该设备并根据需要缩小它。

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

答案3

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

如果分区可以卸载

假设您要缩小/dev/sda4挂载到 的200GB ext4 分区/data。它当前包含音乐和电影或类似内容,因此您可以暂时卸载它。您想创建一个 4GB 交换分区。

sudo umount /dev/sda4

卸载分区。

sudo resize2fs /dev/sda4 196G

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

sudo cfdisk /dev/sda 

将为您提供一个基于文本的 GUI 来检查您的分区表。我建议您将print分区表复制到文件或屏幕,并记下当前配置作为备份。然后您可以选择/dev/sda4分区delete。在其位置free space将显示。使用new在其位置创建一个具有 196 GB 的新分区,并将类型设置为 ext4。然后,移动到尾随的可用空间并创建类型为 的 4GB 交换分区swap笔记:/我没有测试这些命令,因为我现在无法使用它们。

如果无法卸载分区

您无法缩小已挂载的 ext3/4 分区(请参阅 的手册页resize2fs)。由于您是从 运行操作系统/,因此无法卸载/。这意味着您必须启动另一个操作系统(例如从 USB 密钥启动)才能进行更改。

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

相关内容