Linux 是像 Windows 那样挂载 _______?

Cha*_*son 39 mount operating-systems hard-drive

所以Linux“挂载”了一个硬盘来执行一些操作,比如读/写。Windows 是否以同样的方式“挂载”?

它在 Microsoft 的上下文中被称为不同的东西吗?

use*_*686 86

如果您了解 Windows 内部结构,请修复我的错误。

“安装”由两个主要部分组成,在两个系统中都是相同的,但它们的分离有些不同:

  1. 访问磁盘上的文件系统;
  2. 分配文件系统的路径。

在 Linux 上,相同的mount()函数可以完成这两项工作;文件系统必须明确安装在用户选择的路径上,并且只要它安装在至少一个路径(可能更多)上就保持打开状态。一旦该文件系统的所有路径都被umount()编辑,它就会被关闭。

当卷出现时,Windows 会自动挂载卷——它会立即打开文件系统并为其分配驱动器号和/或任何其他配置名称。

可以使用FSCTL_LOCK_VOLUME和/或ioctl函数暂时“卸载”磁盘——例如,在其上运行 a时——但在程序解锁或退出时会自动再次装载。这种行为可以被视为与 Linux 的对立面。由于卸载文件系统是暂时的,因此即使在卸载时它也会保留分配的名称。(“安全删除”功能卸载文件系统并禁用底层设备,以防止 Windows 看到文件系统并重新安装它。)FSCTL_DISMOUNT_VOLUME chkdsk

一个文件系统可以分配多个名称:

  • 驱动器号 ( A:, C:, [:) – 自动分配给新磁盘并在重新启动时丢失,尽管 Windows 会记住用户配置的分配。通过这种方式,它们类似于 Unix 挂载点。

    (驱动器号也可以分配给任意设备,包括 Windows 支持的网络文件系统。您可以在WinObj\GLOBAL??\\Sessions\<session>\DosDevices\<loginid>\中查看它们的目标。)

    注意:驱动器号通常是系统范围的,但也可以使用subst或在会话范围内分配它们DefineDosDevice(),是的,它接受[:. 会话范围的分配永远不会存储在任何地方,并在重新启动时消失。

  • 文件夹挂载点 ( C:\Disks\Music) – 文件系统可以挂载在任意目录上,例如在 Unix 中;然而,它们实际上以重解析点(一种更强大的符号链接形式)的形式存储在目标磁盘上,它通过卷名引用已安装的磁盘。

    (还存在不同种类的重解析点;一些标准的重解析点是挂载点、符号链接、目录连接。)

  • 卷 GUID 路径 ( \\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\)(至少它看起来是这么叫的)—— Win32 命名空间\\?\中的特殊路径,包含 Windows 分配给此特定 Windows 系统上的特定卷的 UUID。它们无法更改。它们在 WinObj 中由mountvol或下方\GLOBAL??\列出。与驱动器号不同,这些对所有用户都是相同的。

  • 设备接口路径\\?\STORAGE#Volume#<something>Signature<hex>Offset<hex>Length<hex>#<uuid>\与卷 GUID路径不同,每个卷都只有一个设备接口路径。

    • 卷设备名称\Device\HarddiskVolume23- 与之前所有的只是符号链接不同,这直接命名了卷。您知道这一点是因为它在\Device命名空间中,而不是在\\?命名空间中。这也意味着您不能将它与诸如CreateFile.

diskmgmt.msc,mountvol并且diskpart可以管理驱动器号和挂载点。

即使一个卷没有任何驱动器号并且没有“挂载”在任何文件夹上,它仍然保持打开状态并且仍然可以通过其卷名访问其内容;例如

\\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\Windows\Explorer.exe
Run Code Online (Sandbox Code Playgroud)

  • @DanielBeck:是的,`DefineDosDevice()` 几乎可以接受任何东西,尽管你很难说服大多数应用程序接受它。尝试`subst [: C:\Users`,然后`dir [:` (11认同)
  • 如果补间女孩足够精通技术,他们会完全将驱动器号设置为`[:` (8认同)
  • @psusi,LASTDRIVE 进入 config.sys。system.ini 是 Windows。 (5认同)
  • `[:`..?真的吗? (4认同)
  • @Daniel:通过将所有可能的字节提供给 DefineDosDevice - 这实际上接受了几乎所有字节。原来空间也是有效的! (4认同)
  • @SLaks:不,NTLDR 使用的 boot.ini 使用 ARC 路径;[维基文章](http://en.wikipedia.org/wiki/NTLDR) 有有趣的背景说明为什么这样做。 (2认同)
  • 回到 dos 时代,我们有时最终让 netware 将驱动器 [: 分配给文件服务器,因为当您在 system.ini 中设置 LASTDRIVE=Z 时,它是下一个可用的驱动器号,它保留了所有的字母。 (2认同)

Der*_*ler 43

mountvol.exe 是 Windows 等价物。

mountvol 示例输出


uSl*_*ckr 6

是的,但一般来说,它是自动处理的(例如,使用 USB 驱动器)。

磁盘管理实用程序(Computer Mgmt 的一部分)允许您操作卷和安装点。Explorer 对网络共享执行相同的操作。根据您运行的 Windows 版本,也有命令行版本(WIN 7 中的 diskpart.exe)。