答案1
文件系统通常构建在块设备上,除非它们用作内核的接口或通过网络访问文件或在用户空间中实现。如果要将文件存储在硬盘或 SSD 上,将其作为块设备访问是最简单的方法。存在像 SquashFS 这样的文件系统,它们不会在块边界上对齐数据,但它们仍然使用在块设备上工作的底层缓冲区缓存。一些 Unix 系统提供字符设备来访问磁盘而不使用缓冲区高速缓存,在 Linux 上使用open
该O_DIRECT
标志来实现此目的。
您可以将文件用作块设备,请参阅losetup
。
文件系统不是块设备。
编辑
从有关不在块设备上的文件系统的注释中回答问题
- “内核的接口”:这主要是
/proc
,/sys
但也是一堆cgroup
文件系统,通常安装在/sys/fs/cgroup
,等等下。 - “通过网络访问文件”:NFS(通常在 Unix/Linux 上)、SMB/CIFS (Windows) 等
- “在用户空间中实现”:“FUSE”表示“用户空间中的文件系统”。从内核的角度来看,这是由用户空间程序支持的。这个程序可能又会用到块设备(fuseblk),NTFS就是用fuseblk实现的。它还可以使用网络或其他任何东西来呈现文件系统。