From 0d74ca8d4b34a57ffeaadfa01c1a16cc7b106a39 Mon Sep 17 00:00:00 2001 From: titor-z Date: Thu, 26 Dec 2024 19:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=20=E8=8B=A5=E5=B9=B2?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E9=A9=B1=E5=8A=A8=E7=A8=8B=E5=BA=8F=E5=AD=90?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vitepress/config.mts | 4 +- .../storage/drivers/btfs_container_layer.webp | Bin 0 -> 25140 bytes docs/storage/drivers/btfs_pool.webp | Bin 0 -> 19962 bytes docs/storage/drivers/btfs_snapshots.webp | Bin 0 -> 9520 bytes docs/storage/drivers/btfs_subvolume.webp | Bin 0 -> 22626 bytes docs/storage/drivers/btrfs-driver.md | 170 ++++++ docs/storage/drivers/device-mapper-driver.md | 528 ++++++++++++++++++ docs/storage/drivers/dm_container.webp | Bin 0 -> 40176 bytes docs/storage/drivers/overlay_constructs.webp | Bin 0 -> 38100 bytes docs/storage/drivers/overlayfs-driver.md | 285 ++++++++++ docs/storage/drivers/select-storage-driver.md | 112 +++- docs/storage/drivers/two_dm_container.webp | Bin 0 -> 31450 bytes 12 files changed, 1097 insertions(+), 2 deletions(-) create mode 100644 docs/storage/drivers/btfs_container_layer.webp create mode 100644 docs/storage/drivers/btfs_pool.webp create mode 100644 docs/storage/drivers/btfs_snapshots.webp create mode 100644 docs/storage/drivers/btfs_subvolume.webp create mode 100644 docs/storage/drivers/btrfs-driver.md create mode 100644 docs/storage/drivers/device-mapper-driver.md create mode 100644 docs/storage/drivers/dm_container.webp create mode 100644 docs/storage/drivers/overlay_constructs.webp create mode 100644 docs/storage/drivers/overlayfs-driver.md create mode 100644 docs/storage/drivers/two_dm_container.webp diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 3a3d3ca..a6b747d 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -40,7 +40,9 @@ export default defineConfig({ link: '/docs/storage/drivers/', items: [ { text: "选择存储驱动程序", link: '/docs/storage/drivers/select-storage-driver' }, - { text: "BTRFS storage driver", link: '/docs/storage/drivers/1' }, + { text: "BTRFS 存储驱动程序", link: '/docs/storage/drivers/btrfs-driver/' }, + { text: "设备映射器存储驱动程序(已弃用)", link: '/docs/storage/drivers/device-mapper-driver/'}, + { text: "OverlayFS 存储驱动程序", link: '/docs/storage/drivers/overlayfs-driver/'} ] }, { text: 'containerd 映像存储', link: '/docs/storage/container-image-store' } diff --git a/docs/storage/drivers/btfs_container_layer.webp b/docs/storage/drivers/btfs_container_layer.webp new file mode 100644 index 0000000000000000000000000000000000000000..7930845247b9c0b07c98720b7ccd4847ada07cbd GIT binary patch literal 25140 zcmYg%V~{S}w(QroZQHhOYqf3L)@s|f?bWue)wXTFefGIG-mPCVqM~BX$jZ!-qhge@ zl(;yp5dfeeCakEg$Vo`}&-(TVCS<~r`e^XdU1DvxfN_-s4k`z7V#+rRaz z=!M|jdJW|Lr2yeGx2ku*fBy;NOXjPtI_*BIlKPCmEyJJp~2JMG*1L;vz;K%mfX@EhjC{W9%ULB=2VZReI?Tfp{bs#Wr7tL4yCvEQMXvawa>#OXA<}+{lXa8sGC;DsYA^afkMPT=b;#*jN^V|1Z;KTen z?sX?gpz^2e&3vz*>ZjGLhu~e{nV_R*m%r|3@4I(b z;+^3o?qlcht6kvdBl+v_=i$2dBjx8aif>wj(qD{SH4=wfG$w^ud?JCwR5GElSaMyN z)TRRYKR0l?G}^D-Y3sN&%<-%0Eke8ZCpNVzQ5q*{8^>giGcgUrFtq~06FJx>`k}-9 zi{J@{-RKe=YYC}BW&~*0yYv6lsCu&wHHsB?8`lG=Z8#t6B?)oFOWtR-r8FO6nr5by zO-3~adtOHKqp4A-|#3lQ;~N1(4B6_}gRMOxL5jQjj|@;>X=WJ*j)kg@GtRe4~% zJ@TM{5wf>hVHDXyjh$P;Qkm7;R(5@CSWEFbB4GIFq!;7eQQ zW6ejGmZ(vUQLSjZCB^i{7oc4OX^w5$LUDi(#U!7{pJ9BH*&3G3!NI<} zxbOx_R%si+;W1ivBM+U> zPOHJVq%)qNYZZ1BMp6}!M{aQR5G?73>7>J2lXsLln4O2;f8y$~rP!=wb?cHrzvzn0 zi(qXqeY+pc*ovLi*3Mx62Q-nxHgmb-sevYiQxwAqg{ugVII7&BztBk6SfY!Au0n_d z1IEJmfk9DAFke||xshz?D^WeU$1Pdhrh2HX)+$8*;Y4F8%Q_LacG@RWVq39Ngr=wA z9*%{L=1yfCOV-#GBX4P1pWW=B%#?)G7uRm1x&4YY(DSP1#$MYa%Qo5J!lfY!n(1|h z(MqecqdsgVLDJ@B6@3ILmq=V(!ohk+I0gSi`MW%K2}WNVHB-8QgBy|Ekj7suyHjaL zidRc;;;erdA3ZVYGWM_ADD?<2td4yZ3=RLw?%J5T)7056{R4S{`K+^Rs}7NO%4nG; zCXQ{Mj0RIZv|1q)88&#E>0+-6hoxMd9;L&`PI8@GToB7>ch^EL~%htGwnHbg;3|#E5T9JkC*F zgj(07Ndj7DMI}4)m(*YEB)0>(aftt`e}#_(CE}y}X(YzOI15VWv$I2bbBY3CpQf$o z+>gfrFm;Xx@W_JDZ}wmJh(Pk!J%{Gt)qWVwbHmOw;&4U|L4glewF8&g1K@w8Aet&x zT`Ob|;Qb7IA>qJY)W%&;>B>~XK&;nHw6dxmT?;g|VyrjKF-u^*;6MM4=IG4=2alXH zX6U>GHbpWL4i(5C(aMCqduP@ve*d;e6yeqVl3@=1;NvsI96|~LO>~6gua^5<;D02B zSmM7Tfz%;~70Wy80Dp-lG|?bi(7?L=;A`yt)xoK1g+b%^{7~5qt7gQLzlKRfM;V0H z*st&Ayf{1uQI*R6VRz-Wp(7D=D(WK?83961+!Y|+B%dRqKZT_gK6~}PNkkg-V(DAB zQY?XSK7W|>tSjySOHV=5y^mB) z7jw6pt(&_f5OV?Cj=wpo`ia26+3VMYvsM&W&&-v%^Eq@tO$^ zTxg4-Ky-lZ4O6cD3`uW+EOET*SL$=Ccuwkwjjgd?tVTm~{e=3e{W@DA8@6Tp5pv|o zoQ1%*?Ah$T&-A}T@0q+0Y07U64?6xWR+r2@zjJui!uQ^`f}^h`EEuQxb3^oFw&B#M zv^jL&qm2zWk%r|QZN8(dtpz7?6!y^pLO5<$Nm+z=w8X&%NNFXc&acSbC~S1*_2dXG zT(Z+$8uhtXZ&8SKy#81~_vHYY#9X*newm!y=H|TKQ};R~b*PN;?z~&SLhkHVIp^p~ zV)Q|>ji?^MPC*A_`198vY76iobMZq1>r4+j63M^M3D;`l1D&ooPMBbSmbBH8NW~5X z?tv!$E7?btU+hoB81vo>@}0`5>YQ%*7^$GKJ1vyJs905j(?*iE@+%GYJv3V3$2BGLaJLxn z{@;MNw&8fi#p3&)0O&osLN;)+`5Tz!U-K10NWLgCWf^fYpB2&iPnA%?x~zywA^Bte zuWJ@rnpfb5{ojHqEeSzE;s(w-{0n5|_+dsc|HktxH0Zu{QWq(v83a%k3q&ytwl?tNUd>wcH#OxMGbEyttHdLv zD-HssUyQSC9Ccs|>_6GgZBPU$G@_*w&7!_jtMVc7SEuC}+sq{EAK+Kb1<=2dkDPgP zJ!cE+NlLO|X|lE79$}Wpz)#c247vrOs@NGc5G8gv)8?MFq|G|FGeakRjOY2q0-hN} z0-5tLGtoP=yU0Ggi0LCmotnW;J`Lv{J=c4bmDnXCYe5)}_WDP=^BZXH`Oh%|KbZvUP=R6L-@NztMA$R@> zyts+^a8r#*9I3piM$WE zN`K4KR4BJirp6-&8ATtC>2F7Id~<|pO2K2S;k{62#xP_52>ed^1Cry#y_khUxorx? zlk5*)60O9G>0${nWtw{>eGElYDFbn;dlty^$S@~?iYS*ox+&mP|!OLw=Y7cTlb$vD*A-- zVZ|F0UX0Z1RCm<@U=JA{w#XY|LO7)Ie|7e6|05dHO&2MU|8J{iVn8#4@&W6$jSVckSCpa@?r8U0^FSX z8}Qp$IsqNep1u)5(y+HqPNmlxMnGvTs#R2uM|_z|ryBNB5HwDm{#s)Snl>Kn+`s(w zfCj}~Y$CgiJTH~^MzjSJJuEvT%~G+{|LA0`voLvqdAc%vnl+$k z^SPG#Bf9azaJvCW8A6ecg#^s~b1r*EtXv70 zs3cuQ2O;}w`%ivqTFxnH-q^U$HDgcU9fq%|_^QX~cey@&KL%rd-*_UJ{jSo)-?Mnbi8*`ov;D|*uDBf$ru zZ_^;48_ed~+Fwt?QK60y{uqVJk`$b=C@JnuOj{woBp z1V5s+6h}Fy3(GCFx$E<3G5?u3%L>gzTr2y4dE&arZsnS%#UD%?v|wul#aE4Epvkj?5EHRNtFWQ8vsBS+i49La~y!ji`c+~ zC)#&=m6{`kUbb+kb{AOP-s7^@a1LEuCXIj37(Fy$$5WnQsB+Uv@byPB?5i$nzgyNU zwu5_w>`ArN822MO*%MbyV)eH^Y=-o>;DK$Z;PRA(3+G7wB@ZNxgHiE5wkohUj^hR7 z#31cMd(ygZ}AlH05$q`=5BU=GT_ z3Utlm_N&BXKZYm}zxeKmf)AKG#YlZ`VrxgbOxlWB5L`!QJ8307ZFuIVCsrz|%Vl<8 zje=7$3(M7y6EzlR(sRfw`k{YfBo--*p zS@1c@b&|j2m<61I&_F*ODV+#Zq9>ui58uV%VwRzcRY-3jCJ4t5jhEVeN;WNa71Yjd z%KmASHCfI=u>`TyO#RDBKuBwZv@_!(!C}>IU6u|i;X&q{G20I;9N)8##Y0@1NP(1E z-Am#j-hnUYOXA*1(Ti^-B@FOqxRuTq>FimnMY>AK?}Ct*QVFL|K}$QV^UacZ-GEVB zyLG0oID{gte~k*e-~17${Iap~^apUObP?ucOxo2U+n>6Bp?b+OOAo3=S9c*R%;)gZ zLWDgZ{Vb!vyz!L@Z~be2<8{7Om$H51`iWDIH1~32n8l!>+7m~ zVi}ywJ{H$wm;(K9HzJDQZ)0773l*5s1De*Qci8PRgH@LqoPnCxrzt&-MxgNm2i!9d zXID#Z$;H9$Cf?BUK9Jo4qeGqIV1TKkDGx#S9TIsGic*z(P?}W`g(NUTvaOI`^(&E2 zLh+Q!`?cQ#QU34JwR7qVQZ%9%`j-vLY{T?L@gxfg40i1-4+Ll3yr`aXrOwSXYfdo6 z0U^>ONpCxWmht`w2?rW(?Jwke3%H)7hbYU>Cp618!Is*L z&}hfkV1)y>#+4sVn{_D`t{&VfOHwS32)`Dci|gs!d+YPdZ4rDShG&n2z+^ z{%NgWXrr4xYrIR*42s^V{59!F9c^Jc@yEHxH$jcTxu$9dbq1}#b!3snw$ZpsEvJL)_j^0l70CVz@4W%4&(3|`cZov-5pB>@k2h5&zv04K@rVwN zET~HWWl(+O8)WZjhbNkaTq9v+AsdOyxkUpBD4Yz{+yni#)j`STJ28`|30{&;A^$ z*ZRyoPT_91#eG^G>}?k4Qc8r$=cOM#H;V)My?%M<^K^yF!D&-`NpdfaO>|US22F!f zZijWn!Z)c>6etPkh?wk>X@_a@R#?zBi>xqc6me>!3QWJT-EU$pS0A+>On)nax&hPd z%j>sv*=x+?L%XB?gxHb`KU6F+Xg@AuYT-`QQnCGaduH$Ms^XY`(zu1cApeP$-b5V5WNlJZ5_}j$_ zG)V}?)FI>pE{Llltx4;cqk0*-%KYn4GFtWz>xSh0+F{v*Xy9QXF>nR%Vb*(V#c?{!$Z|#D>{g`re3JyMKe^ zwTskke$&t%t15c$4;Ej`jzxtT4?B{eje0FjRLGcA4w>_PV)k&^@a0RUK($Y82| znR~1shF~}M@Sl^dukU`MEoZv`fQmxUAf+?%t&3G6Bq@=61q=WT8vzN9B|EaOo8Y{- zaS17(NGN<>>nFCol6fHW)Cj-}BeavmkkR(k>KZmkzz})Z$iQ_Cg$3ZO2uAsUL3}lR z9Q2Dzte-=Om!+NQIMW{?@U|MFi_U!m^a--*lN1M|wv_tJiH-XiTLu6r>k=$5s2XBD zV#!)1OUk;1zE%=Tk(TZTl#8oswH*FnvZ*-_8A0$ei!Yu*RIyk?Z|B0?Zi~G;#(Nw< z%UKEV_VUA-RYe1W#oY@HPPH{-_}k)Sfip0N{XjX0Mw~m(gK;5l3QwKNUm{V=4UpXP zURM;78Hs-Tlp}$r>SF_A#YIL!<_{nO$dE~Yw!qN>DyhCPk>@Nb$QACx`Em$$o{79? zoRu>L?fD#^ZdM5>W)3@3$S3LkG#$}UY5uO*IyF1e znh}mkhUZb$de&l}vZYUbivQ9}z(g7uF=g@$eW{{5Gmg%)k?ot21)E2r$dG^+iWL~z zNZpsG=B2g9J?n7M7r-|j(yLvPS>abEZOU9}V&v+t3!KF7SNmka9YURI5 zLCHy67qD2(TvV~-PsDW}?Q9~vkAn{6bZA-0J=3E(^SJ!0WTw7-tObsNkkOSry#k== z4~8E_Yfqj^THl}4Ygy^vp_=2`ZT3ut3!9Q;xGB%_xuOyua)J{CT&1f?f5Kn8JZmiv z7K@#9RTYogk!U+%hct4t7B}~HgSe;sA!Y8`o2o@Baa}^+(4&+o^N!3mF`u3VyhtZs z)KO z8~i59>XltM&}(uJSa9<;v6xkQ{@Xm|7a&97&$i7bG!J(1?-s3~_Qgb6`ID^xCanpr z8f0ortPSCI-{UV@25vH3I{oJa_d*0Zd60VYbns~7LvcO|KLz^P57ZZXL>l$BibSDU zx|Za3pq!5 zg{@pmHI+`~q%IV5fyy2K%(IRR%M2If(bq9uWm;`Nd3?c_AaEMK!)S)cfUS4z^mmUL z#?^_MGP8}O7KV8v3blEe8D^-u`=;(Z=-MLo6sfcYCF5S)-;#-|?`YBRCCvF2boYa< ztfbu&U&Sct86Pr~)~A?~#>_g>aDWt}FHO2(;ky3$s~jd_YqWK{MfU`+NNG&-fajr+ zFRXBtns)m>(D}*#c;A=5zzi}cW+H5g0qFl-t*E{SECk6AVRqTCY#n;CgohN`dH%h? z1e_mQ*4MwYH{@J=*C&t{aR1mjzjkZuDA5hMK2b!Z%ouuu)hs)9@^lS~SvaNoG?%vNTo$cq;u!-t8PUy|^x5YW081 z$|#~2<=@kCuH=+{5Fm(~@vxM@w?K@yQ~6jYDM-bIZM-sF&fXf#sYc5tcE>(cRX7tDf=`a;xHH}P%M{u*?2$mw9tv}^3zD9d z&rKu}n-g!)W*7ZtYa!(txSUX6nbHBuxf$}y38f=aRE3;oVGd*ryfe<76NV7|_kW1FOk46<00G(Y&-E*9V7=XOmgf<_ix6nCj(#WH$7l zgUTpdPSY|y0;)g~tDwlA{*LAPie`I)bKX#XPU!k|(pg7GwpMI|E4G!s;^Kr$wQtPq zSz!Sh`CwG>VC}laO6UdKv`p`KYp6xurZSuzn80dFScf^;+df!#iS?ZE&`+7fB-gK zd=N{U9Rn>`ym2_p9+_|N3G2mFEX@A#teVvcKjEz__uzBvaSeKpu6w@w(Tm2En`BL`PGFIwLdQ9sS0N!G(ueQphgZ>>lYgD%zb51`sF{5(|HTp z0^j39<=0L+ZbRa-^KeTf+K^;?^mxf^rvz9!aM*oIa@+5g8uW@ZK5bT>|DGn9El#jktXIAvhEezX1>vn&nQ_2cc2uRx?h`1sNpjUM~aW9S2xg2t$1ZaS>+awn3dG%8XZI_=-&!s~O- zDzV}Z8IQPG$b1Lhp>$Ja1NTtbsxUzfiQoHENN9ZWpan9|g{kHbP?8i8h99|(Vg^lv zpPrxl3KW;)Bhu9*aopLXNiW*It4S#{(5o_J-B0_J%YJR14u>pFXmN;|ogR*ZW=26{ z9ux*FX1lZ;MWiQz38rERB#lbdfZ}*a0dwucbJ2m+fr_ZF@yiv}5gSVGbA*JyM#9H} z%Lk~@K>hodZ$O;e)fbX{4|u=Iz}5r6lE=*7K~G|`RN#-7_1(yk&Bs`z+GVbj+VnU$ z_^MI@zTV@rliJ5BnJbC0Prh=jMz=;4! zaH$KKLGe>_K7f!{O~mhcNe$AdF~n_M($4z5)fuj+boz-vwOT zdEI~B9wF22&-YGcgS46CAtT5lttE}lxlB^NnbvO!jMX?9SEzfQ_hmq8tlJ65QpqGz z+2pbBK`n=+M&teK$O3qT@I_n}uTq|0i%ZzSNQ+P^h<7&&x)z*mW zo`D>S$DEB_qHPaPpiD^=%H+Bz;frPbtj0h5teaQ=G=i5CEB=cuzalc5%Nvg29$*yM44sZ~I$kJE~=jUXC>> z@EZ@+IuW%gv{MTr?Ym9U@26e9l;!?SCQQC8EQ{4=kw7%H_)9xDwHbZ^EJ9zTdbyfo zFLTRbPX|&L1P}`|L@jY_ej~4693J7g%ot^FY(RZ;rkGWA)JER;OyhS*s)gU;C4uWA zdl;|dRu*C$z6`11e0r18;29Gs-m@PrCnII&b;I1ah(KS0MY)0^s+4IGOdH-6n?Ku^ z=Cl(C=w{sY>TRydRp3yX&hrakm<>n(J@a}&2kw37KGZAc!1mCnT{GIL0AD*}c|n{W zfPtAPM~E1W;50~twVYf6uiTx*@+>N9dWH;OnmD6mR*F$1Cp1g}=3>0_!kQcsAc^ZB z906%&0m#3#RAO=Z{F)~nY-U4EGafN}ba`_fXg%rw)A_E8^29hnE`r}LItDm*-YM!b zJ>OFm5(c+0MOvH|Y$paliA4A0^}g7KmKGs%Lqb?GT(dQg-8Sc6V&-RU>Tk9*WjUi` zomgi(GiV=OJ37i}2K+h%bo|&YqDKQ)%$YhX#Q)N=Tvtc@by$kJZl#__z99Kni5p@Y z*x>*`d1Zf()1j~oobkfq!w|Dw*mj>5T%NBbI{(3Ksn@Ej-1r(GtQ6I8x&X2S>a>vQ zTZ_xsvd~NE&)Er(QoUuhA?ppd$mu#E+=u+j@G;v)b|o? z`i7nA`4o%oE=;ZOHo6wW9-y|{8`|{-e#4>uCxtBeWM-6f^;>>eXs?p;hZEKAY}{(8 zEHrbHu;?K<9R-7>2Kc+*c+Dr;zDp+b(gAJ@U#;trXMAsf`8G^73% z%I)nA0;T9NodG6iQ`Bi_ixfBmyL6Ow+}a~1r~)+llL#X<3MJ=$bE3!Yf>ei^$HMwG z?SzvD?f$Bia1-`*Prw&(_mEJv8E3eVjmb|4Ru5D4bGo<~lpB@PEnR7w+0cD5kte&F zxc|i7c3q*XZ}XyS4;I(Kt|>F05kyttt-^C2wuHf_D)7S>tuHvPOo>9MKSq4{_*{kQ z*IIri{+o`5{H>f}SZf<)jsVruOzf+Mq|qwCq@-eAqpu(@03a(W$s$Z-KkbYRj9+4W zI`R}@I{2kmC9K`A8Yrn8AXv5@k!`R2^(sm>(xMp=d9RUKebtocNnmX8-m~Q+VLFUV4f@=-}L!9 zKnRMFO7e;PYD-LYytWVpcUTRcHY$2<7(yN1%k#OPHGgLs0#>-qEcsTyV;un_Npu82 z=A7)Yu_EM*AeSi1cD9FOO$?IOeW9)>d~3l!X02C!XfIe-XyO~oNAWo+p6q&q+setc zeD{1F^#>Xch+3gTz9h1HJ%q2F5h*6+L?bMyn!lpVLE2#KSwl_|P@a!aZ$Vqydr3xl6n@wGJCePlc zE4bn;3JMQ>ZG45>_YJovL2G&-eo%GBIN&v^0K`KularZZ$=h=!4-QbqUGnNfygSN_ z7nFLBYP3v_K2n&ahMzk19y-mI3TLriYS>j@-f$$R5oczqOhU-1%%PTnVWS?4R z>7U`jP5JK@JE;>;{yQ{<*S;)7UqGzZJTOb8QP50cPBRgVaLz1q~%7CRm)AO z<(V2U_D64;;DZV8@zG2+v73ymE#qF^^isO?G_7+b*+>e* zPLB`@2qN?imO0I)QL5FYnonE{4pPqDTkrEFSVbwr-!x`IBede`3+FB zawC-$eF-?Wp86WK>t&9kAuN3?)x2M29e@BX=t(IT`Uyg<8)U0nj#6RoOKx*vpLKqN z2GHywSPJ&EmXQtjq@uRDOiz^Y%`vhU-MA}bXF}hHp$x}TMZ>I!CSl{wM0qAU24>VD z7yu8 zmB$zlh*hrH5J^V(ZzYdoIThpM*Fd|L z1G(69QUc%tOJ22b_6})I`4J}FIdVsGLZ+L>afi<(L4-vBM?Q|;2SSwN2AYz9-EI?jJ-TUV z)id3lhcF0#!;C?DpgkPod4a8fZgTPcWo9@wx!~+Yj8~Qwdr|{GnA_2urUqx06TsnyC_=HWs$qAXIZG6{GO{8H|eZt@^lh&nEV-I)f?ba zy;AY@kI2zK?n2JFmip_sz~!&@U|f;tv3SFu{8$xGdu-a_Q<{}42mTW}4GC6hjWT9L zw8~4w+WYkE`HEeb;}#DUyY$srfxy+iFqsftHcp5%mcTh-jJ-&d7y>K|gzQoKqQEW} zRW?Z2>i7lrlT3^03m^EB5;>b7ssnNYH>v1O?H|h~CVmxA3|rxP7 z@PW13WhSy{TjOzP;(AM>+jcN2!F|hM#H0ZKS5K0B*HDf^H^XEEx|uLeWCE5 zSHIC{hgNIjPtSv>MY>ghQHDIM0N}=>%KcSWrb(*Xsl|6 zpBk^-yIbx#3&ihSUPLGRpt=TbTB~r8wiYqnua1zW@#j&sI04{M84}|^^Kc9jPv~~T zvLn0%9db1jePg-aWu>_sk$gC)X2RspVsFYN)VM9~VB}x?p-IW{G?X1jIi*>ELF@$i zlvGpKMz20Ma|byQxMITap9#db(Na>HC110tiPdI@wL8?j3n9vA?b%`h$#cW2Qt*u* zZ7cnp(glLd17A(9M1N3LvKI{#b<8Mu?qD+H;u=q5d){mmf3w%!MA}Yv{#3vp_1ho{G9{gal>w}0eW*Rhj5=Sk(mNa29>6a7<^$fwlwy+D&%JRS)hv~n;H%fpN6F6@;f$wej=(8z%MF4{&Zw=s$x}ydLAY z-!CQuM1R16w098s3-{xf@Wd13ns|{h!D+I(TRy}!!v=)a?j4bTj4q1A3r2TlIAI>u zEO;$h|6~^qVK$wF$6a*u!mU=31A=n)Dsu2e?WFjekV?wLGT97uz@G(BaV1hpo?S32 zo>%tg>a*5S&O8)*-;mlt+Q|r68GDbF6r99pmqw)q}^h)ho3C*kBwl zH-SY`rS!$n1}juK2`=njpr;8QpKMKQrIF;AUQr}PO)Pv`A0Hv+ z?dp!-%gg>|$&)MzX}Ee1pVFxN6}=ib2-AI-HCQa<%X5 zIQG=)_g&ddKx7%vGl%3?qseXsF;`3)SemYc0zjJ@y9(f=zWsD2L#i+-;eJ$b ztJBk&q6JJl@M7M4swvmivt{5>CoO7vIfI8AVP0)bEHmRQSq+e&>3BgbUP6Gg9R3I@ zve^;BX5d8wxc&?P#rT;|g|HQZEzyT9fbEiG4S)spLd+Evyw^4zz9BH@}C};)g zv&}v~=5G|4FiXy3iZ_`i^wNMcN~J?X|FNddU?3jhajv$?iaovMrf$u*1gk3WnLm6BrY((=4qE2D4B}Oq?CVxf1?JEHB`gO@#xPYC_ThEgmeG*+DYTN19ldn4Ws2t{Y92|FKr;xEtsH46IJo20)_mO7_((Dj>d&f8jchShET1OM+>d@LEoE{j+PRK@I$5N zfhT4xcBEXz2wY3$aALFzFDq6(2ky-N92L3lK3n}n4)I>cdCA)mlQqw{G7pVk!L{fI z)VMXC7YM>0dVpQ`#XcfAh>``Po2jO zKwx@@bfQ~LK|l^h+OwGy(d#j${V?BXi=t8Lho?I&JcHf-XI&MRp66JA&BVc=y~$?Zvun06=fHt@jTBY*du>{8;R z@^{_s)~=OjyhVK@nmJg8(g$BImpz`Fej{FJ@VowW!(+|i3qx+Qk-t&3I>fJ3ysb7C z_%!Z{;UteXPC=)BcW4Cody%bR^14njGU7Cw%SKa*HC9PPo|%bm-jkpsiNab=OEq)X z01cTGi*SeYOvB_frcW#PWjr`<1VcCpjFQZ_a$R$*eJ4G*_5TL8z^JqEvWlGyir2bi zmhfNE?JFqi<#c=iils;dcWP{7>QatG@l@QOtgqQg*?TD&by=I;Vy7NImTo324&P&N z5hQbWP#^~nmJP!_1P+FHo~ZmRWD!Jnt!Z3w7lRx{bDuIX(h5rp(?Wv5iK?UjZ7?Qp z&h<(J89HFFlmj}!ohbf_QBhaO0JRz4*9U{9#G@qIM5mbb#w42t1@{b-zk6I@d8<;V^M* zv-D)J3$KY6&Pseqtz0p;GKvj-ODU5nnP(GYW z8`=-pu2h?H4H%Y?N{kEt8Zsrh*F`6*uu8xV?^j>kV%1{L8aPmVxm?3u%4a zbcTM%5{w2~k*f`AfZXgTyLvCAMnxoFJIqGH?%Z`B$gEsQS<+`4?-X3dOU6aQGC&tEA@i z9tVaqPy`{RA9Tgk49KD!A5_SWyUzE4P@_5b>G zUDy0fTNg=31lTvyWFWVk>Jis%#-CEVX%GUUoC8#oIz`6a2f7{U*@SE{fxW39;-YIx?yT@c-mv5i zm>+S4koP{XY!67=ABIsYD zoo+iE#)6kUHKy6xKIpwMv$z18~?iH*Fr)WL1uZ=xPpM=C$q z1hj3)s|EnoRiJ^+{%06{xBU>D=dcY_Ue_K+%F^^Eu8_qrOX9_Vw7xCBtL(ya%-;Ll zi~ldfFr$AB-7;9$tpFNhE^H9aqAOvRyf)H%IIWr(Mo5ou*DL_>$I9?t$nuXk{}O=$ z^v@>pO~ydVPfL)<*CWz@`aK&L^Rb}%5n17^lJuA-cP41N86%Dr+#$NoMJ7bW(w6q`8JbM(CkC&7b?3y#oEWd*i2G-n?w>f$~i@8_ z_~>&Ym0r0~u_6I5^V<8F>fEsmUQ58g7q`a;5_`kZDdjb3>SV=glOF{JYYBpIGhgz) zy$^E&$K)Me((>t%(@P{;2Q=b)=OPO+n$aXl!uc=F7lJXNRmwZwprki*GN6bgh zxdKWB`4-W%;^j?FqB1T5yVjiy_ND*{13YkcD7G4-*;d*z5j_{eWu+qFvUOT0_qE9W zUFV`d-{%-s@Y8n)KT`@yIr;!qc0-e28WUQ-G3Lm#S@{nOwpXQDEV<8$<0nY`@7kQX zSG5g)?ZzNA(t3ROob zh>7AME9+FEaNs(Kl!X84@hCn-C`G}Nky|&G9M)O3VK`M?^OebVjOlzad2)=IWP2S% z5nupsmR20DuY9Yr@89iBAt;B@-(zeVGEInn6N7k7+gQe{286VeJbFp4Sa@57^}a`t zmYYq4_p^&a_;>@l+R_EeLZjt6#ByfpvC-1HYXF>I++pY`Ec==dkGbaJ2 zQK=1MkzB>ilr)cP*ii86`Ql;_Nhvu-D*D2V4iR+FXkNqMn02g=FUZUKV$mbgh`fr4xJ ze{RFx`0}##{M(wO`k7|SP~0JlMYbp5qo;MG?EmypB%Xzd?1bYbXqi!kNsPzoE7-6Y zxOHAXZ~G{94logwhG5nZAL_)Cypv%UZbeoLyFKX8{h;i4Z7Z9#%j0$4DN=J?R-HFB z%{sA6Mxl@q1i-BU_sE(wCoO&0Yu7bi@?3j2K8XgnNe%!~5!QIUAyMSnTIT<|FrKL1 z#nw$6GWwjmJ!2QcdzXQE&95DyrGa zP|DpnG3opQy?M&vpdYXT$*n+wk?gyQ8RSzCr>A^J>7&7H*DCsqwaR<{Gmr5bHLCcpUg0Kf57+dI0mN+wTn)EA(4TpMCW#DDPL#-f;|5wDHs)JmgmCMsm z2wj7;-({08LZ@dTMXt8_s+3+wPz)p&K; zjHs+nYif(}${BJkgjozr->@}Dn1%4nSYRvIPdRWN6ygbC_E9g@D%@rC`CoxVq1iRX z&J>e}pVVI%9K($^Vl=XHoy8Gkr!!>f7Icx%K(0{vN45xYE%x2HHXx%Npa?Unbb45D zLcct_K(b8zOcY0AVD72&Na$k1qYhHMfD3kCwd+4_ounWt; znRfXz#%`_rF6O6MG6SkP3=r@+u29;* zfNI92^VqTsG-4Ys>Xa}&05AK;D>zz_Ses2$=x(le8ZAj+>qKerzO+S}A>hBAN9X+& zgCek|+W@SGa4TG6aPJ{9{`2(tDTwPz68qhUb*mx(H4A_+BL7h-PO=oTDs|_CZmkGs zuvRf-rcb%s>V^FagJh<@_b!(&m9YAe43;_(#bJRPNB_@fl`6Ghkq{=zOapr-vn$-!yet zNVp|t4}X$v7mPz6GRdw=nG^YH#S}9w9gbRo9=Th6zweQh&s@W2yAHvvo?}ziW3o;@ zXxc>O_UQ!HE{(p74(`FOjJOvV4Nihs;&B_blu_E&I!MXi5qr(C+(%r~7csUeKvzMc zf0;ha%iTBMkprWv;K3=ocO?b!?ydQa?-kyw`zGAS!CL#g34WjOrEwLrw_PM>Q@I8s znsXG+vzp?>S6-QNE0jm^NYSLpEU(T9SmAZkHd6!!qq~2+s|Vspj+8sm(Fb|XQrl-$ z9A^&EDMV9NSXV$L*>cR2h2cr$tq z8tH%p{X!Ak{>*dQS}ET<-@BAdR&$qbp567xJ85t;^_KH&f5SpM6ZCypufvX(ZSmz% zoYiGOdu~_QTWE4ih>GpQpRb`yc%3c8!?vYT-56k!n9|yRTmhW%L*rq)VC-vScccc- zbb>MD1`vqofxT$!=XHNQk=%!#KPy~r0D@2{X+0RHuTzgozT7SrS7}bBmM?dI?g^<_ zT1Qr2Ow%xVntS%1k@Ivgfpsl?6$9~$_cPFu zfp?8{az1i0Vkxpe(aZ&yyyw}f2*>fM3dU`MF=l7%7VdXP82gik`!g^f6bHGZtYI?0 z_hXl6)iJy?VohQv-PIbl@zwc18!<6SixKT41Eo)TCG3Zwp9iK-2ekjBhX1r*Uc47u zkKi%bvM`(0bGE^^wg|RxB8$Ur2lBdsvT%dVHpxFtBl8&h_1oQE{rWL@Rd?f0kV zlm85#t2xHLgZO$8TAs_;cskA10O)K%P9VK@ARD7nil*-#kyRITCi>uBhTe%lO2wRF zun=FvOY&0@!(>Q5;~w|u!O|ayjdwlus>Y57R$m)7qZ^xkDlu?zT3TQbiySFKSu6*! z^x+V!0%NG&22SOw&z(wkrt>L513UE0W&uTP>L_Pk@(*HSLfZDs#@NDk7C*|cpW@)4 zJA1(^gi;?2L-S;*MJxB}K~Yu&fKvbd4gPNRXg7cV;IKaN#XcG5q@?QY-vY zEGTf-IZiZ2pOEMA>8wb-=SIV`yS>TytbEMt3X5SDtv}|4HVlAy5rvbY;2ZAP)LH0C zi_&;vjv629^>u2lTT#6l>#I(!5U1~_5MK%!(GHhA)#F>aRjCEr1bhunrj`KOrGqAE zg^B9sAG(Fuk?eA1n}?7nZh&E52<^h(nkh7^o7m}2RDxrvB$P&jucVSJZ!s*kZ5%46 zU1O9C=&-4qUJ3N+NLIOw1K&%24cr9$$@3odDZelGYIHSi{9PG{h>q!R(J zv)y@0-Jb4eS~`m&#tY&+s=hwfu##!yw^nS3zs#J+0e6g0k6CHgJ?X-nn82JK(T4Py z(>mRgoR3ePi3v~~H2M`M>i@a0!8K8#Bq)Ja4Nv6l2a1CRx`wO*_g>Go6s-V$?0$uu z)X_yCYifQ@fe}d044h#)kFB%tki(hU3S`Fyz&Wk<77j3?8`UgS6(w`OdixLB zj{1jwgD(JdTL=Qpaj)5H)nfr6sws0pg&WlR06%6Al0T*!QcMUk27A80mKNZDA@Rqt zW2AI`A=MclSN^|5=RK#jdFp7m!U>ca!DOa!M#9w7HURZ#t^4GM*v7l-$aB2-b>I_P zp;@dd2qGF_WffAb%Lj~>2jv@m)ByZ_#KoZzb@T3rjtYqXgfX}jP?f1UPAR;^09Hjr zRNOoXITGMXxlcR+ZthEY24mDZ7YPV#z-?rSpl9zg3#Y1g{}XjVMBbBUr7(1!+DI%7R{)lK6XXaL+S(YkQ3avHg6}QO3gQI;w$M zeO;}#Ab{of)EL%#GOd}2@z&>PW3FJw@!wx*IM+&%eoQJh8j4jcN_6xK`m@U4QJqk(&! zgD;KGv@HbBkou3rF8A2ZAZ`E=zcFba(d7c8kKY#}u+*iY0b<%=$~A~XK5e=82j?x~ zLck0I5MqM8D42}v`(Az$%4&5{(|%3)yyzh#_mMzy(la1MiO+mZoB_>TfD5i9eqpdq zAfwDXbipNyOVCHJfF~op(O~I)d7_;|eIN$lLRQAmr(-!6ZSn-j0(DSE|F6VrP};dn z6h~rnRUJ=bY@p-d=R2?eA|3h4WKZwi^v&&jovx+)exO8(c)jAA*Z=?mr~jN0bB zI^cuNQvtz&%x!NnXoWi6SG1LDdxD=D$i@N z$a3-$G_bL;`TLipt9J#F5_j|*nuB>OrbC}Kmsn3w6pO2@MvqLPGIypN{JInwy71lN zs#lV53=U#Wk^5X5b{D9OD|0$pZnb5!fsHFFqC9!~iqbJ>ogp2JHOaOw^H&H0s8~2- zJ}l?HOBQY9w;jg01%8Y=7Gd`d8(i}Hkm=U)UulrDY{|{1KJ}r~s+Q(7Dfi z_)RT#&vX}B+feAu4HjLkW}WMHJ_HbudcW(cRz@U9Z21L{gtr5Q=-`VBFGb#Syc`D$LA z7WCoi#)}>^iPrYMs%8-&1|GT(l0bU#&R(gx#->H zA;q5W)C87MT1nM`%i;iXSGEQB4HgFIFII$~BM|G~w!;*8cEd$D-!LY_s=#VU^XVmt zkn3ol{vpl?q48u8KV$K&FwBz7nltnUJ*?45SA*o!)cK`C=+E|H!_>Is3~?=Z<^U`H zETxPF4gZ*fF(G?@-}}K^vZl$Vln&$YlAdzPTz9?$qxiirc1Fr82d3CGmiND^r@;PJ z;7wKUQvwac>JcO2%0<+FdwatyvWw&gLlT6lL0yo_+2{Cx!F(A&b|8G?%W`N7Zj8cc zJD?_0zLT(Wy46->BjV5=PeG|1uNlUku7-SzCRFL$ROO&f!<60jF0+UW!owVS!4HMU zxtLPqc*w8YY3<_efU;ZX;*DonnG_wh48qBhzk81LcKi{4+*+2(%qeSW8ck`6w2)~@w{FpuiB(~>v z-<1(kD0GzEsIJp>DW57e2VT&j#s>q&m)}a+$&0`L5wC+R;nx@1jLpU zdttJ=ZrP=&W>vjVWZR(IUtIG46-tRelOsVFKm*g>51-zqM=71Il&J!?vGhun&_z$K zn%nN#@Ml9Xa0+goY;{L+X|`tad9af&$&sLj4TX1={%0Z0JjBpV)mJ)1Jom{bLLO=Y zcqUO=xb!WJ{%qm{U2*fW4`aQ25&yNJL3S~6I@yMdN!y8sGATeX@QQ$GPRvy=nTL4A z5Lgm5=-)6;DBTc41etl)Xn(acB}K=l?hDL0;>?q4p^3=Wy+7y6u<#Uk-L5zO|1SOi z3#%``V$|k$NvZ1)U<0K<6>w#6Gymq$j7~MKCPmcJfkJPDyy1)gT8(=1SpE)HdW#%$ z7M5q5#<}fw*PDj>#*rbvTUcQI~0(Hm(5;?WzXgO`jH9>Z__I*m6JMV+D zZ_`I#J6p-+0#DSw%yCex>8HoikRMd$ymV8+0nn9C$lEf5&JO5D9;*C=1`9;7ryZN~hl)2NqQ<=-yQiwyKGSiVt^g*Qv%XfdcHzh6*MYFHKk z3u9_s25r@FrKFF~FOvUyg-#6Bf`&g7<8VBmcJAGz{!Z0!+ac8tU>_`7$Zr=IK%t5; zvJa+WwkEr(-BK)CvJ;ARy;P_x3|B4RN=ge&-keB&VD4!CJ&8t`mD+O)#C5gR{fN;f zz%xV4ziaGyZ5UXvV^8N4hXW|D;AmP_-UJ`a5ixIzEcTo1AuDMRc=Wp+P2-tL83L9a-crE;(!Eh(VS zB)YtiJa(ZEmvZG%kS4W_=>v_Q|Lzl;mv)htMp|17XDiHgtWqZa^&n7mxAo0lGrbjM zR6V|S>$hDRcIf;VjfV@0{&WHnNvbGs(T6o5c6O%eB#L0tg7DKxy2VP+9X{z-wvay% zQ*A0R?`~|xA7bJQPIOAhoJTza20)hHij6Gj)f?45-&s-KHX{9bcgj-+Qa75)ywX~m zb(aMtSKl5rGc(DW2($AqkvM&xV!ntmkUhmjk%K*Lq?)x4OT%7!vW6Po$Q$j!TJvaM zD?l&|$}WAJLRg~xbMJM?MZUeX{)eG_o6ay0rb_@cn%dwht#b?YbRGo%;$VBUjB0-v zF0^8Ws_s^TJ-HVrxnxzmg`*%uT3r}N!I?}8id4n;bTf_xa=x3?T`%Xjw1aQYEax^L zdjTRTd{-g?ZK$$L>74wj)e6VrlkeR7jR(E~%59CFHjYd*+~Bi_6x;>KX{q1Mos9!L-!~-2bH^_pbaKLk&9@4uUnlE6ud_rlrtQ30 zgPy0G(>ilccc>8K&ORh_4BShOx^ZAS-6A&kY+jyr_f%4ELNQ=(AHq7LO#c7Cpz2lf zhT^y04HQ^*F)9r(O#{_lPCgtuq7GAoVTEjL5q%@Rbz>3Q7Of~EmuY1|WNmpY7uJ@G zWr8R7$*WcwW!80S|3suq_#s_W-qnO!m?>V`Upm1* z|Gyk^?D3$mxuA;fgjrrC@)k5yPEWAW4mAEaGYL99Vv7@7LF}%U^*=A$pV)Vt;v-gk zGX-kZlFXY1D8)NEX;ok%9xIleBzzIvF}fBP8`kVtle)7ByQ#Vqd8Se|4|^zxQ;dvm zI;6t`%Lisl+{71HXnT9&zRE=&_u&xir8{*?wei=H(DgrFJbv~0) z>Rs!Ud|e7xIdy%UfKCpBJfjHwRa%ysw9~)d;=IBp-rJq}mDc=6sIqG0nr_8h(WeNXj6 zqi&i;ytA^?EiN$|CbZ$@xd9X64z=PDO_jHyL)awl+;okix_z3V|Nek2#moy-EZxQoKO+n@W~NiiM1U&5Za zB(`SaV1OaXpRT|8QoOb{R(l4|Zl<04G&4~RbW6VO_GH5thx0k!aKvYbk5LM<@&Da% ztM7hVabDEgd9&HBBJ~x%{!VXRdnegd%|Hl zjEYg|!K-j!wix~&7vY=+kA2)X>Tgu;{a-3yHSZfgp~m~K^=x1(reTv<#x-If{~T)R zC9Z@EboBy-Z-Rwe-z{?ek#?<7zSdQ$23#gZv*_2Hbh!U#NBA~r1}Y~X4}~nV)4q%x zT5%v!3n;X)CXc>QWR?oV7D+15xrBQ8PS9Z&R1cWkDBo}4JoBZc-35A z0PGJ2($pxr)`_X+k_Pd)m@5Ptj+9f$p|!BBu{GV^>-4vw)0vX_!0pu5;h|p~RvMV< z=#P_^H_iR5-RvG-C1Rg@3u|vl^vG89Zr5a%Krx~`P8$2k!dNNChu^ZzZhD4f$QcHI z0EnH~m%LqEzXbpV`hsLw2`4EUvis-#uSl8>(JTTGPAEol!yL9&Fh;Q#{c>@ROBbxA zQ|`QObp+{r``nGNMN#e$3E#^VuD23wY=<4x42w!{Dq?>=vU8Y6D21gM84aLNOYTej_J( zHTtO2zbYNpUEQXXMw)z%Fo0pd`LCH8GoL|ha~~c+X!aUvx0EN~a#4!zzotcwNV*P? z`U6G07@4z_vGb`BC`t;$8jsAN{2qm&tBo|fH$`I6eg z_)>*{5#p=&D)$2eZQfKi8%*$2^+)IM0r36||F(0BjKdnG(u*dRblryH*c#X0308ba zF=-N0Ivjm{MnlivFAIK;a1ui4FJs>dMzV35=dy9>78TvHkT4)g zxKGn-&~Z*46)|xDk&IPcU_|!bg@DTs#hxLbt|{QsbI0g;JzzC57k_S?0G92Xo;q>He154dT#AyjG)X0xH+3D|*m5=XUBE z{4Pp9Sa}ad>(UZjisqTBH~%ny__TqP|3u29hHLyF4$fKt3!ujr{ z#6Vyuep%uEG_zX4V~NLbrZHc{^vu99Thj4^_?C`Yi&awgvVo9?0dg;};hI+%N~Ose zPJ;Ffk7l9?T(kdUc(%=p7^#&hQ$#xS7s9JawS_PDS`)YYQlg30ow5htJx)G;2-qp)sFSJu)%r9yXwEn%CW@j&f0&C&|7zt zov;)e!5dk!Dv|Z|F>(j z0e|FQj{yX3A)N>DEc9?ix?;dvsQbVXh^$oyavl90+bB;61R0eXanjtD67}MgXs_TO NGzGD200000001KY?Kc1b literal 0 HcmV?d00001 diff --git a/docs/storage/drivers/btfs_pool.webp b/docs/storage/drivers/btfs_pool.webp new file mode 100644 index 0000000000000000000000000000000000000000..6722175f6c926e39dbbbe4a067113cc06896bc43 GIT binary patch literal 19962 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 J00000004@$*&qM_ literal 0 HcmV?d00001 diff --git a/docs/storage/drivers/btfs_snapshots.webp b/docs/storage/drivers/btfs_snapshots.webp new file mode 100644 index 0000000000000000000000000000000000000000..d041fcf23449666bf0728aebd51eca36b158c613 GIT binary patch literal 9520 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 OXS>}4NB{r;0001bz?NSC literal 0 HcmV?d00001 diff --git a/docs/storage/drivers/btfs_subvolume.webp b/docs/storage/drivers/btfs_subvolume.webp new file mode 100644 index 0000000000000000000000000000000000000000..748557aeae93216e138cbd5d6424792ea67b4bd7 GIT binary patch literal 22626 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

& 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 +``` +8. 准备好后,删除 `/var/lib/docker.bk` 目录。 + +## 管理 Btrfs 卷 +Btrfs 的优点之一是可以轻松管理 Btrfs 文件系统,无需卸载文件系统或重新启动 Docker。 + +当空间不足时,Btrfs 会自动以大约 1 GB 的块扩展卷。 + +要将块设备添加到 Btrfs 卷,请使用`btrfs device add`和 `btrfs filesystem balance`命令。 +```bash +sudo btrfs device add /dev/svdh /var/lib/docker + +sudo btrfs filesystem balance /var/lib/docker +``` + +:::note 笔记 +虽然您可以在 Docker 运行时执行这些操作,但性能会受到影响。最好计划一个中断窗口来平衡 Btrfs 文件系统。 +::: + +## `btrfs`存储驱动程序如何工作 +`btrfs`存储驱动程序的工作方式与其他存储驱动程序不同,因为整个`/var/lib/docker/`目录都存储在 Btrfs 卷上。 + +### 磁盘上的映像和容器层 +有关图像层和可写容器层的信息存储在 `/var/lib/docker/btrfs/subvolumes/` 。该子目录包含每个图像或容器层一个目录,以及从一层及其所有父层构建的统一文件系统。子卷本质上是写时复制,并从底层存储池按需分配空间。它们还可以嵌套和快照。下图显示了 4 个子卷。 “子卷 2”和“子卷 3”是嵌套的,而“子卷 4”显示其自己的内部目录树。 + +![btfs_subvolume](./btfs_subvolume.webp) + +仅图像的基础层被存储为真正的子体积。所有其他层都存储为快照,其中仅包含该层中引入的差异。您可以创建快照的快照,如下图所示。 + +![btfs_snapshots](./btfs_snapshots.webp) + +在磁盘上,快照看起来和感觉上都像子卷,但实际上它们要小得多并且更节省空间。写时复制用于最大化存储效率并最小化层大小,并且容器可写层中的写入在块级别进行管理。下图显示了子卷及其快照共享数据。 + +![btfs_pool](./btfs_pool.webp) + +为了最大程度地提高效率,当容器需要更多空间时,会以大约 1 GB 大小的块进行分配。 + +Docker 的`btrfs`存储驱动程序将每个镜像层和容器存储在其自己的 Btrfs 子卷或快照中。映像的基础层存储为子卷,而子映像层和容器存储为快照。如下图所示。 + +![btfs_container_layer](./btfs_container_layer.webp) + +在运行`btrfs`驱动程序的 Docker 主机上创建映像和容器的高级流程如下: +1. 图像的基础层存储在 Btrfs子卷中 `/var/lib/docker/btrfs/subvolumes` 。 +2. 后续映像层存储为父层子卷或快照的 Btrfs快照,但包含该层引入的更改。这些差异存储在块级别。 +3. 容器的可写层是最终镜像层的 Btrfs 快照,其中存在由运行容器引入的差异。这些差异存储在块级别。 + +## 容器如何与btrfs一起读写 +### 读取文件 +容器是镜像的节省空间的快照。快照中的元数据指向存储池中的实际数据块。这与子卷相同。因此,对快照执行的读取本质上与对子卷执行的读取相同。 +### 写入文件 +一般注意事项是,使用 Btrfs 写入和更新大量小文件可能会导致性能下降。 + +考虑容器使用 Btrfs 打开文件进行写访问的三种场景。 +### 写入新文件 +将新文件写入容器会调用按需分配操作,将新数据块分配给容器的快照。然后文件被写入这个新空间。按需分配操作是 Btrfs 的所有写入操作的本机操作,与将新数据写入子卷相同。因此,将新文件写入容器的快照将以本机 Btrfs 速度运行。 +### 修改现有文件 +更新容器中的现有文件是写时复制操作(写时重定向是 Btrfs 术语)。从文件当前所在的层读取原始数据,仅将修改的块写入容器的可写层。接下来,Btrfs 驱动程序更新快照中的文件系统元数据以指向此新数据。此行为会产生少量开销。 +### 删除文件或目录 +如果容器删除了下层存在的文件或目录,Btrfs 会屏蔽下层文件或目录的存在。如果容器创建一个文件然后删除它,则该操作将在 Btrfs 文件系统本身中执行,并回收空间。 +## Btrfs 和 Docker 性能 +`btrfs`下影响Docker性能的因素有几个 存储驱动程序。 + +:::note 笔记 +通过使用 Docker 卷来处理写入量大的工作负载,而不是依赖于将数据存储在容器的可写层中,可以缓解许多这些因素。然而,就 Btrfs 而言,Docker 卷仍然存在这些缺点,除非`/var/lib/docker/volumes/`不受 Btrfs 支持。 +::: +### 页面缓存 +Btrfs 不支持页面缓存共享。这意味着访问同一文件的每个进程都会将该文件复制到 Docker 主机的内存中。因此, `btrfs`驱动程序可能不是 PaaS 等高密度用例的最佳选择。 +### 小写入 +执行大量小写入的容器(这种使用模式也与您在短时间内启动和停止许多容器时发生的情况相匹配)可能会导致 Btrfs 块的使用不当。这可能会过早填满 Btrfs 文件系统并导致 Docker 主机上出现空间不足的情况。使用`btrfs filesys show`密切监视 Btrfs 设备上的可用空间量。 +### 顺序写入 +Btrfs 在写入磁盘时使用日志技术。这可能会影响顺序写入的性能,使性能降低高达 50%。 +### 碎片化 +碎片是 Btrfs 等写时复制文件系统的自然副产品。许多小的随机写入会使这个问题变得更加复杂。碎片可能表现为使用 SSD 时的 CPU 峰值或使用旋转磁盘时的磁头抖动。这些问题中的任何一个都会损害性能。 + +如果您的Linux内核版本是3.9或更高版本,您可以启用autodefrag 安装 Btrfs 卷时的功能。在您自己的工作负载上测试此功能 在将其部署到生产中之前,因为一些测试显示出负面影响 关于性能。 +### 固态硬盘性能 +Btrfs 包括针对 SSD 介质的本机优化。要启用这些功能,请使用`-o ssd`挂载选项挂载 Btrfs 文件系统。这些优化包括通过避免优化(例如不适用于固态介质的寻道优化)来增强 SSD 写入性能。 +### 经常平衡 Btrfs 文件系统 +使用操作系统实用程序(例如`cron`作业)在非高峰时段定期平衡 Btrfs 文件系统。这会回收未分配的块并有助于防止文件系统不必要地填满。除非向文件系统添加额外的物理块设备,否则无法重新平衡完全满的 Btrfs 文件系统。 + +请参阅 [维基百科](https://btrfs.wiki.kernel.org/index.php/Balance_Filters#Balancing_to_fix_filesystem_full_errors)。 +### 使用快速存储 +固态硬盘 (SSD) 提供比旋转磁盘更快的读取和写入速度。 +### 使用卷来处理写入量大的工作负载 +卷为写入密集型工作负载提供最佳且最可预测的性能。这是因为它们绕过存储驱动程序,并且不会产生精简配置和写入时复制带来的任何潜在开销。卷还有其他好处,例如允许您在容器之间共享数据,甚至在没有正在运行的容器使用它们时也能保留数据。 + +## 相关信息 +- [卷][20] +- [了解镜像、容器和存储驱动程序][21] +- [选择存储驱动程序][22] + +[0]:https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices +[1]:https://docs.docker.com/reference/cli/dockerd/#options-per-storage-driver +[20]:# +[21]:# +[22]:./select-storage-driver \ No newline at end of file diff --git a/docs/storage/drivers/device-mapper-driver.md b/docs/storage/drivers/device-mapper-driver.md new file mode 100644 index 0000000..0276269 --- /dev/null +++ b/docs/storage/drivers/device-mapper-driver.md @@ -0,0 +1,528 @@ +--- +outline: [2,5] +--- + +# 设备映射器存储驱动程序(已弃用) +:::info 已启用 +设备映射器驱动程序 [已被弃用](https://docs.docker.com/engine/deprecated/#device-mapper-storage-driver), 并在 Docker Engine v25.0 中被删除。如果您使用设备映射器, 在升级到 Docker 之前,您必须迁移到受支持的存储驱动程序 引擎 v25.0。阅读 [Docker 存储驱动](./select-storage-driver) 支持的存储驱动程序页面。 +::: + +Device Mapper 是一个基于内核的框架,支持 Linux 上的许多高级卷管理技术。 Docker 的`devicemapper`存储驱动程序利用该框架的精简配置和快照功能来进行映像和容器管理。本文将 Device Mapper 存储驱动程序称为`devicemapper` ,将内核框架称为*Device Mapper* 。 + +对于支持它的系统, `devicemapper`支持包含在 Linux 内核中。但是,需要特定配置才能将其与 Docker 一起使用。 + +`devicemapper`驱动程序使用 Docker 专用的块设备,并在块级别(而不是文件级别)运行。这些设备可以通过向 Docker 主机添加物理存储来扩展,并且它们的性能比在操作系统 (OS) 级别使用文件系统更好。 + +## 先决条件 +- `devicemapper` 在 Docker Engine - 在 CentOS、Fedora、SLES 15、Ubuntu、Debian 或 RHEL 上运行的社区受支持。 +- `devicemapper` 需要安装 `lvm2` 和 `device-mapper-persistent-data` 包。 +- 更改存储驱动程序将使您已创建的任何容器在本地系统上都无法访问。使用 `docker save` 保存容器,并将现有镜像推送到 Docker Hub 或私有存储库,这样您以后就不需要重新创建它们。 + +## 使用 `devicemapper` 存储驱动程序配置 Docker +在执行这些过程之前,您必须首先满足所有 [先决条件](#先决条件)。 +### 配置 `loop-lvm` 模式进行测试 +此配置仅适用于测试。 `loop-lvm`模式利用“环回”机制,允许读取和写入本地磁盘上的文件,就像它们是实际的物理磁盘或块设备一样。然而,环回机制的添加以及与操作系统文件系统层的交互意味着 IO 操作可能会很慢并且会占用大量资源。使用环回设备也会引入竞争条件。然而,设置`loop-lvm`模式可以帮助识别基本问题(例如缺少用户空间包、内核驱动程序等),然后再尝试启用direct-lvm模式所需的更复杂的设置。 `loop-lvm`模式应该 因此仅用于在配置之前执行基本测试 `direct-lvm` ​​。 + +对于生产系统,请参阅 [为生产配置 direct-lvm 模式](#为生产配置 direct-lvm 模式)。 +1. 停止 Docker +```bash +sudo systemctl stop docker +``` +2. 编辑`/etc/docker/daemon.json` 。如果尚不存在,请创建它。假设该文件为空,添加以下内容。 +```json +{ + "storage-driver": "devicemapper" +} +``` +查看每个存储驱动程序的所有存储选项 [守护进程参考文档](https://docs.docker.com/reference/cli/dockerd/#options-per-storage-driver) + +如果`daemon.json`文件包含格式错误的 JSON,则 Docker 不会启动。 +3. 启动 Docker。 +```bash +sudo systemctl start docker +``` +4. 验证守护程序是否正在使用`devicemapper`存储驱动程序。使用 `docker info`命令并查找`Storage Driver` 。 +```bash +docker info + + Containers: 0 + Running: 0 + Paused: 0 + Stopped: 0 + Images: 0 + Server Version: 17.03.1-ce + Storage Driver: devicemapper + Pool Name: docker-202:1-8413957-pool + Pool Blocksize: 65.54 kB + Base Device Size: 10.74 GB + Backing Filesystem: xfs + Data file: /dev/loop0 + Metadata file: /dev/loop1 + Data Space Used: 11.8 MB + Data Space Total: 107.4 GB + Data Space Available: 7.44 GB + Metadata Space Used: 581.6 KB + Metadata Space Total: 2.147 GB + Metadata Space Available: 2.147 GB + Thin Pool Minimum Free Space: 10.74 GB + Udev Sync Supported: true + Deferred Removal Enabled: false + Deferred Deletion Enabled: false + Deferred Deleted Device Count: 0 + Data loop file: /var/lib/docker/devicemapper/data + Metadata loop file: /var/lib/docker/devicemapper/metadata + Library Version: 1.02.135-RHEL7 (2016-11-16) +<...> +``` +该主机在`loop-lvm`模式下运行,生产系统不支持该模式。 `Data loop file`这一事实表明了这一点 和`Metadata loop file`位于以下文件上 `/var/lib/docker/devicemapper` 。这些是环回安装的 稀疏文件。对于生产系统,请参阅 [为生产配置 direct-lvm 模式](#为生产配置-direct-lvm-模式)。 +### 为生产配置 direct-lvm 模式 +使用`devicemapper`存储驱动程序的生产主机必须使用`direct-lvm` 模式。此模式使用块设备创建精简池。这比 使用环回设备,更有效地使用系统资源,并阻止 设备可以根据需要增长。然而,比`loop-lvm`需要更多的设置 模式。 + +当你满足了 [先决条件](#先决条件),请按照以下步骤配置 Docker 以在中使用`devicemapper`存储驱动程序 `direct-lvm​​`模式。 + +:::warning 警告 +更改存储驱动程序会使您已创建的任何容器在本地系统上无法访问。使用`docker save`保存容器,并将现有镜像推送到 Docker Hub 或私有存储库,这样您以后就不需要重新创建它们。 +::: + +### 允许Docker配置direct-lvm模式 +Docker可以为你管理块设备,简化`direct-lvm`的配置 模式。这仅适用于新的 Docker 设置。你只能使用一个 单块设备。如果需要使用多个块设备, 而是[手动配置 direct-lvm 模式](#手动配置 direct-lvm 模式)。提供以下新配置选项: +选项 | 描述 | 必需的? | 默认 | 例子 +| - | - | - | - | - | +`dm.directlvm_device` | 要为`direct-lvm`配置的块设备的路径。| 是 | | `dm.directlvm_device="/dev/xvdf"` +`dm.thinp_percent` | 传入的块设备中用于存储的空间百分比。 | 不 | 95 | `dm.thinp_percent=95` +`dm.thinp_metapercent` | 传入的块设备中用于元数据存储的空间百分比。| 不 | 1 | `dm.thinp_metapercent=1` +`dm.thinp_autoextend_threshold` | lvm 应自动扩展精简池的阈值(占总存储空间的百分比)。 | 不 | 80 | `dm.thinp_autoextend_threshold=80` +`dm.thinp_autoextend_percent` | 触发自动扩展时精简池增加的百分比。| 不 | 20 | `dm.thinp_autoextend_percent=20` +`dm.directlvm_device_force` | 是否格式化块设备,即使其上已存在文件系统。如果设置为false并且存在文件系统,则会记录错误并且文件系统保持不变。 | 不 | false | `dm.directlvm_device_force=true` + +编辑`daemon.json`文件并设置适当的选项,然后重新启动 Docker 以使更改生效。以下`daemon.json`配置设置上表中的所有选项。 + +```json +{ + "storage-driver": "devicemapper", + "storage-opts": [ + "dm.directlvm_device=/dev/xdf", + "dm.thinp_percent=95", + "dm.thinp_metapercent=1", + "dm.thinp_autoextend_threshold=80", + "dm.thinp_autoextend_percent=20", + "dm.directlvm_device_force=false" + ] +} +``` +查看每个存储驱动程序的所有存储选项 [守护进程参考文档](https://docs.docker.com/reference/cli/dockerd/#options-per-storage-driver) + +重新启动 Docker 以使更改生效。 Docker 调用命令来为您配置块设备。 + +:::warning 警告 +不支持在 Docker 为您准备好块设备后更改这些值,并且会导致错误。 +::: + +你还需要 [执行定期维护任务][定期维护任务]。 + +### 手动配置direct-lvm模式 +以下过程创建一个配置为精简池的逻辑卷,以用作存储池的后备。它假设您在`/dev/xvdf`处有一个备用块设备,并且有足够的可用空间来完成任务。您的环境中的设备标识符和卷大小可能有所不同,您应该在整个过程中替换您自己的值。该过程还假设 Docker 守护程序处于`stopped`状态。 +1. 确定您要使用的块设备。该设备位于 `/dev/` (例如`/dev/xvdf` )并且需要足够的可用空间来存储主机运行的工作负载的映像和容器层。固态硬盘是理想的选择。 +2. 停止 Docker。 +```bash +sudo systemctl stop docker +``` +3. 安装以下软件包: + - RHEL / CentOS : `device-mapper-persistent-dat`a 、 `lvm2`和所有依赖项 + - Ubuntu / Debian / SLES 15 : `thin-provisioning-tools` 、 `lvm2`和所有依赖项 +4. 使用以下命令在步骤 1 中的块设备上创建物理卷 `pvcreate`命令。将`/dev/xvdf`替换为您的设备名称。 +:::warning 警告 +接下来的几个步骤具有破坏性,因此请确保您指定了正确的设备。 +::: +```bash +sudo pvcreate /dev/xvdf + +Physical volume "/dev/xvdf" successfully created. +``` +5. 使用`vgcreate`在同一设备上创建`docker`卷组 命令。 +```bash +sudo vgcreate docker /dev/xvdf + +Volume group "docker" successfully created +``` +6. 使用以下命令创建两个名为`thinpool`和`thinpoolmeta`的逻辑卷 `lvcreate`命令。最后一个参数指定可用空间量,以允许在空间不足时自动扩展数据或元数据,作为临时的权宜之计。这些是推荐值。 +```bash +sudo lvcreate --wipesignatures y -n thinpool docker -l 95%VG + +Logical volume "thinpool" created. + +sudo lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG + +Logical volume "thinpoolmeta" created. +``` +7. 使用`lvconvert`命令将卷转换为精简池以及精简池元数据的存储位置。 +```bash +sudo lvconvert -y \ +--zero n \ +-c 512K \ +--thinpool docker/thinpool \ +--poolmetadata docker/thinpoolmeta + +WARNING: Converting logical volume docker/thinpool and docker/thinpoolmeta to +thin pool's data and metadata volumes with metadata wiping. +THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.) +Converted docker/thinpool to thin pool. +``` +8. 通过`lvm`配置文件配置精简池的自动扩展。 +```bash +sudo vi /etc/lvm/profile/docker-thinpool.profile +``` +9. 指定`thin_pool_autoextend_threshold`和`thin_pool_autoextend_percent` 价值观。 + +`thin_pool_autoextend_threshold`是`lvm`之前使用的空间百分比 尝试自动扩展可用空间(100 = 禁用,不推荐)。 + +`thin_pool_autoextend_percent`是自动扩展时添加到设备的空间量(0 = 禁用)。 + +下面的示例在磁盘使用率达到 80% 时增加 20% 的容量。 +```text +activation { + thin_pool_autoextend_threshold=80 + thin_pool_autoextend_percent=20 +} +``` +保存文件。 +10. 使用`lvchange`命令应用 LVM 配置文件。 +```bash +sudo lvchange --metadataprofile docker-thinpool docker/thinpool + +Logical volume docker/thinpool changed. +``` +11. 确保启用逻辑卷监控。 +```bash +sudo lvs -o+seg_monitor + +LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Monitor +thinpool docker twi-a-t--- 95.00g 0.00 0.01 not monitored +``` +如果`Monitor`列中的输出报告如上所示,则卷为 `not monitored` ,则需要显式启用监控。如果没有此步骤,无论应用的配置文件中的任何设置如何,都不会发生逻辑卷的自动扩展。 + +```bash +sudo lvchange --monitor y docker/thinpool +``` +通过运行 `sudo lvs -o+seg_monitor` 命令。`Monitor` 列现在应报告正在监控逻辑卷。 + +12. 如果您以前曾在此主机上运行过 Docker,或者如果 `/var/lib/docker/` 存在,将其移开,以便 Docker 可以使用新的 LVM 池 存储 Image 和 Containers 的内容。 + +```bash +sudo su - +# mkdir /var/lib/docker.bk +# mv /var/lib/docker/* /var/lib/docker.bk +# exit +``` +如果以下任何步骤失败,并且您需要恢复,您可以删除 `/var/lib/docker` 并将其替换为 `/var/lib/docker.bk`。 + +13. 编辑 `/etc/docker/daemon.json` 并配置 `devicemapper` 存储驱动程序。如果文件以前为空,则它现在应包含以下内容: +```bash +{ + "storage-driver": "devicemapper", + "storage-opts": [ + "dm.thinpooldev=/dev/mapper/docker-thinpool", + "dm.use_deferred_removal=true", + "dm.use_deferred_deletion=true" + ] +} +``` + +14. 启动 Docker。 + +systemd: +```bash +sudo systemctl start docker +``` +service: +```bash +sudo service docker start +``` + +15. 使用 `docker info` 验证 Docker 是否正在使用新配置。 +```bash +docker info + +Containers: 0 + Running: 0 + Paused: 0 + Stopped: 0 +Images: 0 +Server Version: 17.03.1-ce +Storage Driver: devicemapper + Pool Name: docker-thinpool + Pool Blocksize: 524.3 kB + Base Device Size: 10.74 GB + Backing Filesystem: xfs + Data file: + Metadata file: + Data Space Used: 19.92 MB + Data Space Total: 102 GB + Data Space Available: 102 GB + Metadata Space Used: 147.5 kB + Metadata Space Total: 1.07 GB + Metadata Space Available: 1.069 GB + Thin Pool Minimum Free Space: 10.2 GB + Udev Sync Supported: true + Deferred Removal Enabled: true + Deferred Deletion Enabled: true + Deferred Deleted Device Count: 0 + Library Version: 1.02.135-RHEL7 (2016-11-16) +<...> +``` +如果 Docker 配置正确,则 `Data file` (数据文件) 和 `Metadata file` (元数据文件) 为空,存储池名称为 `docker-thinpool` 。 + +16. 验证配置正确后,您可以删除 `/var/lib/docker.bk` 目录,其中包含前面的配置。 +```bash +sudo rm -rf /var/lib/docker.bk +``` + +## 管理 devicemapper +### 监视精简池 +不要单独依赖 LVM 自动扩展。卷组会自动扩展,但卷仍可能填满。您可以使用 `lvs` 或 `lvs -a` 监控卷上的可用空间。考虑在 OS 级别使用监控工具,例如 Nagios。 + +要查看 LVM 日志,您可以使用 `journalctl`: + +```bash +sudo journalctl -fu dm-event.service +``` + +如果反复遇到精简池问题,则可以设置存储选项 `dm.min_free_space` 中 `/etc/docker/daemon.json` 中。例如,将其设置为 `10` 可确保 当可用空间等于或接近 10% 时,操作失败并显示警告。 请参阅 [Engine 守护程序参考中的 storage driver 选项][0]。 + +### 增加正在运行的设备的容量 +您可以增加正在运行的精简池设备上的池容量。这是 如果数据的逻辑卷已满且卷组已满,则很有用 能力。具体过程取决于您是否使用 [loop-lvm 精简池][1]或 [direct-lvm thin pool 的 Thin Pool][2]。 +### 调整 loop-lvm thin 池的大小 +调整 loop-lvm thin 池大小的最简单方法是 使用 [device_tool 实用程序][3] 但你可以 [使用操作系统实用程序][4] 相反。 +### 使用 device_tool 实用程序 +一个名为 `device_tool.go` 的社区贡献的脚本在 [moby/moby][5] Github 存储库。您可以使用此工具调整 `loop-lvm` thin pool 的大小,从而避免上述漫长的过程。此工具不能保证有效,但您应该只在非生产系统上使用 `loop-lvm`。 + +如果您不想使用 `device_tool`,您可以 请[改为手动调整精简池的大小](#手动配置direct-lvm模式)。 +1. 要使用该工具,请克隆 Github 存储库,更改为 `contrib/docker-device-tool` 中的说明,然后按照 `README.md` 以编译该工具。 +2. 使用该工具。以下示例将精简池的大小调整为 200GB。 +```console +./device_tool resize 200GB +``` +### 使用操作系统实用程序 +如果您不想 [使用 device-tool 实用程序](#使用-device_tool-实用程序),您可以按照以下过程手动调整 `loop-lvm` 精简池的大小。 + +在 `loop-lvm` 模式下,一个 loopback 设备用于存储数据,另一个用于存储元数据。`loop-lvm` 模式仅支持用于测试,因为它具有明显的性能和稳定性缺点。 + +如果您使用的是 `loop-lvm` 模式,`docker info` 的输出将显示 `Data loop file` 和 `Metadata loop file` 的文件路径: +```bash +docker info |grep 'loop file' + + Data loop file: /var/lib/docker/devicemapper/data + Metadata loop file: /var/lib/docker/devicemapper/metadata +``` + +按照以下步骤增加精简池的大小。在此示例中,精简池为 100 GB,并增加到 200 GB。 +1. 列出设备的大小。 +```bash +sudo ls -lh /var/lib/docker/devicemapper/ + +total 1175492 +-rw------- 1 root root 100G Mar 30 05:22 data +-rw------- 1 root root 2.0G Mar 31 11:17 metadata +``` +2. 使用 `truncate` 命令将`data`增加到 200 G,该命令用于增大或减小文件大小。请注意,减小大小是一种破坏性操作。 +```bash +sudo truncate -s 200G /var/lib/docker/devicemapper/data +``` +3. 验证文件大小是否已更改。 +```bash +sudo ls -lh /var/lib/docker/devicemapper/ + +total 1.2G +-rw------- 1 root root 200G Apr 14 08:47 data +-rw------- 1 root root 2.0G Apr 19 13:27 metadata +``` +4. 环回文件在磁盘上已更改,但在内存中未更改。列出内存中环回设备的大小(以 GB 为单位)。重新加载它,然后再次列出大小。重新加载后,大小为 200 GB。 +```bash +echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ] + +100 + +sudo losetup -c /dev/loop0 + +echo $[ $(sudo blockdev --getsize64 /dev/loop0) / 1024 / 1024 / 1024 ] + +200 +``` +5. 重新加载 devicemapper 精简池。 + - a 一个。首先获取池名称。存储池名称是第一个字段,由 `:`。此命令将提取它。 + ```bash + sudo dmsetup status | grep ' thin-pool ' | awk -F ': ' {'print $1'} + docker-8:1-123141-pool + ``` + - b. 转储精简池的设备映射器表。 + ```bash + sudo dmsetup table docker-8:1-123141-pool + 0 209715200 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing + ``` + - c. 使用输出的第二个字段计算精简池的总扇区数。该数字以 512-k 扇区表示。一个 100G 文件有 209715200 个 512-k 扇区。如果将此数字翻倍到 200G,则得到419430400 512-k 扇区。 + - d. 使用以下三个 dmsetup 命令,使用新的扇区号重新加载精简池。 + ```bash + sudo dmsetup suspend docker-8:1-123141-pool + sudo dmsetup reload docker-8:1-123141-pool --table '0 419430400 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing' + sudo dmsetup resume docker-8:1-123141-pool + ``` +### 调整 direct-lvm 精简池的大小 +要扩展 `direct-lvm `精简池,您需要首先将新的块设备附加到 Docker 主机,并记下内核为其分配的名称。在此示例中,新的块存储设备是 `/dev/xvdg`。 + +按照此过程扩展 `direct-lvm` 精简池,替换块设备和其他参数以适合您的情况。 + +1. 收集有关卷组的信息。 +使用 `pvdisplay` 命令查找精简池当前正在使用的物理块设备,以及卷组的名称。 +```bash +sudo pvdisplay |grep 'VG Name' + +PV Name /dev/xvdf +VG Name docker +``` +在以下步骤中,根据需要替换块存储设备或卷组名称。 +2. 使用带有 `VG name` 的 `vgextend` 命令扩展卷组 以及新块存储设备的名称。 +```bash +sudo vgextend docker /dev/xvdg + +Physical volume "/dev/xvdg" successfully created. +Volume group "docker" successfully extended +``` +3. 扩展 `docker/thinpool` 逻辑卷。此命令立即使用 100% 的卷,而不自动扩展。要改为扩展元数据精简池,请使用 `docker/thinpool_tmeta`。 +```bash +sudo lvextend -l+100%FREE -n docker/thinpool + +Size of logical volume docker/thinpool_tdata changed from 95.00 GiB (24319 extents) to 198.00 GiB (50688 extents). +Logical volume docker/thinpool_tdata successfully resized. +``` +4. 使用 `docker info` 输出中的 `Data Space Available` 字段验证新的精简池大小。如果您扩展了 `docker/thinpool_tmeta` 逻辑卷,请查找 `Metadata Space Available` (可用元数据空间)。 +```console +Storage Driver: devicemapper + Pool Name: docker-thinpool + Pool Blocksize: 524.3 kB + Base Device Size: 10.74 GB + Backing Filesystem: xfs + Data file: + Metadata file: + Data Space Used: 212.3 MB + Data Space Total: 212.6 GB + Data Space Available: 212.4 GB + Metadata Space Used: 286.7 kB + Metadata Space Total: 1.07 GB + Metadata Space Available: 1.069 GB +<...> +``` +### 重新启动后激活 `devicemapper` +如果重新启动主机并发现 `docker` 服务无法启动,请查找错误“Non existing device”。您需要使用以下命令重新激活逻辑卷: +```bash +sudo lvchange -ay docker/thinpool +``` + +## `devicemapper` 存储驱动程序的工作原理 +:::warning 重要 +不要直接操作 `/var/lib/docker/` 中。这些文件和目录由 Docker 管理。 +::: + +使用 `lsblk` 命令从操作系统的角度查看设备及其池: + +```bash +sudo lsblk + +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +xvda 202:0 0 8G 0 disk +└─xvda1 202:1 0 8G 0 part / +xvdf 202:80 0 100G 0 disk +├─docker-thinpool_tmeta 253:0 0 1020M 0 lvm +│ └─docker-thinpool 253:2 0 95G 0 lvm +└─docker-thinpool_tdata 253:1 0 95G 0 lvm + └─docker-thinpool 253:2 0 95G 0 lvm +``` + +使用 `mount` 命令查看 Docker 正在使用的挂载点: + +```bash +mount |grep devicemapper +/dev/xvda1 on /var/lib/docker/devicemapper type xfs (rw,relatime,seclabel,attr2,inode64,noquota) +``` + +当您使用 `devicemapper` 时,Docker 将映像和层内容存储在 thinpool 中,并通过将它们挂载到 `/var/lib/docker/devicemapper/` 的子目录下来将它们公开给容器。 + +### 磁盘上的映像和容器层 +`/var/lib/docker/devicemapper/metadata/` 目录包含有关 Devicemapper 配置本身以及存在的每个映像和容器层的元数据。`devicemapper` 存储驱动程序使用快照,此元数据包括有关这些快照的信息。这些文件采用 JSON 格式。 + +`/var/lib/docker/devicemapper/mnt/` 目录包含存在的每个映像和容器层的挂载点。映像层挂载点为空,但容器的挂载点显示容器的文件系统,就像它在容器内部显示的那样。 + +### 图像分层和共享 +`devicemapper` 存储驱动程序使用专用的块设备而不是格式化的文件系统,并在块级别对文件进行操作,以便在写入时复制 (CoW) 操作期间获得最佳性能。 + +### 快照 +`devicemapper` 的另一个特点是它使用快照(有时也称为 *thin devices 或 virtual devices*),它们将每层中引入的差异存储为非常小的轻量级薄池。快照具有许多优势: +- 在容器之间共享的层仅在磁盘上存储一次,除非它们是可写的。例如,如果您有 10 个不同的图像,它们都基于 `alpine`,则 `alpine` 图像及其所有父图像在磁盘上只存储一次。 +- 快照是写入时复制 (CoW) 策略的实现。这意味着,仅当给定文件或目录被容器修改或删除时,才会将其复制到容器的可写层。 +- 由于 `devicemapper` 在块级别运行,因此可以同时修改可写层中的多个块。 +- 可以使用标准的操作系统级备份实用程序备份快照。只需复制 `/var/lib/docker/devicemapper/`。 + +### Devicemapper 工作流程 +当您使用 `devicemapper` 存储驱动程序启动 Docker 时,所有对象 与 映像和容器层的 `/var/lib/docker/devicemapper/` 中,它由一个或多个块级设备提供支持,环回设备(仅限测试)或物理磁盘。 + +- *基本设备*是最低级别的对象。这是 thin pool 本身。您可以使用 `docker info` 对其进行检查。它包含一个文件系统。此基本设备是每个映像和容器层的起点。基本设备是 Device Mapper implementation detail,而不是 Docker 层。 +- 有关基本设备和每个映像或容器层的元数据存储在 JSON 格式的 `/var/lib/docker/devicemapper/metadata/` 中。这些层是写入时复制快照,这意味着它们在与父层分叉之前是空的。 +- 每个容器的可写层都挂载在 `/var/lib/docker/devicemapper/mnt/` 中。每个只读映像层和每个已停止的容器都存在一个空目录。 + +每个图像图层都是其下方图层的快照。每个映像的最低层是池中存在的基本设备的快照。当您运行容器时,它是容器所基于的映像的快照。以下示例显示了具有两个正在运行的容器的 Docker 主机。第一个是 `ubuntu` 容器,第二个是 `busybox` 容器。 + +![](./two_dm_container.webp) + +## 容器读取和写入如何与 `devicemapper` 配合使用 +### 读取文件 +使用 `devicemapper` 时,读取发生在块级别。下图显示了在示例容器中读取单个块 (`0x44f`) 的高级过程。 + +![](./dm_container.webp) + +应用程序对容器中的块`0x44f`发出读取请求。由于容器是映像的精简快照,因此它没有数据块,但它有一个指针,指向它确实存在的最近父映像上的数据块,并从那里读取数据块。该块现在存在于容器的内存中。 + +### 写入文件 +编写新文件:使用 `devicemapper` 驱动程序,通过按需分配操作将新数据写入容器。新文件的每个块都分配在容器的可写层中,并且该块被写入该层。 + +更新现有文件:从文件所在的最近层读取文件的相关块。当容器写入文件时,只有修改后的块会写入容器的可写层。 + +删除文件或目录:当您删除容器的可写层中的文件或目录时,或者当映像层删除其父层中存在的文件时,`devicemapper` 存储驱动程序会拦截对该文件或目录的进一步读取尝试,并响应该文件或目录不存在。 + +写入然后删除文件:如果容器写入文件,然后删除该文件,则所有这些操作都发生在容器的可写层中。在这种情况下,如果您使用的是 `direct-lvm`,则会释放块。如果使用 `loop-lvm`,则可能无法释放块。这是不使用 `loop-lvm` 中。 + +## Device Mapper 和 Docker 性能 + +- `allocate-on demand` (按需分配) 性能影响: +`devicemapper` 存储驱动程序使用按需`分配 (allocate-on-demand)`操作将新块从精简池分配到容器的可写层。每个块为 64KB,因此这是用于写入的最小空间量。 +- 写入时复制性能影响:容器首次修改特定块时,该块将写入容器的可写层。由于这些写入发生在块级别而不是文件级别,因此性能影响最小。但是,写入大量块仍会对性能产生负面影响,在这种情况下,`devicemapper` 存储驱动程序的性能实际上可能比其他存储驱动程序差。对于写入密集型工作负载,您应该使用数据卷,这会完全绕过存储驱动程序。 + +### 性能最佳实践 +请记住这些事项,以便在使用 `devicemapper` 时最大限度地提高性能 storage 驱动程序。 + +- 使用 `direct-lvm`:`loop-lvm` 模式性能不佳,绝不应在生产中使用。 +- 使用快速存储:固态驱动器 (SSD) 提供比旋转磁盘更快的读取和写入速度。 +- 内存使用率:`devicemapper` 使用的内存比其他一些存储驱动程序多。每个启动的容器都会将其文件的一个或多个副本加载到内存中,具体取决于同时修改同一文件的块数。由于内存压力,`devicemapper` 存储驱动程序可能不是高密度使用案例中某些工作负载的正确选择。 +- 将卷用于写入密集型工作负载:卷为写入密集型工作负载提供最佳且最可预测的性能。这是因为它们绕过了存储驱动程序,并且不会产生精简配置和写入时复制引入的任何潜在开销。卷还有其他好处,例如允许您在容器之间共享数据,以及即使没有正在运行的容器正在使用卷也可以保留它们。 + +:::warning 注意 +使用 `devicemapper` 和 `json-file` 日志驱动程序时,容器生成的日志文件仍存储在 Docker 的 dataroot 目录中,默认为 `/var/lib/docker`。如果您的容器生成大量日志消息,这可能会导致磁盘使用量增加或由于磁盘已满而无法管理系统。您可以配置 [log 驱动程序][6]将容器日志存储在外部。 +::: + +## 相关信息 +- [卷][21] +- [了解映像、容器和存储驱动程序][22] +- [选择存储驱动程序][20] + + + +[定期维护任务]:#定期维护任务 +[0]:https://docs.docker.com/reference/cli/dockerd/#daemon-storage-driver +[1]:#调整-loop-lvm-thin-池的大小 +[2]:#调整-loop-lvm-thin-池的大小 +[3]:#使用-device_tool-实用程序 +[4]:#使用操作系统实用程序 +[5]:https://github.com/moby/moby/tree/master/contrib/docker-device-tool +[6]:https://docs.docker.com/engine/logging/configure/ + +[20]:./select-storage-driver +[21]:./../volume +[22]:./index \ No newline at end of file diff --git a/docs/storage/drivers/dm_container.webp b/docs/storage/drivers/dm_container.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b19e933f5b385f7641d823c2b2e3b63244f4bd8 GIT binary patch literal 40176 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%0AVh`-EZVULk=VruaIt)vKf|jP!$nvO0wRGz@24S_ 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%0Ao%U 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 U000000000000000000000Cr}gA^-pY literal 0 HcmV?d00001 diff --git a/docs/storage/drivers/overlayfs-driver.md b/docs/storage/drivers/overlayfs-driver.md new file mode 100644 index 0000000..cf75596 --- /dev/null +++ b/docs/storage/drivers/overlayfs-driver.md @@ -0,0 +1,285 @@ +--- +outline: [2,5] +--- + +# OverlayFS 存储驱动程序 +OverlayFS 是一个联合文件系统。 + +本页将 Linux 内核驱动程序称为` OverlayFS`,将 Docker 存储驱动程序称为 `overlay2`。 +:::info 注意 +对于 `fuse-overlayfs` 驱动程序,请检查 [无根模式文档][rootless-doc]。 +::: + +## 先决条件 +OverlayFS 是推荐的存储驱动程序,如果您满足以下先决条件,则支持 OverlayFS: +- Linux 内核版本 4.0 或更高版本,或者使用内核版本 3.10.0-514 或更高版本的 RHEL 或 CentOS。 +- `xfs` 后备文件系统支持 `overlay2` 驱动程序,但仅在启用 `d_type=true` 的情况下受支持。 + 使用 `xfs_info` 验证 `ftype` 选项是否设置为 `1`。要格式化 `xfs` 文件系统中,请使用标志 `-n ftype=1`。 +- 更改存储驱动程序将使本地系统上的现有容器和映像无法访问。在更改存储驱动程序之前,使用 `docker save` 保存您构建的任何映像或将其推送到 Docker Hub 或私有注册表,这样您以后就不需要重新创建它们。 + +## 使用 `overlay2` 存储驱动程序配置 Docker +在执行此过程之前,您必须首先满足所有 [先决条件](#先决条件)。 + +以下步骤概述了如何配置 `overlay2` 存储驱动程序。 + +1. 停止 Docker。 +```bash +sudo systemctl stop docker +``` +2. 将 `/var/lib/docker` 的内容复制到临时位置。 +```bash +cp -au /var/lib/docker /var/lib/docker.bk +``` +3. 如果要使用与 `/var/lib/` 中,格式化文件系统并将其挂载到 `/var/lib/docker` 中。确保将此挂载添加到 `/etc/fstab` 以使其成为永久挂载。 +4. 编辑 `/etc/docker/daemon.json`。如果尚不存在,请创建它。假设文件为空,请添加以下内容。 +```json +{ + "storage-driver": "overlay2" +} +``` +如果 `daemon.json` 文件包含无效的 JSON,则 Docker 不会启动。 +5. 启动 Docker。 +```bash +sudo systemctl start docker +``` +6. 验证守护程序是否正在使用 `overlay2` 存储驱动程序。使用 `docker info` 命令并查找 `Storage Driver` 和 `Backing filesystem` (后备文件系统)。 +```bash +docker info + +Containers: 0 +Images: 0 +Storage Driver: overlay2 + Backing Filesystem: xfs + Supports d_type: true + Native Overlay Diff: true +<...> +``` +Docker 现在正在使用 `overlay2` 存储驱动程序,并已使用所需的 `lowerdir`、`upperdir`、`merged` 和 `workdir` 构造自动创建了覆盖挂载。 + +继续阅读有关 OverlayFS 如何在 Docker 容器中工作的详细信息,以及性能建议和有关其与不同后备文件系统的兼容性限制的信息。 + +## `overlay2` 驱动程序的工作原理 +OverlayFS 在单个 Linux 主机上对两个目录进行分层,并将它们显示为单个目录。这些目录称为 层,统一过程称为联合挂载。OverlayFS 将下层目录称为 `lowerdir`,将上层目录称为 `upperdir`。统一视图通过其自己的目录(称为 `merged`)公开。 + +`overlay2` 驱动程序原生支持多达 128 个较低的 OverlayFS 层。此功能为与层相关的 Docker 命令(如 `docker build` 和 `docker commit`)提供了更好的性能,并且占用的后备文件系统上的 inode 更少。 + +### 磁盘上的映像和容器层 +使用 `docker pull ubuntu` 下载五层镜像后,您可以在 `/var/lib/docker/overlay2` 下看到六个目录。 +:::warning 警告 +不要直接操作 `/var/lib/docker/` 中。这些文件和目录由 Docker 管理。 +::: +```bash +ls -l /var/lib/docker/overlay2 + +total 24 +drwx------ 5 root root 4096 Jun 20 07:36 223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7 +drwx------ 3 root root 4096 Jun 20 07:36 3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b +drwx------ 5 root root 4096 Jun 20 07:36 4e9fa83caff3e8f4cc83693fa407a4a9fac9573deaf481506c102d484dd1e6a1 +drwx------ 5 root root 4096 Jun 20 07:36 e8876a226237217ec61c4baf238a32992291d059fdac95ed6303bdff3f59cff5 +drwx------ 5 root root 4096 Jun 20 07:36 eca1e4e1694283e001f200a667bb3cb40853cf2d1b12c29feda7422fed78afed +drwx------ 2 root root 4096 Jun 20 07:36 l +``` + +新的 `l`(小写 `L`)目录包含作为符号链接的缩短图层标识符。这些标识符用于避免触及 `mount` 命令参数的页面大小限制。 + +```bash +ls -l /var/lib/docker/overlay2/l + +total 20 +lrwxrwxrwx 1 root root 72 Jun 20 07:36 6Y5IM2XC7TSNIJZZFLJCS6I4I4 -> ../3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diff +lrwxrwxrwx 1 root root 72 Jun 20 07:36 B3WWEFKBG3PLLV737KZFIASSW7 -> ../4e9fa83caff3e8f4cc83693fa407a4a9fac9573deaf481506c102d484dd1e6a1/diff +lrwxrwxrwx 1 root root 72 Jun 20 07:36 JEYMODZYFCZFYSDABYXD5MF6YO -> ../eca1e4e1694283e001f200a667bb3cb40853cf2d1b12c29feda7422fed78afed/diff +lrwxrwxrwx 1 root root 72 Jun 20 07:36 NFYKDW6APBCCUCTOUSYDH4DXAT -> ../223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/diff +lrwxrwxrwx 1 root root 72 Jun 20 07:36 UL2MW33MSE3Q5VYIKBRN4ZAGQP -> ../e8876a226237217ec61c4baf238a32992291d059fdac95ed6303bdff3f59cff5/diff +``` + +最低层包含一个名为 `link` 的文件,其中包含缩短标识符的名称,以及一个名为 `diff` 的目录,其中包含该层的内容。 +```bash +ls /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/ + +diff link + +cat /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/link + +6Y5IM2XC7TSNIJZZFLJCS6I4I4 + +ls /var/lib/docker/overlay2/3a36935c9df35472229c57f4a27105a136f5e4dbef0f87905b2e506e494e348b/diff + +bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var +``` +第二低的层和每个较高的层都包含一个名为 `lower` 的文件,该文件表示其父级,以及一个名为 `diff` 的目录,其中包含其内容。它还包含一个合并目录,该目录包含其父层和自身的统一内容,以及一个由 OverlayFS 内部使用的`work`(工作)目录。 +```bash +ls /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7 + +diff link lower merged work + +cat /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/lower + +l/6Y5IM2XC7TSNIJZZFLJCS6I4I4 + +ls /var/lib/docker/overlay2/223c2864175491657d238e2664251df13b63adb8d050924fd1bfcdb278b866f7/diff/ + +etc sbin usr var +``` + +要查看在 Docker 中使用 `overlay` (覆盖) 存储驱动程序时存在的挂载,请使用 `mount` 命令。为了提高可读性,下面的输出被截断。 +```bash +mount | grep overlay + +overlay on /var/lib/docker/overlay2/9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/merged +type overlay (rw,relatime, +lowerdir=l/DJA75GUWHWG7EWICFYX54FIOVT:l/B3WWEFKBG3PLLV737KZFIASSW7:l/JEYMODZYFCZFYSDABYXD5MF6YO:l/UL2MW33MSE3Q5VYIKBRN4ZAGQP:l/NFYKDW6APBCCUCTOUSYDH4DXAT:l/6Y5IM2XC7TSNIJZZFLJCS6I4I4, +upperdir=9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/diff, +workdir=9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/work) +``` + +第二行上的` rw `显示`overlay`(覆盖)挂载是读写的。 + +下图显示了 Docker 映像和 Docker 容器的分层方式。image 层是 `lowerdir`,容器层是 `upperdir` 的 URL 中。如果图像具有多个图层,则使用多个 `lowerdir` 目录。统一视图通过一个名为 `merged` 的目录公开,该目录实际上是容器挂载点。 + +![overlay_constructs](./overlay_constructs.webp) + +如果图像层和容器层包含相同的文件,则容器层 (`upperdir`) 优先并掩盖图像层中存在相同文件。 + +要创建容器,`overlay2` 驱动程序将表示映像顶层的目录与容器的新目录组合在一起。图像的图层是叠加中的 `lowerdirs`,并且是只读的。容器的新目录是 `upperdir` 并且是可写的。 + +### 磁盘上的映像和容器层 +以下 `docker pull` 命令显示了一个 Docker 主机正在下载一个包含五个层的 Docker 镜像。 +```bash +docker pull ubuntu + +Using default tag: latest +latest: Pulling from library/ubuntu + +5ba4f30e5bea: Pull complete +9d7d19c9dc56: Pull complete +ac6ad7efd0f9: Pull complete +e7491a747824: Pull complete +a3ed95caeb02: Pull complete +Digest: sha256:46fb5d001b88ad904c5c732b086b596b92cfb4a4840a3abd0e35dbb6870585e4 +Status: Downloaded newer image for ubuntu:latest +``` + +### 图像图层 +每个映像层在 `/var/lib/docker/overlay/` 中都有自己的目录,其中包含其内容,如以下示例所示。映像层 ID 与目录 ID 不对应。 +:::warning 注意 +不要直接操作 `/var/lib/docker/` 中。这些文件和目录由 Docker 管理。 +::: + +```bash +ls -l /var/lib/docker/overlay/ + +total 20 +drwx------ 3 root root 4096 Jun 20 16:11 38f3ed2eac129654acef11c32670b534670c3a06e483fce313d72e3e0a15baa8 +drwx------ 3 root root 4096 Jun 20 16:11 55f1e14c361b90570df46371b20ce6d480c434981cbda5fd68c6ff61aa0a5358 +drwx------ 3 root root 4096 Jun 20 16:11 824c8a961a4f5e8fe4f4243dab57c5be798e7fd195f6d88ab06aea92ba931654 +drwx------ 3 root root 4096 Jun 20 16:11 ad0fe55125ebf599da124da175174a4b8c1878afe6907bf7c78570341f308461 +drwx------ 3 root root 4096 Jun 20 16:11 edab9b5e5bf73f2997524eebeac1de4cf9c8b904fa8ad3ec43b3504196aa3801 +``` + +图像图层目录包含该图层独有的文件以及与较低图层共享的数据的硬链接。这允许有效地使用磁盘空间。 + +```bash +ls -i /var/lib/docker/overlay2/38f3ed2eac129654acef11c32670b534670c3a06e483fce313d72e3e0a15baa8/root/bin/ls + +19793696 /var/lib/docker/overlay2/38f3ed2eac129654acef11c32670b534670c3a06e483fce313d72e3e0a15baa8/root/bin/ls + +ls -i /var/lib/docker/overlay2/55f1e14c361b90570df46371b20ce6d480c434981cbda5fd68c6ff61aa0a5358/root/bin/ls + +19793696 /var/lib/docker/overlay2/55f1e14c361b90570df46371b20ce6d480c434981cbda5fd68c6ff61aa0a5358/root/bin/ls +``` + +#### 容器层 +容器也存在于 Docker 主机的文件系统中的磁盘上,位于 `/var/lib/docker/overlay/` 中。如果使用 `ls -l` 命令列出正在运行的容器的子目录,则存在三个目录和一个文件: +```bash +ls -l /var/lib/docker/overlay2/ + +total 16 +-rw-r--r-- 1 root root 64 Jun 20 16:39 lower-id +drwxr-xr-x 1 root root 4096 Jun 20 16:39 merged +drwxr-xr-x 4 root root 4096 Jun 20 16:39 upper +drwx------ 3 root root 4096 Jun 20 16:39 work +``` + +`lower-id` 文件包含容器所基于的映像顶层的 ID,即 OverlayFS `lowerdir`。 + +```bash +cat /var/lib/docker/overlay2/ec444863a55a9f1ca2df72223d459c5d940a721b2288ff86a3f27be28b53be6c/lower-id + +55f1e14c361b90570df46371b20ce6d480c434981cbda5fd68c6ff61aa0a5358 +``` + +`upper` 目录包含容器的读写层的内容,对应于 OverlayFS `upperdir`。 + +`merged` (合并)的目录是 `lowerdir` 和 `upperdirs` 的联合挂载,它包含正在运行的容器中的文件系统视图。 + +`work` (工作)目录是 OverlayFS 的内部目录。 + +要查看将 `overlay2` 存储驱动程序与 Docker 一起使用时存在的挂载,请使用 `mount` 命令。为了提高可读性,以下输出被截断。 + +```bash +mount | grep overlay + +overlay on /var/lib/docker/overlay2/l/ec444863a55a.../merged +type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/55f1e14c361b.../root, +upperdir=/var/lib/docker/overlay2/l/ec444863a55a.../upper, +workdir=/var/lib/docker/overlay2/l/ec444863a55a.../work) +``` + +第二行上的 `rw` 显示`overlay`(覆盖)挂载是读写的。 + +## 容器读取和写入如何与 `overlay2` 配合使用 +### 读取文件 +考虑三种情况,其中容器打开文件以进行 overlay 读取访问。 +#### 文件在容器层中不存在 +如果容器打开一个文件进行读取访问,并且该文件在容器中尚不存在 (`upperdir`),则会从映像 (`lowerdir`) 中读取该文件。这会产生非常小的性能开销。 +#### 该文件仅存在于容器层中 +如果容器打开一个文件进行读取访问,并且该文件存在于容器 (`upperdir`) 中,而不是在映像 (`lowerdir`) 中,则直接从容器中读取该文件。 +#### 该文件同时存在于容器层和图像层中 +如果容器打开文件进行读取访问,并且该文件存在于映像层和容器层中,则会读取该文件在容器层中的版本。容器层 (`upperdir`) 中的文件会遮挡图像层 (`lowerdir`) 中具有相同名称的文件。 + +### 修改文件或目录 +请考虑修改容器中文件的一些情况。 +#### 首次写入文件 +容器第一次写入现有文件时,该文件在容器中不存在 (`upperdir`)。`overlay2` 驱动程序执行 `copy_up`将文件从镜像 (`lowerdir`) 复制到容器 (`upperdir`) 的操作。然后,容器将更改写入容器层中文件的新副本。 + +但是,OverlayFS 在文件级别而不是块级别工作。这意味着所有 OverlayFS `copy_up`操作都会复制整个文件,即使文件很大并且只修改了一小部分。这可能会对容器写入性能产生明显影响。但是,有两件事值得注意: + +- `copy_up` 操作仅在首次写入给定文件时发生。对同一文件的后续写入将针对已复制到容器的文件副本进行操作。 +- OverlayFS 适用于多个图层。这意味着在具有多个图层的图像中搜索文件时,性能可能会受到影响。 + +#### 删除文件和目录 +- 在容器中删除文件时,将在容器中创建一个 *whiteout* 文件 (`upperdir`)。图像层中的文件版本 (`lowerdir`) 不会被删除(因为 `lowerdir` 是只读的)。但是,whiteout 文件会阻止它对容器可用。 +- 在容器中删除*目录*时,将在容器内创建一个不透明目录 (`upperdir`)。这与 whiteout 文件的工作方式相同,可以有效地防止访问该目录,即使它仍然存在于映像中 (`lowerdir`)。 + +#### 重命名目录 +只有当源路径和目标路径都位于顶层时,才允许为目录调用 `rename(2)`。否则,它将返回 `EXDEV` 错误(“cross-device link not permitted”)。您的应用程序需要设计为处理 `EXDEV` 并回退到“复制和取消链接”策略。 + +## OverlayFS 和 Docker 性能 +`overlay2` 的性能可能比 `Btrfs` 好。但是,请注意以下详细信息: + +### 页面缓存 +OverlayFS 支持页面缓存共享。访问同一文件的多个容器共享该文件的单个页面缓存条目。这会使 `overlay2` 驱动程序对内存高效,是高密度用例的不错选择,例如 作为 PaaS。 +### 复制 +与其他写入时复制文件系统一样,每当容器首次写入文件时,OverlayFS 都会执行复制操作。这可能会增加写入操作的延迟,尤其是对于大型文件。但是,一旦文件被复制,对该文件的所有后续写入都将在上层进行,而无需进一步的复制操作。 +### 性能最佳实践 +以下通用性能最佳实践适用于 OverlayFS。 + +#### 使用快速存储 +固态驱动器 (SSD) 的读取和写入速度比旋转磁盘更快。 +#### 将卷用于写入密集型工作负载 +卷为写入密集型工作负载提供最佳且最可预测的性能。这是因为它们绕过了存储驱动程序,并且不会产生精简配置和写入时复制引入的任何潜在开销。卷还有其他好处,例如允许您在容器之间共享数据,以及即使没有正在运行的容器正在使用数据也可以保留数据。 + +## OverlayFS 兼容性限制 +总结 OverlayFS 与其他文件系统不兼容的方面: + +### [`open(2)`](https://linux.die.net/man/2/open) +OverlayFS 仅实现 POSIX 标准的子集。 这可能会导致某些 OverlayFS 操作违反 POSIX 标准。一 此类操作称为复制操作。假设您的应用程序调用 `fd1=open(“foo”, O_RDONLY)`,然后是 `fd2=open(“foo”, O_RDWR)`。在这种情况下,您的应用程序希望 `fd1` 和 `fd2` 引用同一个文件。但是,由于在第二次调用 `open(2)` 之后发生了复制操作,因此 Descriptors 引用不同的文件。`fd1` 继续引用映像中的文件 (`lowerdir`),而 fd2 引用容器中的文件 (`upperdir`)。解决方法是触摸文件,这会导致发生复制操作。所有后续的 `open(2)` 操作,无论只读还是读写访问模式,都会引用容器中的文件 (`upperdir`)。 + +除非安装了 `yum-plugin-ovl` 软件包,否则已知 `yum` 会受到影响。如果您的发行版(例如 6.8 或 7.2 之前的 RHEL/CentOS)中没有 `yum-plugin-ovl` 软件包,您可能需要执行 `touch /var/lib/rpm/*` 在运行 `yum install` 之前。此软件包实现了上面提到的 `yum` 的`touch`(触摸)解决方法。 + +### [`rename(2)`](https://linux.die.net/man/2/rename) +OverlayFS 不完全支持 `rename(2`) 系统调用。您的应用程序需要检测其故障并回退到“复制和取消链接”策略。 + + +[rootless-doc]:https://docs.docker.com/engine/security/rootless/ diff --git a/docs/storage/drivers/select-storage-driver.md b/docs/storage/drivers/select-storage-driver.md index 27edd45..dd49bf9 100644 --- a/docs/storage/drivers/select-storage-driver.md +++ b/docs/storage/drivers/select-storage-driver.md @@ -5,4 +5,114 @@ outline: [2, 5] # 选择存储驱动程序 理想情况下,写入容器的可写层的数据非常少,您可以使用 Docker 卷写入数据。但是,某些工作负载要求您能够写入容器的可写层。这就是存储驱动程序的用武之地。 -Docker 使用可插拔架构支持多个存储驱动程序。这 存储驱动程序控制映像和容器在 Docker 主机。阅读完 [Storage Driver Overview](https://docs.docker.com/engine/storage/drivers/),下一步是为您的工作负载选择最佳存储驱动程序。在最常见的场景中,使用整体性能和稳定性最佳的存储驱动程序。 \ No newline at end of file +Docker 使用可插拔架构支持多个存储驱动程序。这 存储驱动程序控制映像和容器在 Docker 主机。阅读完 [Storage Driver Overview](https://docs.docker.com/engine/storage/drivers/),下一步是为您的工作负载选择最佳存储驱动程序。在最常见的场景中,使用整体性能和稳定性最佳的存储驱动程序。 + +:::warning 注意 +本页讨论 Linux 上 Docker Engine 的存储驱动程序。如果你是 以 Windows 作为主机操作系统运行 Docker 守护程序,这是唯一支持的 存储驱动程序是 WindowsFilter。有关更多信息,请参阅 [windows过滤器](https://docs.docker.com/engine/storage/drivers/windowsfilter-driver/)。 +::: + +Docker Engine 在 Linux 上提供以下存储驱动程序: +Driver | 描述 +| - | - | +`overlay2` | `overlay2` 是当前支持的所有 Linux 发行版的首选存储驱动程序,不需要额外配置。 +`fuse-overlayfs` | `fuse-overlayfs` 仅用于在不支持无根 `overlay2` 的旧主机上运行无根 Docker。从 Linux 内核 5.11 开始,不需要使用 `fuse-overlayfs` 驱动程序,即使在无根模式下,`overlay2` 也可以工作。请参阅 [rootless 模式文档](https://docs.docker.com/engine/security/rootless/)。 +`btrfs` 和 `zfs` | `btrfs` 和 `zfs` 存储驱动程序允许使用高级选项,例如创建 “快照”,但需要更多的维护和设置。这些都依赖于正确配置的后备文件系统。 +`vfs` | `vfs` 存储驱动程序用于测试目的,以及不能使用写入时复制文件系统的情况。此存储驱动程序的性能很差,通常不建议用于生产用途。 + +如果没有,Docker 引擎有一个要使用的存储驱动程序的优先级列表 存储驱动程序,假设存储驱动程序满足 先决条件,并自动选择兼容的存储驱动程序。你 可以在 [Docker Engine 27.4.0 的源代码](https://github.com/moby/moby/blob/v27.4.0/daemon/graphdriver/driver_linux.go#L52-L53)。 + +某些存储驱动程序要求您对后备文件系统使用特定格式。 如果您有使用特定后备文件系统的外部要求,这可能会 限制您的选择。看 [支持的后备文件系统](https://docs.docker.com/engine/storage/drivers/select-storage-driver/#supported-backing-filesystems)。 + +缩小可以选择的存储驱动程序的范围后,您的选择 由工作负载的特征和稳定性级别决定 你需要。看 [有助于](https://docs.docker.com/engine/storage/drivers/select-storage-driver/#other-considerations)做出最终决定的其他注意事项。 + +## 每个 Linux 发行版支持的存储驱动程序 + +:::info 注意 +Docker Desktop 不支持通过编辑守护程序配置文件来修改存储驱动程序。只有默认的 overlay2 驱动程序或 [containerd 存储](https://docs.docker.com/desktop/features/containerd/)。这 下表也不适用于无根中的 Docker 引擎 模式。有关在 rootless 模式下可用的驱动程序,请参阅 [无根模式文档](https://docs.docker.com/engine/security/rootless/)。 +::: + +您的操作系统和内核可能不支持每个存储驱动程序。例如,仅当系统使用 `btrfs` 作为存储时,才支持 `btrfs`。通常,以下配置适用于最新版本的 Linux 发行版: + +Linux 发行版 | 推荐的存储驱动程序 | 其他驱动程序 +| - | - | - | +Ubuntu | `overlay2` | `zfs`, `vfs` +Debian | `overlay2` | `vfs` +CentOS | `overlay2` | `zfs`, `vfs` +Fedora | `overlay2` | `zfs`, `vfs` +SLES 15 | `overlay2` | `vfs` +RHEL | `overlay2` | `vfs` + +如有疑问,最好的全能配置是使用具有支持 `overlay2` 存储驱动程序的内核的现代 Linux 发行版,并将 Docker 卷用于写入密集型工作负载,而不是依赖将数据写入容器的可写层。 + +`vfs` 存储驱动程序通常不是最佳选择,主要用于在不支持其他存储驱动程序的情况下进行调试。在使用 `vfs` 存储驱动程序之前,请务必阅读 [其性能和存储特性和限制](https://docs.docker.com/engine/storage/drivers/vfs-driver/)。 + +众所周知,上表中的建议适用于大量用户。如果您使用推荐的配置并发现可重现的问题,则可能会很快得到修复。如果根据此表不推荐您要使用的驱动程序,您可以自行承担运行该驱动程序的风险。您可以而且仍然应该报告您遇到的任何问题。但是,此类问题的优先级低于使用推荐配置时遇到的问题。 + +根据您的 Linux 发行版,其他存储驱动程序(如 `btrfs`)可能可用。这些存储驱动程序对于特定用例可能具有优势,但可能需要额外的设置或维护,因此不建议将其用于常见场景。有关详细信息,请参阅这些存储驱动程序的文档。 + +## 支持的后备文件系统 +对于 Docker,后备文件系统是其中 `/var/lib/docker/` 的位置。某些存储驱动程序仅适用于特定的后备文件系统。 + +存储驱动程序 | 支持的后备文件系统 +| - | - | +`overlay2` | `xfs` with ftype=1, `ext4` +`fuse-overlayfs` | 任何文件系统 +`btrfs` | `btrfs` +`zfs` | `zfs` +`vfs` | 任何文件系统 + +## 其他注意事项 +### 适合您的工作负载 +此外,每个存储驱动程序都有自己的性能特征,使其或多或少适合不同的工作负载。考虑以下概括: +- `overlay2` 在文件级别而不是块级别运行。这样可以更有效地使用内存,但在写入密集型工作负载中,容器的可写层可能会变得相当大。 +- 块级存储驱动程序(如 `btrfs` 和 `zfs`)对于写入密集型工作负载(尽管不如 Docker 卷)性能更好。 +- `btrfs` 和 `zfs` 需要大量内存。 +- `zfs` 是 PaaS 等高密度工作负载的不错选择。 + +有关性能、适用性和最佳实践的更多信息,请参阅每个存储驱动程序的文档。 + +### 共享存储系统和存储驱动程序 +如果您使用 SAN、NAS、硬件 RAID 或其他共享存储系统,这些系统可能会提供高可用性、更高的性能、精简配置、重复数据删除和压缩。在许多情况下,Docker 可以在这些存储系统之上工作,但 Docker 并未与它们紧密集成。 + +每个 Docker 存储驱动程序都基于 Linux 文件系统或卷管理器。请务必遵循现有的最佳实践,在共享存储系统上运行存储驱动程序(文件系统或卷管理器)。例如,如果在共享存储系统上使用 ZFS 存储驱动程序,请确保遵循在该特定共享存储系统上运行 ZFS 文件系统的最佳实践。 + +### 稳定性 +对于一些用户来说,稳定性比性能更重要。尽管 Docker 认为此处提到的所有存储驱动程序都是稳定的,但有些驱动程序较新,仍在积极开发中。通常,`overlay2` 提供最高的稳定性。 + +### 使用您自己的工作负载进行测试 +您可以在不同的存储驱动程序上运行自己的工作负载时测试 Docker 的性能。确保使用等效的硬件和工作负载来匹配生产条件,以便您可以查看哪个存储驱动程序提供最佳的整体性能。 + +## 检查您当前的存储驱动程序 +每个存储驱动程序的详细文档详细介绍了使用给定存储驱动程序的所有设置步骤。 + +要查看 Docker 当前正在使用的存储驱动程序,请使用 `docker info` 并查找 `Storage Driver` 行: + +```bash +docker info + +Containers: 0 +Images: 0 +Storage Driver: overlay2 + Backing Filesystem: xfs +<...> +``` + +要更改存储驱动程序,请参阅新存储驱动程序的具体说明。某些驱动程序需要额外的配置,包括对 Docker 主机上的物理或逻辑磁盘的配置。 + +:::danger 重要 +更改存储驱动程序时,任何现有映像和容器都将变得不可访问。这是因为新的存储驱动程序无法使用它们的层。如果您还原更改,则可以再次访问旧映像和容器,但使用新驱动程序提取或创建的任何映像和容器都将无法访问。 +::: + +## 相关信息 +- [存储驱动程序][1] +- [`overlay2` 存储驱动程序][2] +- [`btrfs` 存储驱动程序][3] +- [`zfs` 存储驱动程序][4] +- [`WindowsFilter` 存储驱动程序][5] + +[1]:https://baidu.com +[2]:https://baidu.com +[3]:https://baidu.com +[4]:https://baidu.com +[5]:https://baidu.com +[6]:https://baidu.com \ No newline at end of file diff --git a/docs/storage/drivers/two_dm_container.webp b/docs/storage/drivers/two_dm_container.webp new file mode 100644 index 0000000000000000000000000000000000000000..52b58f4cbc5ab0f6f3ab0d3ca0beb6882deddd3b GIT binary patch literal 31450 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 ObjU~m000000001IA`z?r literal 0 HcmV?d00001