惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
D
Darknet – Hacking Tools, Hacker News & Cyber Security
TaoSecurity Blog
TaoSecurity Blog
V
Vulnerabilities – Threatpost
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
Lohrmann on Cybersecurity
P
Privacy International News Feed
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
Security Latest
Security Latest
GbyAI
GbyAI
Recorded Future
Recorded Future
L
LangChain Blog
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
F
Full Disclosure
P
Proofpoint News Feed
A
About on SuperTechFans
B
Blog
O
OpenAI News
P
Proofpoint News Feed
Cloudbric
Cloudbric
S
Security Affairs
B
Blog RSS Feed
C
Cybersecurity and Infrastructure Security Agency CISA
N
News | PayPal Newsroom
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
D
Docker
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
L
LINUX DO - 最新话题
C
Check Point Blog
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
小众软件
小众软件
Martin Fowler
Martin Fowler
博客园 - 司徒正美
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
量子位
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Google DeepMind News
Google DeepMind News
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Heimdal Security Blog
L
LINUX DO - 热门话题
月光博客
月光博客

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux - V2EX [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 - V2EX GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? - V2EX 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? - V2EX gemini cli 貌似挂了,一直返回 403 - V2EX 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 - V2EX 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 - V2EX 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 - V2EX 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX 只有我一个人觉得 codex 不好用? 做了个 AI + 真人专家监督的广告投放平台 Auxora, 7 个品牌跑出 6x ROAS 如何走出至亲的离世 Claude Web 端貌似 claude-opus-4-7 偷偷上了? 现在 Apple 开发者帳號應該是用哪个地区会更好? - V2EX 用回测筛选因子的一点经验分享 给女儿 vibe 了一个故事类的 app,做完发现,这类应用似乎上线难度极大? - V2EX 手机格式化 bitget 钱包没了,里面开通的银行卡还有机会拿到吗 - V2EX [送码] TransVoice - 我的第一款 App 上架啦!实时转写+翻译+字幕,会议听课好助手! PictureHub 高清摄影作品的画廊 Planet 的第一个使用 macOS 26 SDK 构建的 Insider 版本 20260416-1 - V2EX 成都二手房是不是在涨价,有点坐不住了 - V2EX claude 生态(skill mcp plugin)等 Studio Display XDR VESA 适配器脱落 有在用印度区 applestore 的大哥嘛,请教一下礼品卡去哪里买呢 - V2EX 我好像知道京东家政爆火的原因了 - V2EX 薅了公司的 a 家 api key,用机场 ip 做代理容易被封吗 如何在初期就识别 HR 在刷 KPI,没打算招你? [分享]精心打造一个 AI 编程知识库(算法/设计模式/提示词/Skills),助力程序员转型 港版 iPhone 在国内支持联通 5GA 吗?在广东用 想办港卡 AI 对 it 行业影响太大了 我做了个把照片变成 iOS 小组件贴纸的 App ChatGPT Pro 5x 套餐 量真的很足! I have found a method to directly generate advertising video materials using scripts 在小城市开个店,给人写软件,有前途吗 chrome 最新的 147 版直接卡爆炸了 - V2EX 为什么厂家不在 skill/mcp 这类的工具中塞广告呢?这样不是可以大赚嘛? minimax 真是脸都不要了,工作日下午 14:00 定时开启 529,脸都不要了。训练模型居然占用用户使用时间 外资非核心部门 vs 另一家外资的核心部门,该跳吗? iTad 标签 扩展 加小动作 ? - V2EX 去年 H200 能买,不让买是代替快出来了? - V2EX AI 赛事通 - 2026 年 4 月中国区新增 AI 竞赛和黑客松汇总 - V2EX V2EX › 登录 现在安卓开发都在做啥 - V2EX 浏览器插件 沉浸式翻译 是不支持自定义模型了吗? - V2EX Codex 里的 GPT5.4 也能降智?上午让它改两个问题,改了一个小时了, plus 额度用了一半了还是没改好,和前几天用的体感完全不一样。要它改的问题也不复杂。服了。 目前有使用 claude code 的收到人脸认证的吗 - V2EX 分享一个自己做的 Nginx 管理工具,实时请求动态预览!(无奈市面上实在找不到好用的,自己撸了个) - V2EX claude code 崩了么? 今天在反重力上用 claude 一点都不丝滑,有同样的感受吗? opencode 消息周知插件 今天 claude opus 和前两天比,质的飞跃 - V2EX 999 包月价? - V2EX 一个版本, 50 项更新:我们几乎重做了整个播放页 本地大模型多大显存够用? GOGDNS 一款简易的私人 DNS 服务器 - V2EX API key (GLM) 怎么使用 claude code desktop ? Claude 这样订阅有问题吗 - V2EX 帮我爸找回了一篇赛博兰亭集序 求推荐稳定、高性价比使用 Claude Opus 4.6 的渠道/平台 搞个云端 claude code 防止 封号 - V2EX 用 Claude 要实名了,内地用户怎么办? OpenAI Plus 和 Team 都缩水了吗 海外 Android 手机有什么好用的国内第三方应用市场推荐吗 - V2EX 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 - V2EX claude 认证莫慌 北京互联网法院有什么攻略么?起诉北京智谱华章科技股份有限公司退款可行么? - V2EX Claude 开始引入身份验证 求 vscode 做笔记软件的插件推荐 - V2EX 讯飞星辰的 Coding Plan 如何? Anthropic 宣布在 Claude 平台推行身份验证机制 科普一下低价 gpt 是怎么来的 有没有长期关注 Claude 的朋友,我建了一个 Channel 自动抓取 Claude Team 的推文 啃了那篇 54 页的 Agent Harness 综述, 给大伙讲个省流版 现在那家的 coding plan 还能买到 是不是最近会有什么更聪明的大模型要发布了呀? 用多了 AI 后,有没有觉得 AI 生成的文章有很强的既视感? 如何 实践 Harness 工程? 今日份 GPT 5.4 笑话 如何建一个自己的号池,让 cursor 真正实现 token 自由 写了三个月 Agent Harness,我终于敢让 Claude Code 全自动写代码了
从已损坏的备份中拯救数据
MagicCoder · 2025-12-18 · via V2EX

999

前言

12 月 15 号早上,一觉醒来,拿起手机看到我的邮箱收到了内网服务无法访问的告警邮件,本以为只是简单的服务卡死,将服务器重启后就去上班了。

后来,陆续有好友联系我说网站挂了。

iPhone 镜像 2025-12-17 21.18.12

定位问题

晚上下班回家后,尝试将电脑断电重启,发现 pve 只能存活 2 分钟左右,然后整个系统卡死,无法进行任何操作。首先,我想到的是:会不会某个 vm 虚拟机或者 ct 容器影响到宿主机了。

因为系统只能存活几分钟,在执行禁用操作的时候,强制重启了好几次服务器。当所有的服务都停止启动后,卡死的问题依旧存在。

翻日志

没辙了,这已经不是简单的软件问题了,只好翻日志,看报错信息了。

nvme nvme0: I/O timeout, aborting

如上所示,日志中出现了好几条 I/O 超时消息,顿感不妙,该不会硬盘坏了吧....

找到原因

找了一圈方案,大部分都说这个错误是 nvme 硬盘的通病,他有一个省电模式,在某些硬件+内核的组合下会导致控制器假死。

解决方案也很简单,找到 GRUB 的配置文件,关闭他的自动睡眠和省电模式,在 pve 中这个文件位于/etc/default/grub,打开这个文件后,找到 GRUB_CMDLINE_LINUX_DEFAULT 属性,添加两个值:

  • nvme_core.default_ps_max_latency_us=0
  • pcie_aspm=off
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvme_core.default_ps_max_latency_us=0 pcie_aspm=off"

保存文件后,执行:update-grub 命令,随后重启整个 pve 主机。

VM 无法启动

pve 启动卡死的问题解决了,现在又有了新的问题。启动我那台跑了整个网站服务的 vm 虚拟机时,出现了如下所示的错误:

mount: mounting /dev/sda3 /dev/sda3 on /sysroot failed: No error information
Mounting root failed.
initramfs emergency recovery shell launched.

2222

这下坏事了,linux 的根分区无法挂载了😭,应该是刚才频繁的卡死,我不断的启动 pve ,容器不停的启动、强制终止导致盘里这块区域的数据受损了,处于半死不活状态了。

从备份中还原

幸好我之前设置了 vm 容器的整机备份,连续备份并存储 3 天,全部放在了内网另一台机器的机械硬盘中,通过网络挂载到 pve 上的。

image-20251217224605905

本以为一切都会很顺利,还原的时候出现了错误,zstd 解码时,发现压缩块损坏,导致还原失败。

_15-03_00_03.vma.zst : Decoding error (36) : Corrupted block detected vma: restore failed - short vma extent (2801635 < 3801600) /bin/bash: line 1: 2131 Exit 1 zstd -q -d -c /mnt/pve/nfs_usb_4t/dump/vzdump-qemu-100-2025_12_15-03_00_03.vma.zst

image-20251217225055348

于是,我又尝试了另外两个备份,结果都无法还原,全部都是相同的错误。当初做备份的时候,想着我都整机备份了,而且保存了 3 天的备份,总不可能三个全坏吧。

progress 99% (read 318901321728 bytes, duration 722 sec) 

_13-03_00_02.vma.zst : Decoding error (36) : Restored data doesn't match checksum progress 100% (read 322122547200 bytes, duration 755 sec) total bytes read 322122547200, sparse bytes 196604751872 (61%) space reduction due to 4K zero blocks 0.414% temporary volume 'local:121/vm-121-disk-0.qcow2' sucessfuly removed no lock found trying to remove 'create' lock error before or during data restore, some or all disks were not completely restored. VM 121 state is NOT cleaned up. TASK ERROR: command 'set -o pipefail && zstd -q -d -c /mnt/pve/nfs_usb_4t/dump/vzdump-qemu-100-2025_12_13-03_00_02.vma.zst | vma extract -v -r /var/tmp/vzdumptmp10764.fifo - /var/tmp/vzdumptmp10764' failed: exit code 1

现在狠狠的打脸了,我手里目前只有2023 年 11 月迁移技术栈时,那份 docker compose 的初始数据。相当于我丢失了 2 年的数据,这我是不能接受的。

毀滅吧我累了- 毀滅吧我累了 updated their profile picture.

折腾到这里,我一看时间,已经凌晨 1:30 了,明天还要上班,带着郁闷的心情去睡觉了。

强行提取数据

睡醒后,不愿接受这个现实,想到改造的那个练习英语单词的开源项目,这 1 年多时间下来,平均的日活跃人数已经有 40 多个了,数据库存储 8w 多条单词数据了😑,太难受了😭

实在是想不到什么好法子了,只好在 v 站和朋友圈都发了求助帖

IMG_0911

找到方案

在此,感谢 v 站老哥DylanC,给了我一组关键词。

image-20251217231654428

晚上回家后,开始找资料,问 GPT ,经过一番折腾总算是把数据提取出来了。

跳过校验

从上述的错误日志中能看出,我在还原的时候已经读了 99%的数据了,只是文件的完整性校验过不了,我的 vm 虚拟机里一整个全是 docker compose 编排的服务( mysql 、redis 、java 、nginx 等),理论上是比较好找回的。

pve 的定时备份采用的是 vzdump 服务,备份出来的产物是.vma.zst格式的,他的本质是:

  • zstd 压缩
  • 内部是 vma 归档
  • 包含:
    • qemu-server.conf
    • disk-drive-scsi0.raw

知道这些后,我们先把网络存储中的备份文件拷贝到 pve 主机的/var/lib/vz/dump目录,执行下述命令,忽略校验,强行解压。

zstd -d -c --no-check vzdump-qemu-100-2025_12_13-03_00_02.vma.zst \
| vma extract -v - ./extract.partial

等待一段时间后,程序执行结束,你会发现报错依然存在,但是这不影响已经读取的数据,cd 到./extract.partial 目录,你应该能看到xxx.confxxx.raw文件,然后看下.raw 后缀文件的空间占用,只要不是太小(占用<1GB),那么这份数据基本是没问题的,磁盘的 RAW 文件也算是被解出来了。

挂载 RAW 磁盘

为了防止数据遭到破坏,我们需要做只读挂载,命令如下:

losetup -fP /var/lib/vz/dump/extract.partial/disk-drive-scsi0.raw

然后,执行命令查看结果。

losetup -a
lsblk

执行后,应该能看到类似loop0loop0p1loop0p2这样的数据,找到那块空间跟你在 extract.partial 目录下看到的空间差不多大小的盘。

image-20251217234910684

挂载分区

首先,我们通过下述命令来创建一个挂载点:

mkdir -p /mnt/rescue

随后,尝试挂载分区( loop0p1 、loop0p2....等),找你的根分区,如果你运气好,p1 就挂载成功了,那就不需要挂载其他的了。

我的根分区是 p3 ,那么我挂载 p3 即可。

mount -o ro,norecovery /dev/loop0p3 /mnt/rescue

image-20251217235136772

如果失败的话,代表它不是文件系统,需要继续尝试挂载其他分区,直到成功为止。

umount /mnt/rescue 2>/dev/null
mount -o ro,norecovery /dev/loop0p2 /mnt/rescue

最后,查看挂载点里是否有你的数据。

ls /mnt/rescue

不出意外的话,你应该能看到类似下图所示的内容。

image-20251217235434358

文件成功恢复,接下来要做的就是把这些文件拷贝到安全的地方即可。

写在最后

至此,文章就分享完毕了。

我是神奇的程序员,一位前端开发工程师。

如果你对我感兴趣,请移步我的个人网站,进一步了解。