自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 交叉编译smartmontools

交叉编译smartmontools sudo apt install g++-arm-linux-gnueabi tar zxvf smartmontools-6.5.tar.gz ./configure --host=arm-linux-gnueabi LDFLAGS=-static make

2022-05-16 16:30:52 787

原创 编译LineageOS

参考:https://wiki.lineageos.org/devices/lemonadep/installhttps://wiki.lineageos.org/devices/lemonadep/install写在前面做Android的伙伴往往都需要编译Android的源码,之前使用过编译过AOSP源码,搭配 Hikey 系列开发板 和 Pixel系列手机使用,编译AOSP源码和刷镜像的过程太过繁杂,经常会出现各处error,而且新版本的编译方式变化较大。最近接触LIneageOS,编译烧录都

2022-05-15 20:22:36 3445

原创 基于Femu搭建ZNS

使用Femu搭建ZNSFemu编译安装运行创建host和guest共享目录替换内核存在的问题FemuFemu是一款基于qemu设计的SSD模拟器,可以模拟多种SSD模型,包括传统,OCSSD,ZNS SSD,以及noSSD,详情见 Github,本文不做过多介绍。编译安装运行Femu的编译安装过程在 Gihub 的 README 中有详细介绍,并且大部分工作都通过脚本集成好了,作为用户我们只需要简单执行几个shell脚本即可完成编译。运行模拟器时,先修改run-zns.sh中的路径,然后直接执行

2021-09-28 17:50:33 1746

原创 F2FS的sysfs调整文件系统参数

F2FS的sysfs调整文件系统参数在f2fs文件系统中,可以通过sysfs自定义文件系统的配置参数,例如gc_min_sleep_time(gc睡眠的最短时间),min_ipu_util(就地更新的最低文件系统利用率阈值)等等。这些参数在目录下linux\Documentation\ABI\testing\sysfs-fs-f2fs 有详细介绍。启动f2fs文件系统后,会在系统目录 /sys/fs/f2fs/<disk>/ 下现实这些配置参数,用户可以通过cat 命令查看默认的参数值,并且

2021-01-27 17:23:03 1618 1

原创 F2FS重要数据结构详解之struct dirty_seglist_info

F2FS重要数据结构详解之struct dirty_seglist_infostruct f2fs_sm_info 是f2fs的重要数据结构之一,维护了 segment 在内存中的元数据信息,关于许多博客已经介绍,这里不多赘述,这里主要介绍struct f2fs_sm_info内部的另一个重要数据结构struct f2fs_sm_info。struct f2fs_sm_info { … struct dirty_seglist_info *dirty_info; /* di

2021-01-05 16:33:17 598 1

原创 F2FS的GC策略

F2FS的GC策略F2FS 主要以两种方式执行GC操作,即 foreground gc 和 background gc。当空闲section不足时,F2FS会触发 foreground gc,而内核会周期性唤醒 background gc 进程,在系统空闲时回收空间。文献【1】指出,F2FS 的 background gc 也不是随时随地都能触发成功的,background gc 被唤醒后会检查系统的状态是否符合条件,并仅在以下三种情况会成功触发 background gc:设备连着充电线,用户没有

2021-01-04 16:20:20 1778

原创 用户态和内核态的内存分配

用户态内存分配C语言中,在用户态分配内存空间可以使用malloc() ,函数原型如下:void *malloc(size_t size);参数:size – 内存块的大小,以字节为单位。返回值函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。在用户态分配的空间需要使用free() 回收。内核态内存分配在内核态可以使用kmalloc()、vmalloc()、kzalloc()、vzalloc()分配内存,区别如下:void * kmalloc(size

2020-12-22 21:56:38 801

原创 理解SSD核心技术FTL

理解SSD核心技术FTLFlash的基本操作不同于HDD,Flash的基本操作除了读和写,还包括擦除操作。这三种操作的具体表现是:读操作以page为单位读取存储单元中的0或1,写操作以page为单位将存储单元从1变成0,擦除以block为单位将存储单元从0变成1(一个block包含若干个page)。所以在SSD中三种操作的速度关系是:擦除操作 < 写操作 < 读操作。在一个page中,除了data area,还包括一个叫Out-Of-Band area(OOB)的部分,这部分记录了这个p

2020-12-17 11:34:39 3133

原创 F2FS的创建文件操作流程

F2FS的创建文件操作流程目录的结构一个dentry 占11字节,包括以下内容:- hash 文件名的哈希值- ino inode number- len 文件名长度- type 文件类型一个dentry block可以记录214个dentry和文件名,成员包括:一个位图、预留空间、dentries 部分 和 文件名部分,共4KB。Dentry Block(4 K) = bi

2020-12-12 17:52:56 775

原创 F2FS的删除文件操作流程

F2FS的删除操作流程一般文件组织结构F2FS中的block被分成data block 和 node block两种,一般情况下,data block 记录了文件的具体数据,node block记录文件的索引方式。node block包括f2fs_inode,direct_node和indirect_node三种。在源码中三者用联合体的方式保存在struct f2fs_node中:struct f2fs_node { /* can be one of three types: inode, dir

2020-12-10 12:22:55 813 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除