问题标签 [superblock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
832 浏览

filesystems - Ext3 块组描述符

我在理解如何查找块组描述符表时遇到问题。在文献(D.Poirier:“第二个扩展文件系统”)中指出块组描述符位于超级块之后的块中。

现在,当我查看第一个磁盘时,块大小为 1024 字节,结构如下:

  • MBR,0-512 字节
  • 超级块,1536-2560 字节
  • BG 描述符,2560 - ... 字节

这种结构很好,因为超级块从第 3 个扇区开始,BGD 紧随其后。但是,当我查看块大小为 4096 字节的第二个磁盘时,结构是这样的:

  • MBR,0-512 字节
  • 超级块,1536-2560 字节
  • BG 描述符,4608 - ...字节

在这种情况下,BGD 位于距离超级块 3072(?) 字节的位置。有人可以启发我并告诉我 BGD 位置究竟是如何确定的,因为我正在编写一个读取和分析 ext 结构的程序,而我不能编写一个知道如何找到 BGD 的通用程序。

0 投票
1 回答
1036 浏览

java - Ext2: Group Descriptors

I'm writing a Java program to go through and navigate into a ext2 filesystem image. I know my fs is revision 1 (or greater), so I know that there are copies of superblock in groups 0,1 and those that are powers of 3,5 and 7. My question is, what happens to the group descriptor when in a group without a superblock? is there any? if there is, does that mean that it's in the first block of the group? Where should I look for the inode table in my third group?

My fs has 3 groups (0,1,2), each 8192 blocks long with blocksize=1024.

0 投票
1 回答
470 浏览

python - 查找磁盘上的超级块

我必须在我的工作中编写 python 脚本。我的脚本必须打印满足某些条件的所有设备。其中一个条件是超级块。设备必须有超级块。

其他条件:

  1. 未安装任何分区 - 完成
  2. 任何分区都不在raid中 - 完成
  3. uuid 不在 fstab 中 - 完成
  4. arr uuid 在 mdadm.conf 中 - 完成
  5. 设备有超级块 - ?????

有人知道怎么做吗?我不得不承认我没有。没有必要通过python来管理它。有什么方法可以检查吗?:)

非常感谢。

0 投票
2 回答
2911 浏览

linux - 加密文件系统上缺少超级块

我有一个安装了 ubuntu 14 的硬盘。整个磁盘都是加密的。我的默认用户主目录也是加密的。最近,在系统崩溃后,我在启动时看到了一个busybox(initramfs)。当我选择以恢复模式启动时,我可以掌握一些错误消息,例如“... Failed to read block at offset xyz ...”。

我搜索并找到了这个问答:Boot drop to a (initramfs) prompts/busybox

我从 CD 启动并按照说明进行操作。然而我只能做...

...然后继续检查和修复/dev/sda1上的超级块。

如果我尝试...

...我收到以下错误消息:

gparted显示驱动器的分区和文件系统,如下所示:

sda5处的警告 (!!)说"Linux Unified Key Setup encryption is not yet supported"

如果我尝试...

...它返回此错误消息:

挂载和 rw 访问sda1可以正常工作。

任何线索是什么原因以及如何修复、安装和解密文件系统以正常启动或至少恢复数据?

0 投票
1 回答
152 浏览

c - 如何在 C 中打印 ext2 超级块的 s_uuid

我创建了一个变量来存储超级块的 s_uuid 的值。但是我遇到了如何以这种形式打印这个变量,如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。我尝试在 %x 和 %s 中使用 printf 来打印我的变量,但它不起作用。

我想知道 UUID 如何存储在文件系统中,以及如何在控制台中打印它而不是错误编码。

0 投票
0 回答
1662 浏览

linux - 无法安装 BTRFS

嘿,在更新期间冻结后,我的 btrfs 分区无法挂载。我尝试了所有我能找到的 Archlinux 和 BTRFS Wiki,但这还不够。

我尝试了什么和输出:

$ sudo mount -t btrfs /dev/sda3 /mnt

$ sudo btrfs 救援超级恢复 /dev/sda3

$ sudo btrfsck --repair /dev/sda3

$ sudo btrfs 拯救零日志 /dev/sda3

$ sudo btrfs check --repair --init-extent-tree --init-csum-tree /dev/sda3

0 投票
0 回答
57 浏览

linux-kernel - 为什么在 Linux 虚拟文件系统中,s_blocksize_bits 比普通二进制文件少一位?

struct super_block 结构体定义的一部分如下所示:

我在s_blocksize_bits现场有点困惑。比如我设置s_blocksize=512了,正确的写法是设置s_blocksize_bits=9。但是 512 的二进制表示是 1000000000,这意味着它需要 10 位来存储它。为什么 Linux 内核需要少一点。

这里我附上Linux内核中十六进制转换的源码:

0 投票
0 回答
41 浏览

linux - Linux 用 C 写入 Superblock

我有一个作为循环设备安装的文件。为了在 C 中实现dm-integrity的功能,我必须用 NULL 覆盖超级块。

无论如何我可以直接写入超级块吗?还是从超级块开始将文件写入循环设备?由于它包含元数据,我会假设在写入时使用“数据区域”,而不是元数据区域?

谢谢你的帮助!

编辑:这是我当前的超级块格式:

它适用于使用随机文件创建的测试循环设备:

但是在真正的目标上它将不起作用(如 ioctl 系统调用与 DM_TABLE_LOAD 退出(errno 22: Invalid Argument + device-mapper: table: 252:0: integrity: The device is not initialized -> 发生在超级块不完全为零)

0 投票
1 回答
59 浏览

c - 如何从内核中的超级块读取数据?

我已经在用户空间上编写了主管应用程序c,我将白名单 id 保留在超级块上。它从 superblock 读取数据: filepath = "/dev/flashSSD"

并在管理(插入,删除)ID后,它在退出时写回超级块:

现在,我如何从超级块中读取数据kernel

0 投票
0 回答
66 浏览

raid - RAID5 故障,所有超级块丢失,无法重新组装阵列

我有一个驱动器故障的 4 磁盘 RAID5 阵列。

当磁盘发生故障时,我让阵列继续降级运行并订购了一个新磁盘。

当新磁盘在 2 天后到达时,阵列不再安装。

我从阵列中删除了所有驱动器,将它们连接到另一台机器并运行 smartctl。所有驱动器都通过了。

但是,当我尝试组装阵列时,它说没有可用的 raid 成员,并且所有 4 个驱动器似乎都缺少 raid5 超级块。

我从一个更聪明的朋友那里得到了一些帮助。我们尝试使用覆盖将 4 个驱动器组装成所有 24 种组合。从叠加层组装时,一些元数据被识别,但阵列不会安装。

我无法解释所有 4 个驱动器如何同时丢失它们的超级块。我只能猜测将它们插入另一台机器运行 smartctl 可能对分区结构有一些影响???

一堆信息,包括下面的 smartctl 输出......