我正在理解 HFS Linux 标准文档,但我无法超越这个概念。
我不明白的概念可以通过以下引文来证明:
根文件系统的内容必须足以启动、恢复、恢复和/或修复系统。
首先,我可能误解了“根文件系统”的含义。它听起来像是特定的“/”目录及其所有子目录。
但接下来的说法似乎与原来的观点相冲突:
“平衡这些考虑因素的主要目的是将根文件系统尽可能小,这些考虑因素倾向于将许多东西放在根文件系统上。出于多种原因,最好将根文件系统保持较小。...它偶尔会从非常小的介质上安装。”
如果你挂载“ / ”,那么你就是在挂载整个系统,不是吗?(也许文档的意思是我们将“ / ”中的不同目录放在不同的分区上,例如将 /bin、/sbin 放在“根分区”中,而将“/usr、/home、/media、/mnt”放在其他地方。那么为什么“/usr、/home、/media、/mnt”包含在根文件系统中,而不是包含在独立的系统中?
这又回到最初的问题:系统除了根文件系统还有什么?如果数据只是放入子目录,那么将其“放在不在根文件系统中”有什么用呢?
答案1
这里的问题是“文件系统”这个词。在 POSIX/Unix/Linux 世界中,它有几种不同的含义。
- “文件系统”有时是整个文件系统,根植于
/
操作系统内核并由操作系统内核呈现给应用软件。出于这个含义,人们谈论 POSIX 操作系统具有“单一文件系统树“, 例如。 - “文件系统”有时是一个(或多个)切片一个(或多个)DASD — 一个或多个连续磁盘扇区的集合,格式化为单个体积具有给定格式——由某些磁盘分区方案划分。出于这个原因,人们谈论“格式化我的
/usr
文件系统“。 - “文件系统”有时是文件系统驱动程序(即 VFS 层)向系统其余部分呈现的抽象文件和目录连接树。出于这个含义,人们谈论“挂载proc 文件系统在
/proc
”。
你的“根文件系统”指的是 #2。它通常被称为系统音量:DASD 中安装的(几乎总是单个)切片/
,所有其他磁盘卷和其他文件系统(即 #3)依次安装在其顶部。(启动卷在适用的情况下,是一个单独的卷:一个单独的、单一的 DASD 切片,其中包含操作系统引导加载程序机器固件引导的代码,至少在 Linux/BSD 世界中,在/boot
需要时通常安装在根卷的顶部。)操作系统救援和紧急维护模式通常不会安装除根卷之外的任何其他卷,因此,如上所述,此类维护所需的一切都需要位于根卷上。
类似地,通过将正常运行中写入的所有内容(日志文件、用户数据文件、经常更改的非维护配置文件)推到另一卷上,远离通常只读的内容(如系统实用程序二进制文件、库、静态配置文件),将系统配置为对特定卷的写入活动很少甚至没有,这意味着在发生硬件故障和异常关机时,卷损坏的可能性较低。对于根容量损坏可能会导致系统即使在维护/救援模式下也无法启动。
答案2
分区上的所有内容都挂载为。为、等/
位置挂载单独的分区是很常见的。/var
/tmp
/usr
例如,/bin
包含对于启动/恢复系统很重要的程序,它应该位于根文件系统上,但/usr/bin
不能位于单独的(可能是远程的)文件系统上。