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


96

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

我是生物学家。我们不断安装新的软件来运行和测试,其中大多数都位于/ usr / local中。但是,由于我们有大约12位非计算机智能生物学家在使用该系统,因此我们也在/ home中收集了很多数据。我们的最后一个服务器有一个用于/的200GB分区,在2.5年后,它已占满90%。我不希望这种情况再次发生,但是我也不想违背专家的建议!

我们如何最好地使用可用的1.3TB磁盘来确保空间在需要的时间和地点可用,而不给系统管理员造成维护噩梦?


13
使用LVM并
随意

5
@thanasisk随意调整大小是一个神话,因为linux上没有可以在线收缩的文件系统。ext2在古代就有这样的补丁。
user259412 2014年

2
@PeterHorvath-如果我将“ resize”替换为“ expand”,您会感到高兴吗?
thanasisk

10
期望您现在设置的任何内容在2.5年内仍然是最佳状态,这有点不现实!而且,非精明的用户正在搞砸这一事实,也就成为了将操作系统与数据分离的更多原因。
JamesRyan 2014年

3
@PeterHorvath我读了您的评论不止一次,这样我才能理解。您写道,如果存在可以扩展的文件系统,并且我指出了可以扩展的文件系统,您会感到很高兴。就这样。
gparent 2014年

Answers:


108

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

  • 操作系统,从用户和应用程序数据分离。在RHEL 7发行之前,没有受支持的升级路径,主要版本升级将需要重新安装,然后/home在单独的分区(或LVM卷)上拥有例如其他数据(应用程序),可以轻松保存用户数据。和应用程序数据并擦除OS分区。

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

  • 配额。磁盘配额使管理员可以防止单个用户用完所有可用空间,从而中断对系统所有其他用户的服务。每个文件系统分配了单独的磁盘配额,因此单个分区(即单个文件系统)仅意味着一个磁盘配额。多个(LVM)分区意味着多个文件系统,可以进行更精细的配额管理。根据您的使用情况,您可能希望例如允许每个用户在其主目录中有10 GB的空间,在外部存储阵列的/ data目录中有2TB的空间,并设置一个较大的共享暂存区,任何人都可以在其中转储对于其主目录而言太大的数据集且政策变为“已满”的地方,但发生这种情况时也不会中断。

  • 提供专用的IO路径。您可能将SSD和旋转磁盘结合使用,并且很好地解决了这些问题。在通用服务器中不是什么大问题,但是在数据库设置中很常见的是还要将某些纺锤(磁盘)分配给不同的用途以防止IO争用,例如,用于事务日志的单独磁盘,用于实际数据库数据的单独磁盘和单独的磁盘。临时空间的磁盘。。

  • 引导您可能需要一个单独的/boot分区。从历史上来看,BIOS的启动超出了1024个柱面的限制,如今更常见的是支持加密卷,支持某些RAID控制器,不支持从SAN引导的HBA或安装程序不立即支持的文件系统等。

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

如果使用硬分区,则或多或少必须在安装时将其正确设置,然后单个大分区并不是最坏的情况,但它确实存在上述一些限制。

通常,我建议将主卷划分为一个大型Linux LVM物理卷,然后创建适合您当前需求的逻辑卷,而对于其余磁盘空间,请在需要之前保留未分配的逻辑卷

然后,您可以根据需要扩展这些卷及其文件系统(这是可以在实时系统上完成的微不足道的操作),也可以创建其他卷。

缩减 LVM卷是微不足道的,但通常无法很好地缩减 LVM卷上的文件系统,因此应该避免。


4
有关性能的事情,我觉得这也是值得指出的是,在一个文件系统提交了一个快速响应的情况下是必要的,而“东风”将返回有用的信息比“杜-s $目录名称”快了很多
symcbean

3
我不确定我是否同意“ 直到... RH7 ...没有支持的升级路径 ”。自从确定以来,我已经完成了受支持的升级,并且绝对是RH4-> 5的升级系统。据我所知,只有 RH5-> RH6缺少这样的途径-我感到RH因其缺乏而被他们的用户全面击中。不过,+ 1是一个很好的答案。
MadHatter 2014年

在“直到RHEL 7发行之前,没有支持的升级路径”指的是什么?RHEL是否支持从RHEL 7开始的主要版本之间的升级?
马库斯·霍尔曼

5
升级确实可以,但是根据Red Hat的一般政策仍然是:Red Hat不支持在Red Hat Enterprise Linux的任何主要版本之间进行就地升级。 还有一点细微的差别Red Hat当前仅支持针对特定/目标用例的Red Hat Enterprise Linux 6到Red Hat Enterprise Linux 7的升级这是要检查的手册
HBruijn 2014年

17

使用多个分区的概念是在错误的位置放置一个完整的分区不会导致整个系统无法正常工作。

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

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

我建议您检查旧服务器,哪些文件夹通常会变大。您可以在命令行上使用

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

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


12

具有单个大分区的主要问题是,文件系统已满,可能无法再登录了。

因此,用户根目录的主文件夹(/root)位于外部/home。如果在某些情况下文件系统已装满,那么即使root用户也无法登录,也无法修复系统。

这就是为什么您通常为创建单独的挂载点/var/tmp/home在其他分区之一被填满时至少能够以root用户身份登录以修复系统的原因。


2
在某些文件系统(ext3 fe)上,您可以为root用户保留一些保留空间,以防止该行为。您必须使用配额来防止这种情况,对于/ tmp来说通常是这样,但通常会忘记使用配额。
丹尼斯·诺尔特2014年

@DennisNolte我忘记了/tmp。谢谢,我将其添加到我的答案中。
Uwe Plonus 2014年

@DennisNolte保留的空间会有所帮助,但是我认为维护要比使用其他分区困难得多,因为必须正确设置配额。
Uwe Plonus 2014年

4
我认为更重要的原因/root是外部的/home是,在一些设施/home将是一个网络驱动器上。如果在通过网络安装它时遇到问题,则根文件仍然可以访问。(这可以与通常的文本编辑器进行比较/bin,以防万一/usr无法挂载。)如今,我怀疑这是比起/home全部填充更实际的情况。
伊利亚·卡根

11

恕我直言,将一个分区作为/是相当合理的。

但是您可以使用lvm(逻辑卷管理器)。将所有磁盘用作lvm组,但为/,/ home,/ usr以及系统管理员喜欢的任何内容创建小型逻辑磁盘。然后,在系统开始变满时,进行一些监视,然后扩展所需的磁盘。lvresize和resize2fs是联机工具,您可以在不重新启动服务器的情况下进行扩展。但是,您无法减少磁盘,因此需要从较小的地方开始,并在需要的地方增加空间。


9

linux的大分区配置几乎没有什么问题,但是它有很多好处。

更改分区布局是一件困难而又冒险的事情,而没有长时间的停机通常是无法做到的。

唯一的好处是您可以针对磁盘已满问题进行一些保护。但你会发现这些问题频繁。想象一下这种情况,如果您的一个分区已满,并且您无法使用其他分区上的空间,即使它们几乎是空的

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

有一个名为lvm的简单系统,它可以实时“移动” /调整“分区”(以其术语,容量)。但是在单个本地部门服务器上,通常不需要IMHO。


7
什么样的受虐管理员喜欢玩分区图???有趣的部分是构建内核,我能获得一个成功???
主教

1
阿们!现在,关于管理员喜欢使用分区的争论,我想反驳一下,因为linux可能有100种不同的文件系统类型,并且根据使用模式,为特定任务选择正确的filre系统可能意味着最佳系统和非功能系统之间的差异。也许您只需要几个文件夹中的文件系统即可。那里。
Lennart Rolland 2015年

3

进行分区的主要原因有两个:

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

第一个原因是最明显的-您需要将将文件填满的区域与没有文件的区域隔离开,并且特别要保护/以避免系统无法启动。例如,/ var目录通常是日志文件的存储位置(var代表“变量”),这就是为什么/ var倾向于与/挂载在单独的分区上的原因。

上面提到的第二个原因很少被提及(我在15年前的Veritas Volume Manager课程中上次听说过),它实际上仅与许多人登录并执行工作的系统有关。

有效的划分是一门艺术,这也许就是为什么系统管理员对此有些过分(IMO)的原因。您不仅需要完全了解文件系统,还必须知道预期的用途。我个人认为这是一种过时的方法,与今天使用服务器的方式越来越不相关。

作为软件开发人员,我特别厌倦了Ops部门以漫不经心的分区方案来构建虚拟机,这些分区方案严格限制了/ tmp,/ home,/ var和/的大小,而不管可用的总磁盘空间如何,但后来不要分别挂载/ usr或/ opt等明显的选择。这些机器通常会将您所需要的磁盘空间中剩余的所有内容放入“ / stuff”卷中,您不可避免地最终将所有内容安装并符号链接到其中,但这绝非易事。最终结果是,与实际工作相比,我们经常花费更多时间整理文件并发送警告电子邮件。

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

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


究竟。好的,也许应该通过文件系统和您的服务中的权限来完成公共-私人数据分离。
user259412 2014年

2

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

  • 这个系统会经常管理吗?
  • 这个系统会被一个或多个用户使用吗?
  • 该系统将用作台式机还是服务器,或者同时用作两者?

由于一个人可以考虑(几乎)任何目录,因此挂载点还应该考虑哪些目录包含一些不断增长的数据,哪些目录包含正在增长的数据。

您会惊讶的是,一个linux系统(需要一些增长的数据)需要运行多少,以及通过增长数据(通常是/ var / opt / home / srv)消耗了多少?

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

一个典型的台式机系统将需要大约20GB的空间来安装软件负载,然后将其余所有分配给专用的/ home即可。LVM在您的系统上造成较小的开销,在这种情况下,它并不是那么有用。虽然意见可能会有所不同。

在服务器上,安装的软件与台式机系统一样动态的可能性较小。为典型的文件系统组件(例如/ tmp / var / usr / home / opt / srv)具有实际的挂载点也是明智的。建议在此处使用LVM并不是强制性的。

这为您的系统提供了极大的模块化,也允许您做一些愚蠢的事情,例如将该分区克隆到VM中。或使用dd创建块级备份。

根据一些经验,这里有一些注意事项。还应考虑拥有多个安装点以实现更好的控制,将快速或慢速磁盘设备分配给安装点可以带来很大的不同,并可以显着提高成本效率。

Mounpoint /

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

如果使用mountpoint / home

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

如果使用mountpoint / opt

如果使用mountpoint / usr

  • 这是一个棘手的问题,在很大程度上取决于已安装的软件库

如果使用mountpoint / var

  • 这是一个棘手的问题,在很大程度上取决于已安装的软件库
  • 例如,如果不是全部的Linux,数据库将数据写在基于Debian的系统上
  • 具有单独的/ var / tmp并非没有道理

如果使用mountpoint / tmp

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

2

首先,我要质疑的是,作为生物学家,您为什么还要在此处发布此问题,他正在与一位显然胜任的系统管理员争夺硬盘分区的优点!(没有冒犯,只是真的想知道为什么您不信任系统管理员)。

因此,一些观察:

  • 1.3 TB不再是大驱动器。如今,2 TB是台式机世界中或多或少的标准SATA驱动器大小。

  • 安装任何Linux Distro的要求都不太可能超过100GB。当然,应该通过对(root)和(swap)和(swap)进行大幅度的过度设置(对于root)或系统配置准则(swap),将它们的大小轻松地确定为上限。

  • / home的安装点应该指向40TB RAID服务器上的某个东西。无需将该数据(用户的主目录)放在该根设备上的任何位置。无论如何,将它们放在RAID服务器上可能会为您提供更好的保护。而且,它很可能是易于扩展的NAS设备,而服务器盒中内置的RAID却很少。

  • 您应该将特殊软件放在一个单独的分区中(/ usr / local / bin的挂载点等),以便可以在操作系统更新和根分区擦除中保留该软件。否则,您将面临在操作系统升级/修复/任何操作后必须重新安装“特殊”软件应用程序的可能性。

  • 如果您要担心系统的管理,请问一个不同的问题:建筑物着火并且服务器和RAID盒被破坏后,灾难恢复过程如何?除非您关心的数据完全掌握在您的脑海中,否则这是每个用户应向其IT / sysadmin人员提出的问题。该策略应包括诸如“我们将如何复制所需的硬件”和“需要多长时间才能备份并运行”之类的问题。有关对服务器进行虚拟化的一些讨论可能有助于解决围绕硬件依赖性的问题,并使事情恢复正常运行,而无需重新配置操作系统(因为可以将其配置为在不会改变的“软”设备环境中运行,

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

  • --

2

这样可以独立于用户数据备份,还原或重新安装操作系统。这给您自由,独立和安全。

  1. 迁移到仍然保留绝对多数用户数据的另一个Linux发行版比较容易。

  2. 通过应用操作系统分区的备份,可以很容易地还原错误更新(需要双启动)。该备份甚至可能比较旧-您可以应用它,然后再更新到已知稳定的版本。

  3. 如果您不喜欢最近应用的“主要升级”(需要双引导),则可以很容易地还原到以前的操作系统版本。

为了使这种方法发挥最大的潜力,您还应该配置双重引导(也可以是CentOS / CentOS),以便在从另一个操作系统分区运行时覆盖一个操作系统分区。并且,当然,您必须至少每月备份一次系统分区。


为什么是-1?您是否会认为不无线而等待漏洞修复是更专业的方法?顺便说一句,在三周内补丁了。
2014年

我不知道,但是得到了补偿。如果您看到类似的内容,请同样执行。
user259412 2014年

1

我的简短回答是,即使台式机也不应使用“一个大分区”。我最近尝试用我的更好的判断来尝试该操作,因为它只是“一台笔记本电脑”,自动安装程序使用了一个分区,然后我单击了按钮。

当我去安装其他发行版时,我不得不重新分区驱动器,因为安装程序不会在现有发行版上进行安装。如果/ home在其自己的分区上,则可以并且将保持您的/ home完整。因此,我最终启动了gparted live-cd并缩小了分区,为/ home和其他分区创建了新分区,将数据移至新分区,然后最终启动至新OS的安装程序。

理想情况下,根据您计划升级的频率,将/放在SSD上,/ home放在硬盘上,/ var放在硬盘上,/ usr可以放在SSD或HDD上。/ tmp到硬盘驱动器。我通常会在/ home中为共享媒体文件(例如mp3和电影)创建另一个分区,并带有符号链接。请注意,/ sbin是root的一部分,并且是/ bin和/ root。那就是/ bin和/ usr / bin之间的区别,是/ usr是直到所有驱动器都挂载后才可用的东西,因此mount命令不能在/ usr中!我通常会为其他Linux发行版保留几个额外的分区,例如gparted位于我的硬盘驱动器上,以防万一我搞砸了一些真正不好的东西,我准备好另一个实时系统来进行恢复工作。

对于服务器,您可能需要四处移动,动态添加存储并需要一直保持运行,请务必使用LVM!


1

您不必将软件安装到/ usr / local,可以将所有软件安装在不同的前缀(可能在/ home中)中。当您从源代码编译它时,大多数软件都可以执行此操作,例如运行 ./configure --prefix=/home/bin

由于您是生物学家,所以您可能会对很多软件没有正确地打包在rpm或deb中感兴趣,并且无论如何都必须从源代码进行编译。

我是HPC系统的系统管理员,我们的用户中有很多生物学家,我们将他们要求的所有软件都安装在/ apps /文件系统下,因此我知道可以对大多数软件执行此操作,但是有时很难 为了解决这个问题,我和我的同事一直在写一个名为EasyBuild(免费和开放源代码)的工具,它可以从源代码编译和安装软件,然后将其安装在其他文件夹中,并自动为您创建一个环境模块文件,因此您实际上可以安装2个不同版本的同一软件,并且没有冲突。

查看我们仅需一个命令即可安装的软件包列表,作为生物学家,您可能会发现很多;-)

免责声明:我是EasyBuild的开发人员


0

我认为一般来说,对于初学者/入门级* ix用户,只有在了解到有关系统本质的知识之后,分区最少的方法才能起作用。但是,您不能简单地拥有一个职位,而您,先生,出于多种原因。

这样做的第一个且也是更实际的实践原因是,大多数所有Linux系统都需要交换分区(通常应在1-2 * RAM之间),也需要单独的系统分区,引导分区或主分区,并且对于UEFI引导Linux系统而言一个EFI分区(仅500MB)。

第二个原因(特别适用于您的情况)是,至少可以说,采用6个300GB驱动器并使其成为RAID 6并不是最佳的布局。尽管这项新技术将Raid 6称为普遍更好的系统,但仍需要更多的条带化算法,并且存储信息所需的空间(与RAID 5相比)更大。

更不用说RAID 6需要其他硬件。在我看来,应该使用哪种方式购买更大的磁盘,以避免磁盘故障,停机,灾难恢复或增加的技术帮助成本。我了解有些人可能会不同意我的观点,我想再次确认一下,当磁盘在未来两年内变得更大(由于最近几年价格下降)时,RAID6适用于更大的阵列。大型收入公司将是显而易见的选择。但是,在这种情况下,我不建议您使用RAID 6。

对于第二个问题(基于非RAID),在镜像时创建一个巨型分区可能对您有用,但是,如果您要最大效率地使用更大的驱动器和多个分区,则可以。这样,如果您遇到双磁盘故障,则根据/ dev + / dir的不同,您将不会在某些安装点上停机,也不会停机。

至少要使/ sys(系统,内核等)分开运行,这样,如果出于任何原因您的内核决定不启动,则可以简单地使用恢复内核,远程启动或PXE,磁盘启动等您的内核,并让公司-在进行d恢复过程时,可以广泛访问您的信息。

只要系统正常运行,贵公司可能就不会在乎这些口音,但是我正在尝试解释人们做事的原因。我也希望听到其他人的更多支持和反对,并提出其他观点。如果您不同意,请告诉我原因。海报-我也会给您一些链接。

对我们的Linux Community Spencer Reiser的热爱

PS 特别是在通过大众使用的网络服务器或系统上,即使通过凭据,也最好将您的分区分开。其他人可以在这里输入更多,我需要更多咖啡。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.