问题标签 [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.
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 的通用程序。
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.
python - 查找磁盘上的超级块
我必须在我的工作中编写 python 脚本。我的脚本必须打印满足某些条件的所有设备。其中一个条件是超级块。设备必须有超级块。
其他条件:
- 未安装任何分区 - 完成
- 任何分区都不在raid中 - 完成
- uuid 不在 fstab 中 - 完成
- arr uuid 在 mdadm.conf 中 - 完成
- 设备有超级块 - ?????
有人知道怎么做吗?我不得不承认我没有。没有必要通过python来管理它。有什么方法可以检查吗?:)
非常感谢。
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可以正常工作。
任何线索是什么原因以及如何修复、安装和解密文件系统以正常启动或至少恢复数据?
c - 如何在 C 中打印 ext2 超级块的 s_uuid
我创建了一个变量来存储超级块的 s_uuid 的值。但是我遇到了如何以这种形式打印这个变量,如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。我尝试在 %x 和 %s 中使用 printf 来打印我的变量,但它不起作用。
我想知道 UUID 如何存储在文件系统中,以及如何在控制台中打印它而不是错误编码。
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
linux-kernel - 为什么在 Linux 虚拟文件系统中,s_blocksize_bits 比普通二进制文件少一位?
struct super_block 结构体定义的一部分如下所示:
我在s_blocksize_bits
现场有点困惑。比如我设置s_blocksize=512
了,正确的写法是设置s_blocksize_bits=9
。但是 512 的二进制表示是 1000000000,这意味着它需要 10 位来存储它。为什么 Linux 内核需要少一点。
这里我附上Linux内核中十六进制转换的源码:
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 -> 发生在超级块不完全为零)
c - 如何从内核中的超级块读取数据?
我已经在用户空间上编写了主管应用程序c
,我将白名单 id 保留在超级块上。它从 superblock 读取数据:
filepath = "/dev/flashSSD"
并在管理(插入,删除)ID后,它在退出时写回超级块:
现在,我如何从超级块中读取数据kernel
?
raid - RAID5 故障,所有超级块丢失,无法重新组装阵列
我有一个驱动器故障的 4 磁盘 RAID5 阵列。
当磁盘发生故障时,我让阵列继续降级运行并订购了一个新磁盘。
当新磁盘在 2 天后到达时,阵列不再安装。
我从阵列中删除了所有驱动器,将它们连接到另一台机器并运行 smartctl。所有驱动器都通过了。
但是,当我尝试组装阵列时,它说没有可用的 raid 成员,并且所有 4 个驱动器似乎都缺少 raid5 超级块。
我从一个更聪明的朋友那里得到了一些帮助。我们尝试使用覆盖将 4 个驱动器组装成所有 24 种组合。从叠加层组装时,一些元数据被识别,但阵列不会安装。
我无法解释所有 4 个驱动器如何同时丢失它们的超级块。我只能猜测将它们插入另一台机器运行 smartctl 可能对分区结构有一些影响???
一堆信息,包括下面的 smartctl 输出......