fs

F2FS介绍

android

F2FS介绍

原文链接:https://ovea-y.cn/f2fs_simple/ 一、背景介绍 一个对基于NAND并且具备FTL(闪存转换层)的闪存设备友好的文件系统,该文件系统依赖于FTL来处理写操作。F2FS对FTL的支持,在于一开始就将存储空间划分为若干个大小相同的segment,然后多个segment由section进行管理。F2FS期望section大小与FTL中垃圾收集单元大小相同。 需要注意的是,FTL一般处于具备SCSI/SATA/PCIe/NVMe接口的闪存中。 1.1 FTL的原理 FTL简单来说就是系统维护了一个逻辑Block地址(LBA,logical block addresses )和物理Block地址(PBA, physical block addresses)的对应关系。 这样就不需要操作系统额外针对闪存设备进行额外的优化了,优化由闪存本身内建的微型系统来完成(例如磨损均衡,废块回收等)。 举一个例子,FAT文件系统,它有很大的概率会在数据读写的过程中对同一逻辑地址的存储空间进行操作,如果没有优化操作,对应的

By 夕元
Fuse学习

fs

Fuse学习

原文链接:https://ovea-y.cn/fuse_simple/ 什么是Fuse? Fuse是一个用户空间文件系统的运行框架。它由一个内核模块(fuse.ko)、一个用户空间的库(libfuse.*)和一个挂载工具(fusemount)组成。 💡 ko是kernel object的缩写,和so库类似,都是为了模块化实现。内核把核心主干框架之外的功能拆解成模块,需要的时候就加载 ko 模块,不需要的时候卸载即可。这样带来的好处就是方便开发和使用,保持内核的核心代码极度精炼。 Linux的文件系统都是运行在内核态的,因此如果想实现一个新的文件系统,就需要让其运行在Linux Kernel中。 Fuse,即implementing filesystems in user space,在用户空间实现文件系统。 有了Fuse之后,开发者就可以在用户态开发自己的文件系统,相比于必须要运行在内核态,在用户态开发文件系统更好调试,并且不会导致Kernel崩溃,可以大大地缩短开发周期。 Fuse的文件系统类型 fuse 这是最常用的挂载Fu

By 夕元