Linux on VMware - 为什么要使用分区?

sav*_*che 47 virtualization linux partition storage hard-drive

在虚拟化环境(在我的例子中为 ESXi)中安装 Linux VM 时,是否有任何令人信服的理由来对磁盘进行分区(使用 ext4 时)而不是仅仅为每个挂载点添加单独的磁盘?

我唯一能看到的是,它可以更轻松地查看磁盘上是否存在数据,例如 fdisk。

另一方面,我可以看到一些使用分区的充分理由(显然,除了 /boot)。

  • 更容易扩展磁盘。只是增加VM的磁盘大小(通常在VCenter中),然后在VM中重新扫描设备,并在线调整文件系统的大小。
  • 不再有将分区与底层 LUN 对齐的问题。

我没有找到太多关于这个话题的内容。我错过了什么重要的事情吗?

eww*_*ite 27

这是个有趣的问题...

我认为没有明确的答案,但我可以提供一些历史背景,说明围绕该主题的最佳实践可能如何随着时间的推移而发生变化。

自 2007 年以来,我不得不支持在 VMware 环境中以各种形式部署的数千个 Linux VM。我的部署方法不断发展,而且我拥有继承和重构其他工程师构建的系统的独特(有时是不幸的)经验。

过去的日子...

回到那天(2007 年),我早期的 VMware 系统就像我的裸机系统一样进行分区。在 VMware 方面,我使用拆分的 2GB 厚文件来组成 VM 的数据,甚至没有考虑多个 VMDK 的概念,因为我很高兴虚拟化甚至可以工作!

虚拟基础设施...

在 ESX 3.5 和早期的 ESX/ESXi 4.x 版本(2009-2011)中,我使用的是 Linux,在整体配置 VMDK 文件上正常分区。必须预先分配存储迫使我以与实际硬件类似的方式考虑 Linux 设计。我正在为操作系统创建 36GB、72GB、146GB 的 VMDK,对通常的 /、/boot、/usr、/var、/tmp 进行分区,然后为“数据”或“增长”分区添加另一个 VMDK(无论是 / home、/opt 或特定于应用程序的内容)。同样,在这个时代物理硬盘大小的最佳点是 146GB,并且由于预分配是一个要求(除非使用 NFS),我需要对空间保持保守。

精简配置的出现

VMware在后来的 ESXi 4.x 版本中围绕精简配置开发了更好的功能,这改变了我开始安装新系统的方式。随着 5.0/5.1 中添加的完整功能集,一种新型的灵活性允许更多创意设计。请注意,这与虚拟机上增加的功能保持同步,就可以为单个 VM 提供多少 vCPU 和多少 RAM 而言。与过去相比,可以虚拟化更多类型的服务器和应用程序。这是正确的,因为计算环境开始完全虚拟化。

LVM 太糟糕了...

当 VM 级别的完整热添加功能到位并很普遍时(2011-2012),我正在与一家公司合作,该公司努力不惜一切代价维持客户 VM 的正常运行时间(愚蠢)。因此,这包括在线 VMware CPU/RAM 增加以及在现有 VMDK 上调整 LVM 磁盘大小的风险。此环境中的大多数 Linux 系统都是单个 VMDK 设置,在 LVM 之上具有 ext3 分区。这很糟糕,因为 LVM 层增加了操作的复杂性和不必要的风险。例如,耗尽 /usr 中的空间可能会导致一系列错误的决策,最终意味着从备份中恢复系统......这部分与流程和文化有关,但仍然......

分区势利...

我借此机会尝试改变这一点。我是Linux中的分区势利小人,我觉得应该将文件系统分开以满足监控和操作需求。我也不喜欢 LVM,尤其是使用 VMware 以及执行您所要求的操作的能力。因此,我将 VMDK 文件的添加扩展到可能会增长的分区。/opt、/var、/home 可以根据需要获取自己的虚拟机文件。这些将是原始磁盘。有时,这是一种更简单的方法来动态扩展特定的小分区。

奥巴马医改...

随着一个非常引人注目的客户端的加入,我的任务是设计 Linux VM 参考模板,该模板将用于创建他们极其可见的应用程序环境。应用程序的安全要求需要一组独特的挂载,因此与开发人员一起尝试将非增长分区塞入一个 VMDK,然后为每个具有增长潜力或有特定要求(加密、审计等)因此,最终,这些 VM 由 5 个或更多 VMDK 组成,但为未来调整大小和保护数据提供了最佳灵活性。

我今天做什么...

今天,我对 Linux 和传统文件系统的总体设计是在一个瘦 VMDK(分区)上的操作系统,以及用于其他任何东西的离散 VMDK。我会根据需要热添加。对于像 ZFS 这样的高级文件系统,它是操作系统的一个 VMDK,另一个用作 ZFS zpool 的 VMDK,可以调整大小,雕刻成其他 ZFS 文件系统等。

  • “回到过去”是 2007 年吗?1999 年,当版本 1 发布时,我是 IBM 的免费许可证接收者。我是一个虚拟机恐龙:D(挥手@BrianKnoblauch)。根据您的 LVM 评论,听起来您是在 Linux 环境中进行判断的。LVM 成熟的技术在商业 UNIX 领域早于 Linux 多年。如果您管理过高端 Solaris/Sparc/EMC Symmetrix,Linux 就像一个台阶(并且在许多方面仍然如此)。在小磁盘时代,LVM 使数 TB 的数据库变得易于管理。我从来没有遇到过你描述的问题,这听起来真的像人的问题,尽管我当然可以联系起来。 (5认同)
  • 哦,天哪,谢谢你让我觉得自己超级老了。对我来说,2007 年仍然“几乎是当前”。:-) (2认同)
  • 每种技术都有其局限性,该页面上没有任何内容支持您声称 LVM 很糟糕。我建议您修改答案的那部分,因为它更像是 FUD 而不是有益的信息。附注。对不起,如果我的任何评论听起来很刺耳,我过去常常在做实际工作的间隙写作,所以我不经常考虑我的话对别人来说听起来如何。 (2认同)

Cho*_*er3 7

你在很多方面都是对的,我可以看到这个论点——但有一个问题可能会很棘手。如果您使用资源池(我知道我不这样做,可恶的事情),那么如果虚拟机拥有更多磁盘,它们可以获得更多 IO 时间 - 在极端资源受限的情况下,具有两个磁盘的虚拟机可以获得两倍于使用磁盘的 IO 资源单个磁盘。这对你来说可能不是问题,但我想我会指出的。

编辑 - 哦,它也会使捕捉稍微慢一点,但这可能不是问题。


rra*_*nza 7

当我在一家特定的“大型虚拟化软件公司”从事基础设施工作时,我们经常需要增加虚拟机文件系统的大小。我们当时使用的是 ext3/4。

增加虚拟磁盘非常容易,在实时操作系统中选择新设备的大小相对容易(在 /sys 中查看),实时调整 ext3/4 文件系统的大小很容易,但似乎总是不可能的(做实时)是调整分区大小。

您必须使用 gparted 或使用 fdisk 重写/调整分区表的大小——但它总是被内核锁定,需要重新启动才能让内核采用新的布局(partprobe 也没有这样做。)

我将许多系统移至 LVM,调整文件系统大小成为一种轻松、几乎愉快的体验!

  • 增加VM外的虚拟磁盘镜像
  • 在虚拟机中,
    • 戳 /sys 重新扫描磁盘指标(echo "1" > /sys/class/scsi_device//device/rescan)
    • pvresize /dev/sdX(调整 LVM 中物理卷的大小)
    • lvresize --extents +100%FREE /dev/VG/lvolXX(调整LVM中的逻辑卷大小)
    • resize2fs(调整文件系统大小)

所有这些都可以在实时系统上安全地完成——而且不需要重新启动!

为什么不是裸盘?这让我感到紧张——我觉得裸磁盘还没有被广泛接受,但我认为我们正处于更广泛接受的边缘。btrfs 邮件列表上有一个与此相关的线程:

http://www.spinics.net/lists/linux-btrfs/msg24730.html

但是裸盘只需要重新扫描和 resize2fs。

所以,总而言之,是的,如果可以,请避免使用分区表。