如果我要将物理文件系统安装到 Linux 计算机上,为什么应该将该文件系统安装到自定义位置?为什么不让文件系统位于其设备路径呢? “/dev/....”
答案1
为什么不让文件系统位于其设备路径呢?
我认为这样做是不可取的。结果是所有软件都需要以某种方式了解您插入的设备。
如果你看看 MS Windows 是如何做到的(使用驱动器号),布局就会受到以下限制:环境变量例如%HOMEPATH%
。如果您的另一个硬盘上有大量音乐,则无法告诉您的软件这E:
是某个用户的音乐文件夹。
在*nix系统中不存在这个问题。如果您希望将音乐存储在另一个硬盘上,则只需添加一个条目即可/etc/fstab
将其安装到/home/me/Music
,并且软件永远不需要被告知更改。
而且下面的名称/dev
实际上并不稳定。例如,您可以在启动前插入 USB 硬盘驱动器,并且有可能会分配它/dev/sda
而不是内部驱动器。这将使配置任何内容变得非常困难,因为您无法保证分配了哪些名称。
实际上,基于将相似类型的事物分组在一起来布局文件系统更有意义,而不是过度关注它们的存储位置。
这文件系统层次结构标准根据要求部分地对事物进行分组。这允许一些非常有用的技巧,例如将整个文件/usr
放入只读网络文件系统(网络文件系统)同时保持每台机器的配置可写/etc
。
它允许系统管理员决定什么应该存储在哪里,而用户和软件通常不需要知道这一点,也不想跟踪它。
值得注意的是,即使在 Windows(至少 Windows Server)下,也可以使用相同的技术,并且驱动器可以安装在文件系统中的任何其他位置。
答案2
它是文件系统层次结构标准 (FHS) 中描述的约定,该标准是描述约定的参考,用于 UNIX 系统的布局。
看https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard和https://refspecs.linuxfoundation.org/fhs.shtml
在 unix 中,所有都是文件,这意味着在 /dev 中您可以找到带有特殊 bloc 标志的设备文件。
在 UNIX 中,设备可以安装在文件系统层次结构中的任何位置。
按照惯例,您将在 /mnt 中安装各种设备,对于临时设备,这已更改为 /media 。
您可以在 /run/media/$USER 下找到 udisks2 挂载点,而 udisks 则为 /media。 Kde 和 Gnome 使用此约定。
通过将设备附加到安装点,您可以在内核中注册双向关系,其中安装点下的每个操作都将反映在原始设备上,反之亦然。
实际上 Windows 会这样做,但隐藏了这一点,你有一个 \Device\HarddiskVolumeX,但它只支持将其挂载为 A:、C:、D:\ 或 X:\
您可以使用 mount 或 df 命令获取挂载点列表。
您可以看看这个问题以供参考/media、/mnt 和 /run/mount 之间有什么区别?
答案3
Linux 将所有设备作为文件保存在一些特殊目录中,例如/dev
或/sys
。/dev
设备的放置场所也是如此。它们在文件系统中看起来/
像常规文件,但实际上并非如此。内核驱动程序将设备上的文件操作转换为通过总线发送的物理命令。
例如,您可以使用以下命令查看磁盘的原始内容:
dd if=/dev/sda1 count=64
但是您只会看到 32kb 原始数据,这些数据不会以任何方式解释(实际上它们包含文件系统元数据,有时包含在 FAT 文件系统等引导指令中)。通过安装此类文件(设备),您可以将设备视为放置在安装点中的文件系统结构。因此,安装将原始数据的含义更改为可通过目录和文件访问的有组织的集合。