我正好可以多讨论它我正式开始了大家下午好我今天就用中文了非常感谢大家过来跟我一起讨论一下数据保护工作组的一些我们做的一些项目我叫向前我来自谷歌主要今天我们会讲两个东西第一个东西是在Google Nest这个环境下面一个应用程序一些什么样的组建以及走过一些什么样的流程来对它的数据进行一些保护第二个呢是一个叫CBT的东西叫Change Block Tracking它更加多的是在存土系统的那个层次我们怎么样能够更加有效率的提供一个通用的接口给这个Google Nest的社区来做数据的在持久转上的数据的保护老套路这是我们俩当时一起成立的一个叫新阳现在有两个联名主席他来自VMware他同事他自己也是CNCF Coordinated Six Storage Co-Chair然后呢我就是第二个向前我来自谷歌我是一个工程师因为这个人今天比较少如果你有任何问题随时打断我没有问题的我可以跟大家一起探讨今天我们主要是要走这么一些东西最新我跟大家分享一下这个社区做了一些什么事情然后呢有那些机构在参与当然这是很简单的然后再简单地回顾一下我们成立这个工作组的初衷是什么我要做什么样的事情要为这个社区提供要有什么样的服务这是第三个第四个的话就主要我们大部分的时间会划在第四个方面就是在有状态应用的一些备份和恢复的一个过程是什么样子的来一些什么样的模块最后呢会集中讲那个数据块数据块修改跟踪的这个模块我们现在在做的这个事情然后最后我们一个slides会说如果有兴趣的话随时欢迎加入我们这些都是一些更新就是首先第一个更新的就是我们在去年和今年的时候就发布了一个这个COVID-19上面的数据保护的白皮书我们做出来的时候是有来自各种行业的Engineer或者是PM然后那个有存主系统的也有备份系统的也有COVID-19里面的一些主流的人物这个我觉得我个人觉得还是挺有意义的一个事情如果大家有兴趣的话可以去看一下这个蓝色的令肯定是可以点的它现在已经发布到那个COVID-19的那个社区里面了第二个的话是这个我说过大概有二十来个人吧大概多的时候二十多个人然后少的时候可能十几个人我们每年会有一个年度的工作报告这个工作报告里面会集中的讲一下今年我们做了哪些模块或者是设计的哪些模块我不知道你们有多少人在COVID-19开源社区有一个贡献开源社区贡献其实是一个比较繁琐的一个过程就是推动的东西可能会压慢一点第三个的话就是有一些历史上的一些演讲就讲我们这个工作小组从2020年成立到2019年到现在一年的基本上每一个Cube看我们都去了然后有一些过往的一些历史如果你们感兴趣可以看一下这些公司和机构他们都有工程师会是产品经理参与我们的一些日常的一些讨论没有什么排名先后的如果不小心漏了某一位国内的大拿士麻烦你告诉我一下我会加上去现在我们回顾一下到底要解决什么样的问题大家都应该对COVID-19有一个很完整的一个了解现在的话社区里面它已经有比较丰富的有状态应用部署的支持这些支持就包括持久转的申请这样你的容器可以容器可以有一个有一个硬盘可以连上去然后你可以写上你的数据然后这个硬盘它不是以前传统的那种直接放在你的机箱的硬盘而是一个网络的硬盘所以说你哪怕你的容器毁掉了你的硬盘还是带的然后也有大量的部署接口这些支持都很完善了然后能够解决绝大部分 day 1 operationday 1 operation很多定义 但是在我们这个工作小组里面定义就是你的开发部署以及你的 CICD基本上是 day 1 operation然后我们确实看到有更越来越多的很多原话的有状态的应用在逐渐网口那里上部署包括你的 SQL database你的 QIU pairQIU store甚至还包括一些SDS就是软件购价的存储系统都是用QIU類似的部署原因其实很简单就是因为它可以快速迭代可以快速部署你也神说性和高可用性这些东西都是通用的所以说你也不用绑到某一点的云上所以有这么多的好处如果大家有兴趣的话就看一下为什么这些人会往QIU上面移但是实际上的话QIU其实是有一些方面是没有 ready的没有准备好的就是第三点讲的在数据保护模块这一块它是非常有限的现在这个主要是跟它的 day 2 operation的数据是连在一起的day 2 operation就包括什么就包括你一个融灾一个备份是不是回滚这些操作在QIU上面现在是很难做的特别是对持久转和持久转申请的这个方面是非常非常难做的后面我会讲到一些更细节的东西当然并不是说没有to现在有一些工具比如GitOps现在有一些免费的或者是看源的Flox、Argo CD这都是的这就是现在点心所谓的configure management as code因为QIU本身的资源它其实就是一个config对不对就是一个yaml file它现在的主流的就是没有状态的应用无数的时候你可以通过GitOps的操作来快速地进行回滚当你每次更改一个configuration的时候如果你发现这个configuration有问题这个配置有问题你可以马上回到上一个git cache然后它就可以你自动回滚了但是确认就是你看它不止持久转的数据保护这个东西它是做不了的第二是安全敏感信息包括你一些secret一些config map里面可能存了你的password你的密码那你不可能把自己的密码放在git上面去对不对大家都看见了公共接口也不能放上去这个也有解决方案但是就是比较你要自己去配置它其实有一个叫secret management的东西它是可以来保护你的数据保护你的secret和configure map的这就是两个系统你都要维护对不对而且有一个协同的问题然后最重要的一件就是具体应用数据的保护这个是现在的现阶段gitops是完全做不到的做不到的原因其实也非常简单它不明白应用程序的语意比如说打一个简单的比方有一个secret database对不对你作为备份之前一般做什么你要停止它的写停止写以后这个时候你的状态会处于一个禁止的状态然后你再取一个快照再用这个快照去做备份然后再把它重新把它的app打开让别人用这个过程中它会把这个应用程序本身的内部的状态保存下来然后它是一个consistent它是一个一致性的在gitops里面这个是完全没有办法实现的至少在现阶段也不是他们喜欢解决的问题因为有了这些Date to the operation的一些需求然后我们真的看到好多这种有状态应用在kubernetes上面部署其实就是为这些有状态的应用提供一些基础的模块包括通用的数据保护接口以及相对应的控制器Kubernetes的控制器回过来这些我们就开始花比较多一点的时间去走一下这种现阶段我们对这个方面有限的理解这是一个图我看一下没问题它有一些标志这个蓝色的其实就是一些进程那个绿色的是有的模块或者接口然后黄色的是正在组件中的一些模块在搭建的或者是在设计中的模块或者开发的模块然后那个橙色的现在还完全没有开始的然后这个图是从左看到右它的流程其实就是你可以想象就是有一个有状态的应用就拿MySQL打比方这就是一个数据户它要有一个备份请求在Kubernetes里面它其实是有两个资源需要备份考虑的两类的资源第一类资源是Kubernetes的资源这些资源它是存在API Server里面的就是XED里面的那些资源其实本身来讲就是一些压抹化对不对包括Secret and Service是什么定义的Low Balance在哪里这些总体来说它是全部存在API Server里面然后呢现在在Kubernetes里面它有一个Kubernetes Application的一个API那个Application的API就是可以把这些某一个Application的组成部分全部组合在一起然后用Label来把这些所有资源选择起来然后这是一部分它需要备份的第二部分其实更重要的是它的数据的备份这一份数据的备份它并不是PVCPV本身PVCPV本身只是一个Kubernetes Resource它本身指向的是存储系统下面exposed的一个盘对不对然后呢这个数据备份的这个过程呢它有分两种一种是这个有状态应用它有一个原生的备份逻辑比如说MySQL它有MySQL DumpOracle Database也有Oracle Database Dump这个是它其实的原理就是它把自己快捷就是应用冻结了以后呢它把它数据转存到另外一个文件里面还有一种是直接把自己的Right Head Lock我File直接就转存到Object Storage里面去了它做完这个事情以后呢这是不好意思这是应用原生的备份那还有一些这种有状态应用呢它是没有这个备份机制的它没有做到这么精细或者什么的这个时候呢就是我们想引进的就是这个Kubernetes原生的备份控制器这个东西它做什么呢它主要有三个步骤第一个就是当然这个是可选项但是如果你要Application Consistent就是一致性的话你就得做叫应用冻结这个冻结其实说白了这个什么呢就是你的应用容器上面会提供一个接口这个接口说Freeze你可以做FS Freeze或者是做任何的Freeze都可以然后就可以停止写冻结了以后呢这个时候这个原生备份的控制器会对它下面的所有的持久卷做一个快照但这个快照就是CSR的快照CSR的快照快照完了以后呢它立马就会解除应用的冻结这样的话它可以把应用冻结的这个部分控制的时间非常短如果你要做备份的话因为备份要写到远端所以这个过程会非常长所以我们一般的不会在应用冻结和解除应用冻结中间来做备份而只是做个快照当然最后做完这些东西以后呢都会有一个过程叫备份的导出备份的导出呢它又有一个模块它又有一个备份的储存库现阶段来讲呢就是为了支出的一些考虑这个备份的储存库一般都是基于对象存储的因为它便宜所以它可以存的时间也很长你还有iCivin它存的SLA的Avability很高很高有13个9的叫Avability这个储存库呢现在COTY的那个在库格内斯社区里面的COTY的那个Initial其实就是一个S3GCS就是这几大主流的这个云厂商啊能够用Kubernetes的语言来进行这个Bucketed operation的就是能够分配一些对象存储里面的一些桶然后可以做它的Lifecycle Management这个呢这个COTY就可以做一个存储的备份库右边这一大串除了那个容器通知接口不过包括持久状的快照接口现在已经有了就是CSIS LAN Snapshot持久状的备份接口现在还没有现在也没有设计因为这个东西还挺难的然后持久状的一致性组什么是一致性组呢就比如说你有一个Application你有五个五个持久状都attached到你这个Application的container上面了这个容器上面了这个时候你在有些情况下你的应用是不能冻结的或者是你不想要用应用层次的一致性但是你又想保证每这个五个disc之间它的快照是一致的这就要用持久状的一致性组现在这个已经是AVAL然后包括后面还有一些持久状的格式转换还有最后要讲的就是数据块修改这个跟踪的接口我会到时候会我们会进一步讨论这个接口这个数据块修改跟踪的接口这就是备份的一个过程如果有你说你说这是个好问题问题是应用冻结的这个接口是什么形式存在的因为这个东西它是它有好几种方式我们一开始试的就是像你说的用CRD但是被拒绝了原因是什么呢原因是这个应用冻结它只是解决备份系统的一个一个问题但是Kubernetes社区他们想要的是容器上面就是容器本身的那个APIPOD的API做一个改变然后能够支持seqtermseqterm然后standard out这种标准的这种unix的这种meaning所以说最后选择的方向是往pod里面去加一个加一个field加一个trigger然后最后的话它当然就有一些问题我们现在还没办法解决因为这个需要很高的安全性你直接对容器发一个meaning这需要你有root在那个机器上有root传线才可以做的就这边有一个安全性的问题我们现在还没有完全解决那个安全性的问题现在选择方向是在pod里面加一个field对这也是一个好问题你足够快的话其实不需要的所以说你要控制到足够快是什么意思其实在这个应用接口里面是可以实现的就是上面那个绿色的可以Az的应用接口里面是可以实现的就是你想描述的其实就是一个一个数据链的流动的问题你要从最上面开始切然后一直切其实你只要切最上面就行了然后下面的就没有了只要它drain就没有了对不对你说对的对不它发signal的这个定义是应用程序本身它自己要定义的比如说你是个sql database那你就在sql的那个level去定义对不对那你如果是一个word typer一个block那你可能在service那一层low balance那一层截流所以就这个东西就是我们提供接口但是我们不提供解决方案这是一个本质区别行那我继续时间有限然后这是相对的就是还有一个恢复的过程你做了备份是吧你没有恢复那什么都没有用一样的道理就是在一个恢复的请求过来的时候它是要先把它的备份从备份存储库里面拿出来然后导入进去然后第一不是一般来说是做kubernetes的资源恢复但这个东西这是一个非常高的一个鸟看图实际操作的时候就像刚刚那个同学说的这个里面也有很多的dependency就比如说你要先恢复哪先恢复statual set然后再去恢复它的pvc然后还有delay binding这些config在里面对不对还有一个sequence的问题但这个还好就是不是那么不是那么复杂还是可以做的持久转数就恢复这个是最难的这个就包括它也有两种方式一种是应用原生的恢复如果是应用原生的话就是直接把备份从存储库里面拿出来然后直接就导入了mysecret就可以自己可以导入的命令认识那个命令它就把数据给populated上去了还有一种就是我们可能要支持我们要支持kubernetes再生的原生的持久转的数据恢复这里面就可能就是比如说rehydrate从一个快照里面把一个volume给做出来或者是你先产生一个空白的持久转然后再把数据的拷贝进去就是包括了所有的这些模块持久转填充的持久转填充的这些接口其实不是个接口它是一个operator它其实它所做的就是不停地从备份储庄库里面储存库里面把数据拷贝到空白的volume里面去空白的持久转里面去拷贝完了以后再把这个pv给它绑得起来这个时候你再attach上去就已经有你以前的数据了这就是个有状态应用恢复的一个过程下面的话我们集中的精力讲一下这个这个我觉得我个人觉得它还是挺有意思的而且吃的挺难的我还是做一点101因为有的人可能很了解有的人可能不太了解什么是数据快乐修改跟踪它其实就是一个或者是一系列的接口它作用于一个持久转它不会作用于几个持久转然后它其实要解决的根本问题就是你像现在一个时间点在一条时间轴上在任意时间里面提一你做一个快照你的存库系统里面可能它长成这个样子的就是物理存库系的没看来就是传承一过了一下以后你再做一个快照你的物理存库系变成那些红色的快快的变了你做了一些写操作对不对或是更新的操作然后呢这个接口它要产生的其实就是把这个2345给拿出来它之所以这样做的语言因为什么呢其实也大家肯定可以想象得到的就是增量备份对不对你如果每个都备份一个你有一个2TB的disk2TB的disk的话你每次整个存下来的话你每个备份都在2TB但是说不定你的更改量可能只有5%5%就是可能只有10个100个Gb对不对可以极大地减低你的这个极大提高你的空间使用效率然后呢可以降低你对网络和你的带宽的需求因为所有的备份都是要备份到不同的区域才会有意义这样才可以做融灾对不对因为我们做的是备份不是做不是做那个回滚的系统然后延迟也会低很多因为数据量拷贝少就这么简单然后呢还有一个就是作为coupleness我们社区来讲的话我们想做的是节有备份系统和存储系统因为存储系统有很多家存储商备份系统有很多家备份系统对不对然后你如果每个人都出来一个接口的话那最后就是大家就一团造因为基本上就没办法统一然后也不是没有其他的那个数据备份的选择确实有因为刚刚我说了完全备份对不对还有存储系统相关的这个增量备份接口那个可能效率更高我说这两句话就是因为中间没有这一层嘛就工友人生的一些比如说谷歌的这个PDPersistent Disk它就有增量备份的接口是基于快照的然后AWS的那个也有华为云的也有它都是基于增量的但是这就是意味着你的备份系统是跟云相关的还有一个叫也有一个开源的这是一个非常有意思的工具它也是增量备份但是它不基于任何存储器它基于的是文件系统的改变比如说它有一个文件它改变了以后它把这个文件mark起来每次计算的时候它会根据文件里面的plop它自己内部有不算法去算哪一些快进行的改变这个其实也挺有意思的这就是为什么我们需要下一个就是我们设计的时候都要考虑一些什么样的问题这个就是包括我们解决的目的是什么解决的目标是什么第一个就是我们要想要通用的这种CSI的标准接口就是Container Storage Interface这种标准接口用这种标准接口的话就会至少让存储系统在这个层面有一个比较完整或者是比较通用的一个实验方法第二个其实比较难就是要符合Colonelist的安全标准至少不能比现在的安全标准要差你可以不比较好但是不能比较差然后第三个就是避免要过载这个API Server等会儿因为它每个TB的持久点大概能够产生5GB的原数据这还只是原数据这不是真正的数据更改快它只是哪些快改变了这个原数据当然我们也自己的飞目标飞目标就是我们不要去提供数据快的数据读取的接口因为这个一般是跟存储系统相关的一般跟被困软件也是相关的跟我们其实关系不是很大然后也不会去提供文念修改这个跟踪的接口因为文念修改的跟踪接口可能更加适合于Filer就是NFS或者是SNB这种Protocol对Block Devices就是快的不一定会非要有文件系统像卡夫卡它用快存处的时候就是原生的快存处但是Restik提供这个如果你们有兴趣的话可以去研究一下Restik是它可以给你一个API然后在两个快照之间返回所有改变的文件这边一个单子这个东西在实际中是非常有意义的特别是有一些小印用的时候是非常有意义的非常文件层次上的回轨这听起来挺简单的但是做起来其实还是挺难的难的哪个地方呢第一个难点就是命令适合成熟去的这个冲突大家都知道Couplenase的资源模型它叫KRMCouplenase Resource Modeling它都是程序性的就是一个压抹法一开始我们采取的路径也就是自定义资源叫CRD叫Aggregate API Server就是避免API Server去存储这些CRD但是要pass through要通过API Server来servingRest endpoint还是在API Server上面这样我们把这个CAPT交上去以后就被拒了直接被拒了因为数据量太大了特别是第一个备份的时候数据量是最大的直接被固以后现在的解决方案就是命令式的等会我会讲什么是命令式的第二个是要有通用的接口去掩盖存储系统的易购解决方案就是CSI接口加上我们自己社区会维护一个GRPC的服务然后把CSI的接口的实现推给存储系统以后变成私有化的API然后只去把GRPC服务提供的这个通用接口变成公有化的API第三个就是安全如果我们一旦介入到GRPC的服务的时候我们就一定要有Authen和Z的过程每个客户端我们要因为这涉及到用户的数据它最终是可以图到那个数据的从这个角度上来讲对安全性的角度上是有点小高这个就是具体的设计的样子我把它抽象来一下你可以看一下那个绿色的就是API CallAPI Server Call红色的是GRPC Call至于是GRPC的TLS Call还是GRPC的Unix Socket这个问题关系不是很大但具体的角度上来讲的话第一这个备份系统它就是个client你可以想象它就是个客户端第一个要做的事情是到API Server来说发一个token request说你给我一个token然后这个token可以证明我是我我是备份系统然后拿到这个token以后它会对我们提供的公有的接口就是GRPC的那个接口说这是我的token然后把这个两个快照之间的修改了快的list给我公有的接口到接到以后它里面其实有两个东西一个是psycard就是那个快照元素的容器下面是CSI的私有接口这个psycard是主要的business就是处理业务逻辑的它接到这个token以后它就说它到API Server来说它是不是它它就把那个token送过去做一个token review确认这个令牌是对的确认完了以后它会API Server它会返回一个它的identity它的user的identity就是这个备份系统就是backup service accountwhatever it is它是个service account然后它再拿这个service account因为这个备份系统说我要快照一和快照二去问API Server说有没有这么一个ar back说了这个service account对这两个快照有access这个就是那个第四步它要检查这个传线叫subject review做完这个也说API Server说OK 它有它有的话它再去拿这个snapshot ID这个已经涉及到敏感的数据了snapshot ID其实是存储系统上一个unique identifier你是可以用这个ID对存储系统做一些操作的它拿到以后再把这两个ID打一个包通过这个CSI的私有接口然后去query存储系统去查询存储系统存储系统再把所有的更改链然后打成包送回来然后远处就去塞卡再把它包装成公用接口的公用的接口的格式然后返回的备份系统这个时候备份系统就可以拿到更改的这个list这个区间了这里面有一个有意思的问题就是我们之前也说了一个tb可能可以产生5GB的原数据大家可以想象的就是你一个grpc core的时候肯定是不能完全把数据全部读出来对不对所以这里面有一个pagination的一个过程其实就是在备份系统客户端的话就提供一个上一个页的index然后可以持续的读下一些页的一些改变这是非常高的一个它实际的时候就是长成这个样子的可能还要更多一点对但这个你不用照到时候我可以给你们发一个发一个链接它有一个专门的slice专门讲这个的我直播就把它放在这里看一下现在的话这是主要的开发团队有两个是从备发系统来的叫E1他们是还有一些是存储系统的两个是备份系统的而我们发布的目标大概就是在Kubernetes 1.29的时候会到AFA然后现在进展的是CAP的社区审查CSI接口也在社区审查这就是我之前说的那个现在Kubernetes已经非常非常成熟了你要做一个Fundamental的改变的时候或者是加一些新的feature的时候现在是非常非常的困难的有很多人有不同的观点当然这些观点都是好的观点绝大部分都是好的观点所以说这个审查的过程会非常慢然后我们有一个原型这个原型就是用LVM你们听过没有LVM来做的对 这就是我们现在主要做的事情如果大家有兴趣的话我们有个主页这个主页就是讲我们Protection Group的然后我们有个定期的会议大概是礼拜三的每两周 礼拜三早上九点那里有个会议的议程然后所谓的会议记录都在YouTube上面要翻墙才看到然后邮件的论坛就是也是一个Google Group我不知道是不是要应该是大家可以看到的然后还有一个Stack频道我刚刚时间好像刚刚好谢谢了谢谢大家如果有什么问题随便问 麻烦您您说这个是个商业问题谷歌在中国有团队的但是谷歌云在中国大陆是没有暂时是没有互联但是我没有听说我这事问题是最终是不是要用命令行我们的想法是不是就这个最左边这个是有硬有状态应用的恢复请求我们觉得这个东西最后可能可以变成一个CRD它就变成一个CRD变成一个资源一个Kubernetes的一个资源然后这个资源会有一个Controller一个相对的空置器来协调整个这个过程但这是我们的原警但是我觉得做起来真的非常非常难可能可以支持一些应用程序但是你要支持现在比如说卡夫卡就特别头疼因为卡夫卡它是一个完全Distributed系统它每个Topic的那个Leader也不太一样然后你要做到一个在卡夫卡的那个层面做Application Consistence就是应用一致性的这个快招是非常非常难做的现在包括AIGC的这些也是一样很难做可能是我们想的是先扩展一下看看能不能支持一些比较简单一点的比如说MySQL这种它是比较简单的它可能有一个有一个Active and Standby这个模式是不是就是有一个热能的这个模式但这个都是比较简单的但是现在是完全分布式的话其实在Kubernetes里面做这个真的就挺困难的但不是通过命令行是通过一个Kubernetes职员那您说好问题这个问题是快招了我为什么要倒出对不对好非常好的问题我简单的回答您一下首先快招有很多种您要看是哪个云很像谷歌云我已经用谷歌云打比方GCP它的快存储的快招是有两种的一种叫Local Snapshot就是本地的快招还有一种叫Remote Snapshot是远程的快招这两个有什么区别呢本地的快招是在本地的快存储上做一个mark假设你这个disk丢掉的话你这个mark也没了它非常快可能微秒级对不对但是非常的容易丢它解决的问题是什么呢比如说你要做一个系统的升级这个时候你的存储系统大概率上是不会出现故障的是不是你系统升级以后你发现这个软件有问题你要做回滚然后要非常快的回滚它解决这一类问题对但是它存储系统本身它是可以fail的对不对它如果fail的情况下它就需要有远程的备份来恢复它非常好的问题所以说这个备份导出你可以看一下它有两个箭头第一个是Kubernetes的资源备份这个存储系统是不会给你handle的对不对你得自己打个包送走是不是Kubernetes的原生备份器的这个控制器它用持久状的快照或者是备份系统的时候这是没有箭头的你发现没有持久状的备份和备份在那个角落里面在中间那个角落的地方因为这个是跟存储系统相关的如果跟存储系统相关它存储系统本身已经支持远程的快照它就没有必要做这个备份导出了它变成一个resource但是有一个问题就是它做了这个持久状的快照以后它的云里面是有一个resource的所以有个资源的你要把那个资源拿出来然后打包到Kubernetes资源里面去因为你在做恢复的时候你是要用那个ID的你说又是一个好问题这个已经超出我们这个community的范围了但是你刚刚说的这个问题非常的现实不光光是因为有好几种好几种应用场景需要你刚刚说的这个功能第一是从本地的服务器比如说我自己的数位中心挪到云上的时候我可能就需要这个对不对还有一种就是你做融灾的时候你想要做集存层次的融灾你不想做某一个application的融灾因为从一个大型的企业的数据保护官的角度上来讲它不在乎里面有多少个application它不在乎里面有多少个应用我在乎的是你这个集存是不是受到保护所以说这些都是实际上的问题这个东西我可以告诉你这个只有备份厂商才能做出来像我们作为一个community是不会提供这样的没有办法去提供这么高的app它必须要举现在这个class里面您说对对对对你说的热背是完全不冻结吗对对这就是这就是为什么我们有两条线的原因你刚刚说的这个首先我先回答其中一个问题就是在解除应用动机的时候如果那个东西飞了怎么办对它会锁死现在我们也没有解决方案而且这是一个难点我们暂时暂时没有看到有任何的可行性的真正能够医劳永异的解决这个问题的只能依赖于应用程序本身能够提供比较有依赖性的有比较reliable的这个接口这是没有我们从这个本身的从我们community的本身来讲这样讲我们很难去解决这个问题然后第二个问题就是这是个冷背还是个热背这东西如果我明白你的那个问题是正确的话其实你在乎的是这个过程有多长如果这个过程是2毫秒然后你可以中断你可以中断写2毫秒那就是个热背从你的角度上来讲对不对如果已经超过2毫秒或者剩1分钟了那就是个冷背对不对这就是为什么在我之前讲那个时候就是应用冻结和解决应用冻结这是一个非常危险的操作它之所以要引用这个东西的主要原因是要再做这个有状态的这个application的一致性因为你没有办法如果你没有冻结这个部分的话你没有办法做一致性其实就像你刚刚说的那个MySQL的那个或者是Postgres是类似的它就是两个操作一个是FSFlush一个就是FSFreeze它的那个解决应用冻结就是一个操作FS and Freeze对 就这么几个操作如果这个过那个快照的过程这个跟存土系统相关的如果快照可以在一毫秒之内发生然后我们自己的control然后在应用冻结和解决应用冻结的时候可以非快的发生的话我觉得这个本身就是个热背只不过是那个备份导出那一块这样你说如果要不能依赖于存土系统做离线的备份导出的话它的时间就会很长是不是没有时间了下一个也开始了如果你们还有问题的话我就在这里欢迎交流谢谢大家谢谢