把分区卖给我

Zim*_*BBY 46 partition

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

似乎分区大大增加了填充一个分区的可能性,而其他分区则有大量可用空间。显然,这可以通过仔细的设计和规划来防止,但事情可能会发生变化。我在机器上多次遇到过这种情况,主要是在其他人设置的机器上,或者通过相关操作系统的默认安装设置。

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

我在磁盘存储方面遇到的几乎 100% 的问题都与磁盘的物理故障有关。是否可以争论分区可能会加速硬件故障,因为在将数据从一个分区移动或复制到同一磁盘上的另一个分区时,磁盘会发生颠簸?

我并没有想太多,我只想看到一个古老的管理实践的理由。

Zor*_*che 41

  • 更快的 fsck。假设您的系统由于某种原因而失败,并且在重新启动时需要运行 fsck。对于一个非常大的分区,fsck 可以永远占用,并且在整个系统的 fsck 完成之前,系统上的任何内容都不会工作。如果您对系统进行分区以使根分区非常小,那么您可以在等待较大卷的 fsck 完成时启动系统并运行一些基本服务。
    • 如果您的系统有小驱动器,或者系统上只有一项服务,那么这可能并不重要。
    • 对于日志文件系统,这在大多数情况下可能无关紧要,但有时即使使用日志文件系统,您也必须运行完整的 fsck。
  • 提高了安全性,因为您可以以只读方式挂载 fs。
    • 例如,在正常使用期间,没有人应该需要写入 /usr。那么为什么不直接挂载文件系统,使其成为只读的。在不需要写入时将文件系统设为只读将防止一些脚本小子攻击,并且可能会阻止您在不需要时破坏事物。
    • 这可能会使维护系统变得更加困难,因为当您需要应用更新时,您需要将其重新挂载为可读写。
  • 改进了特定服务/使用的性能和功能。
    • 某些文件系统更适合特定的服务/应用程序,或者它们允许您配置文件系统,使其在某些情况下运行得更好。也许你的文件系统有很多小文件,你需要更多的 inode。或者也许您需要存储一些大文件、虚拟磁盘映像。

我不认为设置大量分区是你应该为每个系统做的事情。就我个人而言,在我的大多数 Linux 服务器上,我只设置了一个大分区。由于我的大多数系统都具有较小的驱动器并且是单一用途并服务于一些基础设施角色(dns、dhcp、防火墙、路由器等)。在我的文件服务器上,我设置分区以将数据与系统分开。

是否可以争论分区可能会加速硬件故障,因为在将数据从一个分区移动或复制到同一磁盘上的另一个分区时,磁盘会发生颠簸?

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

  • +1 安全和灾难准备都是分层完成的。我喜欢想到类似于船上舱壁的隔板。他们在那里,所以如果在船舶的某一部分发生灾难性的事情,整艘船不一定处于危险之中。因此,当文件系统损坏发生时,损害在一定程度上得到了控制。同样,从安全的角度来看,如果 /homes 挂载为 noexec,它可以防止某些类型的攻击,例如,如果用户帐户受到弱密码的危害。 (9认同)

sem*_*emi 19

将 /home/ 分开的原因之一是您可以重新安装操作系统而不必担心丢失用户数据。除此之外,安装只读或noexec的所有内容都需要很多安全性。如果用户无法在他们可以编写代码的任何地方运行代码,那么攻击向量就少了一个。

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


Bil*_*iss 13

  • 简化备份

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

  • 填充分区

这也是分区的一个论点。用户填写他们的 homedirs 不会破坏服务器、关闭 Web 服务器、阻止日志发生、阻止 root 登录等。

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


Ska*_*hty 9

我一直被教导将 /var 保存在一个单独的分区上,因此如果您得到一个失控的日志文件,您将阻塞单个分区而不是整个驱动器。如果它与系统的其余部分位于相同的空间并且您 100% 填满了整个光盘,它可能会崩溃并进行令人讨厌的恢复。


Dav*_*osh 8

Zoredache 提出的所有论点都是有效的;人们可能会在细节上有点狡辩(让机器运行得更快,这样你就可以做其他事情,而 fsck 其他文件系统对你没有多大好处,如果系统首先存在的原因是在那些其他文件系统上) ; 然而,它们都是事后的理由。

在真正的老派时代,您没有在单独的分区上拥有文件系统——它们在单独的磁盘上,因为磁盘非常小。想想 10MB。(1) 所以你有一个很小的 ​​/ 分区、一个 /var 磁盘、一个 /usr 磁盘、一个 /tmp 磁盘和一个 /home 磁盘。如果您需要更多空间,您可以购买另一张磁盘。

然后“大”50MB 磁盘的成本开始低于月球程序,突然之间,将整个系统放在一个具有可用用户空间量的磁盘上成为可能。

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

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

在家庭环境中,同样的事情——/home 可能应该在一个单独的磁盘/阵列上,这样人们就可以安装/升级/中断/修复任何需要的操作系统风格。

这样做的原因是因为无论您猜测您的 /var 或 /usr 或任何可能获得的树有多大——您要么大错特错,要么可笑地过度投入。我的一位老同事发誓要分区,当他最终坐在我创建的系统上度过 180 天的 fsck 时,我总是从他那里感到悲伤。但是我可以用一只手数算我整个职业生涯中某些东西被填满/并关闭系统的次数,而我可以一只手数数今年到目前为止我一直盯着某个系统的次数决定 /var 永远不需要超过(比如)1GB 并且是错误的,让我盯着系统上其他地方的完整 /var 和 00 多个可用 GB,所有这些都可能已经在月球上他们对我的好处。

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


(1) = 我知道只要选择那个大小,我就会在评论中看到有人说10MB?奢华。为什么我们的磁盘只是...


Swo*_*gan 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
Run Code Online (Sandbox Code Playgroud)

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

lvresize -L+50G /dev/vg/downloads
xfs_growfs /dev/vg/downloads
Run Code Online (Sandbox Code Playgroud)

你现在有一个 150GB 的下载分区。家用类似。事实上,我今天刚刚调整了一个 ext4 lvm“分区”的大小。另一方面,逻辑卷并不是真正的分区,您所说的分区大小错误与我的个人经验相符(麻烦多过它们的价值)。