我们将在我们的新服务器上运行 CentOS 7。我们在服务器内部的 raid6 中有 6 个 300GB 驱动器。(存储主要是 40TB RAID 盒形式的外部存储。)如果格式化为单个卷,则内部卷约为 1.3TB。我们的系统管理员认为将操作系统安装在一个 1.3TB 的大分区上是一个非常糟糕的主意。
我是生物学家。我们不断安装新软件来运行和测试,其中大部分位于 /usr/local。然而,因为我们有大约 12 名非计算机精通的生物学家在使用该系统,所以我们也在 /home 中收集了很多垃圾。我们的上一台服务器有一个 200GB 的 / 分区,2.5 年后它已满 90%。我不希望这种情况再次发生,但我也不想违背专家的建议!
我们如何才能最好地使用可用的 1.3TB 来确保空间在需要的时间和地点可用,而不会给系统管理员造成维护噩梦?
分区的主要(历史)原因是:
将操作系统与您的用户和应用程序数据分开。在 RHEL 7 发布之前,没有受支持的升级路径,并且主要版本升级需要重新安装,然后
/home
在单独的分区(或 LVM 卷)上拥有例如和其他(应用程序)数据,这样您就可以轻松地保留用户数据和应用程序数据并擦除操作系统分区。当您完全用完磁盘空间时,用户无法正确登录,并且您的系统开始以有趣的方式出现故障。
/home /tmp/ /var/tmp/ /var/spool/ /oradata/
多个分区允许您为操作系统分配硬盘保留磁盘空间,并将其与允许用户和/或特定应用程序写入(例如等)的区域分开,从而降低行为不端的用户和/或应用程序的操作风险。配额。磁盘配额允许管理员防止单个用户用尽所有可用空间,从而中断对系统所有其他用户的服务。每个文件系统分配单独的磁盘配额,因此单个分区和单个文件系统仅意味着 1 个磁盘配额。多个 (LVM) 分区意味着多个文件系统允许更精细的配额管理。根据您的使用场景,您可能希望例如允许每个用户在其主目录中存储 10 GB,在外部存储阵列上的 /data 目录中存储 2TB,并设置一个大型共享暂存区,任何人都可以在其中转储对于其主目录来说太大的数据集并且政策变得“已满”,但是当这种情况发生时,也没有任何问题。
提供专用的 IO 路径。您可能有 SSD 和旋转磁盘的组合,并且最好以不同的方式解决它们。在通用服务器中不是什么问题,但在数据库设置中很常见的是将某些主轴(磁盘)分配给不同的目的以防止 IO 争用,例如为事务日志单独磁盘,为实际数据库数据单独磁盘和单独临时空间的磁盘。.
引导您可能需要一个单独的
/boot
分区。过去是为了解决引导超过 1024 柱面限制的 BIOS 问题,现在更经常需要支持加密卷、支持某些 RAID 控制器、不支持从 SAN 引导的 HBA 或安装程序不立即支持的文件系统等。调优您可能需要不同的调优选项,甚至完全不同的文件系统。
如果您使用硬分区,您或多或少必须在安装时正确设置,然后单个大分区并不是最糟糕的,但它确实具有上述一些限制。
通常,我建议将您的主卷分区为单个大型 Linux LVM 物理卷,然后创建适合您当前需求的逻辑卷,对于剩余的磁盘空间,在需要之前保持未分配。
您可以根据需要扩展这些卷及其文件系统(这是一个可以在实时系统上完成的简单操作),或者也可以创建其他卷。
收缩 LVM 卷是微不足道的,但通常收缩它们上的文件系统并没有得到很好的支持,应该避免。
使用多个分区的概念是在错误的地方一个完整的分区不会导致整个系统意外工作。
考虑机器上的一个进程非常快地填充日志文件,直到没有可用空间。例如,在单分区机器上,这可能会阻止系统将新数据写入 /tmp。如果有另一个进程想要写入 /tmp,它可能会退出并出现错误,从而导致意外行为。
如果您对用户或进程通常写入的位置(/home、/var、/tmp)使用不同的分区,则可以防止这种情况发生。
我建议您检查您的旧服务器,哪些文件夹往往会变大。您可以在命令行上使用
您将看到积累的数据最多的位置,并适当地设计您的下一个系统。“-d 1”将输出限制为仅一级文件夹深度,使其更具可读性。
拥有单个大分区的主要问题是填充文件系统可能不再可能登录。
因此,用户 root 有它的主文件夹 (
/root
)/home
。如果文件系统在某些情况下被填满,即使是 root 也无法登录并且无法修复系统。这就是您通常创建单独的挂载点的原因
/var
,/tmp
并且/home
能够在其他分区之一被填满时至少以 root 身份登录以修复系统。恕我直言,将一个分区作为 / 是非常合理的。
但是您可以使用 lvm(逻辑卷管理器)。将所有磁盘用作 lvm 组,但为 /、/home、/usr 以及您的系统管理员喜欢的任何内容创建小型逻辑磁盘。然后进行一些监视,您知道,当您的系统开始变满并扩展您需要的那些磁盘时。lvresize 和 resize2fs 是在线工具,您可以在不重新启动服务器的情况下进行扩展。但是,您不能减少磁盘,因此您需要从合理的小规模开始,并在您认为需要的地方增加。
linux 的大单分区设置问题很少,但它有很大的回报。
更改分区布局有点困难且有风险,如果没有长时间的停机时间,您通常无法做到这一点。
它唯一的优点是您可以针对磁盘已满问题提供一些保护。但是你会经常发现这些问题。想象一下这种情况,如果您的一个分区已满,而您无法使用其他分区上的空间,即使它们几乎是空的!
一些专业的系统管理员对此有完全不同的看法。他们说,拥有多个分区可以使您的系统更可靠,您必须在分区之前知道您的分区有多大。在我看来,这根本不能说,这对系统的灵活性来说是一个可怕的缺点,他们真正的动机是他们只是喜欢玩分区图。
有一个名为lvm的简单系统,它支持动态移动/调整“分区”(在其术语中为卷)的大小。但是在单个本地部门服务器上,恕我直言,通常不需要。
分区的主要原因有两个:
第一个原因是最明显的——您需要将文件填充的区域与不填充文件的区域隔离开来,并且您特别希望保护 /,以避免系统无法启动。例如,/var 目录通常是存储日志文件的地方(var 代表“变量”),这就是为什么 /var 倾向于安装在与 / 不同的分区上的原因。
上面的第二个原因很少被引用(我最后一次听到它是在大约 15 年前的 Veritas Volume Manager 课程中),它实际上只与许多人登录并执行工作的系统相关。
有效的分区是一门艺术,这也许就是为什么有些系统管理员把它做得有点过头了(IMO)。您不仅需要彻底了解文件系统,还必须了解预期用途。我个人认为这是一种相当过时的方法,与今天使用服务器的方式越来越不相关。
作为一名软件开发人员,我特别厌倦了 Ops 部门使用粗心的分区方案构建虚拟机,这些分区方案严重限制了 /tmp、/home、/var 和 / 的大小,而不管可用的总磁盘空间如何,但随后不要不要单独安装明显的选择,例如 /usr 或 /opt。这些机器通常会将您要求的磁盘空间中剩余的任何内容放入“/stuff”卷中,您最终不可避免地会将所有内容安装和符号链接到该卷中,但这并不是一个安慰。最终结果是,与做任何实际工作相比,我们经常花更多的时间来打乱文件和发送警告电子邮件。
拥有一个分区本身并没有什么“坏处”。在任何系统上,您都应该主动监控磁盘使用情况,并采用合理的内务管理策略(例如日志轮换、主目录配额),所以唯一真正的问题是:您要担心多少个单独的文件系统?
因此,我会说:除非您对针对特定用例有效分区系统的能力有 100% 的信心,否则根本不要分区。
这允许独立于用户数据备份、恢复或重新安装操作系统。这给你自由、独立和安全。
迁移到另一个仍然保留绝大多数用户数据的 Linux 发行版要容易得多。
通过应用操作系统分区的备份(需要双启动)可以轻松恢复错误更新。此备份甚至可能相当旧 - 您可以应用它并稍后更新到已知稳定的版本。
如果您不喜欢最近应用的“重大升级”(需要双启动),可以简单地恢复到以前的操作系统版本。
对于这种方法的最大潜力,您还应该配置双引导(也可以是 CentOS/CentOS),这样您就可以在从另一个操作系统分区运行时覆盖一个操作系统分区。而且,当然,您必须至少在几个月内备份一次系统分区。
恕我直言,这完全取决于您。首先考虑一些事情,尽管完全是相对的。
由于可以考虑(几乎)任何目录作为挂载点,因此还应该考虑什么包含一些增长的数据以及什么包含增长的数据。
它还取决于您如何定义概述分区要求的该系统的用途。包括对 LVM 的使用。
在服务器上,安装的软件不太可能像桌面系统那样动态。为典型的文件系统组件(例如 /tmp /var /usr /home /opt /srv)设置实际挂载点也是更明智的做法。这里建议使用 LVM,不要说强制。
这为您的系统提供了极大的模块化,它还允许做一些愚蠢的事情,例如将该分区克隆到 VM 中。或者使用 dd 创建块级备份。
根据一些经验,这里有一些注意事项。还可以考虑拥有多个挂载点以实现更好的控制,将快速或慢速磁盘设备分配给一个挂载点可以带来不同的世界,并且可以显着提高成本效率。
安装点 /
如果使用挂载点 /home
如果使用挂载点 /opt
如果使用挂载点 /usr
如果使用挂载点 /var
如果使用挂载点 /tmp
首先,我不得不质疑,作为一名生物学家,你为什么还要在这里发布这个问题,他正在与一个明显称职的系统管理员就硬盘分区的细节问题争论不休!(无意冒犯,只是想知道您为什么不信任您的系统管理员)。
所以,有几点意见:
1.3 TB 不再是大容量驱动器。2 TB 是当今桌面世界中或多或少的标准 SATA 驱动器大小。
任何 Linux 发行版的安装都不太可能需要超过 100GB。当然,/ (root) 和 (swap) 的大小应该很容易确定为上限数字,方法是慷慨地过度调整它们的大小(对于 root)或系统配置指南(swap)。
/home 的挂载点应该指向 40TB RAID 服务器上的某些东西。无需将该数据(用户的主目录)放在该根设备上的任何位置。无论如何,将它们放在 RAID 服务器上可能会为您提供更好的保护。而且,它很可能是一个易于扩展的 NAS 设施,而内置在服务器盒中的小 RAID 可能不是。
您可能应该将您的特殊软件放入一个单独的分区(/usr/local/bin 等的挂载点),这样您就可以在操作系统更新和根分区擦除时保留它。否则,您将面临在操作系统升级/修复/无论如何之后必须重新安装“特殊”软件应用程序的可能性。
如果您想担心您的系统管理,我会问一个不同的问题:建筑物着火并且服务器和 RAID 盒被破坏后的灾难恢复过程是什么?除非您关心的数据完全留在您的脑海中,否则这是每个用户都应该向其 IT/系统管理员询问的问题。该策略应包括诸如“我们将如何复制我们需要的硬件”和“我们需要多长时间才能备份和运行”等问题。一些关于虚拟化服务器的讨论可能有助于解决有关硬件依赖性的问题,并在无需重新配置操作系统的情况下恢复运行(因为它可以配置为在不变的“软”设备环境中运行,
同样,您可能想询问保护用户数据免受程序和用户错误数据丢失的策略是什么。将一个空文件保存在你的研究论文的非常好的草稿上,或者让用户输入错误的命令(例如 rm -rf *)会导致数据丢失,就像地震、火灾或其他物理损坏一样。单个文件恢复的解决方案与那些对大规模灾难恢复最有用的解决方案有些不同(或可能是!)。
您不必将软件安装到 /usr/local,您可以将所有软件安装在不同的前缀中,可能在 /home 中。当您从源代码编译它时,大多数软件都可以做到这一点,例如运行
./configure --prefix=/home/bin
由于您是一名生物学家,您可能对许多未正确打包在 rpm 或 deb 中的软件感兴趣,并且无论如何您都必须从源代码编译它。
我是 HPC 系统的系统管理员,我们的用户中有很多生物学家,我们将他们要求的所有软件安装在 /apps/ 文件系统下,所以我知道大多数软件都可以这样做,但是,有时它可能非常努力。为了解决这个问题,我和我的同事一直在写一个名为EasyBuild(免费和开源)的工具,它可以从源代码编译和安装软件,并将其安装在不同的文件夹中,并自动为您创建一个环境模块文件,所以您实际上可以安装相同软件的 2 个不同版本,并且没有冲突。
看看我们可以用一个命令安装的软件包列表,作为一名生物学家,你可能会认出很多;-)
免责声明:我是 EasyBuild 的开发者