Google File System系列:Snapshot流程

本文深入探讨了GFS(Google File System)快照功能的核心原理,采用写时复制机制实现文件或目录树的快速拷贝。通过快照,用户能轻松创建大量数据集的分支副本,或在实验性操作前备份当前状态,便于后续的提交或回滚。

GFS的snapshot采用的是写时复制的机制进行的,GFS快照操作几乎可以瞬间完成对一个文件或者目录树(“源”)做一个拷贝,并且几乎不会对正在进行的其它操作造成任干扰。我们的用户可以使用快照迅速的创建一个巨大的数据集的分支拷贝(而且经常是递归的拷贝拷贝),或者是在做实验性的数据操作之前,使用快照操作备份当前状态,这样之后就可以轻松的提交或者回滚到备份时的状态。闲话少说,以下是我个人理解的流程序列图:


上图是我个人的理解,不一定完全一致,如有什么问题,可以留言讨论,共同进步。

行 137995: 09-18 09:52:32.972 root 2028 2028 I update_engine: type: new_update 行 137996: 09-18 09:52:32.972 root 2028 2028 I update_engine: version: 行 137997: 09-18 09:52:32.972 root 2028 2028 I update_engine: source_slot: A 行 137998: 09-18 09:52:32.972 root 2028 2028 I update_engine: target_slot: B 行 137999: 09-18 09:52:32.972 root 2028 2028 I update_engine: initial url: /storage/emulated/0/Download/flame-ota_incremental-OS3.0.250915.1.WGUCNXM.STABLE-SSI-OS3.0.250917.1.WGUCNXM.STABLE-SSI-user-16.0-016342ab2d.zip 行 138000: 09-18 09:52:32.972 root 2028 2028 I update_engine: hash_checks_mandatory: true 行 138001: 09-18 09:52:32.972 root 2028 2028 I update_engine: powerwash_required: false 行 138002: 09-18 09:52:32.972 root 2028 2028 I update_engine: switch_slot_on_reboot: true 行 138003: 09-18 09:52:32.972 root 2028 2028 I update_engine: run_post_install: true 行 138004: 09-18 09:52:32.972 root 2028 2028 I update_engine: write_verity: true 行 138005: 09-18 09:52:32.972 root 2028 2028 I update_engine: Payload: 0 行 138006: 09-18 09:52:32.972 root 2028 2028 I update_engine: urls: () 行 138007: 09-18 09:52:32.972 root 2028 2028 I update_engine: size: 238789346 行 138008: 09-18 09:52:32.972 root 2028 2028 I update_engine: metadata_size: 5180000 行 138009: 09-18 09:52:32.972 root 2028 2028 I update_engine: metadata_signature: 行 138010: 09-18 09:52:32.972 root 2028 2028 I update_engine: hash: 634C6A718C22A31B4C607AFD2359FF6B84BE6B3C4AC2FA3CB8BEB6A29C0A2AC9 行 138011: 09-18 09:52:32.972 root 2028 2028 I update_engine: type: unknown 行 138012: 09-18 09:52:32.972 root 2028 2028 I update_engine: fingerprint: 行 138013: 09-18 09:52:32.972 root 2028 2028 I update_engine: app_id: 行 138014: 09-18 09:52:32.972 root 2028 2028 I update_engine: already_applied: false 行 138015: 09-18 09:52:32.973 root 2028 2028 I update_engine: [INFO:dynamic_partition_control_android.cc(1006)] SnapshotManager initialized. 行 138016: 09-18 09:52:32.978 root 2028 2028 I update_engine: [INFO:postinstall_runner_action.cc(94)] postinstall mount point: /postinstall 行 138019: 09-18 09:52:32.988 root 2028 2028 I update_engine: [INFO:metrics_utils.cc(330)] Number of Reboots during current update attempt = 0 行 138020: 09-18 09:52:32.998 root 2028 2028 I update_engine: [INFO:metrics_utils.cc(338)] Payload Attempt Number = 1 行 138021: 09-18 09:52:33.011 root 2028 2028 I update_engine: [INFO:metrics_utils.cc(355)] Update Monotonic Timestamp Start = 1/1/1970 0:24:06 GMT 行 138022: 09-18 09:52:33.026 root 2028 2028 I update_engine: [INFO:metrics_utils.cc(364)] Update Boot Timestamp Start = 1/1/1970 0:24:06 GMT 行 138023: 09-18 09:52:33.029 root 2028 2028 I update_engine: [INFO:update_attempter_android.cc(1017)] Clearing update complete marker. 行 138024: 09-18 09:52:33.032 root 2028 2028 I update_engine: [INFO:update_attempter_android.cc(896)] Scheduling an action processor start. 行 138025: 09-18 09:52:33.037 root 2028 2028 I update_engine: [INFO:action_processor.cc(51)] ActionProcessor: starting UpdateBootFlagsAction 行 138026: 09-18 09:52:33.039 root 2028 2028 I update_engine: [INFO:update_boot_flags_action.cc(45)] Marking booted slot as good. 行 138030: 09-18 09:52:33.224 root 2028 2028 I update_engine: [INFO:action_processor.cc(116)] ActionProcessor: finished UpdateBootFlagsAction with code ErrorCode::kSuccess 行 138033: 09-18 09:52:33.226 root 2028 2028 I update_engine: [INFO:action_processor.cc(143)] ActionProcessor: starting CleanupPreviousUpdateAction 行 138034: 09-18 09:52:33.228 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(154)] Starting/resuming CleanupPreviousUpdateAction 行 138035: 09-18 09:52:33.230 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(195)] Boot completed, waiting on markBootSuccessful() 行 138036: 09-18 09:52:33.240 root 2028 2028 I update_engine: [INFO:snapshot.cpp(4145)] EnsureMetadataMounted does nothing in Android mode. 行 138037: 09-18 09:52:33.243 root 2028 2028 I update_engine: [INFO:snapshot_stats.cpp(40)] Read merge statistics file failed: No such file or directory 行 138038: 09-18 09:52:33.251 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(294)] Waiting for any previous merge request to complete. This can take up to several minutes. 行 138039: 09-18 09:52:33.254 root 2028 2028 I update_engine: [INFO:snapshot.cpp(1190)] CheckMergeState for snapshots returned: None 行 138040: 09-18 09:52:33.256 root 2028 2028 I update_engine: [INFO:snapshot.cpp(1155)] ProcessUpdateState handling state: None 行 138041: 09-18 09:52:33.259 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(331)] Can't find any snapshot to merge. 行 138042: 09-18 09:52:33.261 root 2028 2028 I update_engine: [INFO:snapshot.cpp(247)] Cancelling update from state: 0 行 138043: 09-18 09:52:33.263 root 2028 2028 I update_engine: [INFO:snapshot.cpp(352)] Removing all update state. 行 138044: 09-18 09:52:33.281 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(136)] Stopping/suspending/completing CleanupPreviousUpdateAction 行 138045: 09-18 09:52:33.284 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(520)] Not reporting merge stats because state is None 行 138046: 09-18 09:52:33.286 root 2028 2028 I update_engine: [INFO:cleanup_previous_update_action.cc(136)] Stopping/suspending/completing CleanupPreviousUpdateAction 行 138047: 09-18 09:52:33.288 root 2028 2028 I update_engine: [INFO:action_processor.cc(116)] ActionProcessor: finished CleanupPreviousUpdateAction with code ErrorCode::kSuccess 行 138048: 09-18 09:52:33.289 root 2028 2028 I update_engine: [INFO:action_processor.cc(143)] ActionProcessor: starting InstallPlanAction 行 138049: 09-18 09:52:33.291 root 2028 2028 I update_engine: [INFO:action_processor.cc(116)] ActionProcessor: finished InstallPlanAction with code ErrorCode::kSuccess 行 138050: 09-18 09:52:33.293 root 2028 2028 I update_engine: [INFO:action_processor.cc(143)] ActionProcessor: starting DownloadAction 行 138051: 09-18 09:52:33.295 root 2028 2028 I update_engine: [INFO:install_plan.cc(79)] InstallPlan:
09-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值