向我出售分区


46

我经常想知道为什么对分区驱动器有如此热情,尤其是在Unixy OS(/ usr,/ var等)上。这似乎不是Windows安装的常见主题。

似乎分区大大增加了填充一个分区而其他分区具有大量可用空间的可能性。显然,可以通过仔细的设计和计划来防止这种情况发生,但是情况可能会发生变化。我在机器上已经经历过很多次了,大多数情况下是在别人设置的机器上进行的,或者在有问题的操作系统的默认安装设置下。

我听到的另一个论点是,它简化了备份。如何简化备份?我还听说它可以提高可靠性。再次,如何?

我在磁盘存储中遇到的问题几乎100%与磁盘的物理故障有关。难道说分区会潜在地加速硬件故障,因为在将数据从一个分区移动或复制到同一磁盘上的另一个分区时,磁盘的抖动会引起磁盘故障吗?

我并不想尝试太多,我只是想看看有悠久历史的管理员实践的正当性。


在“基础架构即服务”云中,分区没有意义,因为可以灵活地连接驱动器(通常称为卷)。
Skaperen

Answers:


41
  • 更快的fsck。可以说您的系统由于某种原因而发生故障,并且在重新引导时需要运行fsck。对于非常大的分区,fsck可能会永久占用,并且在整个系统的fsck完成之前,系统上的所有功能都无法正常工作。如果对系统进行了分区,因此根分区很小,那么在等待较大卷的fsck完成时,您可以启动系统并运行一些基本服务。
    • 如果您的系统具有小型驱动器,或者系统上只有一项服务,则这可能并不重要。
    • 对于日记文件系统,这在大多数情况下可能并不重要,但是有时即使对于日记文件系统,您也必须运行完整的fsck。
  • 由于可以挂载fs只读,因此提高了安全性。
    • 例如,在正常使用过程中,没有人需要写/ usr。那么,为什么不只是挂载文件系统使其成为只读文件呢?在不需要编写文件系统时将它们设为只读可以防止某些脚本骗子的攻击,并且可能会在您不需要这样做的情况下阻止您破坏某些内容。
    • 这可能会使维护系统更加困难,因为在需要应用更新时,您需要将其重新安装为读写状态。
  • 改进的性能,特定服务/用途的功能。
    • 某些文件系统更适合特定的服务/应用程序,或者它们允许您配置文件系统,以便在某些情况下可以更好地运行。也许您的文件系统包含许多小文件,并且您需要更多的inode。或者,也许您需要存储一些大文件,虚拟磁盘映像。

我不认为对于每个系统都应该设置很多分区。就个人而言,在大多数Linux服务器上,我只设置了一个大分区。由于我的大多数系统的驱动器较小,并且用途单一,并且可以服务于某些基础结构角色(dns,dhcp,防火墙,路由器等)。在文件服务器上,我会进行设置分区以将数据与系统分开。

难道说分区会潜在地加速硬件故障,因为在将数据从一个分区移动或复制到同一磁盘上的另一个分区时,磁盘的抖动会引起磁盘故障吗?

我高度怀疑一个分区良好的系统是否会增加故障的可能性。


9
+1安全和灾难准备工作都是分层进行的。我喜欢考虑类似于船上舱壁的隔板。它们在那里,因此,如果在船舶的某一部分发生灾难性事故,整个船舶不一定就处于危险之中。因此,当文件系统损坏发生时,损坏就多少得到了遏制。同样,从安全角度来看,如果将/ homes挂载为noexec,则可以防止某些类型的攻击,例如,如果用户帐户受到弱密码的威胁。
3dinfluence

1
有一些已知的漏洞利用仅适用于以noexec或ro挂载的分区。真正的安全性不是以分区为目标的,但是分区可以帮助限制损害(例如cfr。日志泛洪攻击)
drAlberT

19

保持/ home /独立的一个原因是您可以重新安装操作系统,而不必担心丢失用户数据。除此之外,在挂载只读或noexec的所有内容时要具有很多安全性。如果用户无法在可以编写代码的任何地方运行代码,那么攻击向量就会减少一倍。

不过,我只会在公共计算机上烦恼它,因为一个分区中的磁盘空间不足而另一个分区中却存在磁盘空间不足,这是一个严重的麻烦。有一些方法可以解决此问题,例如进行软件突击检查或ZFS,您应该能够轻松地动态调整分区大小,但是我没有使用它们的经验。


/ home的分离听起来更像是台式机。在服务器上,数据通常位于/ var / www,/ srv等其他位置。我认为您的想法应该更多地是关于将用户数据存储在何处,而不只是将其存储在/ home中。
Zoredache

在用于科学处理的机器上,其常见之处是很多人都拥有外壳帐户。在这种情况下,单独的/ home分区可能非常有用。
jay_dubya

如果您拥有大量计算机,则/ home通常是文件服务器上的NFS挂载,由于同样的上述问题,文件服务器在逻辑上在其自己的分区上具有/ home。
Matt Simmons

用户将经常使用所有可用空间,这可能会对服务器提供的服务造成灾难性的影响。仅允许他们对单独的分区进行写访问,可以防止服务器因完整的根分区而发生故障。将您的日志文件放在单独的分区上也可以做到这一点。
克里斯·纳瓦

我认为磁盘配额和日志轮换是解决空间问题的更好解决方案,但是单独的分区确实是一种不错的最后安全机制

13
  • 简化备份

您可以备份(通过dumpfs或类似的东西)想要的东西,而不是不需要的东西。dump(1)是比tar(1)更好的备份系统。

  • 填满分区

这也是分区的理由。用户填满homedirs不会破坏服务器,关闭Web服务器,阻止日志发生,阻止root用户登录等。

它还允许您更透明地将数据部分(例如/ home)移动到另一个磁盘上:将其复制,安装。如果您使用的是允许卷影副本/快照/其他功能的东西,那么您甚至可以现场进行。


9

我一直被教导要把/ var放在一个单独的分区上,因此,如果您失去控制日志文件,则会阻塞单个分区而不是整个驱动器。如果它与系统其余部分位于同一空间,并且您100%填满整个光盘,则它可能会崩溃并造成令人讨厌的还原。


1
在我15年的职业生涯中,我可以依靠一只手(因为不是这样!),因为一个失控的日志文件(或其他任何原因)使一台机器瘫痪,我丢失了系统的次数。另一方面,我一方面可以指望今年到目前为止我受阻的次数,因为有人认为/ var永远都不需要大于1GB并出错,这让我看到了“ 00s free” / opt中的GB,所有这些都可能对我有好处。(我反对分区。:)
David Mackintosh,2009年

我同意David的看法,在Linux和Windows机器上都有完全相同的经验。除非有绝对的理由要这样做,否则每个磁盘(或RAID阵列)都将获得一个分区。
约翰·加迪尼尔

好吧,本周它确实发生在Windows系统上。迈克菲发布了一个重大更新。我们有大约5到10个不喜欢它的系统。该防病毒软件将尝试安装,创建35MB日志文件,然后重试。1,500次之后,我有0KB的可用空间,并且系统无法登录。
Skaughty

8

Zoredache提出的所有论点都是有效的。一个人可能会对细节有所怀疑(使计算机运行起来更快,这样您就可以做其他事情,而fsck处理其他文件系统对您的好处不是很大,如果系统首先存在的原因是在其他文件系统上) ; 但是,它们都是事后证明。

在过去的学校时代,您没有在单独的分区上放置文件系统,而是将它们放在单独的磁盘上,因为磁盘很小。考虑10MB。(1)因此,您有一个微型/分区,一个/ var磁盘,一个/ usr磁盘,一个/ tmp磁盘以及一个/ home磁盘。如果需要更多空间,请购买另一个磁盘。

然后,“大” 50MB磁盘的价格开始低于月球计划,并且突然之间就有可能将整个系统放在一个具有可用用户空间的磁盘上。

不过,与计算机可能生成的磁盘相比,磁盘大小较小,因此隔离/ var和/ opt和/ home以便填充一个磁盘不会导致计算机崩溃仍然是一个好主意。

今天,在企业环境中,我不对操作系统进行分区。数据被分割开,特别是如果它是用户生成的;但这经常是因为它在某种高速和/或冗余磁盘阵列上。但是/ var和/ usr都与/驻留在同一分区中。

在家庭环境中,同样的事情-/ home应该位于单独的磁盘/阵列上,以便可以安装/升级/破坏/修复所需的任何OS风格。

这样做的原因是因为无论您猜到/ var或/ usr多少大小,或任何树都可能会变大,您都将变得非常错误或过度使用。我的一个(旧)大学同事通过分区发誓,当他最终在我创建的系统上经历了180天的fsck攻击时,我总是会感到悲伤。但是,我可以依靠自己的整个职业生涯中某件东西被填充/关闭系统的次数,而我可以依靠一只手来计算今年到目前为止到目前为止我一直盯着某个人的系统的次数。决定/ var永远不需要超过(例如)1GB并出错,这让我盯着系统上其他地方的完整/ var和'00s的免费GB,所有这些都可能已经登上月球了他们对我的好处。

在当今的大磁盘世界中,我看不出有任何真正的理由来划分OS树。用户数据,是的。但是/ var和/ usr和/ var / spool等的单独分区等等?没有。


(1)=而且我知道只要选择那个大小,我就会在评论中让某人说10MB?豪华。为什么我们的磁盘仅仅是...


其实10 MB是磁盘的大小我第一次听到有人“XXX FooBytes:更多的内存比我以往任何时候都需要!”。虽然我是年轻人,所以大约是1982年。其他值分别是40 MB,320 MB,2.5 GB,40 GB,...数据会扩展为填充可用的存储空间。
dmckee,2009年

5

回复:

似乎分区大大增加了填充一个分区而其他分区具有大量可用空间的可能性。

在Linux机器上,使用LVM(逻辑卷管理)来防止这种情况。大多数文件系统都允许调整大小(有些甚至在线)。我为不同的用途创建了不同的分区,并将它们格式化为不同的文件系统(即:xfs,用于可以快速删除的大型下载文件)。需要更多的空间?挂载新驱动器,将数据移动到该驱动器,然后将其挂载到以前的数据位置。它与用户和应用程序完全无缝。

使用LVM,可以将磁盘或分区添加到卷组中,然后在该组中创建逻辑卷。如果在卷组中保留可用空间,则可以增加正在填充的分区。如果文件系统支持它(ext3,ext4,reiserfs),则可以缩小已过度分配的分区。

例如:在/ dev / sda1上创建一个引导分区,在/ dev / sda2上创建第二个(未格式化)分区。

pvcreate /dev/sda2 # add the partition to LVM
vgcreate vg /dev/sda2 # create a volume group with sda2 in it
lvcreate -n root -L5G vg
lvcreate -n home -L10G vg
lvcreate -n downloads -L100G vg

mkfs.ext3 /dev/vg/root
mkfs.ext4 /dev/vg/home
mkfs.xfs /dev/vg/downloads

mount /dev/vg/root /
mount /dev/vg/home /home
mount /dev/vg/downloads /downloads

当您在/ downloads上需要更多空间时(挂载文件系统时):

lvresize -L+50G /dev/vg/downloads
xfs_growfs /dev/vg/downloads

您现在拥有150GB的下载分区。类似的家。实际上,我今天只是调整了ext4 lvm“分区”的大小。另一方面,逻辑卷并不是真正的分区,而根据我的个人经验,您所说的分区大小不正确(麻烦多于其价值)。


4

毫无疑问,传统的Unix分区方案是一种古老的做法,没有以前那么有用。回顾Unix系统正常运行时间(以几年为单位)的那一天,您有成百上千的用户正在使用shell进行操作,将/ usr挂载为只读是保护系统的一种有用方法。现在,重新挂载文件系统以进行修补似乎更加耗费劳力,而没有那么有用。

在我过去的大学里,Unix集群具有使用标准unix工具的只读文件系统,附加应用程序位于/ usr / local中,后者是NFS,后来是AFS文件系统。其中一部分是便利...当您可以通过高速4Mb或10Mb网络运行应用程序时,谁愿意在集群中的十几个盒子上重新编译软件?如今,有了不错的软件包管理器和大量廉价磁盘,这已经不是什么大问题了。

我认为,早在1999年左右,使用Veritas Volume Manager的Sun机器上的思维流程就开始发生变化,这大大降低了移动磁盘的痛苦门槛。

今天,当我考虑分区时,我在考虑数据保护和性能。说明性示例:

  • 1层SAN非常快,非常可用(5个9),已复制且非常昂贵。关键任务数据库或事务日志位于此处。
  • 第2层SAN快速,可用(4个9个),价格昂贵。应用程序或优先级较低的数据位于此处。
  • 第3层SAN可用(4 9个),便宜。对性能不敏感的东西在那里生活。

这些注意事项也适用于Windows。我们有一台SCCM服务器,可管理约4万个客户端。数据库和日志位于mega-buck IBM DS8000磁盘上。软件包位于具有大型慢速SATA磁盘的EMC Celerra上,每GB成本降低60%。


2

我知道这个问题不是特定于操作系统的,对不对?

在Windows下,我倾向于给我的所有机器尽可能少的分区,但不少于两个分区-SYSTEM和DATA。如果计算机有两个物理磁盘,则一个(较小)为SYSTEM,另一个为DATA。如果只有一个磁盘,则将其分为两个分区。

这样做的原因仅仅是一个-当我需要重新安装计算机时(会有这样的时间),我不必担心SYSTEM分区的内容-我只需要对它进行完整格式化,然后全新安装。当然,这意味着必须将我的文档(最好还有台式机)映射到DATA上的文件夹,但这很容易做到,尤其是在Vista和更高版本上。

我还尝试制作更多的伴奏(例如GAMES,MUSIC,MOVIES等),但这只会导致其中的一些内容溢出到其他内容中,造成混乱而不是秩序。


在服务器上执行此操作更为适用。
SpaceManSpiff

2

(假定有一个大磁盘,)我将homevar放在单独的分区上,以控制“失去控制的[用户|日志文件]填满所有空间”问题,并允许轻松进行OS升级而无需动手,但一起休息

在较旧的硬件上,有时需要有一个单独的boot分区,以确保引导加载程序可以访问内核映像。


2

您提到其中一个磁盘已填充,而另一个磁盘具有可用空间,这是我进行分区的原因之一,因为我可以确保某些分区不会被填充。尽管使用配额管理的方式,但您必须在所有其他分区上为所有用户分配0配额,以确保他们设法找到目录后不会开始隐藏文件。可以写。

至于简化备份-如果我知道每个分区的最大大小,则可以确保它大小恰好适合单个磁带,并且可以在固定的时间内完成。

至于可靠性,我唯一能想到的就是监视-我可以更轻松地了解给定分区的增长速度是否超过其应有的增长速度,并提供给我研究的理由。

...现在,所有这些都已经说完了,我们距离每个用户在共享计算机上获得20MB配额的日子还很遥远。一些旧习惯没有道理-但当您的程序陷入疯狂并填充/ var(又会填充/),并且一切变得停顿时,生产机器上的保护并不是那么糟糕。

对于家庭,我有分区,但这只是为了更轻松地管理已安装的操作系统。


1

我个人只在孩子计算机上使用分区。我为OS创建了一个大分区,为OS分区的映像创建了一个小分区,这样当计算机启动时,我可以从映像中快速还原它。

在企业环境中,我从未听说过有关分区的令人信服的论点。


1

一切都适中是一件好事-它可以是在出现故障时隔离问题的好工具-例如磁盘填充或文件系统损坏。

请勿将其与硬件故障混为一谈-这些故障应由硬件冗余(RAID)处理

话虽这么说,如今的文件系统失败的频率却不那么高-有些人甚至进行在线完整性检查(例如ZFS)。因此,希望离线fsck会在某个时候消失...

另一方面,过度执行此操作仅意味着最终(对您和您的团队)需要做更多的工作-适度地,在有意义的时候进行...

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.