令人困惑、看似不实用的 Linux 磁盘分区方案

令人困惑、看似不实用的 Linux 磁盘分区方案

df -h以下是我们 Redhat Linux 系统上的输出。

$ df -h
/dev/mapper/vg_d0-lv_root
                       50G   41G  5.9G  88% /
tmpfs                  12G     0   12G   0% /dev/shm
/dev/sda1             477M   75M  378M  17% /boot
/dev/mapper/vg_d0-lv_home
                      214G  189M  203G   1% /home

我们的托管服务提供商就是这样配置的,它是一台专用服务器。在意识到分区方案之前,我们已经安装了一些重要的软件,并开始将其用于关键的日常任务(这对我来说似乎不切实际,不确定为什么要专用这么小的分区/?)。在联系我们的托管服务提供商或研究其他解决方案之前,我想咨询这里的社区。

我的主要问题是:
有没有办法将/dev/mapper/vg_d0-lv_home分区与 /dev/mapper/vg_d0-lv_root分区“合并”,而无需擦除/dev/mapper/vg_d0-lv_home分区(我们的/home/目录安装在其上)。

此外,次要的是,我想知道是否有人可以推断出这种分区方案背后的原因,为什么需要单独的/dev/sda1分区/boot?为什么有人会分配这么小的空间/tmpfs足够大吗?等等。

答案1

[阅读您的帖子,我怀疑您可能没有意识到您正在使用逻辑卷 - 这是一种从操作系统中抽象磁盘的强大机制,并且可能为您的问题提供了解决方案,如下所示]

回答您的主要问题 - 不,您不能将 LVM 分区合并在一起。

也就是说,在这种情况下您不需要 - 您甚至无需重新启动系统即可获得所需的最终结果!您可以简单地将数据从 /home 复制到新目录 /home2,然后卸载 /home 并将 /home2 重命名为 /home,并从 fstab 中删除映射。

完成此操作后,您可以销毁 /dev/mapper/lv_d0-lv_home 并将空间重新分配给 /dev/mapper/vg_d0-lv_root,然后扩展文件系统。

如果您需要有关如何执行此操作的具体信息,请告诉我 - 我没有提供这些信息,因为它没有回答您的问题。

关于推理

这实际上是一个非常合乎逻辑的分区方案。

/boot 需要位于物理磁盘上,因为 BIOS 对逻辑卷一无所知。因此,它需要一个它知道如何读取的小磁盘,以便从中引导所有内容。该磁盘是 /dev/sda1,然后将其挂载为 /boot。

此布局中有一个假设,即您想要将数据与程序分离 - /dev/mapper/vg_d0-lv_root 包含操作系统和程序,而 /home 用于用户数据 - 虽然这个假设可能不是您想要的,但它很合理。

对于根文件系统来说 50 GB 实际上是相当多的,如果您考虑到基础 Linux 操作系统通常只需要 2 - 6 GB,那么剩下大约 45 GB 的空间用于程序 - 同样,它可能不是您想要的,但对于普通系统来说,这是一个合理的尝试。

tmpfs 是一种特殊的文件系统,实际上是一个由交换空间支持的 RAM 磁盘。它比需要的要大得多 - 如果非要说的话,那就是太大了 - 但是,由于它由 SWAP 支持,所以这可能是合理的,并且通常由操作系统设置。

附加信息 - 评论后

请先备份所有内容。调整硬盘大小总是有风险的,如果你以前没有这样做过,风险就更大了。我没有运行过这些命令,所以不要盲目相信它们。

首先,关于 LVM 的一个非常基础的入门知识 -

LVM——逻辑卷管理——将一个磁盘(或 10 个磁盘)分成 3 层——

物理卷 - 这些是专门为 LVM 使用的分区。您可以使用命令“pvs”查看物理卷列表,或使用“pvdisplay”查看详细信息。

卷组 (VG) - 这些是物理卷组。您可以在 VG 中拥有 1 个或多个 PV,但每个 PV 最多只能有 1 个 VG。通常只有一个 VG - 但如果您有混合使用(例如 SSD 和硬盘),您可能希望将 SSD 放在一个组中,将硬盘放在另一个组中。您可以使用命令“vgs”查看卷组的摘要,或使用“vgdisplay”查看详细信息

逻辑卷 (LV) 位于卷组上 - 同样,您会将多个逻辑卷归入 1 个卷组。您可以使用命令“lvs”查看逻辑卷的摘要,或使用“lvdisplay”查看详细信息。

查看 /dev/mapper/vg_d0-lv_root - 您的卷组将是“vg_d0”,您的逻辑卷将被称为“lv_root”。

我不太愿意建议您移动 /var,因为这样很可能会破坏一些东西 - 特别是当一个程序试图从 /var 读取时。

以下是扩大根分区的步骤 -

  • 通过移动 /home 目录释放磁盘空间:

以 root 身份登录。(如果您以普通用户身份登录,则可能难以卸载系统,因为普通用户的主目录位于 /home 下,而 root 位于 /root 下。如果您无法以 root 身份登录,请创建一个临时用户,将其目录更改为 /tmp,并将其添加到“wheel”组)。以他们的身份登录,然后成为 root,然后 -

mkdir /home2
cp -var /home/* /home2
umount /home
mv /home2 /home

编辑 /etc/fstab 并注释掉 mount /home 行。

lvremove /dev/mapper/vg_d0-lv_home 

然后将删除“lv_home”卷组,释放它以供重复使用。您需要确认是否要删除该卷。在执行此命令之前,您应该确保 /home 中的所有内容仍然存在。

现在,您有 203 GB 的额外空间可以随意重新分配。

将(几乎)所有空间分配给根分区

lvexpand /dev/mapper/vg_d0-lv_root -L +202G 

(您可以使用“extents”更精确地执行此操作 - 范围是 LVM 中的一块数据 - 块的大小将根据 LVM 的设置方式而有所不同 - 您可以使用 vgdisplay 查看可用的范围,并将 -L +202G 替换为 -l +number_of_extents。)

然后,您就可以在线扩展根驱动器​​。

resize2fs /dev/mapper/vg_d0-lv_root

(请注意,一些发行版使用 resize2fs,其他发行版使用 resize4fs - 两个命令相同并在标准 ext4 文件系统上运行)。

其他想法:不使用逻辑卷中的所有可用空间通常是有益的 - 如果您有可用空间,LVM 可以允许您拍摄快照,这有助于备份繁忙的系统而不会出现停机或不一致,如果您以后需要分配空间,您可以随时添加它。扩大分区也比缩小分区容易得多 - 缩小文件系统只能离线完成。我建议您至少留出 30 GB,即仅将 LVM 扩展到 170 GB,而不是完整的 203 GB。您以后可以随时将其扩展更多(使用相同的命令)

相关内容