如何在 root 上释放足够的空间或调整分区大小?

Ken*_*ran 5 lvm resize

我首先要说的是,虽然我已经使用 Ubuntu 多年了,但我很少花时间去探索 Linux。我已经满足于依赖 GUI 工具来满足我的大部分需求,只有在找不到合适的 GUI 工具时才求助于终端。

几周前,我对 Zentyal (ebox) 发行版进行了默认安装,并为学校设置了电子邮件服务器。不幸的是,默认文件系统配置只分配了三个分区:

  • / - 6GB
  • 交换 - 4GB
  • /home - 96GB

在运行仅几周后,根分区已填满并使服务器瘫痪。所以我需要找到一种方法来调整或释放根分区中的空间。

我已经能够计算出该空间猪是/var,文件系统是利用安装LVM和这两个//home位于同一个卷组中使用。我曾尝试从 live cd 启动,这样我就可以缩小/home和放大/. 我更习惯使用 GUI 工具,所以我使用了 system-config-lvm。奇怪的是,从实时 cd 中,它显示/home分区(或卷或任何名称)根本没有文件系统。当我正常登录时,我可以看到它实际上使用的是 ext4。

该服务器作为 vmware 来宾运行,因此我制作了快照并继续尝试调整大小。一切似乎都没有错误地调整大小,但是在重新启动后,我被告知/home无法再安装。唯一需要该/home文件夹的帐户是服务器管理员(我),但显然 Zentyal 必须使用它来做某事,因为我无法访问 Zentyal 的 Web 界面并且服务器没有收到任何电子邮件。

所以我回到我拍摄的快照,然后我坐在这里。没有比我以前更接近解决这个问题了。

任何帮助,将不胜感激。

Lui*_*ado 7

由于您返回到之前的快照,您可以从支持 LVM 分区的 LIVE CD(如 SYSTEM RESCUE CD)启动,也许阅读一些内容只是为了开始使用LVM 分区。无论如何,从 live cd 启动后的正常步骤(这将是几个命令行而不是 gui 基础):

  1. 不要挂载任何 LVM(很明显的原因。你要调整它的大小,所以不要挂载。)
  2. 对要更改的分区执行 fsck。以防万一。
  3. 先做 e2fsck -f PARTITION
  4. 由于我们想从 /home 中删除空间并将其提供给 root 我们这样做:
    4.1. 在使用lvreduce之前对 HOME 分区执行resize2fs PARTITION SIZE或。请记住,在调整大小后,您必须有足够的空间用于最终大小。对新的主分区大小执行resize2fs -p以确保它具有正确的块大小。 4.2在ROOT分区上使用lvextend然后do or就可以了。并再次对其执行resize2fs -p以确保它具有正确的块大小。resize2fs -f PARTITION SIZE
    resize2fs PARTITION SIZEresize2fs -f PARTITION SIZE

注意 - 在对每个分区执行 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 -丢失数据

UPDATE2 - 在评论中添加了 psusi 所说的,因为这是正确的方法,我需要在阅读/写作之前喝咖啡。

UPDATE3 - 感谢下面的psusi进行了几处更正。

注意 - 这是用于使用 ext2/3/4 制作的分区,我猜测的块不是 1K/2K,因为我在某处读到它对它们不起作用(因为我有 512 字节,所以没有测试)