在这里,我说说一开始Linux为什么需要分区。
因为 Linux 是一个多用户操作系统。
多用户意味着一个问题:并非所有用户的操作都是可控的。
而系统正常运行的话,必须要一定的剩余空间。
这也就意味着:如果一个用户自己把空间占满了,它不应当影响系统的正常运行。
这也就是 /home 分区当初一定要单独分区的道理。因为 /home 分区给普通用户使用,他如果把空间占满了,会导致系统不可用。
而 / 分区如果与 /home 分区独立,用户把 /home 写满,不影响 / 分区上的系统正常使用。
这也是 /root 用户的分区不在 /home 下的原因,要确保普通用户把空间占满的时候 ,root 用户还能正常的登录进系统,正常操作,因为 /root 是在 根分区下的。
/boot 分区为什么常常独立挂载呢?这是因为,/boot 分区在启动之后就不再修改,因此把它独立挂载为只读分区,更安全,(是教科书这么说的,虽然我个人认为这个所谓的安全性存疑,如果一个应用程序拥有改写 boot 分区的权限,它又怎么会不知道 remount boot 分区为可写呢?)
同样的道理,为什么某些应用或者服务,建议挂载到独立的分区,比如 /opt?
是因为这些应用或者服务会不断的生成数据。一旦他们生成的数据(比如日志)涨满了磁盘,可能导致系统无法使用,无法登录。而把他们放到独立的分区,就能确保根分区 / 始终可以使用。
另外一个比较特殊的是交换分区。交换分区的存在,一开始是为了解决如何更好的利用所有的内存这个问题。因为内存接近满的时候,整个系统可用性会非常低,这也就意味着,你安装的一部分内存,可能永远都没有机会用到。但交换分区的存在就意味着你真的能用满硬件配备的内存,同时把一小部分放进交换分区。个人建议是配备到256M~2G之间就行。假定你的系统需要预留2G内存空间保证正常运行,那你有16G内存实际上只能用到14G,但如果加了2G的交换文件,你实际上就可以用满16G内存依然还有2G内存空间。配备更大交换文件的意义感觉不大。
对于服务器来说,交换分区的意义相对较小,这是因为服务器如果爆内存基本意味着需要加内存或者有内存泄漏了,都是需要解决的严重问题,让得不到内存的程序死掉才是最好的方案。
而且服务器不怕死,就怕慢。服务器如果死掉,立马就能被检测到,然后热备份,冷备份,负载均衡的服务器都可以顶上。但服务器如果慢,卡顿,是没法很快得到反应的。没有交换分区能够使服务器程序在缺少内存的时候尽快崩溃,从而尽快触发备份服务器上线以及负载均衡服务器上线。若是加交换分区,则使得缺少内存的服务器不能及时崩溃,变得卡顿,这种卡顿会拖累所有服务的响应速度,降低整个服务的可靠性,而且问题查起来要困难得多:你维护一个服务器群的时候,某个服务器挂掉是很好查的,但某个服务器卡顿则相对难定位得多。
也就是说,这些分区,其实都是从服务器运维的角度,有必要存在。
然而,如果你把 Linux 当作一台单用户的 PC ,作为桌面而非服务器使用,上面这些分区其实很多情况下都是没有必要的。就算真的把根分区塞满了,在能够物理接触到主机的情况下,很多问题也有办法解决,而不像服务器,一旦出了必须进机房才能解决的问题,就比较不方便,所以通常,运维会力求将问题控制在远程能解决的范畴内。
总结:Linux各个分区的作用,是为了在极端情况下方便服务器运维处理异常。如果你的 Linux 不是一台服务器,而是一台桌面开发PC,那么这些分区大部分情况下并无必要。