overlay檔案系統是docker容器廣泛使用的檔案系統。寫時複製的思想,將檔案分成兩層,分為lower和upper。
overlay檔案系統實際上是一種掛載技術:
比如新建三個資料夾:
mkdir upper lower merged work
# lower層和upper層各包括乙個檔案
echo
"i'm from lower!"
> lower/in_lower.txt
echo
"i'm from upper!"
> upper/in_upper.txt
# 然後建立乙個兩層都有的檔案
echo
"i'm from lower! "
> lower/in_both.txt
echo
"i'm from upper! "
> upper/in_both.txt
執行overlay:
mount -t overlay overlay -o lowerdir=/root/overlay/lower,upperdir=/root/overlay/upper,workdir=/root/overlay/work \
/root/overlay/merged
在合併層新建乙個檔案:
[root@localhost overlay]
# touch /root/overlay/merged/newfile.txt
#發現僅upper層有
[root@localhost overlay]
# tree .
.├── lower
│ ├── in_both.txt
│ └── in_lower.txt
├── merged
│ ├── in_both.txt
│ ├── in_lower.txt
│ ├── in_upper.txt
│ └── newfile.txt
├── upper
│ ├── in_both.txt
│ ├── in_upper.txt
│ └── newfile.txt
└── work
└── work
在合併層刪除乙個檔案:
[root@localhost overlay]
# rm -f /root/overlay/merged/in_both.txt
# in_both.txt它還是存在的!!!不過你可以檢視下它的檔案格式
[root@localhost overlay]
# tree .
.├── lower
│ ├── in_both.txt
│ └── in_lower.txt
├── merged
│ ├── in_lower.txt
│ ├── in_upper.txt
│ └── newfile.txt
├── upper
│ ├── in_both.txt
│ ├── in_upper.txt
│ └── newfile.txt
└── work
└── work
[root@localhost overlay]
# cat /root/overlay/upper/in_both.txt
cat: /root/overlay/upper/in_both.txt: no such device or address
[root@localhost overlay]
# file /root/overlay/upper/in_both.txt
/root/overlay/upper/in_both.txt: character special
修改合併層的乙個檔案:
[root@localhost overlay]
# echo "change in merge" >> merged/in_lower.txt
[root@localhost overlay]
# tree .
.├── lower
│ ├── in_both.txt
│ └── in_lower.txt
├── merged
│ ├── in_lower.txt
│ ├── in_upper.txt
│ └── newfile.txt
├── upper
│ ├── in_both.txt
│ ├── in_lower.txt # 因為修改這裡多了乙個檔案
│ ├── in_upper.txt
│ └── newfile.txt
└── work
└── work
5 directories, 9 files
# 你會發現lower層檔案沒有更改
[root@localhost overlay]
# cat merged/in_lower.txt
i'm from lower!
change in merge
[root@localhost overlay]# cat upper/in_lower.txt
i'm from lower!
change in merge
[root@localhost overlay]
# cat lower/in_lower.txt
i'm from lower!
看下檔案尺寸你會發現它重新複製了乙份:
[root@localhost overlay]# ls -al upper/in_lower.txt
-rw-r--r--
.1 root root 33
[這裡加了16個位元組,我不知道為什麼多乙個!!!] may 2014:
43 upper/in_lower.txt
[root@localhost overlay]# ls -al lower/in_lower.txt
-rw-r--r--
.1 root root 17 may 2014:
12 lower/in_lower.txt
overlay 檔案系統
overlayfs檔案系統類似於aufs,相比aufs,overlay實現更簡潔,很早就合入了linux主線,合入主線後overlayfs修改為overlay。docker 使用overlay檔案系統來構建和管理映象與容器的磁碟結構。overlay檔案系統分為lowerdir upperdir me...
檔案系統 why檔案系統
為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...
檔案系統 檔案系統的架構
vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...