关于docker的存储驱动
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
#背景 一直以來我的業(yè)務都是跑在aufs+ext4的存儲驅動結構上,看上去沒有什么問題,直到業(yè)務報告: 在高并發(fā)場景下,aufs因為鎖爭搶的原因,導致cpu高負載。我才不得不考慮更換docker驅動的事情
#關于外部資料的收集 看了一圈下來,docker的存儲驅動目前可以說分為三個流派(可以用在生產環(huán)境為標準):
目前沒有人大膽用第4個存儲驅動,玩玩可以,可要是到生產環(huán)境,指不定要修多少內核bug,這對于哪些沒有內核和文件系統(tǒng)人才的公司簡直是噩夢。 其中aufs的使用門檻最低,內核版本和底層文件系統(tǒng)要求比較少,也經過生產驗證,穩(wěn)定,但是如上所說,高并發(fā)場景不合適。aufs在控制到鏡像層數的情況下,16M以下的文件讀寫性能不會太差。
overlay2是為了解決overlay耗盡inode問題的演化版本,overlay要求的Linux內核至少3.18版本之后,Docker1.11前只能使用overlay, 而Overlay2要求內核版本在4.0以上。另外我要聲明一下,docker的存儲driver都有不同程度的坑,目前比較能接受的是overlayfs+xfs ,我就遇到個bug:
#overlay2+ext4 bash-4.1# mv index.php kks.php mv: cannot move `index.php' to a subdirectory of itself, `kks.php'另外如果你確定你的低版本內核已經支持了overlay,可以用下面的配置跳過內核版本檢查
vim /etc/docker/daemon.json {"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"] }制作xfs時要加上ftype的參數
mkfs.xfs -f -n ftype=1 /dev/sda4devicemapper因為和上面兩個技術原理上發(fā)生了質的變化,從配置上就復雜了一些,還要給docker數據單獨分區(qū),相當的麻煩,要求的內核版本(4.0以上)和docker版本(17.06)就更高了。我最后是放棄測試了。
附上測試數據
我認為之所以overlay2比裸硬盤ext4還叼,主要還是因為xfs比ext4要叼,當然overlay從速度上還是和aufs一樣都比較接近裸硬盤,(我這不是高并發(fā)測試,aufs僅有三層) aufs從原理上講鏡像層數越多性能越差,如果層數越少,性能就越接近裸硬盤。
測試方法 ./iozone -a -n 4k -g 1g -i 0 -i 1 -i 2 -f /root/test.rar -Rb ./iozone.xls相關的資料 https://docs.docker.com/storage/storagedriver/select-storage-driver/
http://dockone.io/article/1513
轉載于:https://my.oschina.net/xueyi28/blog/1787353
總結
以上是生活随笔為你收集整理的关于docker的存储驱动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 项目实现热部署
- 下一篇: bzoj2720 [Violet 5]列