题 在一个大分区上安装Linux有多糟糕?


我们将在新服务器上运行CentOS 7。我们在服务器内部的raid6中有6个300GB的驱动器。 (存储大部分是外部的40TB raid盒形式。)如果格式化为单个卷,内部容量约为1.3TB。我们的系统管理员认为在一个大的1.3TB分区上安装操作系统是一个非常糟糕的主意。

我是一名生物学家。我们不断安装新的软件来运行和测试,其中大部分都在/ usr / local。然而,因为我们有大约12名非精通计算机的生物学家使用该系统,我们也收集了大量的家庭/家庭。我们的最后一台服务器有一个200GB的分区用于/,并且在2。5年后它已满90%。我不希望再发生这种情况,但我也不想反对专家建议!

我们如何才能最好地使用1.3TB,以确保在需要的时间和地点提供空间,但不会为系统管理员造成维护噩梦?


91
2017-09-18 08:12




使用LVM并随意调整大小 - thanasisk
@thanasisk随意的可恢复性是一个神话,因为Linux上没有可以在线缩小的文件系统。 ext2在古代就有这样的补丁。 - peterh
@PeterHorvath - 如果我用“expand”替换“resize”,你会感到高兴吗? - thanasisk
期待您现在设置的任何内容在2。5年内保持最佳状态有点不切实际!事实上,非精明的用户正在弄得一团糟,这就是从数据中分离操作系统的更多理由。 - JamesRyan
@PeterHorvath我不止一次读了你的评论,所以我能理解它。你写道,如果一个可以扩展的文件系统存在,我会很高兴我指出了一个文件系统。就这样。 - gparent


答案:


分区的主要(历史)原因是:

  • 将操作系统与用户和应用程序数据分开。在RHEL 7发布之前,没有任何支持 升级路径 并且主要版本升级需要重新安装,然后才能进行 /home 和单独分区(或LVM卷)上的其他(应用程序)数据允许您轻松保留用户数据和应用程序数据并擦除操作系统分区。

  • 用户无法正常登录,并且当您完全耗尽磁盘空间时,系统会以有趣的方式开始失败。多个分区允许您为操作系统分配硬保留磁盘空间,并将其与允许用户和/或特定应用程序写入的区域分开(例如, /home /tmp/ /var/tmp/ /var/spool/ /oradata/ 等)), 减轻操作风险 行为不端的用户和/或应用程序。

  • 配额。 磁盘配额允许管理员阻止单个用户占用所有可用空间,从而中断对系统的所有其他用户的服务。为每个文件系统分配单个磁盘配额,因此单个分区因此单个文件系统仅意味着1个磁盘配额。多个(LVM)分区意味着多个文件系统允许更精细的配额管理。根据您的使用情况,您可能希望例如允许每个用户在其主目录中为10 GB,在外部存储阵列上的/ data目录中为2TB,并设置一个大型共享临时区域,任何人都可以为其主目录转储过大的数据集政策变得“满满”,但当发生这种情况时,任何事情都不会破裂。

  • 提供 专用IO路径。您可能拥有SSD和旋转磁盘的组合,并且可以很好地解决它们。在通用服务器中并不是一个问题,但在数据库设置中很常见的是还将某些心轴(磁盘)分配给不同的目的以防止IO争用,例如,事务日志的单独磁盘,实际数据库数据的单独磁盘和临时空间的单独磁盘。 。

  •  您可能需要单独的 /boot 划分。在历史上,为了解决BIOS启动超过1024柱面限制的问题,现在更需要支持加密卷,支持某些RAID控制器,不支持从SAN启动的HBA或安装程序不立即支持的文件系统等。

  • 调音 您可能需要不同的调整选项,甚至是完全不同的文件系统。

如果您使用硬分区,您或多或少必须在安装时正确,然后单个大分区不是最差的,但它确实带有一些上述限制。

通常我建议将主卷分区为 单个大型Linux LVM物理卷 然后 创建逻辑卷 适合您当前的需求和剩余的磁盘空间, 在需要之前保持未分配状态

您可以根据需要扩展这些卷及其文件系统(这是一个可以在实时系统上完成的简单操作),也可以创建其他卷。

缩小LVM卷是微不足道的,但往往是如此 缩小文件系统并不能很好地支持它们 应该避免。


103
2017-09-18 09:49



与性能有关的事情,我认为值得指出的是,如果文件系统存档需要快速响应,并且'df'将比'du -s $ DIRNAME'更快地返回有用信息 - symcbean
我不确定我同意“直到... RH7 ...没有支持的升级路径“。我已经完成了支持升级,因为时间已经过时,并且肯定升级了系统RH4-> 5。它是 只要 RH5-> RH6缺乏这样的路径,据我所知 - 我感觉RH因为缺乏而被用户全面打屁股。但是,对于其余的优秀答案,+1会是一样的。 - MadHatter
您指的是“直到RHEL 7发布之前没有支持的升级路径”? RHEL是否支持RHEL 7和主流版本之间的升级? - Markus Hallmann
升级确实有效,但根据 红帽 一般政策仍然是: Red Hat不支持任何主要版本的Red Hat Enterprise Linux之间的就地升级。  还有一点细微差别 Red Hat目前仅支持从Red Hat Enterprise Linux 6升级到Red Hat Enterprise Linux 7的特定/目标用例 和 这是手册 去检查 - HBruijn


使用多个分区的概念是错误位置的完整分区不会导致整个系统意外工作。

考虑一下机器上的进程非常快速地填充日志文件,直到没有可用空间。例如,在单分区计算机上,这可能会阻止系统将新数据写入/ tmp。如果有另一个进程想要写入/ tmp,它可能会退出并出现错误,从而导致意外行为。

如果对用户或进程通常写入的位置使用不同的分区(/ home,/ var,/ tmp),则可以防止这种情况。

我建议你检查你的旧服务器哪些文件夹往往会变大。您可以在命令行上执行此操作

du -h -d 1 / 2> /dev/null

您将看到积累的数据最多,并适当地设计下一个系统。 “-d 1”将输出限制为仅一个文件夹深度级别,使其更具可读性。


17
2017-09-18 08:38





拥有一个大型分区的主要问题是填充文件系统可能无法再进行登录。

用户root有其主文件夹(/root) 在外面 /home 因为这。如果文件系统在某些情况下被填满,即使root无法登录也无法修复系统。

这就是您通常为其创建单独安装点的原因 /var/tmp 和 /home 能够至少以root用户身份登录,以便在填充其他分区之一时修复系统。


12
2017-09-18 08:23



在某些文件系统(ext3 f.e.)上,您可以为root用户提供一些保留空间来防止该行为。你必须使用配额来防止这种情况,对于经常被遗忘的/ tmp也是如此。 - Dennis Nolte
@DennisNolte我忘记了 /tmp。谢谢,我会将此添加到我的答案中。 - Uwe Plonus
@DennisNolte保留的空间会有所帮助,但我认为维护比使用不同的分区困难,因为你必须正确设置配额。 - Uwe Plonus
我认为更重要的原因 /root 在外面 /home 是在一些装置上 /home 将在网络驱动器上。如果在网络上安装它时出现问题,则可以访问root的文件。 (这可以与通常的文本编辑器进行比较 /bin, 如果 /usr 我不怀疑这种情况在实践中是比较常见的 /home 一直填满。 - Eliah Kagan


恕我直言,有一个分区为/是非常合理的。

但是你可以使用lvm(逻辑卷管理器)。将所有磁盘用作lvm组,但为/,/ home,/ usr以及sysadmin喜欢的任何内容创建小型逻辑磁盘。然后进行一些监控,您知道,当您的系统开始充满并扩展您需要的磁盘时。 lvresize和resize2fs是在线工具,你可以在不重启服务器的情况下进行扩展。但是,您无法减少磁盘,因此您需要开始相当小的功能并在需要时增加。


10
2017-09-18 08:22





Linux的大单分区设置存在极少的问题,但它有很大的回报。

更改分区布局是一件有点困难和危险的事情,如果没有长时间停机,您通常无法做到这一点。

它唯一的优点是你有一些防止磁盘完全问题的保护。但是你会发现这些问题 许多 经常。想象一下这种情况,如果你的一个分区已满,并且 你不能使用其他分区上的空间,即使它们几乎是空的

一些专业系统管理员对此有不同的看法。他们说,拥有多个分区可以使您的系统更可靠,并且在分区之前必须知道分区的大小。在我看来,这简直不能说,这是系统灵活性的一个可怕的缺点,他们的真正动机是他们只是 喜欢玩分区地图

有一个简单的系统命名 LVM,可以实现“分区”的动态移动/调整大小(在术语,卷中)。但在单个本地部门服务器上,通常不需要恕我直言。


9
2017-09-18 08:43



什么样的受虐狂管理员 喜欢 玩分区地图???有趣的部分是构建内核,我可以得到一个 阿门??? - bishop
阿门!现在关于管理员喜欢使用分区的论点,我想反驳一下,因为linux可能有100种不同的文件系统类型,并且根据使用模式,为特定任务选择正确的filre系统可能意味着最优系统和非功能系统之间的区别。也许你只需要在几个文件夹中的文件系统。那里。 - Lennart Rolland


分区有两个主要原因:

  1. 保持静态数据远离非静态数据
  2. 保持公共数据远离私人数据

第一个原因是最明显的 - 您需要隔离那些将填充文件的区域,而不是那些区域,并且您特别希望保护/,以避免无法启动的系统。例如,/ var目录通常是存储日志文件的位置(var代表“变量”),这就是/ var倾向于安装在/的单独分区上的原因。

上面提到的第二个原因是引用较少(我上次在15年前的Veritas Volume Manager课程中听到过它),它实际上只与很多人登录和执行工作的系统有关。

有效的分区有一些艺术,这也许就是为什么有系统管理员认为它有点过分(IMO)。您不仅需要知道内部的文件系统,还必须知道预期的用途。我个人认为这是一种相当老式的方法,与当今服务器的使用方式越来越不相关。

作为一名软件开发人员,我特别厌倦了Ops部门构建虚拟机,其中包含严格限制/ tmp,/ home,/ var和/的大小的分区方案,无论可用的总磁盘空间是多少,但是不要单独安装/ usr或/ opt等明显的选择。这些机器通常会将您要求的磁盘空间中遗留的任何内容放入一个“/ stuff”卷中,您不可避免地会安装并将所有内容符号化,但这几乎不是一种安慰。最终的结果是,我们经常花费更多时间来处理文件并发送警告电子邮件,而不是做任何实际工作。

关于单个分区没有任何固有的“坏”。在任何系统上,您应该主动监控磁盘使用情况,并采用明智的内务管理策略(例如日志轮换,主目录上的配额),因此唯一真正的问题是:您要担心多少个单独的文件系统?

因此我会说: 除非你对你的特定用例有效地划分系统的能力100%有信心,否则不要进行分区


3
2017-09-18 09:41



究竟。好吧,也许公共 - 私有数据分离应该由文件系统和服务中的权限完成。 - peterh


恕我直言,这完全取决于你。首先考虑一些事情,尽管完全有点相对。

  • 这个系统会经常管理吗?
  • 这个系统会被一个或多个用户使用吗?
  • 这个系统会作为桌面还是服务器,或两者兼而有之?

由于可以考虑(几乎)任何目录,因此挂载点也应该考虑包含有些增长的数据以及包含增长数据的内容。

你会惊讶于linux系统(有些增长的数据)运行需要多少以及增长数据消耗了多少(通常是/ var / opt / home / srv)

它还取决于您如何定义此系统的用途,该系统概述了分区要求。包含LVM的用途。

一个典型的桌面系统需要大约20GB才能安装大量的软件,其余的分配到专用/家用电器就可以了。 LVM会对您的系统造成轻微的开销,并且在这种特殊情况下不会带来如此大的好处。虽然意见可能不同。

在服务器上,安装的软件不太可能像桌面系统那样动态。为典型的文件系统组件(例如/ tmp / var / usr / home / opt / srv)提供实际的挂载点也更明智。建议在此处使用LVM,而不是强制要求。

这为您的系统提供了极佳的模块化,它还允许执行愚蠢的事情,例如克隆分区到VM中。或者使用dd创建块级备份。

根据一些经验,这里有一些注释。还要考虑让多个安装点允许更好的控制,将快速或慢速磁盘设备分配给安装点可以创造一个与众不同的世界并且可以显着提高成本效率。

Mounpoint /

  • 1GB(如果为/ var / usr / opt / home / tmp使用单独的挂载点)
  • 如果用作具有单独/家庭的桌面系统,则为+10甚至+20 GB

如果使用mountpoint / home

  • 分配所有可用空间(如果使用)/ home ne

如果使用mountpoint / opt

如果使用mountpoint / usr

  • 这是一个棘手的问题,并且非常依赖于已安装的软件库

如果使用mountpoint / var

  • 这是一个棘手的问题,并且非常依赖于已安装的软件库
  • 例如,数据库在基于Debian的系统上写入他们的数据,如果不是所有Linux的话
  • 单独的/ var / tmp并不是不合理的

如果使用mountpoint / tmp

  • 考虑tmpfs存在并将/ tmp分配给RAM
  • 考虑一些应用程序可能会在这里写入大量数据

2
2017-09-18 14:18





首先,我要问一问,为什么你甚至在这里发布这个问题,作为一名生物学家正在与一位显然称职的系统管理员就硬盘分区的细节进行争论! (没有冒犯,只是真的想知道为什么你不信任你的系统管理员)。

所以,一些意见:

  • 1.3 TB不再是大型驱动器。如今,桌面世界中2 TB是一种或多或少的标准SATA驱动器大小。

  • 任何Linux Distro的安装都不太可能需要超过100GB。当然,/(root)和(swap)的大小应该通过慷慨地过大(根目录)或系统配置指南(交换)来轻松确定为上限数字。

  • / home的挂载点应该指向40TB RAID服务器上的某些东西。这些数据(用户的主目录)不需要位于该根设备上的任何位置。将它们放在RAID服务器上可能会为您提供更好的保护。并且,它很可能是一个易于扩展的NAS设施,而内置在服务器盒中的小RAID可能不是。

  • 您应该将您的特殊软件放入一个单独的部分(/ usr / local / bin等的挂载点),这样您就可以在操作系统更新和根分区擦除中保留它。否则,您可能需要在操作系统升级/修复/之后重新安装“特殊”软件应用程序。

  • 如果你想担心系统的管理问题,我会问一个不同的问题:在建筑物发生火灾并且服务器和RAID盒被破坏后,灾难恢复过程是什么?除非您关心的数据完全在您的脑海中,否则每个用户都应该询问他们的IT /系统管理员。该策略应包括诸如“我们将如何复制我们需要的硬件”以及“在我们恢复运行之前需要多长时间”等问题。有关虚拟化服务器的一些讨论可能有助于解决有关硬件依赖性的问题,并且无需重新配置操作系统即可恢复和运行(因为它可以配置为在“软”设备环境中运行,即使在底层硬件完全不同)

  • 同样,您可能想问一下保护用户数据免受程序和用户错误数据丢失的策略。将空文件保存在研究论文的真正优秀草稿中,或者让用户输入错误的命令(例如rm -rf *)将导致数据丢失,就像地震,火灾或其他物理损坏一样。单个文件恢复的解决方案与那些对批量灾难恢复最有用的解决方案有点不同(或可能是!)。

  • -

2
2017-09-23 13:10