根分区和主分区是否可能具有不同的文件系统并位于不同的物理设备上?

Kar*_*uil 11 linux filesystems

想象一下,我使用 ext3 文件系统格式化根目录,该文件系统位于恰好存在于 SATA HDD 上的单独分区上,而主目录位于恰好存在于 Intel SSD 上的不同 btrfs 分区上。

我从 Internet 下载了一个文件并临时保存到/tmp(在根文件系统中),然后我决定将它移动到我的主目录(第二个分区)。

我能感受到在后台发生的痛苦的过程,使这样一个简单的mv命令起作用。

那么,首先,root 和 home 是否有可能拥有不同的文件系统?其次,假设答案前面的问题是“是”,如何在OS管理所有从转变ext3btrfs,然后使用不同的设备驱动程序不同磁盘类型(HDD和SSD)?

Pau*_*aul 27

答案是肯定的,您可以在任何设备上拥有任何目录,运行操作系统可以支持的任何文件系统。

因此,您/ /var /home /opt甚至可以/home/afr0ck在不同的设备、不同的分区、不同的文件系统上拥有甚至。

不仅可以,而且很常见。例如,始终建议将/var和保留/home在不同的分区上,/因为它们最有可能无意中消耗磁盘空间 - 如果它们填满,则不会对系统产生太大影响。如果它们与 root 位于同一分区,则可能导致系统停止。

出于速度原因,您可能希望不同的目录在不同的设备上运行。并为不同的目的使用不同的文件系统。例如,也许 ext4 是您想要的操作系统文件,因为它们没有太大变化,但您可能需要 /home 的 btrfs,以便您可以保留快照以进行备份。这些都是每个人可以针对其特定用例做出的所有决定。

操作系统的用户空间部分不需要了解不同的设备和文件系统类型。它所做的一切都是要求内核移动文件,内核从那里编排所有内容。因此mv命令(例如)与文件系统和设备类型无关。内核调用读取和写入不同分区所需的任何驱动程序。

  • 有必要指出 `mv(1)` 首先尝试 [`rename(2)`](http://man7.org/linux/man-pages/man2/rename.2.html) 文件。然后它回退到复制和删除。因此,尝试重命名是 `mv` 如何以与 FS 无关的方式确定是否可行。(`rename(2)` 在不同设备之间移动时总是失败,无论它们是否使用相同的文件系统驱动程序,@afr0k。) (7认同)
  • @stanri:`mv` 不会派生/执行 `rename(1)` 命令,它只是尝试 `rename(2)` 系统调用。没有标准的“重命名”shell 命令。在某些系统上,它是来自 util-linux 的模式替换多文件重命名命令。我不是在谈论 shell 命令,而是在谈论 `mv` 在内部是如何工作的。 (5认同)

G-M*_*ca' 7

是的,单独的文件系统(挂载点)可以是不同的文件系统类型。  /proc始终是一个procfs文件系统,并且/sys始终是一个sysfs. 临时文件系统(有时包括/tmp)通常是tmpfs,并且在工作组设置中,用户的主目录(及其工作产品目录)通常是nfs或其他远程(网络/共享)文件系统类型。

操作系统没有任何特殊的管理要做。在某种程度上,在用户级别,所有文件系统看起来都很相似,因为ls列表在任何目录中看起来都几乎相同。除此之外,文件系统不会交互。即使在同一物理磁盘上的两个文件系统(分区)之间,文件系统类型相同,也不存在链接1。例如,将文件从一个文件系统(挂载点)移动到另一个文件系统总是涉及制作副本和删除原始文件。如果它们是不同磁盘上的分区,则无关紧要。如果其中一个是 HDD,一个是 SSD,则无关紧要。一个是ext3一个都无所谓btrfs. 一个是内部的(在计算机机箱内),一个是外部的(几英寸外,通过电缆连接)或远程(通过网络访问)都无关紧要。

说到网络,有点类似于ssh. 它从键盘读取并将您键入的字符发送到网络。同时,它从网络中读取数据并将结果显示在屏幕上。

或者考虑一下:假设您正在打电话,并且您正在调解另一部电话上的人和房间中的另一个人之间的对话。这没什么大不了的。
________
1符号链接除外——但它们可以跨越文件系统边界。

  • @PeterCordes Linux 上`tmpfs` 的兴起是最近5-7 年左右的事。例如,Fedora 在他们的 wiki ~2012 上讨论了这个变化,我相信它是在 Debian Wheezy 中引入的。 (2认同)