当您“安装”驱动器时究竟发生了什么?

当您“安装”驱动器时究竟发生了什么?

当您安装驱动器时,底层会发生什么?即使驱动器未安装,计算机也可以看到它(例如 sudo fdisk -l / diskutil -list)。当驱动器安装时,所发生的一切是操作系统为设备提供路径,还是发生了一些文件系统“魔法”?

答案1

文件系统发生了一些“魔法”。

把磁盘系统分成几层可能会有帮助。最底层是块设备,最上层是分区,最上层是文件系统。

当驱动器被挂载时,挂载程序会与内核以及可能的 /etc/fstab 一起确定分区上的文件系统类型,然后(通过内核调用)实现标准文件系统调用以允许操作文件系统,包括读取、写入、列出、权限等。

事实上,您可以轻松地向其中添加其他层,并且它们的工作方式都相同。(一种常见的层是 LVM,它位于分区和文件系统之间,允许您调整大小、添加和删除磁盘,即使在正在运行的文件系统上也是如此)。我提到这一点是因为它表明它不仅仅是提供设备路径。

同样,不同的内核将支持不同的文件系统(例如,有些内核可能包括 ReiserFS、btrfs 等)。还可以使用“用户空间”(fuse)中的文件实现文件系统(仍然可以挂载和卸载)。例如,这将允许挂载不属于内核的虚拟文件系统,甚至是虚拟文件系统 - 例如,我已经挂载了 FTP 目录,甚至通过 ssh 挂载了远程路径作为文件系统(当然还有 NFS 和 SAMBA 共享),以及加密文件,并将多个目录合并为一个统一的文件系统 - 所有这些都是通过内核完成的“魔法”,通常是在 mount 命令的帮助下完成的。

答案2

从块设备挂载文件系统时,将进行几项准备,包括

  • 读取每个文件系统的信息,如文件系统类型、版本、选项、可用空间量……
  • 检查文件系统上次是否正确关闭(卸载)
  • 检查块设备是否只读(软盘/SD卡开关,CDROM/DVD)。
  • 重放文件系统“日志”中记录的操作(如果有)。

答案3

当你挂载 Linux 文件系统(如 ext2、ext3、ext4 等)时,文件系统超级块的副本将驻留在内存中,以便进行进一步的操作

相关内容