假设我使用 ext3 文件系统格式化了根目录,该文件系统位于单独的分区上,恰好存在于 SATA HDD 上,而主目录位于不同的 btrfs 分区上,恰好存在于 Intel SSD 上。
我从互联网上下载了一个文件并将其临时保存到/tmp
(根文件系统),然后我决定将其移动到我的主目录(第二个分区)。
mv
我可以感受到为了使这样一个简单的命令发挥作用而在后台发生的痛苦的过程。
那么,首先,根目录和主目录可以有不同的文件系统吗?其次,假设上一个问题的答案是“是”,操作系统如何管理所有这些转换,ext3
然后btrfs
为不同的磁盘类型(HDD 和 SSD)使用不同的设备驱动程序?
答案1
答案是肯定的,您可以在任何设备上拥有任何目录,运行操作系统可以支持的任何文件系统。
因此您/
/var
/home
/opt
甚至可以/home/afr0ck
在不同的设备、不同的分区、不同的文件系统上拥有。
您不仅可以这样做,而且这样做也很常见。例如,始终建议将/var
和保留/home
在不同的分区上,因为/
这些分区最有可能无意中占用磁盘空间 - 如果它们填满,也不会对系统造成太大影响。如果它们与 root 位于同一分区,则可能导致系统停止运行。
出于速度原因,您可能希望不同的目录在不同的设备上运行。并且出于不同的目的使用不同的文件系统。例如,也许 ext4 是您想要的 OS 文件,因为它们变化不大,但您可能希望 btrfs 用于 /home,以便保留快照进行备份。这些都是每个人可以根据其特定用例做出的决定。
操作系统的用户空间部分不需要了解不同的设备和文件系统类型。它所做的只是要求内核移动文件,然后内核从那里协调一切。因此命令mv
(例如)与文件系统和设备类型无关。内核调用读取和写入不同分区所需的任何驱动程序。
答案2
是的,单独的文件系统(挂载点)可以是不同的文件系统类型。
/proc
始终是procfs
文件系统,并且/sys
始终是sysfs
。 临时文件系统(有时包括/tmp
)通常是tmpfs
,并且在工作组设置中,用户的主目录(及其工作产品目录)通常是nfs
或其他远程(网络/共享)文件系统类型。
操作系统无需进行任何特殊管理。在用户级别,所有文件系统看起来都差不多,也就是说,ls
在任何目录中,列表看起来都差不多。超过这个限度,文件系统之间就不会相互作用。即使是同一物理磁盘上同一文件系统类型的两个文件系统(分区)之间也没有关联1。例如,将文件从一个文件系统(挂载点)移动到另一个文件系统总是涉及复制并删除原始文件。即使它们不是不同磁盘上的分区也没关系。即使其中一个是 HDD 而另一个是 SSD 也没关系。即使一个是ext3
而另一个是 也btrfs
没关系。即使一个是内部的(在计算机机箱内部),而另一个是外部的(外面几英寸,通过电缆连接)—— 或远程的(通过网络访问)。
说到网络,它有点类似于ssh
。它从键盘读取并将您输入的字符发送到网络。同时,它从网络读取并将结果显示在屏幕上。
或者考虑一下:假设您正在打电话,并且正在调解另一部电话上的人和房间里另一个人之间的对话。这没什么大不了的。________
1
除了符号链接 — 但它们可以跨越文件系统边界。