问题描述
我只能通过终端访问服务器,我不能使用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的情况下添加和删除。
-
创建一个名为
/swapfile
的512 MB文件。这将是我们的交换文件。fallocate -l 512M /swapfile
要么
dd if=/dev/zero of=/swapfile bs=1M count=512
-
设置正确的权限(因为world-readable交换文件是一个巨大的本地漏洞):
chmod 600 /swapfile
-
创建正确大小的文件后,将其格式化为swap:
mkswap /swapfile
-
激活交换文件:
swapon /swapfile
-
编辑
/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也不支持在线收缩。如果您尝试这样做,您将获得以下信息:
据我所知,你唯一的赌注是:
-
在同一服务器(在另一个分区上)安装另一个Ubuntu版本,然后可以用它来缩小原始Ubuntu服务器的根分区。
-
以实际需要的大小从头开始安装Ubuntu服务器
-
使用Ubuntu Server Live Image调整分区大小。对于这种情况,您需要进入此屏幕:并选择调整大小选项,如上图所示。从那里,您将选择新尺寸,因为从这里您可以卸下设备并根据需要收缩。
另外一个帮助是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/sda4
和delete
分区。取而代之的是,将显示free space
。使用new
创建一个196 GB的新分区,并将类型设置为ext4。然后,移动到尾随空闲空间并创建类型为swap
的4GB交换分区。注意:我没有测试这些命令,因为我目前无法使用我的/
。
如果无法卸载分区
您无法收缩已安装的ext3 /4分区(请参阅resize2fs
的联机帮助页)。在从/
运行操作系统时,无法卸载/
。这意味着你必须启动另一个操作系统(例如从USB密钥)来进行更改。
在您的情况下,它是一个远程服务器(最有可能在KVM上),因此您可能无法从USB /实时操作系统映像启动。可能还有其他方法可以通过管理GUI更改vServer提供程序的分区。我相信这是你目前最好的选择。