A full backup of a large data set may take a long time to complete. On multi-tasking or multi-user systems, there may be writes to that data while it is being backed up. This prevents the backup from being atomic and introduces a version skew that may result in data corruption. For example, if a user moves a file into a directory that has already been backed up, then that file would be completely missing on the backup media, since the backup operation had already taken place before the addition of the file. Version skew may also cause corruption with files which change their size or contents underfoot while being read.

One approach to safely backing up live data is to temporarily disable write access to data during the backup, either by stopping the accessing applications or by using the locking API provided by the operating system to enforce exclusive read access. This is tolerable for low-availability systems (on desktop computers and small workgroup servers, on which regular downtime is acceptable). High-availability 24/7 systems, however, cannot bear service stoppages.

To avoid downtime, high-availability systems may instead perform the backup on a snapshot—a read-only copy of the data set frozen at a point in time—and allow applications to continue writing to their data. Most snapshot implementations are efficient and can create snapshots in O(1). In other words, the time and I/O needed to create the snapshot does not increase with the size of the data set; by contrast, the time and I/O required for a direct backup is proportional to the size of the data set. In some systems once the initial snapshot is taken of a data set, subsequent snapshots copy the changed data only, and use a system of pointers to reference the initial snapshot. This method of pointer-based snapshots consumes less disk capacity than if the data set was repeatedly cloned.

Read-write snapshots are sometimes called branching snapshots, because they implicitly create diverging versions of their data. Aside from backups and data recovery, read-write snapshots are frequently used in virtualization, sandboxing and virtual hosting setups because of their usefulness in managing changes to large sets of files.

最新文章

  1. 自定义angularjs分页控件
  2. 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)
  3. node安装笔记
  4. 【JDK源码分析】String的存储区与不可变性
  5. .NET Core配置文件加载与DI注入配置数据
  6. Mysql基础2
  7. 在 CentOS 里安装 BIND-UTILS 以使用 DIG、HOST 和 NSLOOKUP
  8. CELERY里,这个WARNING如何消除?
  9. nginx 代理 proxy_pass设置
  10. 为什么Node.JS会受到青睐?
  11. ip地址0.0.0.0与127.0.0.1的区别(转载)
  12. c# List实现原理
  13. bat脚本:windows下一键启动zookeeper+kafka
  14. hive参数配置详细
  15. mouseover和mouseenter,mouseout和mouseleave的区别-引发的探索
  16. Service 动态更新 UI
  17. 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
  18. iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字
  19. Odoo启动配置文件
  20. Python中的封装,继承和多态

热门文章

  1. ios code style
  2. 常用终端及git命令
  3. (转)MySql可视化工具MySQL Workbench使用教程
  4. thinkcmf thinkphp隐藏后台地址
  5. jQuery 1.7以后 jQuery2 新元素绑定事件on替代live
  6. Mac下修改默认的Java版本
  7. 纯javascript 回到 顶部 实例
  8. 设置Session的超时时间
  9. win7win8远程桌面提示凭证不工作问题
  10. oracle学习总结