色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

UnionFS有什么用?AUFS的一些特性

Linux閱碼場 ? 來源:未知 ? 作者:李倩 ? 2018-07-17 18:12 ? 次閱讀

AUFS是一種Union File System,所謂UnionFS就是把不同物理位置的目錄合并mount到同一個目錄中。UnionFS的一個最主要的應用是,把一張CD/DVD和一個硬盤目錄給聯合 mount在一起,然后,你就可以對這個只讀的CD/DVD上的文件進行修改(當然,修改的文件存于硬盤上的目錄里)。

AUFS又叫Another UnionFS,后來叫Alternative UnionFS,后來可能覺得不夠霸氣,叫成Advance UnionFS。是個叫Junjiro Okajima(岡島順治郎)在2006年開發的,AUFS完全重寫了早期的UnionFS 1.x,其主要目的是為了可靠性和性能,并且引入了一些新的功能,比如可寫分支的負載均衡。AUFS在使用上全兼容UnionFS,而且比之前的UnionFS在穩定性和性能上都要好很多,后來的UnionFS 2.x開始抄AUFS中的功能。但是他居然沒有進到Linux主干里,就是因為Linus不讓,基本上是因為代碼量比較多,而且寫得爛(相對于只有3000行的union mount和10000行的UnionFS,以及其它平均下來只有6000行代碼左右的VFS,AUFS居然有30000行代碼),所以,岡島不斷地改進代碼質量,不斷地提交,不斷地被Linus拒掉,所以,到今天AUFS都還進不了Linux主干(今天你可以看到AUFS的代碼其實還好了,比起OpenSSL好N倍,要么就是Linus對代碼的質量要求非常高,要么就是Linus就是不喜歡AUFS)。

不過,好在有很多發行版都用了AUFS,比如:Ubuntu 10.04,Debian6.0, Gentoo Live CD支持AUFS,所以,也OK了。

好了,扯完這些閑話,我們還是看一個示例吧(環境:Ubuntu 14.04)

首先,我們建上兩個目錄(水果和蔬菜),并在這兩個目錄中放上一些文件,水果中有蘋果和蕃茄,蔬菜有胡蘿卜和蕃茄。

然后,我們輸入以下命令:

我們可以看到在./mnt目錄下有三個文件,蘋果apple、胡蘿卜carrots和蕃茄tomato。水果和蔬菜的目錄被union到了./mnt目錄下了。

我們來修改一下其中的文件內容:

上面的示例,我們可以看到./mnt/apple的內容改了,./fruits/apple的內容也改了。

上面的示例,我們可以看到,我們修改了./mnt/carrots的文件內容,./vegetables/carrots并沒有變化,反而是./fruits/carrots的目錄中出現了carrots文件,其內容是我們在./mnt/carrots里的內容。

也就是說,我們在mount aufs命令中,我們沒有指它vegetables和fruits的目錄權限,默認上來說,命令行上第一個(最左邊)的目錄是可讀可寫的,后面的全都是只讀的。(一般來說,最前面的目錄應該是可寫的,而后面的都應該是只讀的)

所以,如果我們像下面這樣指定權限來mount aufs,你就會發現有不一樣的效果(記得先把上面./fruits/carrots的文件刪除了):

現在,在這情況下,如果我們要修改./mnt/tomato這個文件,那么究竟是哪個文件會被改寫?

可見,如果有重復的文件名,在mount命令行上,越往前的就優先級越高。

你可以用這個例子做一些各種各樣的試驗,我這里主要是給大家一個感性認識,就不展開試驗下去了。

那么,這種UnionFS有什么用?

歷史上,有一個叫Knoppix的Linux發行版,其主要用于Linux演示、光盤教學、系統急救,以及商業產品的演示,不需要硬盤安裝,直接把CD/DVD上的image運行在一個可寫的存儲設備上(比如一個U盤上),其實,也就是把CD/DVD這個文件系統和USB這個可寫的系統給聯合mount起來,這樣你對CD/DVD上的image做的任何改動都會在被應用在U盤上,于是乎,你可以對CD/DVD上的內容進行任意的修改,因為改動都在U盤上,所以你改不壞原來的東西。

我們可以再發揮一下想像力,你也可以把一個目錄,比如你的源代碼,作為一個只讀的template,和另一個你的working directory給union在一起,然后你就可以做各種修改而不用害怕會把源代碼改壞了。有點像一個ad hoc snapshot。

Docker把UnionFS的想像力發揮到了容器的鏡像。你是否還記得我在介紹Linux Namespace上篇中用mount namespace和chroot山寨了一鏡像。現在當你看過了這個UnionFS的技術后,你是不是就明白了,你完全可以用UnionFS這樣的技術做出分層的鏡像來。

下圖來自Docker的官方文檔Layer,其很好的展示了Docker用UnionFS搭建的分層鏡像。

關于docker的分層鏡像,除了aufs,docker還支持btrfs, devicemapper和vfs,你可以使用 -s 或 –storage-driver= 選項來指定相關的鏡像存儲。在Ubuntu 14.04下,docker默認Ubuntu的 aufs(在CentOS7下,用的是devicemapper,關于devicemapper,我會以以后的文章中講解)你可以在下面的目錄中查看相關的每個層的鏡像:

在docker執行起來后(比如:docker run -it ubuntu /bin/bash ),你可以從/sys/fs/aufs/si_[id]目錄下查看aufs的mount的情況,下面是個示例:

你會看到只有最頂上的層(branch)是rw權限,其它的都是ro+wh權限只讀的。

關于docker的aufs的配置,你可以在/var/lib/docker/repositories-aufs這個文件中看到。

AUFS的一些特性

AUFS有所有Union FS的特性,把多個目錄,合并成同一個目錄,并可以為每個需要合并的目錄指定相應的權限,實時的添加、刪除、修改已經被mount好的目錄。而且,他還能在多個可寫的branch/dir間進行負載均衡。

上面的例子,我們已經看到AUFS的mount的示例了。下面我們來看一看被union的目錄(分支)的相關權限:

rw表示可寫可讀read-write。

ro表示read-only,如果你不指權限,那么除了第一個外ro是默認值,對于ro分支,其永遠不會收到寫操作,也不會收到查找whiteout的操作。

rr表示real-read-only,與read-only不同的是,rr標記的是天生就是只讀的分支,這樣,AUFS可以提高性能,比如不再設置inotify來檢查文件變動通知。

權限中,我們看到了一個術語:whiteout,下面我來解釋一下這個術語。

一般來說ro的分支都會有wh的屬性,比如 “[dir]=ro+wh”。所謂whiteout的意思,如果在union中刪除的某個文件,實際上是位于一個readonly的分支(目錄)上,那么,在mount的union這個目錄中你將看不到這個文件,但是read-only這個層上我們無法做任何的修改,所以,我們就需要對這個readonly目錄里的文件作whiteout。AUFS的whiteout的實現是通過在上層的可寫的目錄下建立對應的whiteout隱藏文件來實現的。

看個例子:

假設我們有三個目錄和文件如下所示(test是個空目錄):

我們如下mount:

現在我們在權限為rw的test目錄下建個whiteout的隱藏文件.wh.apple,你就會發現./mnt/apple這個文件就消失了:

上面這個操作和 rm ./mnt/apple是一樣的。

相關術語

?Branch– 就是各個要被union起來的目錄(就是我在上面使用的dirs的命令行參數

?Branch根據被union的順序形成一個stack,一般來說最上面的是可寫的,下面的都是只讀的。

?Branch的stack可以在被mount后進行修改,比如:修改順序,加入新的branch,或是刪除其中的branch,或是直接修改branch的權限

?Whiteout和Opaque

?如果UnionFS中的某個目錄被刪除了,那么就應該不可見了,就算是在底層的branch中還有這個目錄,那也應該不可見了。

?Whiteout就是某個上層目錄覆蓋了下層的相同名字的目錄。用于隱藏低層分支的文件,也用于阻止readdir進入低層分支。

?Opaque的意思就是不允許任何下層的某個目錄顯示出來。

?在隱藏低層檔的情況下,whiteout的名字是’.wh.’。

?在阻止readdir的情況下,名字是’.wh..wh..opq’或者 ’.wh.__dir_opaque’。

相關問題

看到上面這些,你一定會有幾個問題:

其一、你可能會問,要有文件在原來的地方被修改了會怎么樣?mount的目錄會一起改變嗎?答案是會的,也可以是不會的。因為你可以指定一個叫udba的參數(全稱:User’s Direct Branch Access),這個參數有三個取值:

udba=none– 設置上這個參數后,AUFS會運轉的更快,因為那些不在mount目錄里發生的修改,aufs不會同步過來了,所以會有數據出錯的問題。

udba=reval– 設置上這個參數后,AUFS會去查文件有沒有被更新,如果有的話,就會把修改拉到mount目錄內。

udba=notify– 這個參數會讓AUFS為所有的branch注冊inotify,這樣可以讓AUFS在更新文件修改的性能更高一些。

其二、如果有多個rw的branch(目錄)被union起來了,那么,當我創建文件的時候,aufs會創建在哪里呢?aufs提供了一個叫create的參數可以供你來配置相當的創建策略,下面有幾個例子。

create=rr | round?robin輪詢。下面的示例可以看到,新創建的文件輪流寫到三個目錄中

reate=mfs[:second] | most?free?space[:second]選一個可用空間最好的分支。可以指定一個檢查可用磁盤空間的時間。

create=mfsrr:low[:second]選一個空間大于low的branch,如果空間小于low了,那么aufs會使用 round-robin 方式。

更多的關于AUFS的細節使用參數,大家可以直接在Ubuntu 14.04下通過man aufs來看一下其中的各種參數和命令。

AUFS的性能

AUFS的性能慢嗎?也慢也不慢。因為AUFS會把所有的分支mount起來,所以,在查找文件上是比較慢了。因為它要遍歷所有的branch。是個O(n)的算法(很明顯,這個算法有很大的改進空間的)所以,branch越多,查找文件的性能也就越慢。但是,一旦AUFS找到了這個文件的inode,那后以后的讀寫和操作原文件基本上是一樣的。

所以,如果你的程序跑在在AUFS下,open和stat操作會有明顯的性能下降,branch越多,性能越差,但是在write/read操作上,性能沒有什么變化。

IBM的研究中心對Docker的性能給了一份非常不錯的性能報告(PDF)《An Updated Performance Comparison of Virtual Machinesand Linux Containers》

我截了兩張圖出來,第一張是順序讀寫,第二張是隨機讀寫。基本沒有什么性能損失的問題。而KVM在隨機讀寫的情況也就有點慢了(但是,如果硬盤是SSD的呢?)

順序讀寫

隨機讀寫

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11311

    瀏覽量

    209688

原文標題:DOCKER基礎技術:AUFS

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    斬波器什么用

    斬波器什么用找來個東西象電子管的樣子,全金屬封裝,7腳,常州繼電器廠出的。ZB-2-6.3    6.3v/50HZ。不知干什么用的,請教大
    發表于 11-10 10:28 ?1853次閱讀

    模擬電路的一些簡單的特性

    準備分析模擬電路的一些簡單的特性 偶是本科和研究生都是學儀器工程的,偶老師在這個方面也是很厲害的。師兄多人在這個行業,1人在NI做硬件工程師
    發表于 11-21 15:13 ?871次閱讀

    GPS天線什么用?

    GPS天線什么用?      天線主要是指GPS接收信號時所用的電線是處于接收器什么位置上,如內置天線、外置天線、車載天線等。
    發表于 01-29 09:33 ?1096次閱讀

    esata接口什么用

    esata接口什么用 簡單說eSATA實際上就是外置式SATA II規范,是業界標準接口Serial ATA(SATA)的延伸。簡單說就是通過eSATA技術,讓外部I/
    發表于 03-25 11:05 ?1.8w次閱讀

    智能手環什么用

    智能手環是智能硬件中應用較多的智能設備,本文講解智能手環什么用,從智能手環品牌以及常規則功能進行介紹。
    發表于 08-25 19:13 ?7611次閱讀

    一些經典的濾波電路介紹

    一些經典的濾波電路,興趣的朋友們可以參考參考,若該文檔做違法行為,后果自負
    發表于 07-19 17:34 ?0次下載

    智能插座什么用

    本視頻主要詳細介紹了智能插座什么用,分別是充電、定時、遙控、監測、電路保護、照明。
    的頭像 發表于 02-26 15:43 ?1.1w次閱讀

    折疊屏幕什么用

    在智能機中,可折疊屏幕的意義在于能夠在維持機身體積不變的前提下帶來更大的顯示面積。臺手機是手機也是平板,只需簡單折疊就能變換形態,科技感十足。那么發展折疊屏幕什么用呢?
    的頭像 發表于 03-10 09:41 ?8716次閱讀

    PCB設計中開窗什么用?如何設計?

    我經常聽到人們說在PCB設計中開窗。什么是開窗,PCB設計開窗什么用,怎么開窗?接下來為您解答。
    發表于 05-01 16:24 ?2.8w次閱讀

    藍牙信標定位什么用

    藍牙信標定位什么用
    的頭像 發表于 07-28 14:11 ?9975次閱讀

    小米機器狗什么用

    小米機器狗什么用
    的頭像 發表于 08-12 09:33 ?1.4w次閱讀

    直流電機的一些特性

    直流電機的一些特性(現代電源技術基礎計算題)-直流電機的一些特性需要的可以參考!
    發表于 09-15 15:48 ?5次下載
    直流電機的<b class='flag-5'>一些</b><b class='flag-5'>特性</b>

    解析Armv8.1-M的一些特性

    簡單闡述下ARMv8.1-M的一些特性,更多的特性及其詳細信息,請查看Armv8-M Architecture Reference Manual-DDI0553B_m。
    的頭像 發表于 02-06 10:55 ?1354次閱讀

    鋰電池防爆箱什么用

    鋰電池防爆箱什么用
    的頭像 發表于 07-02 15:17 ?1793次閱讀
    鋰電池防爆箱<b class='flag-5'>有</b><b class='flag-5'>什么用</b>?

    pcb仿真技術什么用

    pcb仿真技術什么用
    的頭像 發表于 11-28 15:22 ?1136次閱讀
    主站蜘蛛池模板: 色中色最新地址登陆| 94色94色永久网站| 俄罗斯性孕妇孕交| 我半夜摸妺妺的奶C了她软件| 国产偷国产偷亚洲高清人乐享| 亚洲欧洲久久| 免费人成视频19674不收费| 超碰国产亚洲人人| 亚洲国产中文字幕在线视频 | 俄罗斯freeⅹ性欧美| 亚洲AV香蕉一区区二区三区蜜桃| 久久精品热老司机| 处女座历史名人| 亚洲无AV在线中文字幕| 男人扒开添女人屁股| 国产GV无码A片在线观看| 亚洲在线国产日韩欧美| 秋霞电影网视频一区二区三区| 国产一区二区三区乱码在线观看 | 亚洲精品国产高清嫩草影院| 蜜臀AV人妻久久无码精品麻豆| 短篇合集纯肉高H深陷骚 | 午夜影视免费| 免费。色婬网站| 国产三级在线免费观看| 99久久香蕉| 亚洲天堂999| 涩涩爱涩涩电影网站| 老牛天天晚上夜噜噜噜| 国产精品美女久久久久AV超清| 3DNagoonimation动漫| 午夜福利不卡片在线播放免费| 免费果冻传媒2021在线观看| 果冻传媒在线完整免费播放| 饱满奶大30p| 最新精品学生国产自在现拍| 亚洲AV蜜桃永久无码精品无码网 | 色AV色婷婷97人妻久久久| 久久婷婷五月综合色丁香花| 国产精品福利电影| xfplay 无码专区 亚洲|