问题描述
在使用”something else”选项安装Ubuntu时,我发现有许多文件夹可以安装在不同的分区上,如下图所示。
那么在不同的分区上安装这些文件夹(或目录)的优点和缺点是什么?
特别是目录是
-
/boot
-
/home
-
/tmp
-
/usr
-
/var
-
/srv
-
/opt
-
/usr/local
最佳解决方案
很久很久以前…
…曾经有一段时间人们习惯安装Linux并根据他们的特定需求手动配置它。即使在今天,对于服务器来说也是如此。您在gparted
中看到的选项是那些与普通桌面用户(Ubuntu桌面的目标受众)相比需求非常不同的用户的一些选择。
让我们一次拿走这一个。我会跳过那些我不太了解的。
-
/boot
曾经有一段时间Linux文件系统很脆弱且硬盘很小。人们担心硬盘驱动器会填满或损坏,Ubuntu无法启动。将内核保存在单独的分区中有助于系统在出现其他问题时启动。在那些日子里,Linux用户习惯于编译自己的内核并清理旧的内核。就像Ubuntu 16.04 LTS一样,Software Updater应用程序安装了最新的内核更新,但没有删除旧内核。结果,一个小的/boot
分区填满了旧内核,系统停止启动,除非定期清理它。如果您有一个单独的/boot
分区而忘记定期清理它会发生什么:如何在/boot中释放更多空间?使用Ubuntu 18.04 LTS软件更新程序应用程序不仅可以保留系统up-to-date,还可以删除旧内核。 -
另一方面,如果要加密
/
分区(以保护您正在使用的秘密软件),则需要一个单独的(未加密的)/boot
分区。否则系统将无法启动。同样,如果您有RAID驱动器,则将/boot
保留在non-RAID分区中可能很有用。许多人认为,由于这些原因和其他原因,有一个单独的/boot
分区是一个非常好的主意。 -
/home
保持在一个单独的分区的家仍然有一定道理。此文件夹/分区包含您的个人文件,并将其放在单独的分区中,允许您格式化/
并重新安装Ubuntu,同时保持文件不变。最新版本的Ubuntu安装软件包括从DVD /USB更新的选择。此选项使/home
保持不变,即使它不在单独的分区上也是如此。如果主驱动器中的空间不足,则使用/
分区。您可能需要添加新驱动器并在新驱动器中创建单个/home
分区。 -
/tmp
是临时文件的位置。如果您正在运行创建大型临时文件的服务器,它们可能会填满所有磁盘空间并使服务器停止运行。将它保存在单独的分区中只会填满该分区,并可能会停止创建大临时文件但不会停止系统其余部分的进程。我被告知处理填充的/tmp
分区比/
分区下的临时文件夹更容易。 -
/usr/
,/opt/
和/usr/local
都是程序和应用程序在不同条件下保存的地方。如果您为Linux开发软件,将它们保存在单独的分区中可能是有意义的,这样如果您重新安装Ubuntu,则不会删除您编写或正在处理的程序。 -
将
/opt/
和/usr/local
保存在单独的分区中也是有意义的,如果您从源(您自己或其他地方)安装程序并希望在其自己的分区中安装在同一计算机中的另一个分发(例如Red Hat)中使用它们。然后,两个发行版,Ubuntu和Red Hat都可以共享/opt
和/usr/local
分区。 (谢谢Rmano!) -
如果您运行服务器或开发网页,
/srv
和/var
作为单独的分区特别有用。对于普通桌面用户来说,这些文件夹不会占用太多空间,也不会保存对用户有价值的任何内容。对于失去/var/www
的网络开发者来说,可能意味着失去工作。
可以肯定的是,这些不是可以作为分区挂载的唯一目录。在Linux中,可以将分区作为任何文件夹安装在任何位置。分区通常安装为/mnt/
和/media
的sub-directories。
希望这可以帮助
次佳解决方案
拥有多个分区的一般优点:
-
您可以使用不同的磁盘/LUN并获得更好的性能。这可以提高数据库的性能,因为您可以将事务日志存储在存储上,将数据文件存储在另一个存储上。类似于磁盘I /O密集型Web应用程序。
-
您可以使用不同的挂载选项(以更精细的方式提高安全性或影响性能或稳定性)
-
您可以拥有不同的文件系统
-
您可以单独管理空间。所以你可以拥有一个讨厌的应用程序来填充不影响其他应用程序的空间。
-
一个分区的碎片独立于另一个分区。
-
您可以独立地对这些文件系统的性能进行快照,装载,卸载,格式化,碎片整理和监视。
-
您可以对特定卷进行加密。
-
您可以按需安装卷。
拥有多个分区的一般缺点:
-
它增加了管理开销。
-
您将有更多机会浪费更多磁盘空间。
-
您将有更多涉及磁盘已满的事件。
-
创建在不同卷上运行的应用程序的一致快照更加困难。
-
它使用稍多的资源。
-
根据卷类型(MS-DOS标签,LVM,btrfs …),您可能无法通过缩小另一个来轻松地从卷中分配空间。特别是在线。
对系统进行分区的另一种方法是使用LVM,btrfs或zfs作为/。仅为/分配最小空间,并在需要时创建逻辑卷或扩展/。这使您可以选择在以后拆分卷并降低维护成本。
现在具体的东西:
-
/boot最好是一个单独的分区。文件系统必须是引导加载程序(通常是GRUB)支持的文件系统。
-
如果使用EFI /UEFI,则需要具有EFI系统分区。
-
/home可以将用户资料与操作系统和应用程序分开。
-
/tmp可以使用noexec,nodev,nosuid挂载。它可以是内存映射的fs,如tmpfs。
-
/usr可以安装read-only并且只重新安装rw进行更新,它可以像NFS共享一样远程。
-
/srv /opt将存储应用程序和应用程序数据。如果您有一个I /O密集型应用程序,您可以使用更好的磁盘子系统(例如SSD)
-
/usr /local是当前计算机上本地安装的应用程序使用的默认值。例如,您在NFS上拥有其他所有内容并拥有本地磁盘……
没有完美的解决方案。如果您没有明确的理由创建新分区,那么请不要。除了/之外,您可能需要创建的唯一分区是/boot。
对于台式机/笔记本电脑来说/home很不错,这样您就可以独立于数据重新安装操作系统。
第三种解决方案
对于桌面?
没有不同。
对于服务器?
空间管理和备份。
如果您的系统有很多用户,您可以为/home /创建额外的分区,那么用户将不会占用该空间,并且root(/)不会受到影响。
您还可以在这些文件夹上的其他物理磁盘上安装NFS,SMB或分区。例如 :
/dev /sda1 /boot(1GB)
/dev /sda2 /(60GB)
nfs://IP /文件夹/home(X TB)
/dev /sdb1 /var(/var /www或/var /ftp为1TB)
适用于笔记本
/在m-sata上(快)
/var /home /opt /tmp on hdd(slow)
第四种方案
przemo的答案,imo,最接近实际点。以下是一些其他实际考虑因素:
企业环境通常在/opt下为/,/home,/opt,/var,/boot和其他文件系统(每个应用程序或应用程序团队1个)使用单独的分区。这主要是为了避免由于某人主目录变得庞大(/home),日志失控(/var)或占用大量空间的应用程序(/opt,/opt //等)而导致系统空间不足和/boot,以便其他分区可以在LVM中构建,并且还可以确保在主系统分区由于某种原因而损坏时可以获得某些恢复shell。
对于我自己的个人non-server使用,我只保留单独的/,/boot和/home分区,以便我可以双启动多个Linux /UNIX操作系统并为它们使用相同的/home分区。
在Oracle Virtualbox,VMWare Player /Workstation /Fusion等中构建VM以供个人使用的情况下,由于至少VirtualBox提供了良好的文件夹共享功能,因此实际上没有理由让多个分区具有不同的挂载点和VMWare播放器/工作站/Fusion。对于我的”enterprise environment”段落中给出的恢复shell原因,单个异常可能是/boot。
第五种方案
如果在更新或主要版本升级期间出现问题,则在不同分区上安装/home允许您从CD启动,然后完全擦除并重新安装操作系统而不会丢失数据。此外,这使得可以使用各种Linux发行版进行多次启动,有些人喜欢并排评估这些内容。
参考资料