![Linux中未格式化的存储设备能否进行VFS读写操作?](https://linux22.com/image/176853/Linux%E4%B8%AD%E6%9C%AA%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%9A%84%E5%AD%98%E5%82%A8%E8%AE%BE%E5%A4%87%E8%83%BD%E5%90%A6%E8%BF%9B%E8%A1%8CVFS%E8%AF%BB%E5%86%99%E6%93%8D%E4%BD%9C%EF%BC%9F.png)
根据我的理解,读/写等是Linux中的文件系统操作。文件系统向内核 (VFS) 注册回调,并在读/写操作期间检测到特定 FS 时依次由内核调用。
例如:
EXT4_写入:
VFS write request -> ext4_writepages()
F2FS_写入:
VFS write request -> f2fs_write_data_page()
但如果存储介质没有格式化怎么办?它没有任何文件系统。当对其执行读/写操作时,默认选择哪个文件系统操作?
答案1
为了使 VFS 层能够对文件执行读/写操作,必须以一种或另一种方式打开该文件。如果您的介质没有文件系统,则无法安装它。如果无法安装它,则无法获得它的路径以供open()
.如果无法打开其中的文件,则无法对其执行读/写操作。因此,您无法在没有文件系统的介质上执行读/写操作。
您将拥有块设备(假设所有必需的驱动程序均可用),这将使您能够在设备本身上执行 I/O 操作以对其进行格式化。
答案2
您不需要在块设备上拥有格式化的文件系统即可对其进行读/写操作。您可以打开块设备或分区(例如/dev/sda1)并直接读/写块。这就是 mke2fs 和 e2fsck 等工具读写设备本身的块以格式化或修复其中的文件系统的方式。
对不同类型的设备(HDD、CDROM、NVMe、不同的文件系统、文件、目录等)拥有相似的访问方法是类 Unix 系统的优势之一。