日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
講解一下LinuxAUFS文件系統(tǒng)

AUFS是一種聯(lián)合文件系統(tǒng)。它使用同一個Linux host上的多個目錄,逐個堆疊起來,對外呈現(xiàn)出一個統(tǒng)一的文件系統(tǒng)。AUFS使用該特性,實(shí)現(xiàn)了Docker鏡像的分層。下圖展示出ubuntu:latest的鏡像的分層。

站在用戶的角度思考問題,與客戶深入溝通,找到橋東網(wǎng)站設(shè)計(jì)與橋東網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋橋東地區(qū)。

Union File System

Union File System,簡稱 UnionFS,是一種為 Linux、FreeBSD 和 NetBSD 操作系統(tǒng)設(shè)計(jì)的,把其它文件系統(tǒng)聯(lián)合到一個聯(lián)合掛載點(diǎn)的文件系統(tǒng)服務(wù)。它使用 branch 把不同文件系統(tǒng)的文件和目錄”透明地”覆蓋,形成一個單一一致的文件系統(tǒng)。這些 branch 或者是 read-only 的,或者是 read-write 的,所以當(dāng)對這個虛擬后的聯(lián)合文件系統(tǒng)進(jìn)行寫操作的時候,系統(tǒng)是真正寫到了一個新的文件中??雌饋磉@個虛擬后的聯(lián)合文件系統(tǒng)是可以對任何文件進(jìn)行操作的,但是其實(shí)它并沒有改變原來的文件。這是因?yàn)?Union File System 用到了一個重要的資源管理技術(shù):寫時復(fù)制。

寫時復(fù)制(copy-on-write,常被簡寫為 CoW),也叫隱式共享,是一種提高資源使用效率的資源管理技術(shù)。它的思想是:如果一個資源是重復(fù)的,在沒有對資源做出修改前,并不需要立即復(fù)制出一個新的資源實(shí)例,這個資源被不同的所有者共享使用。當(dāng)任何一個所有者要對該資源做出修改時,復(fù)制出一個新的資源實(shí)例給該所有者進(jìn)行修改,修改后的資源成為其所有者的私有資源。通過這種資源共享的方式,可以顯著地減少復(fù)制相同資源帶來的消耗,但是這樣做也會在進(jìn)行資源的修改時增加一部分開銷。

創(chuàng)建 AUFS

我們可以通過 mount 命令手動創(chuàng)建 AUFS,接下來我們就用這種方式來演示 AUFS 的主要特征。

創(chuàng)建演示用的目錄和文件

先創(chuàng)建一個名稱為 aufs 的文件夾用作實(shí)驗(yàn)?zāi)夸洠?/p>

$ mkdir aufs

然后在 aufs 中創(chuàng)建名稱為 mnt 的目錄作為文件系統(tǒng)的掛載點(diǎn):

$ mkdir aufs/mnt

接下來在 aufs 目錄下創(chuàng)建 container-layer 文件夾(模擬容器的讀寫層),并且在文件夾中創(chuàng)建文件 container-layer.txt,文件的內(nèi)容初始化為 “I am container layer”:

$ mkdir aufs/container-layer
$ echo "I am container layer" > aufs/container-layer/container-layer.txt

最后在 aufs 目錄下創(chuàng)建三個文件夾 image-layer1、image-layer2、image-layer3(用它們來模擬容器的鏡像層)。在這三個文件夾中分別創(chuàng)建文件,并初始化為對應(yīng)的內(nèi)容:

$ mkdir aufs/{image-layer1,image-layer2,image-layer3}
$ echo "I am image layer 1" > aufs/image-layer1/image-layer1.txt
$ echo "I am image layer 2" > aufs/image-layer2/image-layer2.txt
$ echo "I am image layer 3" > aufs/image-layer3/image-layer3.txt

準(zhǔn)備的目錄和文件結(jié)構(gòu)如下圖所示:

創(chuàng)建 AUFS 文件系統(tǒng)

mount 是一個非常強(qiáng)大的命令,我們可以用它來創(chuàng)建 AUFS 文件系統(tǒng)。下面的命令把 container-layer、image-layer1、image-layer2、image-layer3 以 AUFS 的方式掛載到剛才創(chuàng)建的 mnt 目錄下:

$ cd aufs
$ sudo mount -t aufs -o dirs=./container-layer:./image-layer1:./image-layer2:./image-layer3 none ./mnt

掛載完成后可以看到 mnt 目錄下的文件結(jié)構(gòu)為:

注意,在 mount 命令中我們沒有指定要掛載的 4 個文件夾的權(quán)限信息,其默認(rèn)行為是:dirs 指定的左邊起第一個目錄是 read-write 權(quán)限,后續(xù)目錄都是 read-only 權(quán)限。我們可以通過下面的方式查看詳情:

其中的 si_99b90cdd124201eb 目錄是系統(tǒng)為 mnt 這個掛載點(diǎn)創(chuàng)建的,從上圖中我們可以清楚的看到各個目錄的掛載權(quán)限。

驗(yàn)證寫時復(fù)制

下面讓我們向 mnt/image-layer2.txt 文件中寫入些數(shù)據(jù),看看會發(fā)生什么變化?

$ echo "I changed mnt/image-layer2.txt" >> mnt/image-layer2.txt

查看 mnt/image-layer2.txt 的內(nèi)容,發(fā)現(xiàn)已經(jīng)變化了:

I am image layer 2
I changed mnt/image-layer2.txt

再去看看 image-layer2/image-layer2.txt,發(fā)現(xiàn)它的內(nèi)容沒有變化,還是:

I am image layer 2

原因在哪里呢?去 container-layer 目錄下看看:

這里多了一個 image-layer2.txt 文件,其內(nèi)容如下:

原來,當(dāng)嘗試向 mnt/image-layer2.txt 中寫入文件時,系統(tǒng)首先在 mnt 目錄下查找名為 image-layer2.txt 的文件,將其拷貝到 read-write 層的 container-layer 目錄中,接著對 container-layer 目錄中的 image-layer2.txt 的文件進(jìn)行寫操作。這個過程也就是 AUFS 的實(shí)際工作原理。

至此,我們完成了一個簡單的 AUFS demo??梢钥闯?AUFS 的原理并不是很復(fù)雜,但是當(dāng)與容器技術(shù)相結(jié)合后,就展示出來超強(qiáng)的魅力,并成為初代 docker 默認(rèn)的存儲驅(qū)動。雖然當(dāng)前 docker 默認(rèn)的存儲驅(qū)動已經(jīng)演進(jìn)到了 overlay2,但是學(xué)習(xí) AUFS 依然可以幫助我們深入理解 docker 中的文件系統(tǒng)。


網(wǎng)頁標(biāo)題:講解一下LinuxAUFS文件系統(tǒng)
文章出自:http://www.dlmjj.cn/article/djedsds.html