8種機械鍵盤軸體對比
本人程式員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎麼選?
概述
在docker底層原理的學習過程中,接觸到了UnionFS的概念。
UnionFS,顧名思義,是聯合檔案系統的意思。那怎麼個聯合法呢?舉個簡單的例子:
假設,我們有兩個檔案夾A和檔案夾B,A檔案夾下有檔案a1,a2,a3,B檔案夾下有檔案b1,b2,b3。
我們通過建立一個檔案夾C,并且使用UnionFS,使得我們可以再C檔案夾下可以直接通路a1,a2,a3,b1,b2,b3。
這樣我們就把A檔案夾和B檔案夾聯合起來了。
當然,在實際的實作過程中,概念會更多。
UnionFS的實作是比較多的,目前docker中使用的UnionFS的實作是overlay2,而我在網上找到的相關資料并不多,
處于好奇,專門對其進行了一些實際操作,并記錄下來。
簡介
overlayFS允許一個可讀寫的目錄覆寫在多個隻讀的目錄之上,這些目錄就構成了多個層(layer),而當我們在聯合起來的目錄中工作的時候,
我們所有的寫入操作最終都進入了最上層的讀寫層目錄中,這一點我後續會通過指令展示。
overlayFS與其他的unionFS的實作最終要的不同在于,當一個檔案打開之後,所有的操作都直接和底層的檔案系統打交道,這樣可以保證操作的
性能。
在Linux kernel 3.18之後,overlayFS已經內建到核心中去了。我們在該版本之後的Linux核心中,不需要安裝,就可以開始使用overlayFS了。
使用
可讀寫的聯合檔案系統
我們使用如下指令來挂在一個overlay檔案系統
mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /merged
其中,lowerdir的值可以是一些的檔案夾清單,使用:分開,這些事隻讀層。
merged檔案夾是最終聯合起來的檔案系統,我們可以在merged檔案夾中通路所有lowerdir和upperdir中的内容
在merged檔案夾所做的所有修改,最終都會存儲到upperdir目錄中
workdir指定的目錄需要和upperdir位于同一目錄中
檔案的覆寫順序,upperdir目錄擁有最高覆寫權限,lowerdir按照mount時從左到右的順序,權重依次降低,左邊的覆寫右邊的同名檔案或者檔案夾。
注意,覆寫僅僅在mount時按照此順序,一旦mount成功後,按照檔案出現的早晚覆寫,出現早的會屏蔽出現晚的同名檔案。除非修改是在merged目錄中進行。
開機自動挂載
在/etc/fstab中實作自動挂載的格式如下,本人暫未實踐
overlay /merged overlay noauto,x-systemd.automount,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0
隻讀聯合檔案系統
mount -t overlay overlay -o lowerdir=/lower1:/lower2 /merged
overlayFS相關示範
總結
overlayFS可以在多種應用場合中使用,我們這裡關注在docker中的使用方式。
在docker中個,多個鏡像可以看做是多個lowerdir,隻讀層,當我們啟動一個容器的時候,使用overlayFS将多個鏡像
聯合挂載到一個目錄,并使得容器中可以對目錄中的檔案進行讀寫操作,但讀寫操作僅僅會影響到目前容器的upperdir和
目前目錄,并不會影響到鏡像中的資料。
參考連結