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的胖子
  • 相关阅读:
    「应用管理与交付」为什么会成为云原生新的价值聚焦点?
    Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航
    如何用Netty写一个高性能的分布式服务框架?
    印度批准苹果和三星1430亿美元的智能手机制造计划
    东京证券交易所暂停了全天交易,与黑客有关吗?
    这些杀毒软件现漏洞,可能使计算机更易受黑客攻击
    又躺赚1亿?东方联盟创始人郭盛华,会的仅仅是技术吗?
    谷歌的VR虚拟现实为何失败了?VR的未来何去何从?
    爆料电脑天才郭盛华的稀有童年照,原来小时候就很帅
    好莱坞野心导演:郭盛华的传奇故事将拍黑客电影?他会参演吗?
  • 原文地址:https://www.cnblogs.com/codestack/p/15798990.html
Copyright © 2011-2022 走看看