标签: superblock

恢复 ext4 超级块

最近,我的外部硬盘驱动器机箱出现故障(硬盘驱动器本身在另一个机箱中通电)。然而,结果是,它的 EXT4 文件系统似乎已损坏。

该驱动器具有单个分区并使用 GPT 分区表(带有标签ears)。

fdisk -l /dev/sdb 显示:

   Device Boot      Start         End      Blocks   Id  System
     /dev/sdb1          1  1953525167   976762583+  ee  GPT
Run Code Online (Sandbox Code Playgroud)

testdisk 显示分区完好无损:

1 P MS Data                     2049 1953524952 1953522904 [ears]
Run Code Online (Sandbox Code Playgroud)

...但分区无法挂载:

$ sudo mount /dev/sdb1 a
mount: you must specify the filesystem type
$ sudo mount -t ext4 /dev/sdb1 a 
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
Run Code Online (Sandbox Code Playgroud)

fsck 报告无效的超级块:

$ sudo fsck.ext4 /dev/sdb1            
e2fsck 1.42 (29-Nov-2011)
fsck.ext4: Superblock invalid, trying backup blocks... …
Run Code Online (Sandbox Code Playgroud)

filesystems ext4 data-recovery superblock

57
推荐指数
2
解决办法
24万
查看次数

Btrfs super-recover 说所有超级块都很好,但 mount 不同意

我有一个用 BTRFS 格式化的外部驱动器似乎拒绝安装:

$ sudo mount -vs -t btrfs  -o ro,recovery,errors=continue /dev/sdb2 /media/user/dir
mount: /dev/sdb2: can't read superblock
Run Code Online (Sandbox Code Playgroud)

但是,当 BTRFS 认为所有超级块都可以时:

$ sudo btrfs rescue super-recover -v /dev/sdb2                 
All Devices:
        Device: id = 1, name = /dev/sdb2

Before Recovering:
        [All good supers]:
                device name = /dev/sdb2
                superblock bytenr = 65536

                device name = /dev/sdb2
                superblock bytenr = 67108864

                device name = /dev/sdb2
                superblock bytenr = 274877906944

        [All bad supers]:

All supers are valid, no need to recover
Run Code Online (Sandbox Code Playgroud)

如果我尝试指定sb=$((67108864/4))( …

superblock linux-mint btrfs

8
推荐指数
1
解决办法
5755
查看次数

备份超级块的区别

最近我不小心将 EXT4 分区格式化为 FAT。我陷入了恐慌。在我希望破灭的黑暗森林中长途跋涉后,我可以恢复我的隔板,看起来没问题。在sudo mke2fs -n /dev/sdx介绍了一些超级块后,我拿起一个就跑sudo e2fsck -b a_block_number /dev/sdxy,宾果游戏!我所有的文件和目录都放在了 lost+found 文件夹中。

问题是所有备份超级块都是相同的,还是有可能一个比另一个更新得更多?

第二个问题是,将 EXT4 分区重新格式化为 EXT4 会覆盖备份超级块吗?(在我们之间,在尝试 mke2fs 和 e2fsck 之前,我再次将 FAT 分区重新格式化为 EXT4)

filesystems ext4 fsck superblock

7
推荐指数
1
解决办法
3497
查看次数

如何转储文件系统超级块的内容?

我知道我可以使用以下命令列出文件系统超级块的位置。

例子

首先获取当前目录的设备句柄。

$ df -h .
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  146G  236G  39% /home
Run Code Online (Sandbox Code Playgroud)

然后使用此命令列出 handle 的超级块/dev/mapper/fedora_greeneggs-home

$ sudo dumpe2fs /dev/mapper/fedora_greeneggs-home | grep -i superblock
dumpe2fs 1.42.7 (21-Jan-2013)
  Primary superblock at 0, Group descriptors at 1-26
  Backup superblock at 32768, Group descriptors at 32769-32794
  Backup superblock at 98304, Group descriptors at 98305-98330
  Backup superblock at 163840, Group descriptors at 163841-163866
  Backup superblock at 229376, Group descriptors at 229377-229402
  Backup superblock at 294912, …
Run Code Online (Sandbox Code Playgroud)

filesystems ext4 ext2 ext3 superblock

6
推荐指数
1
解决办法
5648
查看次数

e2fsck:无法在 LogicalVolume 上设置超级块标志

当我以正常模式或运行级别 1 启动我的机器时,它会引发以下错误并且我无法启动机器:

 checking filesystems  
/dev/MyGroup/LogVol00: UNEXPECTED INCONSISTENCY; RUN fsck MANNUALLY  
       (i.e., without -a or -p options)  

\*** An error occured during the file system check  
\*** Dropping you to a shell; the system will reboot  
\*** when you leave the shell  
Give root password for maintenance (or type Control-D to continue):
Run Code Online (Sandbox Code Playgroud)

我输入密码并运行fsckand e2fsck,但两者都给出了相同的错误格式,如下所示:

(Repair filesystem) 1 # fsck
fsck 1.39 (29-May-2006)
Run Code Online (Sandbox Code Playgroud)

或者

(Repair filesystem) 1 # e2fsck -y /dev/MyGroup/LogVol00
e2fsck 1.39 (29-May-2006)
/dev/MyGroup/LogVol001: clean, 141289/1402144 files, …
Run Code Online (Sandbox Code Playgroud)

filesystems rhel fsck superblock

5
推荐指数
0
解决办法
1万
查看次数

在 md raid 中丢失了超级块

Red Hat Linux 5 上的问题。

由于一些误传,我们环境中的两个 LUN 从 1.2 TB 扩大到 1.7 TB。

现在,重新启动后,mdadm 找不到再次构建阵列的超级块。

通用格式 — 称为 0.90 版 — 有一个 4K 长的超级块,写入一个 64K 对齐的块,该块从设备末尾开始至少 64K 且小于 128K(即获取超级块的地址)设备大小降低到 64K 的倍数,然后减去 64K)。

我找到了一些旧文档:

# mdadm -D /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Tue Jul 10 17:45:00 2012
     Raid Level : raid1
     Array Size : 1289748416 (1230.00 GiB 1320.70 GB)
  Used Dev Size : 1289748416 (1230.00 GiB 1320.70 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor …
Run Code Online (Sandbox Code Playgroud)

software-raid mdadm superblock

4
推荐指数
1
解决办法
7923
查看次数

mdadm - 在现有的 raid-1 上意外运行了“mdadm --create”。超级块现在已损坏,我无法恢复数据。我是不是泄露了我的数据?

我已经/dev/sdb1并且/dev/sdc2之前使用 将其设置为 RAID-1 mdadm,但后来我重新安装并丢失了旧配置。出于白痴,我跑了

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

试图重新配置 RAID。在我让驱动器同步后(哎呀?),现在/dev/md0/dev/sdb1、 或/dev/sdc2都不会挂载。对于/dev/md0,它抱怨超级块中有一个坏的幻数。对于/dev/sd{b,c}1,它会抱怨缺少 inode。

简而言之,问题是这样的:我是否只是对我的所有数据进行了 bork,还是仍然可以恢复阵列?

以下是dumpe2fs这些分区的输出:

brent@codpiece:~$ sudo dumpe2fs /dev/md0 
dumpe2fs 1.42 (29-Nov-2011)
dumpe2fs: Bad magic number in super-block while trying to open /dev/md0
Couldn't find valid filesystem superblock.
brent@codpiece:~$ sudo dumpe2fs /dev/sdb1 
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /var/media
Filesystem UUID:          1462d79f-8a10-4590-8d63-3fcc105b601d
Filesystem magic number: …
Run Code Online (Sandbox Code Playgroud)

mdadm data-recovery superblock raid1

4
推荐指数
1
解决办法
3723
查看次数

从 ext4 分区上的意外格式中恢复数据

我在安装 Mint Debian 版时,与经典版不同,当我没有指定格式化时,安装会自动格式化我的主分区。

所以以前的格式和现在一样是 ext4。我相信数据仍然存在,因为它是一种快速格式。

我现在已在实时 USB 上启动计算机以防止在其上写入。跑 testDisk。有没有办法恢复到以前的超级块,这样我就可以恢复我的数据?

linux ext4 data-recovery superblock testdisk

4
推荐指数
1
解决办法
7227
查看次数

无法加载 Ubuntu:尝试打开 /dev/sda7 时超级块校验和与超级块不匹配

我在加载 Ubuntu 17.04 时遇到问题。这是我启动 Windows 后第二次发生这种情况。我第一次重新安装了 Ubuntu。我不擅长这个问题,所以我希望获得诊断和解决此问题的完整步骤列表。 错误堆栈

作为一种解决方法 e2fsck -b <Magic number> <device>已被使用。

这是输出fdisk -l,对我来说似乎很好:

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F3EBBDD3-ABDB-4AD4-BBFB-9F97E38D2A2B

Device          Start        End    Sectors   Size Type
/dev/sda1        2048    2050047    2048000  1000M Windows recovery environment
/dev/sda2     2050048    2582527     532480   260M EFI System
/dev/sda3     2582528 …
Run Code Online (Sandbox Code Playgroud)

ubuntu hard-disk superblock system-failure

4
推荐指数
1
解决办法
1万
查看次数

如何修复调整大小/收缩后的 BTRFS 超级块错误(BTRFS:无法获取 bytenr 274877906944 的超级缓冲区头)

具有 2 500 GB 硬盘的 BTRFS RAID1 阵列,无错误。这是根文件系统,因此每个驱动器上有 3 个分区:1 = /boot (ext4)、2 = / (btrfs)、3 (swap)

/boot 是 ext4,因为如果 /boot 是 btrfs 文件系统(安装了新内核,但 grub 配置未更新),则升级内核并不总是有效。

现在,该镜像已移至较小的驱动器,新驱动器为 120 GB,因此必须调整 btrfs 文件系统的大小。例如,可以使用 GParted 来调整两个 btrfs 分区的大小。调整大小后,可以将带有分区信息的 MBR 从旧的 500 GB 驱动器复制到新的 120 GB 驱动器 ( dd if=/dev/sda of=/dev/sdb bs=512 count=1),以及 btrfs 分区 ( dd if=/dev/sda2 of=/dev/sdb2)。(忽略交换分区,必须将其移动到 120 GB 以内。)

尽管系统启动并且新的 120 GB 驱动器没有问题,但会记录一条错误消息 (dmesg):

BTRFS:无法获取 bytenr 274877906944 的超级缓冲区头

并且擦洗发现“超级”错误(但没有数据错误):

“错误详细信息:超级=1”

此错误是否存在数据损坏的风险?
如何解决这个问题?

由于 274877906944 是 256 GB,旧的 btrfs 分区 …

linux dd hard-disk superblock btrfs

3
推荐指数
1
解决办法
7143
查看次数

如果我收到 mount: /dev/vgname/lvname: can't read superblock for the local filesystem 如何解决?

我在尝试执行 mount -a 时收到了一个事件。我收到以下错误。那么如何解决这个问题呢?

挂载:/dev/vgname/lvname:无法读取超级块

linux mount superblock disk

1
推荐指数
2
解决办法
1万
查看次数

启动时出现概率性 (~50%) 错误,涉及“错误的文件系统类型、错误的选项、错误的超级块...缺少代码页或帮助程序,或其他错误”

我在互联网上找到了大量关于此错误的帖子:

wrong fs type, bad option, bad superblock on /dev/xxx,missing codepage or helper program, or other error

但我从未发现过在启动时“有时”出现错误的情况。

每当我启动我的 Linux 机器时,我有时会收到提到的错误,有时它工作正常。这大约是 50/50 的机会,但我还没有以任何方式看到任何模式。

如果出现错误,我只需重新启动并重试;这半年来我一直在做这个事情。3 靴子通常是最大的n。很多时候我必须启动才能到达桌面。

如果我尝试在紧急 shell 中安装驱动器,则不会弹出任何错误,并且我可以毫无问题地向驱动器写入/读取。

我想知道这是否是一个可修复的问题,或者我是否应该寄回 NVME 驱动器(它仍然有保修)。

Kernel: 6.2.8-alderlake-xanmod1-1 (Xanmod + GCC optimizations)  
OS: ArchLinux  
Drive: Kingston KC3000 PCIe 4.0, 1TB, bought separately from the laptop  
Laptop: Rog Zephyrus m16
Run Code Online (Sandbox Code Playgroud)

编辑:我有两个带有 Windows/Linux 双启动的驱动器。Linux 尝试引导 /dev/nvme1n1p1,但我刚刚发现从紧急 shell 中我只能挂载 /dev/nvme0n1p1,这实际上是应该引导的 linux 根目录。每当我启动到桌面时, fdisk -l 都会显示 linux 驱动器被正确标记为 nvme1n1p1,因此我认为系统只有在 linux 驱动器被分配为“nvme1”并且 Windows 驱动器被分配时才能启动被分配为“nvme0”。我已使用 EFISTUB 手动指定内核命令行,如下所示: root=/dev/nvme1n1p1 resume=/dev/nvme1n1p2 rw quiet …

linux boot mount superblock nvme

1
推荐指数
1
解决办法
181
查看次数