事件顺序

事件顺序

我的系统有以下分区:

  • 戴尔实用程序
  • Windows 7的
  • Ubuntu 14.04(64 位)- 扩展
  • /home-扩展
  • virtualbox-扩展
  • 交换 - 扩展

(具有 Ubuntu 双启动和独立主页/“其他数据”分区的戴尔机箱)

事件顺序

  • 发行版升级至 16.04.1,显然成功了
  • 重新启动并进入紧急模式,如下所述这里
  • 使用 systemctl 等失败;建议通过 GRUB 使用 Upstart,启动到桌面
  • 下一次启动(进入紧急模式)没有成功;现在 /home 分区不可用
  • 通过 USBDrive 启动;/home 仍然不可用,被 gparted 列为“未知分区”
  • 通过 fdisk、testdisk 等进行长时间的调查。维基百科指南表明所有超级块均已损坏,没有可用的备份。我不是恢复专家,但这似乎不寻常。
  • 将测试磁盘映像放入“virtualbox”分区
  • 按照描述的过程这里没有成功,包括最后使用mke2fs -S
  • testdisk 更深层次的搜索找到了分区,但没有找到超级块;并出现了类似这样的消息No ext2, JFS, Reiser, cramfs or XFS marker
  • photorec 等工具可以检索一些文件,但它们是乱码,缺少文件名/结构,而且由于它是 /home 分区,许多文件都是加密的
  • 由于我有该分区和原始数据的备份,因此决定删除并替换 /home 分区,成功了。启动到“home-new”并进行设置...
  • 以及下一个启动时,我惊讶地发现“home-new”和“virtualbox”分区都不可用。同样的超级块问题。好吧,太棒了。
  • 使用 USBDrive,在不同的磁盘位置重新创建主分区;这看起来很稳定。删除“home-new”。
  • 意识到 /home 的备份和一些关键数据位于现在无法读取的分区上;获取一个 USB 磁盘并在上面制作一个映像

现在的情况

我的分区是:

  • DellUtility(确定)
  • Windows 7(可以)
  • Ubuntu 16.04(正常)
  • /home-new(坏的,已删除,与原始 /home 位于同一磁盘位置)- 扩展
  • /home(似乎没问题,在不同的磁盘位置)- 扩展
  • virtualbox(不好)-扩展
  • 交换(OK)-扩展

“virtualbox”分区约为 550GB。它不可读,并且没有有效的超级块。

其中的重要数据:* 我原来的 /home 分区的测试磁盘映像,约 50GB,本身无法读取,没有有效的超级块* 一些来自 /home 的原始数据,未经 Crashplan 处理。虽然还不足以成为严重问题,但足以让人烦恼。

请注意,第一双靴子很好——它在下一个启动时出现问题。“virtualbox”分区已作为 Testdisk 映像备份在 USB 驱动器上。

fdisk:

sudo fdisk -l /dev/sda
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: dos
Disk identifier: 0x15642c74

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *            63      80324      80262  39.2M  6 FAT16
/dev/sda2         18395136  427995135  409600000 195.3G  7 HPFS/NTFS/exFAT
/dev/sda3        427995136 1920120831 1492125696 711.5G  f W95 Ext'd (LBA)
/dev/sda4       1920122880 1953523711   33400832  15.9G 82 Linux swap / Solaris
/dev/sda5        438233088  489433087   51200000  24.4G 83 Linux
/dev/sda6        773240832 1920120831 1146880000 546.9G 83 Linux
/dev/sda7        633921536  736321535  102400000  48.8G 83 Linux

Partition 1 does not start on physical sector boundary.
Partition table entries are not in disk order.

dumpe2fs:

sudo dumpe2fs /dev/sda6
dumpe2fs 1.42.13 (17-May-2015)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda6
Couldn't find valid filesystem superblock.

分手:

sudo parted -l
Model: ATA ST1000DM003-1CH1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      32.3kB  41.1MB  41.1MB  primary   fat16           boot
 2      9418MB  219GB   210GB   primary   ntfs
 3      219GB   983GB   764GB   extended                  lba
 5      224GB   251GB   26.2GB  logical   ext4
 7      325GB   377GB   52.4GB  logical   ext4
 6      396GB   983GB   587GB   logical
 4      983GB   1000GB  17.1GB  primary   linux-swap(v1)

假设

你可以想象,这非常令人沮丧。注意“分区 1 未从物理扇区边界开始。”fdisk 中出现警告,之前从未出现过。

通过去分区不是从物理扇区边界开始的?,我怀疑存在一些对齐问题,会混淆低级磁盘实用程序,这是由 16.04 升级引入的,但这只是怀疑。

磁盘管理:

sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8C15FD44-F839-4637-853E-C092F0959C48
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 209964007 sectors (100.1 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              63           80324   39.2 MiB    0700  Microsoft basic data
   2        18395136       427995135   195.3 GiB   0700  Microsoft basic data
   4      1920122880      1953523711   15.9 GiB    8200  Linux swap
   5       438233088       489433087   24.4 GiB    8300  Linux filesystem
   6       773240832      1920120831   546.9 GiB   8300  Linux filesystem
   7       633921536       736321535   48.8 GiB    8300  Linux filesystem

问题

  1. 我该如何确定原因?我的系统现在看起来很稳定,但我对进一步的低级磁盘写入持谨慎态度。
  2. 是否有可能恢复没有超级块的“virtualbox”分区 - 然后希望恢复其中没有超级块的“home”分区映像?

也许超级块是完整的,但是通过系统无法识别的偏移。

答案1

取得了一些进展(并给出了部分答案):

注意到在一些应用程序(例如系统监视器),在某个时候,交换空间被报告为 546.9GB。交换空间应该是 15.9GB,这个数字可疑地接近损坏的“virtualbox”分区。

lsblk显示 /dev/sda6(分区)也通过 cryptswap1 映射到交换区。

/etc/crypttab 包含:

cryptswap1 /dev/sda6 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

确凿的证据!所以现在的假设是 16.04 升级未能正确地重新配置交换,并且在之后的启动中,交换启动破坏了分区(这可以解释为什么第一次启动成功)。

  • 禁用所有交换(使用的技术如何处理“/dev/mapper/cryptswap1 的磁盘驱动器尚未准备好或不存在”?
  • 重新启动并确认无交换状态
  • 使用 testdisk 进行调查。它尝试将活动分区标记为已删除,但找不到该分区,因此退出。
  • 确认状态不变sudo dumpe2fs /dev/sda6
  • dumpe2fs: Bad magic number in super-block while trying to open /dev/sda6 Couldn't find valid filesystem superblock.
  • 因此,请使用上面描述的最后方法:
  • sudo /sbin/mkfs.ext4 -S -v /dev/sda6
  • sudo mount /dev/sda6 /media/USER/virtualbox-image/
  • ... ls 列出了一些文件/目录!

好吧,万岁!!

我无法访问这些文件,因此运行了 fsck。错误太多了,我放弃了 preen 和交互模式,只使用了 -y。以下是一些 fsck 消息供参考:

  • 组描述符 4349 校验和为 0xf6d0,应为 0x2ed1。已修复。
  • /dev/sda6:Inode 13434881 正在使用中,但已设置 dtime。已修复。
  • /dev/sda6:Inode 13434881 具有额外的大小(336),这是无效的,已修复。
  • /dev/sda6:Inode 13434881 已设置 INDEX_FL 标志,但不是目录。HTREE INDEX 已清除。
  • /dev/sda6:Inode 13434881,i_blocks 为 137157068659908,应该为 0。已修复。
  • 发现属于损坏的孤立链接列表的 Inode。修复?是
  • Inode 13434886 是孤立 Inode 列表的一部分。已修复。
  • Inode 13434886 已设置 imagic 标志。清除?是
  • Inode 13434886 有一个额外的大小 (62340),这是无效的,修复了吗?是的
  • Inode 13434886 在​​不支持压缩的文件系统上设置了压缩标志。清除?是
  • Inode 13434886 已设置 INDEX_FL 标志但不是目录。清除 HTree 索引?是
  • Inode 13434886,i_size 为 18440780219561279704,应为 0。修复?是的
  • Inode 13434886,i_blocks 为 219803506189340,应为 0。修复?是的
  • Inode 13495674 有一个坏的扩展属性块 21496064。清除了吗?是
  • Inode 13495674 有非法块。清除?是
  • inode 13495674 中的非法块 #0 (1376321536)。已清除。
  • 文件 /image_new_superblock.dd(inode #45605,修改时间 2015 年 10 月 28 日星期三 12:58:24)有 1 个被多次认领的块,与 1 个文件共享:...(inode #13455772,修改时间 1996 年 7 月 4 日星期四 03:48:32)是否克隆被多次认领的块?是

上面的许多屏幕,到处都是时间戳。 fsck 实际上由于内存分配而中止了几次,哈哈。最终它运行正常,并显示以下消息:

  • 运行额外的过程来解决被多个 inode 声明的块...
  • 1B 阶段:重新扫描多重认领的区块
  • 步骤 1C:扫描目录中具有多重认领块的 inode
  • 1D 阶段:协调多重认领的区块

现在可以挂载分区并复制数据。许多文件似乎仍然完好无损。

但还有很多事情要做;这个分区已受到影响三周了。据推测,如果我在最初制作的图像上重复此操作,我可以恢复更多或几乎所有的数据。仍然需要调查“分区 1 不是从物理扇区边界开始的。”但是,看起来不错!

相关内容