Izzo Asked: 2022-02-08 08:19:45 +0800 CST2022-02-08 08:19:45 +0800 CST 2022-02-08 08:19:45 +0800 CST 为什么我们将文件系统挂载到特定位置,而不是将它们留在“/dev/..../”? 772 如果我要在 Linux 机器上安装物理文件系统,为什么要将该文件系统安装到自定义位置?为什么不把文件系统放在它的设备路径上呢?“/开发/....” filesystems mount 3 个回答 Voted Best Answer Philip Couling 2022-02-09T04:10:01+08:002022-02-09T04:10:01+08:00 为什么不把文件系统放在它的设备路径上呢? 我不认为这样做是可取的。结果将是所有软件都需要以某种方式了解您插入的设备。 如果您查看 MS Windows 是如何做到的(使用驱动器号),布局会受到环境变量的限制,例如%HOMEPATH%. 如果您在另一个硬盘驱动器上有很多音乐,则无法告诉您的软件E:是某个用户的音乐文件夹。 在 *nix 系统中这个问题不存在。如果您希望您的音乐在另一个 HD 上,那么只需添加一个条目即可/etc/fstab将其挂载到,/home/me/Music并且无需告知软件更改。 此外,下面的名称/dev实际上也不稳定。例如,您可以在启动之前插入 USB 硬盘驱动器,并且有可能分配它/dev/sda而不是您的内部驱动器。这将使配置任何东西变得非常困难,因为您无法保证分配了哪些名称。 实际上,基于将相似类型的事物分组在一起而不是过度关注它们的存储位置来布局文件系统实际上更有意义。 文件系统层次标准部分基于需求对事物进行分组。这允许一些非常有用的技巧,例如将整个/usr文件放到只读网络文件系统 ( NFS ) 中,同时将每台机器的配置单独保存在可写文件中/etc。 它允许系统管理员决定应该将什么存储在哪里,而用户和软件通常不需要知道这一点,也不想跟踪它。 值得注意的是,即使在 Windows(至少是 Windows Server)下,同样的技术也是可能的,并且驱动器可以安装在文件系统中的任何其他位置。 user12425014 2022-02-08T09:24:37+08:002022-02-08T09:24:37+08:00 Linux 将所有设备作为文件保存在某些特殊目录中,例如/dev或/sys. 设备的地方也是如此/dev。它们在文件系统中/与常规文件一样可见,但实际上并非如此。内核驱动程序将设备上的文件操作转换为通过总线发送的物理命令。 例如,您可以使用以下命令查看磁盘的原始内容: dd if=/dev/sda1 count=64 但是您只会看到 32kb 的原始数据,它们不会以任何方式进行解释(实际上它们包含文件系统元数据,有时包含在引导指令中,如 FAT 文件系统)。通过挂载这样的文件(设备),您可以将设备视为放置在挂载点的文件系统结构。因此,挂载将原始数据的含义更改为可由目录和文件访问的有组织的集合。 Raphaël G. 2022-02-08T10:44:29+08:002022-02-08T10:44:29+08:00 它是文件系统层次标准 (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 之间的区别是什么?
我不认为这样做是可取的。结果将是所有软件都需要以某种方式了解您插入的设备。
如果您查看 MS Windows 是如何做到的(使用驱动器号),布局会受到环境变量的限制,例如
%HOMEPATH%
. 如果您在另一个硬盘驱动器上有很多音乐,则无法告诉您的软件E:
是某个用户的音乐文件夹。在 *nix 系统中这个问题不存在。如果您希望您的音乐在另一个 HD 上,那么只需添加一个条目即可
/etc/fstab
将其挂载到,/home/me/Music
并且无需告知软件更改。此外,下面的名称
/dev
实际上也不稳定。例如,您可以在启动之前插入 USB 硬盘驱动器,并且有可能分配它/dev/sda
而不是您的内部驱动器。这将使配置任何东西变得非常困难,因为您无法保证分配了哪些名称。实际上,基于将相似类型的事物分组在一起而不是过度关注它们的存储位置来布局文件系统实际上更有意义。
文件系统层次标准部分基于需求对事物进行分组。这允许一些非常有用的技巧,例如将整个
/usr
文件放到只读网络文件系统 ( NFS ) 中,同时将每台机器的配置单独保存在可写文件中/etc
。它允许系统管理员决定应该将什么存储在哪里,而用户和软件通常不需要知道这一点,也不想跟踪它。
值得注意的是,即使在 Windows(至少是 Windows Server)下,同样的技术也是可能的,并且驱动器可以安装在文件系统中的任何其他位置。
Linux 将所有设备作为文件保存在某些特殊目录中,例如
/dev
或/sys
. 设备的地方也是如此/dev
。它们在文件系统中/
与常规文件一样可见,但实际上并非如此。内核驱动程序将设备上的文件操作转换为通过总线发送的物理命令。例如,您可以使用以下命令查看磁盘的原始内容:
但是您只会看到 32kb 的原始数据,它们不会以任何方式进行解释(实际上它们包含文件系统元数据,有时包含在引导指令中,如 FAT 文件系统)。通过挂载这样的文件(设备),您可以将设备视为放置在挂载点的文件系统结构。因此,挂载将原始数据的含义更改为可由目录和文件访问的有组织的集合。
它是文件系统层次标准 (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 之间的区别是什么?