从指定块地址中读出数据及F2FS inode分析

2023-05-16

有时候我们为了分析文件系统结构等目的,需要从指定的块地址中读取数据出来分析。

这时候我们可以用两个Ubuntu自带的工具,filefrag用于获取inode的块地址,dd命令或者nvme-cli(仅适用于NVMe设备)用于从块地址中读出数据。以我本机的一个文件为例:

sudo filefrag -b4096 -v /home/nvme/config.json

这一步用于获取/home/nvme/config.json文件的文件布局。-b后面跟的是以多大的块粒度打印,如果不加的话默认以4096Byte为单位打印。然后我们得到输出如下:

logical_offset代表的是这个文件的文件内偏移,以字节为单位

physical代表的是磁盘内的偏移,同样以字节为单位,块地址的话需要除以块大小。这里我们计算后得出块地址为555015,然后我们利用nvme-cli获取数据:

sudo nvme read /dev/nvme0n1 -s 555015 -c 0 -z 4096 -d ./nvme-read-record/data.bin -t

-d后面是存放读取出来的块数据的文件名,-c指读取多少个块,特别的是0代表读取1个块。

如果用dd工具,指令如下(由于我不常用这个指令,没有验证,大家可以参考使用dd命令读取linux文件系统指定block的数据_jinking01的专栏-CSDN博客_linux读取block 获取更多细节):

dd if=/dev/nvme0n1 of=/out.txt bs=4096 count=1 skip=555015

我们以十六进制模式打开读取到的块数据:

 验证一下内容是否正确,因为文件小于4096所以触发了F2FS的inline机制,所以这个实际上是存放inode的块的数据。

可以看到文件内容是从16C开始的,这个块的地址是555015(2273341804/4k向下取整),那么这个块的字节偏移量为:

555015*4096=2,273,341,440

那么文件的实际起始地址为:

2,273,341,440 + 0x16C = 2,273,341,804

与filefrag打印地址一致,读取块成功。

注意!这个实验里面物理偏移量是以字节为单位的原因是文件过小并且用的f2fs所以是inline文件,如果是大文件或者其他文件系统,那么物理偏移就直接是块地址!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从指定块地址中读出数据及F2FS inode分析 的相关文章

  • 硬盘inode节点简单介绍

    一 inode是什么 xff1f 理解inode xff0c 要从文件储存说起 文件储存在硬盘上 xff0c 硬盘的最小存储单位叫做 34 扇区 34 xff08 Sector xff09 每个扇区储存512字节 xff08 相当于0 5K
  • inode节点(详解)

    首先 xff0c 要明确理解inode是理解Linux Unix文件系统和硬盘存储的基础 1 什么是inode xff1f 理解inode xff0c 要从文件存储说起 文件存储在硬盘上 xff0c 硬盘的最小存储单位叫做 扇区 每个扇区能
  • inode以及软硬链接

    一 inode 使用ls l查看文件元数据 xff0c 用来描述数据属性 模式 硬链接数 文件所有组 组 大小 最后修改时间 文件名 使用stat查看 xff0c 查看文件信息 span class hljs comment Access
  • Linux之索引节点inode(index node)

    inode就是索引节点 xff0c 它用来存放档案及目录的基本信息 xff0c 包含时间 档名 使用者及群组等 inode 是 UNIX Linux 操作系统中的一种数据结构 xff0c 其本质是结构体 它包含了与文件系统中各个文件相关的一
  • 从指定块地址中读出数据及F2FS inode分析

    有时候我们为了分析文件系统结构等目的 xff0c 需要从指定的块地址中读取数据出来分析 这时候我们可以用两个Ubuntu自带的工具 xff0c filefrag用于获取inode的块地址 xff0c dd命令或者nvme cli 仅适用于N
  • linux/fs/inode.c/_bmap() and bmap()

    bmap函数的实体 用来实现文件数据块号到设备中的逻辑块号的映射 inode是文件i节点指针 xff0c block是要操作的文件数据块号 xff0c creat为创建标志 有0和1两种情况 若create为0 xff08 不置位 xff0
  • PHP获取文件的修改时间、访问时间和inode 修改时间

    filemtime string filename 返回文件上次被修改的时间 xff0c 出错时返回 FALSE 时间以 Unix 时间戳的方式返回 xff0c 可用于 date 例如 xff1a a 61 filemtime 34 log
  • inode的若干锚

    insert inode hash hash an inode 64 inode unhashed inode 64 hashval unsigned long value used to locate this object in the
  • 如何在 ZFS 中设置文件创建时间?

    我刚刚有一台运行 ZFS 的 NAS 我想在将文件传输到其中时保留创建时间 linux ext4 数据现在所在的位置 和 zfs 都存储创建时间或出生时间 对于 zfs 甚至可以通过 stat 命令来报告 但我一直无法弄清楚如何设置文件的创
  • 如何在Linux上高效监控目录变化?

    我正在使用 Magento 有一个功能可以将 CSS 和 Javascript 合并到一个大文件中 不管其优点和缺点 都存在以下问题 最终文件会在多个级别进行缓存 包括但不限于 亚马逊云前 代理服务器 客户端浏览器缓存 Magento 使用
  • 每当在Linux中使用inode创建新文件时,如何获取文件名以及文件的绝对路径?

    我用我的linux操作系统 CentOS 做了一些实验 我想跟踪在同一环境下创建的所有工具日志 工具生成相应的日志 log extn 来跟踪这些更改我编写了一个perl观察程序 它实际上监视目录我设置的 当创建新文件时 它将显示在输出中 但
  • 有什么方法可以使用给定的索引节点号搜索文件或文件名吗?

    我正在从用户那里获取索引节点号 并且必须在文件系统中搜索该文件 如何搜索 inode 编号 我必须使用 C 和 unix 来完成此操作 到目前为止 这是我的代码 include
  • 如何从给定的 inode 获取路径名或 dentry 或结构文件?

    我需要知道如何获取路径名或dentry or struct file来自给定的索引节点 我正在使用file open获得struct file来自路径名 但总是引起内核恐慌 我需要一种方法来将我的 inode 列表中的 inode 与路径名
  • 在 Linux 中检测文件移动或重命名的最佳方法?

    某些解决方案可能适用于 Windows 但是我不熟悉 Windows 操作系统 因此这将重点关注 Linux 据我了解 Unix文件系统都有inode的概念 这是文件系统元数据和 文件 存储的地方 因此我想知道是否可以使用索引节点号和一些附
  • 读取超级块

    我知道在 Unix 特别是 Mac OS X 中 超级块存储有关磁盘上数据布局的信息 包括 inode 开始和结束的磁盘地址 我想扫描程序中的索引节点列表以查找已删除的文件 如何找到 inode 开始的磁盘地址 我查看了 statfs 命令
  • 了解 Ubuntu 中不同对象的相同 inode 编号

    为什么 cdrom 的 inode 号与 cdrom 的 inode 号相同 sys devices platform power在Ubuntu中 以下在我的 Ubuntu 中具有相同的 inode 编号 media BACKUP 1 MI
  • 每个索引节点有多少字节?

    我需要创建大量不是很大的文件 如 4kb 8kb 这在我的计算机上是不可能的 因为它会将所有 inode 占用高达 100 并且我无法创建更多文件 df i dev sda5 Filesystem Inodes IUsed IFree IU
  • 找到具有相同索引节点的所有文件的最快方法是什么?

    我知道的唯一方法是 find home xdev samefile file1 但确实很慢 我想找到一个类似的工具locate 当你有很多文件时 真正的问题就出现了 我认为操作是 O n 没有来自的映射inode命名 唯一的方法是遍历整个文
  • 为什么JDK NIO使用这么多anon_inode文件描述符?

    我正在使用 Sun 的 JDK 1 6 0 26 和 NIO 带有 Netty 在 lsof 中我看到数百个文件描述符anon inode lsof np 11225 fgrep w anon inode java 11225 nobody
  • 是否可以从打开的文件描述符重新创建文件?

    现在 这个问题可能看起来很奇怪 而且可能确实如此 但为了提供一些背景信息 我一直在阅读this http linuxgazette net 105 pitcher html要了解 i 节点 作者给出了一个有趣的例子 FILE fp fp f

随机推荐

  • 解答:为什么判断一个数是否为素数时只需开平方根就行了!

    这属于算法上的问题 xff0c 好好考虑一下算法 xff0c 还要考虑一下素数的定义 素数是只有1和本身能整除的整数 所以在求素数的时候 xff0c 要将素数与1到素数本身中间的所有整数都相除 xff0c 看是否有整除的数 xff0c 如果
  • 使用adb命令从Android手机中取出已安装的app包,导出apk

    第一步 xff1a 首先连接手机 xff0c 连接的电脑可执行adb命令 查看电脑连接的设备 adb devices 查询需要导出的包名 xff08 这里可进行猜测 xff0c 也可用普遍逻辑 xff09 比如 xff1a 喜马拉雅 xff
  • Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例

    文章目录 Snorkel简介与入门1 背景2 LF Labeling Function 标注函数3 TF Transformation Function 转换函数4 SF Slicing Functions 剪切函数Ref Snorkel简
  • 搜索框的实现(前后端交互)

    js文件 编写js脚本文件 创建服务器 添加路由 响应html文件 引入模块 const express 61 require 39 express 39 创建服务器 const app 61 express 设置端口 app listen
  • 树莓派刷机

    目录 一 树莓派刷机方法 xff08 一 xff09 二 树莓派刷机方法 xff08 二 xff09 一 树莓派刷机方法 xff08 一 xff09 0 准备一张SD卡 xff0c 和一个读卡器 xff0c 将SD卡插入读卡器 xff0c
  • Oracle 创建用户详解(create user)

    文章目录 1 概述2 操作 2 1 创建3 2 查询 3 表空间 1 概述 span class token number 1 span 实际开发中 xff0c 不同业务系统使用 span class token string 39 不同的
  • 关于高德地图添加Marker遇到的一些坑

    最近有一个需求 xff0c 是一个出行类的App xff0c 需要在乘客下单后在地图上显示乘客的头像以及司机的头像 这时候就需要在地图上插上一个marker ImageLoader loadLisenter mContext headUrl
  • [sumo]路网建立方法

    在sumo 中友两种创建路网的方法 xff0c 可以将路网理解为地图 xff0c 这里采用编写脚本文件的方式创建 一 xff0c 创建节点脚本 节点就是道图的拐点 xff0c 十字路口等其他一些路径变化的结点 下面以口字型环路为例介绍 xf
  • GO 权限管理之 Casbin

    GO 权限管理之 Casbin 我们来回顾一下上次分享的 GO中 gjson 库的应用和分享 xff0c 它主要是提供了一种非常快速且简单的方式从json文档中获取相应值 分享了 json与 gjson分别代表什么gjson 的简单使用gj
  • Android关闭SdcardFS

    Author Gary Date 2019 8 26 参考博客 xff1a https blog csdn net pen cil article details 79842706 由于项目先在Android6上进行实现的 xff0c 现需
  • 零基础树莓派无键盘鼠标显示器的初始配置方法

    Author Gary Li Date 2019 11 19 Ref https blog csdn net m0 37340681 article details 84262359 https www jianshu com p 3f4f
  • bash与dash的转换

    由于安装PetaLinux时需要设置 bin sh指向为bash xff0c 否则会报出错误 xff1a WARNING bin sh is not bash 转换的方法入下 xff1a 方法一 xff1a 查看当前是bash还是dash
  • Cosmos(ZYNQ)编译运行Linux系统

    Author Gary Data 2019 12 24 Ref ug1144 petalinux tools reference guide pdf https www cnblogs com vacajk p 6146146 html h
  • NR PDCCH (三)DCI传输过程

    微信同步更新欢迎关注同名 modem协议笔记 PDCCH 承载的data就是DCI xff0c 在PDCCH 盲检时需要用正确的RNTI进行解扰和CRC校验 xff0c 才能确认DCI是不是发送给UE的 xff0c 为什么是这样的decod
  • 创建虚拟块设备及挂载

    Author Gary Date 2020 9 16 Ref https www jianshu com p 889bc1621dc3 在学习一个文件系统时 xff0c 将其真正的挂载 xff0c 执行一些读写操作 xff0c 将其运行起来
  • Linux查看多种硬件信息的指令

    查看内存大小 xff1a cat proc meminfo 或者 lsmem 查看DDR版本 xff1a sudo dmidecode t memory grep 39 Type 39 查看内存厂商 xff1a sudo dmidecode
  • git删除子模块

    删除 gitmodules文件或者删除其中的对应项 rm gitmodules 2 从 git config删除相关部分 xff0c 例如 xff1a 3 删除cache git rm cached lt 子模块路径 gt 4 删除模块文件
  • Ubuntu搭建socks5服务

    更新源 xff1a sudo apt update安装 xff1a sudo apt install dante server备份原配置文件 xff1a sudo mv etc danted conf etc danted conf bak
  • 使用docker安装gem5

    编号又是一团糟 xff01 xff01 完全搞不懂CSDN编辑器的编号方法了 官方参考文档 xff1a gem5 Building gem5 实测里面的地址不知道为什么pull不了 xff0c 用了梯子也不行 现在有2个选择 xff0c 第
  • 从指定块地址中读出数据及F2FS inode分析

    有时候我们为了分析文件系统结构等目的 xff0c 需要从指定的块地址中读取数据出来分析 这时候我们可以用两个Ubuntu自带的工具 xff0c filefrag用于获取inode的块地址 xff0c dd命令或者nvme cli 仅适用于N