|NO.Z.00017|——————————|CloudVirtualiZation|——|Cloud&Docker儲存.V02|-------------------------------------|儲存驅動|
阿新 • • 發佈:2022-03-27
[CloudVirtualiZation:Cloud&Docker儲存.V02] [Applications.CloudVirtualiZation] [|docker|docker資料儲存|資料卷特性|容器中的資料卷Volume|儲存驅動|overlay]
一、儲存驅動
### --- Docker儲存驅動(storage driver)是docker的核心元件, ~~~ 它是docker實現分成映象的基礎 ~~~ device mapper(DM):效能和穩定性存在問題, ~~~ 不推薦生產環境中使用;DM會在centos7中較為老的版本中使用, ~~~ 若是centos7的核心版本低於歐3.18版本; ~~~ overlayfs還沒有進入主線版本,那主線版本呢當時是DM, ~~~ docker會退格使用DM的儲存驅動。
~~~ # docker info:效能和穩定存在問題是相對與overlayfs來說的, ~~~ 並不是差到不能用,推薦還是使用overlayfs ~~~ # Storage Driver: overlay:我們在安裝的時候加入update的更新, ~~~ 把版本更新到最新版本。若是沒有更新,使用的centos7的版本比較老的話預設儲存驅動就會是DM ~~~ # btrfs:社群實現了btrfs driver穩定性和效能存在問題; ~~~ 是居於docker社群實現的,在非docker容器中也有在使用;對於DM來說相對好一點 ~~~ # overlayfs:核心3.18overlayfs進入主線,效能和穩定性優異,第一選擇; ~~~ 在3.18以後,在centos中Redhat系列中才會進入到主線,Ubuntu16已進入主線。
[root@hub volumes]# docker info
Storage Driver: overlay
btrfs
overlayf
### --- Docker overlayfs driver
[root@hub ~]# mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged
二、overlay工作過程### --- overlay工作過程 [root@hub ~]# mkdir /var/overlay [root@hub ~]# cd /var/overlay/
### --- 在overlay目錄下建立這四個目錄
[root@hub overlay]# mkdir low work upper merged
~~~ work: 工作目錄
~~~ low: 最下層
~~~ upper: 中間層
~~~ merged: 使用者的掛載層,最上層。
[root@hub overlay]# mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged //掛載
[root@hub overlay]# mount
overlay on /var/overlay/merged type overlay (rw,relatime,lowerdir=./low,upperdir=./upper,workdir=./work) //顯示掛載成功
[root@hub overlay]# vim low/1.txt
aaaaaaaaaaa
[root@hub overlay]# vim upper/2.txt
bbbbbbbbbbb
[root@hub overlay]# tree
.
├──low
│ └── 1.txt
├── merged // merged為什麼會出現1.txt和2.txt檔案
│ └── 1.txt // 自上而下去看,若是上面有的,下面都會顯示出來;若是上面有的會把下面的覆蓋掉;
│ └── 2.txt // 顯示覆制的機制,自上而下的去看。
├── upper
│ └── 2.txt
└── work
└── work
[root@hub overlay]# cat merged/1.txt
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# cat merged/2.txt
bbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# vim merged/1.txt
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# cat low/1.txt // 最低層low層1.txt檔案內容沒有修改
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# ls upper/ // 而中間層upper出現了一個1.txt檔案,
1.txt 2.txt
[root@hub overlay]# cat upper/1.txt // 且1.txt檔案變成我修改後的檔案,而low層1.txt檔案內容沒有變化
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# rm -rf merged/1.txt // 在使用者掛載層最上層刪除1.txt檔案,
[root@hub overlay]# cat low/1.txt // 而low裡面1.txt檔案還是存在,檔案內容還是aaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# ls -l upper/ // upper下1.txt檔案依然存在,但是它的顏色發生變化了
c--------- 1 root root 0, 0 Jan 6 19:02 1.txt // c標籤,在overlay下代表這個檔案已經被刪除了
-rw-r--r-- 1 root root 23 Jan 6 18:48 2.txt
[root@hub overlay]# rm -rf upper/1.txt // 把upper下的1.txt檔案刪除掉
[root@hub overlay]# cat merged/1.txt // merged下的1.txt檔案又回來了,並且是之前的檔案內容
aaaaaaaaaaaaaaaaaaaaaaaa
### --- 修改為overlayfs儲存驅動:若我們的儲存引擎不是overlay的情況下,建議改為overlay。
[root@hub ~]# echo "overlay" >/etc/modules-load.d/overlay.conf // 先把overlay載入到模組載入中
[root@hub ~]# cat /proc/modules|grep overlay // 再去檢視當前的模組載入方式
[root@hub ~]# reboot // 重啟
[root@hub ~]# vim /etc/systemd/system/docker.service
--storage-driver=overlay \ // 並且把儲存驅動改為overlay即可
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)