资讯详情

89TB数据被删事件复盘:AI训练系统如何构建抗误删的数据链路

📅 2026/11/3 20:27:21 | 华诺云谱 👁 阅读
89TB数据被删事件复盘:AI训练系统如何构建抗误删的数据链路
1. 一次“删库”事故背后的技术真相1.1 89TB 数据消失的那几分钟事情本身并不复杂。某团队的一名工程师在操作生产环境时执行了一段本不该在生产环境运行的清理脚本结果把训练用的 89TB 数据集连同部分中间产物一并抹掉了。消息传开之后圈子里讨论最多的有两个点一是“删库跑路”这个老梗又一次照进现实二是这件事在法律和技术层面被定性为对“计算机信息系统”的破坏而不是简单的“误删文件”。很多人第一反应是AI 模型不就是一堆权重文件吗数据集不就是硬盘上的文件吗删了再传一份不就行了这个想法在个人开发场景下勉强成立放到工业级 AI 训练场景里就完全站不住脚。89TB 不是 89GB它背后是几个月的数据采集、清洗、标注、去重、配比是几十上百号人的协作成果是大量算力烧出来的中间检查点。删掉的不只是“数据”而是一整条生产链路的时间成本和资金成本。我在实际项目里见过类似的情况虽然规模没这么大但性质一样一个同事在测试环境验证完清理逻辑顺手把命令复制到了生产终端回车之前没核对路径变量结果把一整天的增量数据清空了。那次没有 89TB只有 2TB 左右但恢复花了整整三天还是因为恰好有冷备。所以当我看到“89TB”这个数字时第一反应不是惊讶于脚本的破坏力而是想知道这个系统的权限设计、备份策略、操作审计到底是怎么做的。1.2 为什么这件事值得每个做 AI 的人认真看这件事的价值不在于围观事故而在于它暴露了 AI 工程化过程中一个被长期忽视的问题我们习惯性地把 AI 系统当成“实验”而不是“生产系统”。实验可以重来生产不能。当你的模型开始对外提供服务、当你的数据集成为核心资产、当你的训练任务占用着昂贵的算力集群时这套东西就已经是一个完整的计算机信息系统了它需要和银行交易系统、电商订单系统同等级别的运维规范。我写这篇东西是想把这件事拆开来看从技术层面89TB 数据是怎么被一条命令干掉的从工程层面AI 训练系统的数据链路应该怎么设计才扛得住误操作从认知层面为什么“AI 模型属于计算机信息系统”这个定性对从业者来说其实是一件好事。不管你是刚入行的算法工程师还是带团队的技术负责人这些内容都能直接用到你的日常工作中。2. 拆解 AI 训练系统的数据链路89TB 到底存了什么2.1 从原始数据到训练样本的完整流水线要理解为什么删掉 89TB 是灾难性的得先搞清楚这 89TB 里到底有什么。很多人以为训练数据就是一堆图片或者文本文件实际上工业级 AI 训练的数据链路要复杂得多。我按自己参与过的项目经验把这条链路拆成几个阶段。原始数据层这是从各种渠道采集回来的最原始素材可能是爬取的网页文本、用户上传的图片、传感器采集的信号、合作方提供的数据包。这一层的特征是量大、脏、格式不统一。一个中等规模的多模态项目原始数据轻松上到几十 TB。这部分数据通常有冷备但冷备的恢复速度很慢而且很多原始数据是一次性采集的丢了就再也拿不到了。清洗与预处理层原始数据经过去重、过滤、格式转换、质量筛选之后会生成一份“干净”的版本。这一步的产物往往比原始数据小但计算成本极高。我做过一个文本项目原始数据 40TB清洗之后剩 12TB但清洗过程跑了整整两周用了 200 多张卡做并行处理。如果这 12TB 被删了重新跑一遍就是两周的算力成本。标注与增强层对于监督学习任务还需要人工标注或者模型预标注。标注数据是典型的高价值、低体积资产。一个 100 万条的标注数据集可能只有几百 GB但标注成本可能是几十万人民币。这部分数据如果被删损失的不是存储空间而是真金白银。特征与索引层很多系统会把清洗后的数据进一步处理成特征向量、索引文件、分片文件方便训练时快速读取。这一层的数据是可以从上一层重新生成的但生成过程同样消耗算力。检查点与中间产物训练过程中会定期保存模型检查点、优化器状态、日志、评估结果。一个大型模型的检查点动辄几百 GB训练几个月下来检查点加上各种中间产物占用几十 TB 是很正常的。把这五层加起来89TB 一点都不夸张。而且关键在于这五层之间存在依赖关系原始数据没了后面全完清洗数据没了标注和特征全完检查点没了几个月的训练进度归零。所以“删库”删掉的不是一份数据而是一整条链路的成果。2.2 为什么 AI 数据比传统业务数据更难恢复做过传统后端的人可能会说数据库删了有 binlog文件删了有快照怕什么这话对传统业务系统成立对 AI 训练系统就不一定了。我总结下来有几个原因。第一数据体积和备份成本的矛盾。传统业务数据库可能几百 GB全量备份加增量备份很轻松。89TB 的数据要做同等频率的备份存储成本直接翻倍甚至翻三倍。很多团队为了控制成本只对关键层做备份原始数据和中间产物不做或者只做低频备份。一旦出事能恢复的只有一部分。第二数据生成过程的不可逆性。传统业务数据是用户产生的删了之后用户还会继续产生。AI 训练数据很多是一次性采集的比如某个特定时间段的数据、某个特定来源的数据删了就没了。我见过一个项目为了采集某个细分领域的语料专门和合作方谈了三个月才拿到授权数据删了之后重新谈授权又花了两个月。第三恢复验证的复杂性。传统数据恢复之后跑一下一致性校验就知道对不对。AI 数据恢复之后你很难判断“这份数据和删之前是不是完全一样”。因为数据本身可能经过多轮清洗和采样恢复出来的版本可能和训练时用的版本有细微差异导致模型效果对不上。这种问题排查起来极其痛苦。第四分布式存储的删除语义。很多 AI 训练系统跑在分布式文件系统或者对象存储上删除操作在分布式环境下的语义和单机不一样。单机删文件可能还能用恢复工具捞回来分布式存储上的删除往往是元数据先删数据块随后被异步回收等你发现的时候数据块已经被覆盖了。这也是为什么“删库”在分布式环境下格外危险。3. 一条命令如何摧毁 89TB误操作的典型路径3.1 从“测试一下”到“生产事故”的完整链条我复盘过不少误删事故发现它们的发生路径惊人地相似。基本都遵循这样一个链条在测试环境验证了一个危险操作觉得没问题然后把命令复制到生产环境因为某个变量或者路径没改对导致操作范围远超预期。具体到这次 89TB 的事件虽然细节没有完全公开但根据常见的工程实践我推测可能的路径是这样的工程师写了一个清理脚本用来删除训练过程中产生的临时文件或者过期检查点。在测试环境跑的时候脚本作用的目录是/tmp/train_cache之类的小目录删了几百 GB没问题。然后到生产环境执行脚本里的路径变量可能来自环境变量或者配置文件而生产环境的配置指向了数据根目录。脚本一跑清理逻辑变成了全量删除。还有一种可能是通配符或者递归删除的边界没控制好。比如rm -rf ${DATA_DIR}/*这种写法如果DATA_DIR为空或者指向了根目录后果不堪设想。我在代码审查里见过更离谱的find ${BASE} -name *.tmp -delete结果BASE变量在生产环境没设置find从当前目录开始搜把整个项目目录里的临时文件全删了顺带删掉了一些不该删的东西。这类问题的核心不在于工程师“粗心”而在于系统没有为危险操作设置足够的摩擦。在一个设计良好的生产系统里删除 89TB 数据应该需要经过多重确认、权限校验、影响范围评估而不是一条命令就能搞定。3.2 危险操作的常见形态与识别方法我把日常工作中容易引发大规模误删的操作整理成几类你可以对照自己的代码和脚本看看有没有类似风险。危险操作类型典型写法风险点建议替代方案递归删除rm -rf $DIR/*变量为空或指向根目录时全盘删除先校验变量非空且路径在白名单内通配符删除find $BASE -name *.tmp -deleteBASE 未设置时从当前目录开始显式指定绝对路径加-maxdepth限制数据库清表TRUNCATE TABLE train_data连错库或连错环境生产库禁用 TRUNCATE 权限对象存储批量删除循环调用删除接口前缀匹配过宽删掉整个 bucket先列出待删对象人工确认后再执行格式化挂载点mkfs.ext4 /dev/sdX设备名写错格式化数据盘用 UUID 挂载操作前lsblk确认识别危险操作有一个简单原则任何删除操作如果它的影响范围不是肉眼可数的就必须当成危险操作来对待。删一个文件、删一个目录你可以直接执行。删一个通配符匹配的结果、删一个数据库表、删一个对象存储前缀这些都必须走确认流程。4. AI 模型为什么被认定为“计算机信息系统”4.1 法律定性背后的技术逻辑这次事件里“AI 模型被认定为计算机信息系统”这个说法引起了很多讨论。从技术角度看这个定性其实很准确而且对行业是好事。我试着用大白话解释一下背后的逻辑。“计算机信息系统”这个概念的核心不是“计算机”三个字而是“系统”两个字。一个系统意味着它由多个组件构成组件之间有明确的交互关系整体能够完成特定的功能并且具有可管理性和可保护性。AI 训练和推理系统完全符合这些特征它有数据存储组件、有计算组件、有网络通信组件、有任务调度组件、有对外服务接口这些组件协同工作完成“训练模型”或者“提供推理服务”的功能。更重要的是这个系统承载了经济价值。89TB 数据的采集、清洗、标注成本训练消耗的算力成本团队投入的人力成本这些都是实实在在的经济损失。当损失达到一定量级它就不再是“内部管理问题”而是一个需要被认真对待的安全事件。把 AI 系统纳入“计算机信息系统”的保护范畴意味着破坏它要承担相应的责任这对行业里的每个人都是保护。我在和法务同事交流时了解到这类定性的关键在于“是否具有独立完成特定任务的能力”以及“是否存储、处理、传输数据”。AI 训练系统显然满足这两点。所以以后在设计 AI 系统时不能再抱着“这只是个实验环境”的心态而要按生产系统的标准来做安全设计。4.2 对从业者的实际影响这个定性对一线工程师来说最直接的影响是操作规范会变严。以前可能随便一个人就能登录训练集群随便跑删除命令以后这种日子会越来越少。权限分级、操作审计、双人复核这些在传统运维里常见的做法会逐渐成为 AI 团队的标配。另一个影响是责任边界更清晰。以前出了误删事故往往是内部批评一下、扣点绩效就过去了。现在如果造成重大经济损失可能面临法律层面的追责。这不是危言耸听而是行业走向成熟的必然过程。我个人的看法是与其抱怨“管得太严”不如主动把规范建起来这样对团队、对公司、对自己都是保护。还有一个容易被忽视的影响AI 系统的安全设计会成为一项独立技能。以前算法工程师只管模型效果运维的事情交给平台团队。现在越来越多的团队要求算法工程师也懂基本的系统安全知道怎么设计安全的训练流程、怎么管理数据权限、怎么做操作审计。这个趋势对个人成长是好事多一项技能就多一份竞争力。5. 构建抗误删的 AI 训练数据链路实操方案5.1 数据分层与生命周期管理要防止 89TB 被一条命令删掉最根本的办法不是“小心一点”而是从架构上让这种操作不可能发生。我按自己的实践经验给出一套可落地的数据分层方案。第一层原始数据区Raw Zone。这一层的数据只读任何人不允许直接删除。写入通过采集管道完成读取通过只读挂载或者只读账号。存储上使用对象存储的版本控制或者文件系统的快照功能保证即使有人误删也能从快照恢复。这一层的保留策略是“永久保留”或者“按合规要求保留”不设自动过期。第二层处理区Processed Zone。清洗、去重、转换之后的数据放在这里。这一层允许覆盖写入但每次写入生成新版本旧版本保留至少 30 天。删除操作需要走审批流程审批通过后由系统自动执行而不是人工执行删除命令。第三层训练区Training Zone。训练任务直接读取的数据放在这里通常是处理区数据的一个快照或者分片。这一层的数据可以随时重建所以允许删除但删除操作限制在训练区内部不能跨区删除。第四层产物区Artifact Zone。检查点、日志、评估结果放在这里。这一层的数据按训练任务隔离每个任务只能删除自己的产物不能删除别人的。检查点设置保留策略比如保留最近 5 个和最优 3 个旧的自动清理。这套分层的关键在于权限隔离不同层用不同的存储桶或者不同的挂载点不同角色的人拿到不同的权限。一个负责清洗数据的工程师不应该有删除原始数据的权限。一个负责训练调参的工程师不应该有删除处理区数据的权限。权限最小化原则在这里体现得淋漓尽致。5.2 删除操作的“安全刹车”设计除了分层还需要在删除操作本身上做文章。我的经验是给删除操作加“刹车”让它在真正执行之前有足够多的机会被拦住。刹车一软删除。所有删除操作默认是软删除数据被标记为“已删除”但实际还在保留 7 到 30 天。这期间可以通过管理界面恢复。只有过了保留期后台任务才会真正物理删除。这一招能挡住 90% 以上的误删因为大多数误删在几分钟到几小时内就会被发现。刹车二影响范围预估。执行删除之前系统先计算这次操作会影响多少文件、多少容量、哪些目录。如果影响范围超过阈值比如 1TB 或者 10000 个文件就拒绝执行要求人工确认。这个阈值可以根据团队情况调整但一定要有。刹车三二次确认与审批。大范围删除需要两个人确认一个人发起另一个人审批。审批的时候能看到影响范围预估的结果。这个流程听起来麻烦但真出事的时候你会感谢它。刹车四操作审计与告警。所有删除操作记录到审计日志包括谁、什么时候、在哪台机器、删了什么、影响范围多大。同时配置告警一旦有大规模删除操作立即通知团队负责人。这样即使操作已经执行也能第一时间响应。我在项目里落地这套机制的时候一开始有同事抱怨“太繁琐”。但有一次一个同事误操作触发了一级刹车软删除拦住了 3TB 数据从发现到恢复只用了 10 分钟。从那以后没人再抱怨了。5.3 备份策略不是“有没有”而是“能不能恢复”备份这件事很多团队的现状是“有备份但没验证过能不能恢复”。我见过太多案例出事之后才发现备份是坏的、备份不完整、恢复流程跑不通。所以备份策略的核心不是“备份了”而是“验证过能恢复”。对于 AI 训练数据我建议采用3-2-1 原则的变体至少 3 份数据副本2 种不同的存储介质1 份异地或者离线。具体到 AI 场景可以这样设计原始数据对象存储 冷归档 离线磁带如果有合规要求处理数据对象存储 快照检查点对象存储 定期下载到本地 NAS标注数据数据库 定期导出备份频率根据数据变化速度来定。原始数据变化慢可以低频备份处理数据变化快需要高频备份检查点按训练周期备份。关键是定期做恢复演练至少每季度一次随机选一份备份实际恢复到测试环境验证数据完整性和可用性。我自己的做法是把恢复演练写进团队的运维日历每次演练记录恢复时间、数据完整性检查结果、遇到的问题。这样真出事的时候恢复流程是演练过的不是临时摸索的。6. 常见问题与排查技巧实录6.1 误删发生后的黄金一小时该做什么误删发生后的第一个小时决定了你能恢复多少数据。我按优先级列出应该做的事情。第一件事立即停止所有写入操作。如果是文件系统卸载相关挂载点或者设为只读。如果是对象存储暂停所有写入任务。如果是数据库把库设为只读。目的是防止被删数据块被新数据覆盖。这一步越快越好最好在 5 分钟内完成。第二件事确认删除范围和方式。查审计日志确认是谁、在什么时间、用什么命令、删了哪些路径。如果是脚本删除看脚本逻辑判断是软删除还是硬删除是删了元数据还是删了数据块。这一步决定了后续恢复的难度。第三件事检查备份和快照。看最近的备份是什么时候的快照是否可用软删除的数据是否还在保留期内。如果有可用备份评估恢复需要多长时间、恢复到什么程度。第四件事通知相关方。通知团队负责人、通知依赖这些数据的其他团队、通知业务方。不要想着“自己偷偷恢复”耽误的时间可能让恢复窗口关闭。第五件事开始恢复。优先恢复最关键的数据比如原始数据和标注数据。中间产物和检查点可以后续重建。恢复过程中记录每一步操作方便复盘。我经历过一次误删从发现到停止写入用了 8 分钟从备份恢复用了 4 小时最终数据零丢失。关键就是前 10 分钟的动作够快。6.2 常见问题速查表问题现象可能原因排查方法解决思路训练任务突然报数据缺失数据被误删或路径变更检查数据目录、审计日志从备份恢复或重新生成恢复后模型效果对不上恢复的数据版本和训练时不一致对比数据哈希、检查版本记录找到正确版本重新恢复备份恢复速度极慢备份存储带宽不足或数据量太大测带宽、看恢复日志分批恢复优先关键数据软删除数据被提前清理保留期设置过短或后台任务异常检查保留策略和清理任务调整保留期修复清理逻辑权限过大导致误操作角色权限没有最小化审计权限配置重新设计权限模型6.3 几个我踩过的坑和总结的技巧坑一以为快照是万能的。有一次我依赖存储快照恢复数据结果发现快照是每小时一次而数据是在两次快照之间被删的恢复出来少了 40 分钟的数据。后来我把关键数据的快照频率提高到 5 分钟一次虽然成本上去了但恢复精度够了。坑二备份脚本本身有 bug。我写过一个备份脚本逻辑是“把数据目录打包上传”结果数据目录里有一个循环软链接打包的时候无限递归备份文件巨大且不完整。后来我在备份脚本里加了-xdev和排除规则并且每次备份后校验文件数量。坑三恢复演练只演练了“恢复”没演练“切换”。有一次恢复成功了但恢复出来的数据在测试环境生产环境怎么切过去没演练过结果切换花了两个小时。后来我把恢复演练扩展到“恢复 切换 验证”全流程。技巧一给数据目录加“防删标记”。在关键数据目录放一个.protected文件删除脚本先检查这个文件存在就拒绝删除。这个简单的约定能挡住不少误操作。技巧二用只读挂载保护原始数据。原始数据区用只读方式挂载到训练节点物理上就杜绝了删除的可能。需要写入的时候通过专门的写入节点操作。技巧三把删除命令封装成工具。不允许工程师直接执行rm或者find -delete而是提供一个内部工具工具内部做影响范围检查、二次确认、审计记录。这样既规范了操作又降低了门槛。7. 从事故到体系AI 工程化的必修课这件事给我最大的启发是AI 行业正在从“手工作坊”走向“工业化生产”而工业化生产的标志就是标准化、可审计、可恢复。以前一个算法工程师可以一个人管数据、管训练、管部署现在不行了系统太复杂数据太值钱必须分工协作必须有规范约束。我个人的体会是与其把这次事件当成一个八卦来看不如把它当成一次免费的培训。它提醒我们你写的每一行删除逻辑都可能造成不可逆的后果你设计的每一个权限模型都可能在关键时刻救你一命你做的每一次备份演练都是在为未来的自己买保险。如果你现在正在带团队我建议你做三件事第一审查一遍所有涉及删除的脚本和命令看看有没有危险写法第二检查一遍数据权限看看有没有人权限过大第三安排一次恢复演练看看真出事的时候能不能恢复。这三件事花不了多少时间但价值极高。如果你是一线工程师我建议你养成两个习惯第一执行任何删除操作之前先echo一下要删的路径确认无误再执行第二永远不在生产环境直接跑没验证过的脚本哪怕它看起来再简单。这两个习惯我坚持了很多年帮我避开了至少三次潜在事故。AI 模型被认定为“计算机信息系统”不是给行业套枷锁而是给行业立规矩。规矩立好了大家才能安心做创新。毕竟谁也不想自己辛辛苦苦训了几个月的模型因为一条命令就归零了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑