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

Bry*_*anK 0 linux storage partitioning

以下是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
Run Code Online (Sandbox Code Playgroud)

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

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

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

dav*_*dgo 5

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

回答您的主要问题 - 不,您不能合并到 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 Gig 实际上相当多,如果您考虑到基本 Linux 操作系统通常只需要 2 - 6 gigs - 剩下大约 45 gigs 用于程序 - 同样,这可能不是你想要的,但它是一个对于普通系统来说,在黑暗中进行合理的刺杀。

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
Run Code Online (Sandbox Code Playgroud)

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

lvremove /dev/mapper/vg_d0-lv_home 
Run Code Online (Sandbox Code Playgroud)

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

您现在有 203 个演出空间可以根据需要重新分配。

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

lvexpand /dev/mapper/vg_d0-lv_root -L +202G 
Run Code Online (Sandbox Code Playgroud)

(您可以通过使用“extents”更精确地做到这一点 - 一个范围是 LVM 中的一个数据块 - 一个块的大小将根据 LVM 的设置方式而有所不同 - 您可以使用 vgdisplay 查看可用的范围,以及用 -l +number_of_extents 替换 -L +202G。)

然后您在线增长根驱动器。

resize2fs /dev/mapper/vg_d0-lv_root
Run Code Online (Sandbox Code Playgroud)

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

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

  • 毋庸置疑,在此分区中,/ 的 50G 还将包括用于日志和许多“系统”数据的所有空间,例如 postgres 和 myql 数据库的默认位置等。 (2认同)
  • 如果您希望保留大量日志数据,那么将 /var 放在另一个分区上确实是有逻辑的。我在我的日志服务器上这样做。也就是说,我通常为 / 分配 20GB 并为 /home 使用单独的分区,并且可能为数据库或多用户内容添加一个数据分区。50G实际上看起来大得惊人。如果您使用的是 Windows,这似乎很奇怪,因为它试图将几乎所有内容都放在 c:\ 中,但是对于 linux,我会说这与规范不同,因为它更大而不是更小。他们可能希望您安装大型应用程序套件。 (2认同)