linux - ext4 分区是否包含有关其自身开始和结束位置的数据?

标签 linux linux-kernel filesystems

在大多数情况下,分区开始和结束位置的信息要么存储在分区表(即 MBR、GPT 等)中,要么存储在启动参数(即 mtdparts)中。大多数文件系统都包含元数据。对于 ext4 文件系统,是否能够找到分区开始和结束的第二个位置?也许像起始扇区和扇区长度之类的东西?

最佳答案

将分区的开头存储在文件系统本身中是没有用的:如果您能够找到该值,您就知道文件系统的位置,从而知道分区的开始位置。

关于文件系统的结尾:ext4 super block 在其 s_block_count_lo 字段中存储该文件系统管理的 ext4 block 的总数(参见 https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#The_Super_Block )。结合通过 s_log_block_size 获取的单个 ext4 block 的大小,您可以计算文件系统的结尾。

但请注意,文件系统的末尾可能与其包含分区的末尾不同。所以不,ext4 本身不知道任何有关分区的信息。它只知道自己的大小。这与 ext4 文件系统并不总是位于周围分区内的事实是一致的:在普通磁盘(即/dev/sda 而不是/dev/sda1)甚至在另一个文件系统的常规文件中创建它是完全有效的。

关于linux - ext4 分区是否包含有关其自身开始和结束位置的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235157/

相关文章:

linux-kernel - 如何在内核中分配不可缓存的物理内存?

c - 修改 fs/binfmt_elf.c 以获取自定义添加的部分内容

linux-kernel - 黑白 kthread 和工作队列的区别

hadoop - hadoop-1.0.3 sequenceFile.Writer会覆盖而不是将图像附加到sequencefile中

filesystems - Hadoop序列文件中的压缩

c - Linux AMD64 从复制的程序集中调用 C 库函数

ruby-on-rails - 尝试使用 run cap 部署 :cold 与 capistrano 一起部署 Rails 应用程序时出现问题

linux - 使用 Cgroups 限制 cpu 使用

linux - 在 Linux 中重命名多个文件并删除多余字符

javascript - Node.js - 静态文件服务器不工作