AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 767930
Accepted
melonfsck
melonfsck
Asked: 2024-01-29 05:51:08 +0800 CST2024-01-29 05:51:08 +0800 CST 2024-01-29 05:51:08 +0800 CST

崩溃后是否可以从非持久 DM 快照恢复数据?

  • 772

我经常使用非持久设备映射器快照,示例表如下所示:

0 10485760 snapshot /dev/sdc3 /dev/sdc6 N 16

万一发生崩溃,我仍然拥有两者/dev/sdc3,/dev/sdc6因为磁盘是非易失性的。但是是否有可能取回该snapshot设备,或者至少以某种方式恢复更改/dev/sdc6?我知道持久快照的存在是出于我的目的,但我仍然很好奇。谢谢。

crash
  • 1 1 个回答
  • 33 Views

1 个回答

  • Voted
  1. Best Answer
    frostschutz
    2024-01-29T18:43:08+08:002024-01-29T18:43:08+08:00

    这真的不可能。有些数据可能仍然存在,只是对文件系统没有意义......


    快照将块设备视为具有特定块大小的数据块。当写入进入时,每个受影响的块都会通过将其复制到快照设备来保留。

    文件系统写入通常是相当随机的,因此这可以以任何顺序发生。复制的块最终位于不同的偏移处。

    所以快照存储元数据,元数据是(旧偏移<->新偏移)之间的关系。

    对于瞬态快照,该存储仅存在于内存中。当您重新启动或以其他方式停用快照时,它会丢失。


    没有这些元数据,你还有什么?

    本质上,您正在查看“随机数据块”。

    为了取回该快照设备,您必须能够以某种方式确定复制的每个块的原始偏移量。

    但这通常是做不到的。你不知道这些块最初来自哪里。您甚至不知道这些是否是块,或者只是创建快照之前存在的旧数据。

    即使您可以解决这个难题,也只有在快照未处于活动状态时原始设备不再发生写入操作时,它才会起作用。如果设备以读写方式安装,并且快照中不存在的数据块被覆盖,那么您将不再丢失元数据。你缺少数据。

    所以总而言之,它被认为是无法挽回的。


    例外情况也是有可能的。

    如果按顺序复制了多个块,或者如果您要查找的任何数据足够小以适合单个块,那么您仍然可能幸运地找到它。同样,如果幸运的是,您可以从失败的 raid5 集中的单个磁盘中恢复某些内容(如果它恰好小到足以容纳单个数据块)。如果您愿意在没有文件系统帮助的情况下恢复一些数据。

    您可能拥有以某种方式知道其自身偏移量的数据。例如,如果将 的输出写入hexdump -C块设备,然后对其进行快照。hexdump 打印每一行的偏移量,以便您可以从数据中导出偏移量。假设 hexdump 没有跳过任何行......

    如果您使用全磁盘加密 (LUKS) 并且对整个 LUKS 设备进行快照。您的快照将包含完全随机(加密)的数据块。LUKS 也不知道该数据的偏移量,但只要您仍然拥有 LUKS 标头并知道密钥,您就可以尝试解密每个偏移量的每个块;如果您找到解密为非随机数据的偏移量,那么这应该是正确的。但这是假设所有加密数据都是纯文本的。一旦你加密了随机数据,你就无法知道任何一种方式。

    如果您的用例中写入不是随机的而是完全确定性的,则您可以通过在新快照上重复相同的操作来重现元数据。如果您知道您只使用 dd 来通过查找和计数写入数据,以及按什么顺序,也许可以完成。

    但这些是您在实践中通常不会遇到的情况。它只是效果不太好。没有任何工具可以帮助您完成这项工作。

    • 0

相关问题

  • Kodi 在刮电视时不断崩溃

  • Proxmox 系统崩溃日报

  • Mate-power-manager 不断崩溃(如何保持运行/自动重启?)

  • 使用 rename() 替换现有文件时,哪些文件系统需要 fsync() 以确保崩溃安全?

  • 调试内核恐慌 - 看门狗在 cpu 9 上检测到硬 LOCKUP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve