Sto*_*row 4 linux unix mount filesystems
我想请求社区帮助理解“挂载点”与文件夹的 *nix 概念。我曾尝试阅读诸如this、this和this 之类的背景阅读材料,但这个概念对我来说仍然很模糊。我会尽量问这个问题,使它不是第一个链接的重复。
披露:我的计算基础几乎完全在 DOS/Windows 环境中,这可能导致我难以理解这一点。
第一个问题:什么是挂载点?(我已经阅读了关于它是什么的各种解释,也许在回答这个问题时给出的解释会有所不同)。
我也想用一个具体的例子。以下输出来自我使用的 Linux 机器:
>df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/fedora_localhost-root 239727136 215317088 12209500 95% /
devtmpfs 8145236 0 8145236 0% /dev
tmpfs 8166384 160 8166224 1% /dev/shm
tmpfs 8166384 796 8165588 1% /run
tmpfs 8166384 0 8166384 0% /sys/fs/cgroup
tmpfs 8166384 76 8166308 1% /tmp
/dev/sda1 487652 150127 307829 33% /boot
>ls -l /dev/mapper/fedora_localhost-root
lrwxrwxrwx 1 root root 7 Jan 3 18:12 /dev/mapper/fedora_localhost-root -> ../dm-0
>ls -l /dev/dm-0
brw-rw---- 1 root disk 253, 0 Jan 3 18:12 /dev/dm-0
Run Code Online (Sandbox Code Playgroud)
让我试着用语言表达我的理解,也许回答者可以理解和纠正我的误解
从我的阅读中,我认为Linux“使像硬盘驱动器这样的物理设备可用作‘块设备’,看起来像位于 /dev 下某处的文件”,例如/dev/dm-0
. 这样对吗?
根据我的阅读,我的理解是“挂载点”就像给定分区的“最顶层目录”,类似于C:\
或D:\
在 DOS 术语中。那正确吗?
我不明白的一件事是:我的示例显示/dev/dm-0
"mounted on" /
。但是,是不是/
在“顶级目录”?我的意思是每个可访问的文件夹都一定是其中的某个子文件夹,/
不是吗?例如/home
,/var
等都是“下”文件夹,/
因为它们以 为前缀/
,对吗?我的意思是:如果我对“挂载点就像给定分区的最顶层目录”的理解是正确的,那么您怎么可能拥有多个挂载点,因为最顶层的挂载点/
已经用完?
与上段相关:/dev/dm-0
本身是/
. 所以我不清楚挂载点/
如何成为它自己的子文件夹的入口点?关于这一点似乎有些循环,我不明白这一点。
最后,有人可以解释挂载点和子文件夹之间的区别吗?其中的文章我看了说/
,/home
和/boot
都安装点。那么/home
作为挂载点与如果我已经执行有mkdir /home
什么区别呢?
谢谢你的帮助。我对此感到很茫然和困惑。
Windows 也支持驱动器挂载点(微软称它们为“重解析点”,但概念是相同的)。由于您对 Windows 比对 *NIX 操作系统更熟悉,因此您可以在 Windows 中执行以下小实验以帮助您理解该概念:
Change Drive Letters and Paths...
Add...
按钮。Mount in the following empty NTFS folder:
选择了按钮,然后浏览到您在桌面上创建的文件夹的路径(例如C:\Users\<your profile>\Desktop\New Folder
)如果从命令提示符窗口查看它,您会看到它是一个<JUNCTION>
对象类型:
请注意,您的闪存驱动器现在有两个挂载点;E:
(或其他)和您在第 2 步中创建的那个文件夹。如果需要,您可以删除驱动器号,并且您仍然可以通过桌面上的文件夹将文件复制到/从它复制。如果需要,您甚至可以为其添加多个驱动器号。 这就是挂载点:它只是您访问驱动器/分区的路径。
与 Linux 不同,Windows 将此文件夹表示为某种奇怪的快捷方式。Windows 这样做是因为挂载点在 Microsoft 的世界中是一个有点奇怪的概念(因此您会感到困惑)。在很多情况下,它们甚至无法正常工作。但是在 *NIX 操作系统中,这就是事情的处理方式。在 Linux 中,目录可以是文件夹也可以是挂载点,大多数时候两者的区别并不重要。
*NIX 操作系统没有驱动器号的概念。您的“根”文件系统 ( /
) 始终位于树的顶部,并且(通常但不总是)安装为系统的引导驱动器。这就是C:\
Windows。永远只能有一个根(就像只能有一个C:
驱动器一样)。系统上的每个其他驱动器或分区都必须安装到此根目录下的路径(目录)。那么,什么会D:
或E:
在Windows会/mnt/D_Drive
,/media/cdrom
或甚至/var
,/home
或任何在Linux中。
现在这是一件重要的事情,并且是您混淆的一个重要来源:
设备节点与挂载点不同。Windows 和 Linux 都有设备节点。不同之处在于 Windows 从不向您显示它们,并且它们不像在 Linux 中那样作为文件存在于您的硬盘驱动器上。
在上面的命令提示符屏幕截图中,您会注意到您创建的文件夹被列为\??\Volume{GUID}\
. 在 Linux 和 Windows 中,原始设备本身都有一个设备节点(例如/dev/sda1
在 Linux 或\??\Volume{GUID}
Windows 中)。该挂载点是文件系统,该设备上。在 Windows 中,您可以将驱动器号(E:\
例如)视为驱动器/分区的安装点。唯一的区别是 Windows 从不向您显示\??\Volume{GUID}
设备节点。它只显示挂载点,而这些挂载点几乎总是驱动器号(但是,正如我们从上面的实验中看到的,不一定是)。
我希望这可以为您解决问题。
现在,在你不小心做一些愚蠢的事情之前,回到磁盘管理并删除那个挂载点,比如试图将它复制/移动到某个地方!:-)
归档时间: |
|
查看次数: |
10489 次 |
最近记录: |