![我如何才能释放根目录上的足够空间或调整分区大小?](https://linux22.com/image/1104472/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E9%87%8A%E6%94%BE%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B8%8A%E7%9A%84%E8%B6%B3%E5%A4%9F%E7%A9%BA%E9%97%B4%E6%88%96%E8%B0%83%E6%95%B4%E5%88%86%E5%8C%BA%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
首先我要说的是,虽然我已经使用 Ubuntu 很多年了,但我很少花时间去探索 Linux 的底层。我满足于依靠 GUI 工具来满足我的大部分需求,只有在找不到合适的 GUI 工具时才会求助于终端。
几周前,我默认安装了 Zentyal (ebox) 发行版,并为学校设置了电子邮件服务器。不幸的是,默认文件系统配置仅分配了三个分区:
- / - 6GB
- 交换 - 4GB
- /主页-96GB
运行仅几周后,根分区就已填满,导致服务器瘫痪。因此,我需要找到一种方法来调整根分区的大小或释放空间。
我已经能够弄清楚占用空间最大的是/var
,文件系统是使用 lvm 设置的,并且 和 都/
位于/home
同一个卷组中。我尝试从实时 CD 启动,以便可以缩小/home
和放大。我更喜欢使用 GUI 工具,因此我使用了 system-config-lvm。奇怪的是,从实时 CD 中,它将分区(或卷或任何名称)/
显示为/home
根本没有文件系统。当我正常登录时,我可以看到它实际上使用的是 ext4。
该服务器作为 vmware 客户端运行,因此我创建了一个快照,然后继续尝试调整大小。一切似乎都调整了大小,没有错误,但是,重新启动后,我被告知无法/home
再安装。唯一需要该/home
文件夹的帐户是服务器管理员(我),但显然 Zentyal 必须使用它来做某事,因为我无法访问 Zentyal 的 Web 界面,并且服务器没有收到任何电子邮件。
于是我恢复到之前拍摄的快照,然后就坐在这里。与之前相比,我并没有更接近解决这个问题。
任何帮助,将不胜感激。
答案1
由于您回到了上一个快照,因此您可以从支持 LVM 分区的 LIVE CD 启动(例如 系统救援光盘)也许读一点就可以开始使用LVM 分区。无论如何,从 Live CD 启动后,通常的步骤如下(这将是几个命令行,而不是 GUI 基础):
- 不要安装任何 LVM(原因很明显。您将调整其大小,因此暂时不要安装。)
- 对要更改的分区执行 fsck。以防万一。
- 首先做
e2fsck -f PARTITION
- 由于我们想从 /home 中删除空间并将其提供给 root,因此我们这样做:
4.1.在使用之前对 HOME 分区执行resize2fs PARTITION SIZE
或resize2fs -f PARTITION SIZE
lvreduce记住,你必须调整大小后有足够的空间容纳最终大小。执行调整2fs大小-p新的主分区大小只是为了确保它有正确的块大小。4.2
使用lvextend在 ROOT 分区上,然后对其执行resize2fs PARTITION SIZE
或resize2fs -f PARTITION SIZE
。然后再次执行调整2fs大小-p以确保它具有正确的块大小。
注意 - 对每个分区执行 lvreduce 或 lvextend 后,您需要e2fsck -fn
强制检查分区的一致性(它将只读分区并检查它是否干净)
lvm 工具的一个示例:
lvreduce -L -35G "Home Partition"
- 主分区将减少 35GB。
lvextend -L +35G "Root Partition"
- 根分区将增加 35GB。
希望这有助于弄清楚如何做到这一点,并且通过快照我猜你会做到的。
更新 - 经过好奇的搜索后发现另一个来自 Red Hat 的用户也遇到了类似的问题:https://serverfault.com/questions/13666/how-can-i-resize-a-lvm-partition-in-red-hat-without-lose-of-data
更新 2 - 添加了 psusi 在评论中所说的内容,因为那是正确的方法,并且我需要在阅读/写作之前喝咖啡。
更新3-感谢普苏西下面列出了几处更正。
注意 - 这是针对使用 ext2/3/4 创建的分区,我猜测块不是 1K/2K,因为我在某处读到它对它们不起作用(由于我有 512 字节,因此没有测试)
答案2
尝试使用以下步骤:-
1_sudo apt-get 安装 gparted
- 然后直接进入系统管理-系统分区
然后根据需要使用 gui