zoukankan      html  css  js  c++  java
  • aufs挂载例程

      由于设备需要能回复出产设置功能,以前都是将最原始的文件都备份一份, 但是目前存在一个问题:系统升级后只是修改了一小部分文件,很多内容没有修改,这样就导致备份的大多数内容其实在浪费空间;那能不能和fork 那样做到cow呢?也就是升级的时候你要修改此文件,我才去备份!这样节约存储空间。so可以参考docker的aufs文件系统来设计自己的系统数据盘

    mount -n -t aufs -o br:/fp/modified/root=rw :/fp/update/root=ro+wh :/fp/orig/root=rr,noatime unionfs /union_root

       当需要修改一个文件,而该文件位于低层branch时,顶层branch会直接复制低层branch的文件至顶层再进行修改,而低层的文件不变,这种方式即是CoW技术(写复制),AUFS默认支持Cow技术。

      当删除一个低层branch文件时,只是在顶层branch对该文件进行重命名并隐藏,实际并未删除文件,只是不可见,这种方式即AUFS的whiteout(写隐藏)。

      写时复制(copy-on-write,常被简写为 CoW),也叫隐式共享,是一种提高资源使用效率的资源管理技术。它的思想是:如果一个资源是重复的,在没有对资源做出修改前,并不需要立即复制出一个新的资源实例,这个资源被不同的所有者共享使用。当任何一个所有者要对该资源做出修改时,复制出一个新的资源实例给该所有者进行修改,修改后的资源成为其所有者的私有资源。通过这种资源共享的方式,可以显著地减少复制相同资源带来的消耗,但是这样做也会在进行资源的修改时增加一部分开销

      aufs文件系统一旦挂载,只能对挂载联合文件系统的目录进行操作,不能对其他用于合并的目录进行操作。节省空间:AUFS 的 CoW 特性能够允许在多个容器之间共享分层,从而减少物理空间占用。

    • 查找文件:AUFS 的找性能在层数非常多时会出现下降,层数越多,查找性能越低。
    • 性能:AUFS 的 CoW 特性在写入大型文件时第一次会出现延迟。
    $ tree .
    ├── dir1
    │ ├── a
    │ └── b
    ├── dir2
    │ ├── b
    │ └── c
    └── mnt
     mount -t aufs -o dirs=./dir1:./dir2 none ./mnt
    
    $echo hello > ./mnt/b
    $ cat ./dir1/b
    hello
    $ cat ./dir2/b

      我们向dir1和dir2都同时拥有的文件b中写入了一个test,上层目录dir1中的b的内容被修改为了test,而下层目录dir2中的b 依然是空的。所以修改unionFS中的文件,只会修改最上层的文件,这就是aufs的一些简单的功能

      aufs联合文件系统在用在制作系统盘时的主要作用有2个,系统升级和系统恢复。

    系统升级主要是更新系统。系统恢复主要是当系统不正常或误删系统文件的时候,可以将系统恢复正常和恢复rootfs误删的系统文件。

    系统升级:

    当我们需要进行升级的时候,通过将升级的系统文件解压到update层和modified层来实现升级,解压到modified层是为了立即生效,解压到update层是为了备份升级内容。

    系统恢复:

    恢复到打了升级包的状态:

    场景:系统出问题,需要恢复系统,但是想保留之前打的所有升级包内容,包括修复的漏洞,解决的bug等。

    方案:通过删除aufs文件系统中modified层中root和nsfocus目录中的所有内容后,重启,则恢复到了升级后的版本

    恢复出厂设置:

    场景:系统出问题,需要恢复系统,直接恢复到出厂设置。

    方案:通过删除aufs文件系统中modified层和update层中root和nsfocus目录中的所有内容后,重启,则恢复到了出厂设置。

    mount -n -t aufs -o \
    br:/fp/modified/root=rw\
    :/fp/update/root=ro+wh\
    :/fp/orig/root=rr,noatime unionfs /union_root
    /bin/mount -n -t aufs -o remount,udba=notify,noatime,noxino unionfs /union_root
    
    mount -n -t aufs -o \
    br:/fp/modified/fpwork=rw\
    :/fp/update/fpwork=ro+wh\
    :/fpwork=rr,noatime unionfs /union_root/fproot/fpwork
    /bin/mount -n -t aufs -o remount,udba=notify,noatime,noxino unionfs /union_root/fproot/fpwork
    View Code
    http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!! 但行好事 莫问前程 --身高体重180的胖子
  • 相关阅读:
    数据库一直显示恢复中。。记录一则处理数据库异常的解决方法
    MSSQl分布式查询
    ASP.NET MVC中实现数据库填充的下拉列表 .
    理解浮点数的储存规则
    获取 "斐波那契数列" 的函数
    Int64 与 Currency
    学 Win32 汇编[33] 探讨 Win32 汇编的模块化编程
    学 Win32 汇编[34] 宏汇编(1)
    Delphi 中 "位" 的使用(2) 集合
    如何用弹出窗口显示进度 回复 "嘿嘿嘿" 的问题
  • 原文地址:https://www.cnblogs.com/codestack/p/15798990.html
Copyright © 2011-2022 走看看