卖分区给我

我经常想知道为什么对分区驱动器有这样的热情,特别是在Unixy操作系统上(/ usr,/ var等)。 这似乎不是Windows安装常见的主题。

分区似乎大大增加了填充一个分区的可能性,而其他分区则有很大的空闲空间。 显然这可以通过仔细的devise和规划来防止,但事情可能会改变。 我经常在机器上经历过这种情况,大部分是由其他人设置的,或者是有问题的操作系统的默认安装设置。

我听到的另一个说法是它简化了备份。 它如何简化备份? 我也听说它提高了可靠性。 又如何呢?

磁盘存储遇到的几乎100%的问题是磁盘物理故障。 难道有人会争辩说,分区可能会加速硬件故障,因为在同一磁盘上将数据从一个分区移动或复制到另一个分区时,磁盘会发生抖动?

我并没有试图太过摇摆不定,我只想看到一个古老的pipe理实践的理由。

  • 更快的fsck。 假设你的系统出于某种原因失败了,当它重新启动时,它需要运行一个fsck。 有一个非常大的分区,fsck可以永远占用系统中的任何东西,直到整个系统的fsck完成。 如果对系统进行分区以使根分区非常小,那么您可能可以启动系统,并在等待较大卷的fsck完成时运行一些基本服务。
    • 如果你的系统有小驱动器,或者系统上只有一个服务,那么这可能并不重要。
    • 对于日志文件系统,大部分时间可能并不重要,但有时甚至在使用日志文件系统时也必须运行完整的fsck。
  • 由于您可以以只读方式安装fs,所以安全性得到了提高。
    • 例如,在正常使用过程中,没有人需要写入/ usr。 那么为什么不安装文件系统,以便它是只读的。 让文件系统在不需要写入的情况下是只读的,这样可以防止一些脚本 – 小子的攻击,并且可以防止你在没有意义的情况下破坏事物。
    • 这可能会使维护系统变得更加困难,因为当您需要应用更新时,您需要将其重新挂载为读写。
  • 改进的性能,针对特定服务/使用的function。
    • 某些文件系统更适合于特定的服务/应用程序,或者它们允许您configuration文件系统,以便在某些情况下运行得更好。 也许你有一个有很多小文件的文件系统,你需要更多的inode。 或者,也许你需要存储大量的大文件,虚拟磁盘映像。

我不认为设置大量的分区是你应该为每个系统做的事情。 就个人而言,在我的大部分Linux服务器上,我只是设置了一个大的分区。 由于我的大部分系统都具有小巧的驱动器,并且具有单一用途,并为某些基础设施angular色(dns,dhcp,防火墙,路由器等)提供服务。 在我的文件服务器上,我设置了分区来将数据从系统中分离出来。

难道有人会争辩说,分区可能会加速硬件故障,因为在同一磁盘上将数据从一个分区移动或复制到另一个分区时,磁盘会发生抖动?

我非常怀疑一个分区很好的系统会有什么增加失败的可能性。

保持/ home / seperate的一个原因是你可以重新安装操作系统,不用担心丢失用户数据。 除此之外,在安装一切只读或不执行安全性。 如果用户不能在代码编写的任何地方运行代码,那么它就是less一个攻击向量。

尽pipe如此,在公共机器上我只会为此感到困扰,因为一个分区中的磁盘空间不足,而另一个分区中的磁盘空间不足,这是一个严重的问题。 有办法解决这个问题,就像做软件RAID或者ZFS,你应该可以很容易地dynamic调整分区大小,但是我没有经验。

  • 简化备份

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

  • 填满分区

这也是分区的一个论据。 用户填满他们的家庭不会破坏服务器,closuresnetworking服务器,保持日志发生,保持根login等。

它还允许您更透明地将一部分数据(比如/ home)移动到另一个磁盘上:将其复制并挂载。 如果您使用的是允许卷影副本/快照/任何东西,您甚至可以直播。

我总是被教导把/ var保存在一个单独的分区上,所以如果你得到一个失控的日志文件,你将堵塞一个分区而不是整个驱动器。 如果它与系统的其他部分位于同一个空间,并且100%填满了整个光盘,则可能会崩溃并导致恶意恢复。

所有Zoredache提出的论点都是有效的。 有人可能会对这些细节有所质疑(有一台机器更快,所以你可以做其他的事情,而如果系统存在的原因是在其他文件系统上,那么对其他文件系统进行备份并不是很好) ; 不过,事实上他们都是有点理由的。

在真正的老派时代,你没有在单独的分区上的文件系统 – 你有他们在不同的磁盘上,因为磁盘是非常小的。 认为10MB(1)所以你有一个微小的/分区,/ var磁盘,/ usr磁盘,/ tmp磁盘和/ home磁盘。 如果你需要更多的空间,你买了另一个磁盘。

然后,“大”50MB的磁盘开始成本低于月亮计划,突然间,有可能把整个系统放在一个磁盘用户空间可用。

尽pipe如此,与计算机可能生成的磁盘大小相比,磁盘大小仍然很小,因此隔离/ var和/ opt和/ home以便填充一个并不会使计算机停机是一个好主意。

今天,在企业的情况下,我不分区操作系统。 数据被分离出来,尤其是在用户生成的情况下。 但经常是因为它在高速和/或冗余的某种磁盘arrays上。 但是/ var和/ usr全都和/一起存在于同一个分区中。

在家庭环境中,同样的事情 – / home可能应该放在一个单独的磁盘/arrays上,以便可以安装/升级/打破/修复所需的操作系统风格。

原因是因为无论你猜到你的/ var或/ usr或者其他任何树可能有多大 – 你都可能是搞错了,或者你会过分地搞错了。 我的一个老学校的同事发誓要分区,当他坐在一个我创build的系统上,坐了180天时,我总是对他感到悲伤。 但是我可以一直指望我整个职业生涯中被某些东西填满/放下系统的次数,而我可以用一只手来衡量今年到目前为止我一直在盯着某个人决定/ var将永远不会超过(比如说)1GB,并且是错误的,让我盯着一个完整的/ var和00秒的系统上的其他地方的免费GB,所有这些都可能已经在月球上他们对我的好处。

在当今大磁盘的世界里,我没有看到有任何真正的理由来划分操作系统树。 用户数据,是的。 但单独的分区为/ var和/ usr和/ var / spool等等等等? 没有。


(1)=而我只是通过select这个大小就知道了,我会在10MB的评论中find一个人呢? 豪华。 为什么我们的磁盘只是…

回复:

分区似乎大大增加了填充一个分区的可能性,而其他分区则有很大的空闲空间。

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

借助LVM,您可以将磁盘或分区添加到卷组中,然后在该组中创build逻辑卷。 如果将空闲空间留在卷组中,则可以增加正在填满的分区。 如果文件系统支持它(ext3,ext4,reiserfs),则可以缩小已经分配的分区。

例如:在/ dev / sda1上创build一个启动分区,创build第二个(未格式化的)分区/ 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 

当/下载需要更多空间时(文件系统安装时):

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

你现在有一个150GB的下载分区。 类似的家庭。 实际上,我今天只调整了一个ext4 lvm“分区”。 另一方面,逻辑卷并不是真正的分区,你所说的分区与我的个人经验(比他们的价值更麻烦)是错误的大小。

传统的Unix分区scheme肯定是旧式的做法,不像以前那样有用。 早在当年Unix系统运行时间被测量的那一天,你就有成百上千的用户使用shell进行testing,安装/ usr作为只读是保护系统的有用方法。 现在重新安装文件系统来补丁似乎更加劳动密集,并没有那么有用。

早在我的大学,Unix集群拥有标准unix工具的只读文件系统,附加应用程序位于/ usr / local,后者是NFS,后来是AFS文件系统。 其中一部分是方便的…当你想通过高速,4Mb或10Mbnetworking运行应用程序时,谁想要在群集中的十几个盒子上重新编译软件? 今天,有着体面的包装经理和大量廉价的磁盘,这不是什么大不了的事情。

我认为,Veritas Volume Manager在1999年左右的Sun机箱上,我的思维过程开始发生变化,这大大降低了磁盘移动的痛苦阈值。

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

  • 1级SAN非常快,非常可用(5个9),复制,并且非常昂贵。 关键任务数据库或事务日志居住在那里。
  • Tier 2 SAN速度快,可用(4 9),价格昂贵。 应用程序或更低优先级的数据在这里。
  • Tier 3 SAN可用(4 9的),便宜。 那些对性能不敏感的东西就在那里。

这些考虑也适用于Windows。 我们有一个SCCM服务器,可以pipe理大约40k个客户端。 数据库和日志位于超级IBM DS8000磁盘上。 这些软件包位于EMC Celerra上,配有大容量,速度慢的SATA磁盘,每GB成本降低60%。

我明白这个问题不是特定于操作系统的,对吗?

在Windows下,我倾向于将所有机器尽可能less的分区,但不less于两个 – SYSTEM和DATA。 如果机器有两个物理磁盘,则一个(较小)将是SYSTEM,另一个是DATA。 如果只有一个磁盘,我把它分成两个分区。

原因是只有一个 – 当我需要重新安装机器(而且会有这样的时间),我不必担心SYSTEM分区的内容 – 我只是做一个完整的格式和一个干净的安装。 这当然意味着我的文档(也是最好的桌面)必须映射到DATA上的一个文件夹,但这很容易做到,尤其是在Vista和更高版本上。

我也试着做更多的部分(比如游戏,音乐,电影等等),但是这只会导致其中一些部分溢出到其他部分,造成比订单更多的混乱。

(假设有一个大磁盘可用),我把homevar放在不同的分区上,以控制“无法控制[用户|日志文件]填满所有空间”的问题,并允许在不触及家中的情况下轻松升级操作系统把其余的放在一起。

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

你提到一个磁盘填充,而另一个有空闲空间 – 这是我分区的原因之一 – 因为我可以确保某些分区填满。 尽pipe配额pipe理的方式,你必须分配所有的用户在其他分区的0配额,只是为了确保他们没有开始隐藏文件,如果他们设法find一个目录他们可以写信给。

至于简化备份 – 如果我知道每个分区的最大尺寸是多less,我可以确定它的大小是整齐地放在一个磁带上,并且可以在一个固定的时间内完成。

至于可靠性,我能想到的唯一的事情就是监测 – 我可以更容易地看到给定分区的增长超过它应该是什么时候,并给我理由来看看它。

现在,所有这些都说了,我们距离每个用户在共享机器上给予他们20MB的小配额的日子还很遥远。 一些旧的习惯是没有道理的 – 但是当你有一个过程变得疯狂,并填充/ var,而这又反过来填满了,而事情就会停下来,对生产机器来说,保护并不是那么糟糕。

对于家庭,我有分区,但只是为了便于pipe理已安装的操作系统。

我个人只使用我的孩子的电脑分区。 我为操作系统创build了一个大的分区,为操作系统分区创build了一个小分区,这样当机器被攻击时,我可以很快地从映像中恢复它。

在企业环境中,我从来没有听说过有关分区的有力论据。

一切都适中是一件好事 – 它可以是一个很好的工具来隔离问题时,如磁盘填满或文件系统损坏。

不要混淆硬件故障 – 这些应该由硬件冗余(RAID)

话虽如此,文件系统现在失败的频率更低,即使在线完整性检查(如ZFS)。 所以希望离线fsck将消失在某个点上…

另一方面,过度这样做只会意味着更多的工作(对于你和你的团队来说) – 只要适度地做,当它是有道理的。