diff --git a/biblio.bib b/biblio.bib
index 64d7a734e3ce492d857d88cac80e4795ec10f1d1..447b65b5cedec653ea5f0bcf645028004a735a97 100644
--- a/biblio.bib
+++ b/biblio.bib
@@ -1,5 +1,5 @@
 @misc{hypervisors,
-    title = {What is a Hypervisor? Types of Hypervisors 1 & 2},
+    title = {What is a Hypervisor? Types of Hypervisors 1 & 2 https://phoenixnap.com/kb/what-is-hypervisor-type-1-2},
     url = {https://phoenixnap.com/kb/what-is-hypervisor-type-1-2},
     urldate = {2022-05-10},
     year = {2019},
@@ -7,7 +7,7 @@
 }
 
 @misc{zfs,
-    title = {ZFS},
+    title = {ZFS https://unixlinux.tmit.bme.hu/ZFS},
     url = {https://unixlinux.tmit.bme.hu/ZFS},
     author = {Dr. Korn, András},
     year = {2012},
@@ -15,20 +15,20 @@
 }
 
 @misc{sas,
-    title = {What are IT mode, HBA mode, RAID mode in (SAS) Controllers?},
+    title = {What are IT mode, HBA mode, RAID mode in (SAS) Controllers? https://dannyda.com/2021/09/22/what-are-it-mode-hba-mode-raid-mode-in-sas-controllers/},
     url = {https://dannyda.com/2021/09/22/what-are-it-mode-hba-mode-raid-mode-in-sas-controllers/},
     year = {2021},
     urldate = {2022-05-10}
 }
 
 @misc{ansible,
-    title = {How Ansible Works},
+    title = {How Ansible Works https://www.ansible.com/overview/how-ansible-works?hsLang=en-us},
     url = {https://www.ansible.com/overview/how-ansible-works?hsLang=en-us},
     urldate = {2022-05-10}
 }
 
 @misc{terraform,
-    title = {What is Terraform?},
+    title = {What is Terraform? Elérhető: https://www.terraform.io/intro},
     url = {https://www.terraform.io/intro},
     urldate = {2022-05-10}
 }
\ No newline at end of file
diff --git a/figs/vke.eps b/figs/vke.eps
new file mode 100644
index 0000000000000000000000000000000000000000..24bba764a8ba57b68844493cca7a02f949013ea4
--- /dev/null
+++ b/figs/vke.eps
@@ -0,0 +1,974 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Wed May 11 22:52:36 2022
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 11 12 690 354
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+      0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+  {
+    dup
+    type /stringtype eq
+    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+  } forall
+  currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+      { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+      /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+  CairoDataIndex CairoData length lt
+    { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+    { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%BeginResource: font f-0-0
+%!FontType1-1.1 f-0-0 1.0
+11 dict begin
+/FontName /f-0-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {-8 -172 824 714                                   } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 32 /space put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 80 /P put
+dup 85 /U put
+dup 98 /b put
+dup 101 /e put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caf33acb5858037
+6f0aa57249d5c83bbc6da135bcb3ea11806cc49028f19771b4e47d07ea87b30e6a2ff334d88566
+8ba5220ee4131d19453abc7d18e052468462e7ab25f44d0551f599dd5068f5fecdd6c168868966
+5a8c4b3a5003b950be9162efdc831769f06004cd19172409496ddff508193900575a0ede7929dd
+783170c010b1ff2b1d57e7c73b4e655bf2a7957d1d21ab9e8ccba654921412924a3a24c03e6fbb
+37cc1c91ac8cbfb1d092f100a118f0bfbc39088739569d16a8bfb3f52fa929d965a9a0d63964f3
+22b447fa99e93da927f44911f92ee13002d48ca21f37c3fd379902102a4fffe00a7b27f8d44afb
+4f96297345cac1c2f37418187d0ee152adfff664070affaed534cf705e43ebcdcceaf83bb5b6c0
+eb22523550f80ec4597ebd7e6052d4ea816056ba561b4e199977eab04eb6d4fb5337cf0123bda4
+1b2d8b52dbd6d6a1730ab66dcb2b484251d77caaa733c01fd8f5f530d69202c68707f66d3c2db6
+22cccf1de4ac17169b209fd55e12c5e5323ea4e29412f58ec2fd4f10d7fc86a088dd6070c2d938
+cd3c44163afe57906c1889c8eb2da2634c9ae2a8d4c06f7300266b0604e67dd535710779f67e29
+061757a31646e6d55613f0a3b3f3594c7ad567ad838df00c4e75e5c9783c021ddba668db58c10f
+0c279b569b25d07d51147bc9ff8d5d17dd97bffe2ab92105e10e478a7ebb1698044ffd3b1c9299
+4dc85f3ccb12b1f86c6335791c9ad6a7fbbab6f6e8b2f6ce436e784450a5b1a3c7bc722f4cb736
+47e8f3efe5ab25186f165fcf7d27cb7f13f32827084db76caf254a42dadbf30cfd25a5782784eb
+386e83ba0a0d73836aa07f3cdf567b8837b1ac6bd9e09cdfb81954e660a72ed1c3e5197aee94ae
+356f742ec76c74d7869ca1df01351bf561b4e29091f0e8faea4bb7e14237870eacb078543722c7
+b06a4bf8db46fe8bce0134d5718c9fce64ae9fe8c66dfdbdd50b2c8a1b96dca2eb10538a871621
+16bc365fd6c17036630deba4f76a0ad5dfdba63092d28f1b564609beac709d6a40d5266e784213
+c77e58ea518f754b4f6417ae88f51b73446b2a08ae641578590e2f7419872400f53345a19778b5
+4d040d9eb44121987fd4500fb7085567f6ad3f4b8c7381fdef908a4b647a046280d87cad7f2e48
+f0acafa46693b220f09d75627ac95f0dd433992bb3d57db754f0bc976fdebfe1b53cb150e71502
+0967ae3b364a01e49cd015505e83eec01b6bf212ee3c16f4c4ac0ddc37d4c0383b3891da019a5d
+9c484ebdcb99584cb55962ae2cb95dc0856acde1df68a8afa7147aca3a42a90db8ef5c2a442553
+1ff2ef5dcc3952a5684caa59c47c906eceb3b68ddd2205a980ffed9b9681169fa73d651cd1bd50
+2c81a2700d07b12e79c51342e4e075f228ac2247c67be008033712ffe159b8c438e5ff622bfc12
+0f8a81bb52c3ca3cdfec513ae9c4a01ca33a046dde373a86e8badb2512d527ae4c58c9150c630e
+f4fa7dea582b78efa9b1a2e511e8f283a47f8ad3ec33431c1e67a00fe79d723cdc1537b57ee240
+f336da0ec02550c080d91caf2763dd243e1e8a57aa58a6c8123058aed88bced053764b7313af03
+32b4ed28f8f7be69fb7a171bbed8badd2a70e0e29156c8f3373f5bc6ea04aaae7fd60e9950fa54
+c71879e2f01969029f74072c9b27775bd49c1a90035dab626a33efc3ddf900b48573f0594aa3de
+a98a75475acb121ce061fea3784d64da449a1b99201b706d894965fa93f0edb70890fdf339ff4e
+765bc49bac328253b2004f97e1e4dff59e8def39434e2ef4be2beeb226bddf40fad1b787c729dd
+7fe36d16acc25edf95661bdce1f5be037bd90412685a09eb98d0681c832b183e043b0385bac3f2
+c46c33cd3dc9a4ba106a6a77e68abeee8084e1e9160704a9a1822013c4b64c39a35b3e1c8702eb
+20823484bf223944c2795ad949354698d2ae8a74041ae7a2361ee73a139ebf6fdb3b7a7116f557
+f86842cb49fec35225378ae66b945cd2b77c617c8f327f36d55656b1cbc69e96da62b43942b986
+c7aadd2a791ef6fbf994f3c73835ae5142ff21b92c895c3c4f087c14e39c2e57db8adf5ad782aa
+7a81ca72f2be904af980f5e910372f3ef7bb75f99e14527720fc4b357d51067c467567b40b3af6
+a46ec14963702de7f389291dcd59919127a02b0466d8d1651f23e82aabc24312f381f42a44affa
+dfa2feb3e1fcdf8150deab95c28572130595514f230fb051430dd48a160b22413352e6823ecd84
+6fe8c709b4022da7de3ce0e9805bb92773df817eab148e3e281a20067567fa15aa4840ad7e8f99
+04f6ca1275c76401628fac7c93eab27c055ae9ec357488281daf45914e1531f0aed162a52379c0
+8e4794d42f16205a0356e1d9a71a8546a614954710422ea6a4ece0d7d9bf4b25310655e1b4bf0d
+1940421e66bb19e831e068594497233924d7d706b17e3100ca7b248056cda1fd09a342d8d67695
+8b01fdd0b0eaa28f5b5ef5796d0ce4c5e6be3acba847fa0b17687d5bcb112268e1899ec301e26a
+867a3b6bdc72bbc509e6e03f5f6fb473e1a6ecc7f3f98389bee121724a398878409259f39caefb
+24efe5c7fd42dbc55e64978231480351dd30c90556fb2c6f431280c1b7aef4aaa96146aef68efb
+adb2d369028ce12b8d370f8313bc019563278f0f05d77f3e10cda90593c667448c6f844a73dc97
+8ad8bab386dae9ec9c1f5c3eec8b9f5c26d84c42c190dafefb966aa3128d79643e52399bb0b507
+3318f980ee97965c3b86b7422e34b9e08a162436301c9bcc49ea4c1b21ba06c64f0e67a6bfa1ed
+1159468bbac06bacb49c4f10668bf30190d8f6bc8302e5da8116107466410e897cea8cfc40557e
+571192edee02b4147bf650748cc9294a0b4a1e8ee19eff73a7115ffcb56e5b21bba9a3e26d2f4f
+20c677389b7328c9e7485f27db28764d26a8d6b6cbec3ea03ad7ac66fae8080d8b28928041c85f
+b1047b9443f3bd9c8a3ebc6797b0afe147b7c05d54053884ef8858c0f1660da4f70859e5e4c135
+344a4de143c2bf2dcfef7ddff1e512350f16226b710f5367ec060814ca9111b0d81a2222e01013
+d8831ddd6b654cdbc62b20b763b38405a1057df6611d4434cb20813ab9c4aba1cb3fc5b21b6b4d
+50526bce053b6f5bdded2b5357b749a57544686249d81ad2ba0623abdce3bf71a05a6ee808a6a5
+20d30b2528b1e5b061a4307d427529e1b2717cd0c7ce7a7de8cd2242f07532a5be372f70bb2409
+e500e89d1c1cb5ed309eec66645319e6727b50b46850ee9cc86177ae405c45cc1a820c37d7bfd7
+15b810fa06bcfe756ae2ed6bf9f70bad38d792967c45013656d26cb45cd6a5045f8c71c2f77652
+b675cc00272488b57b3cf0a725569192380d2ebb2027a33b87f52f7c81e62a4cd23b877262794d
+25549fbbfd9296681d8c0a61455167017766c12704308655b3d49df67393e886a0614001c00f5d
+3652e39bae752863f89149911b527d9cd6ee0d43a4d6802a3238fda67d132ffefb23d79ab8ed50
+093b7b78fbdfbcfc2602b61a43ceb002385b49265a6102e631e65032460289c24b71cee4418913
+22f3d0f45d1e0df677e31770e32de1738be6aa4c8d4cb3481e418e353c1329f91ff6e05ec56c7d
+a480a6e685a168d9c76fa0ad65e7e58d46362b29c7e39ca58d030a40073f82181fa0dcc235d5b2
+961c387404c88d442d6a9b742a3a887b22445b73424cc770664b86a62cdc6c39de4588bd745d35
+659462e929a4a9083eddae6cbd28268aab45d9d425255eae26ac9b7b5c96bb95086c09bfdf0969
+e4d16b25684fee56aad13da00a3034fc4ac42696c27c8a8e77bef120a8f789063cc13a6645b12d
+bf34bc318be27a9f38a78156714e07ceac77a6c46373c462895732a73d8803d8ef28bad9db9d41
+f4fcd2d39dcdabee44cb9f80d68d63dfd908a75d3f5f719bff15d6591cf584acda963889c511f9
+f9f575ab4d8237ffc2573f94b695cbe9bc44a1bb26ddc6e55627ba16e5197cada519cc7302dbe7
+7f1fe4cf68c558d8f6e2640000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndResource
+%%BeginResource: font DejaVuSans
+11 dict begin
+/FontType 42 def
+/FontName /DejaVuSans def
+/PaintType 0 def
+/FontMatrix [ 1 0 0 1 0 0 ] def
+/FontBBox [ 0 0 0 0 ] def
+/Encoding 256 array def
+0 1 255 { Encoding exch /.notdef put } for
+Encoding 49 /one put
+Encoding 50 /two put
+Encoding 51 /three put
+Encoding 52 /four put
+Encoding 99 /c put
+Encoding 109 /m put
+Encoding 110 /n put
+Encoding 116 /t put
+Encoding 118 /v put
+/CharStrings 10 dict dup begin
+/.notdef 0 def
+/v 1 def
+/m 2 def
+/one 3 def
+/two 4 def
+/three 5 def
+/four 6 def
+/c 7 def
+/n 8 def
+/t 9 def
+end readonly def
+/sfnts [
+<0001000000090080000300106376742000691d3900000768000001fe6670676d7134766a0000
+0968000000ab676c7966022c19ba0000009c000006cc686561640ce601d600000a1400000036
+686865610d9f077700000a4c00000024686d7478324b053600000a70000000286c6f63610000
+26c800000a980000002c6d6178700477067100000ac400000020707265703b07f10000000ae4
+0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec
+310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f27206290001003d
+0000047f0460000600fb40270311040504021101020505040211030206000601110000064202
+0300bf0506050302010504000710d44bb00a5458b90000004038594bb014544bb015545b58b9
+0000ffc03859c4173931002fec3239304b5358071005ed071008ed071008ed071005ed592201
+408e48026a027b027f02860280029102a402080600060109030904150015011a031a04260026
+01290329042008350035013a033a043008460046014903490446054806400856005601590359
+0450086600660169036904670568066008750074017b037b0475057a06850085018903890489
+0586069600960197029a03980498059706a805a706b008c008df08ff083e5d005d1333090133
+01233dc3015e015ec3fe5cfa0460fc5403acfba00000000100ba0000071d047b0022005a4026
+061209180f00061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a4623
+10fcec32fcfcfcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a0
+24a024bf24df24ff2409015d013e013332161511231134262322061511231134262322061511
+231133153e01333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5
+e2fd5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c000000000100e10000045a05d5
+000a004040154203a00402a005810700a009081f061c03001f010b10d44bb00f5458b9000100
+403859ecc4fcec31002fec32f4ecd4ec304b5358592201b40f030f04025d3721110535253311
+211521fe014afe990165ca014afca4aa047348b848fad5aa0000000100960000044a05f0001c
+009e4027191a1b03181c11050400110505044210a111940da014910400a00200100a02010a1c
+171003061d10fc4bb015544bb016545b4bb014545b58b90003ffc03859c4d4ecc0c011123931
+002fec32f4ecf4ec304b5358071005ed0705ed01b01c1011173959220140325504560556077a
+047a05761b87190704000419041a041b051c74007606751a731b741c82008619821a821b821c
+a800a81b115d005d25211521353600373e0135342623220607353e0133320415140607060001
+8902c1fc4c73018d33614da7865fd3787ad458e80114455b19fef4aaaaaa7701913a6d974977
+964243cc3132e8c25ca5701dfeeb00000001009cffe3047305f000280070402e0015130a8609
+1f862013a0150da00993061ca020932391068c15a329161c13000314191c2620101c03141f09
+062910fc4bb016544bb014545b58b90009ffc03859c4c4d4ecf4ec11173939310010ece4f4e4
+ec10e6ee10ee10ee10ee11123930014009641e611f6120642104005d011e0115140421222627
+351e013332363534262b013533323635342623220607353e01333204151406033f91a3fed0fe
+e85ec76a54c86dbec7b9a5aeb6959ea39853be7273c959e6010c8e03251fc490ddf22525c331
+32968f8495a67770737b2426b42020d1b27cab0000020064000004a405d50002000d0081401d
+010d030d0003030d4200030b07a00501038109010c0a001c0608040c0e10dc4bb00b544bb00d
+545b58b9000cffc03859d43cc4ec32113931002fe4d43cec321239304b5358071004c9071005
+c9592201402a0b002a0048005900690077008a000716012b0026012b0336014e014f0c4f0d56
+01660175017a0385010d5d005d09012103331133152311231121350306fe0201fe35fed5d5c9
+fd5e0525fce303cdfc33a8fea00160c3000000010071ffe303e7047b0019003f401b00860188
+040e860d880ab91104b917b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee
+10f5ee30400b0f1b101b801b901ba01b05015d01152e0123220615141633323637150e012322
+0011100021321603e74e9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cd
+cde32b2baa2424013e010e0112013a230000000100ba00000464047b00130036401903090003
+0e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31002f3ce4f4c4ec111217
+3930b46015cf1502015d0111231134262322061511231133153e013332160464b87c7c95acb9
+b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef00010037000002f2059e00130038
+40190e05080f03a9001101bc08870a0b08090204000810120e461410fc3cc4fc3cc432393931
+002fecf43cc4ec3211393930b2af1501015d01112115211114163b0115232226351123353311
+0177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd202608f013e000000013500b8
+00cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b800c301cb0189
+022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4
+009c01390114013907060400044e04b4045204b804e704cd0037047304cd04600473013303a2
+055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd
+03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a
+009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f60083
+0354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4
+009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b80614072301d3
+00b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f013901140139
+0360008f05d5019a0614072306660179046004600460047b009c00000277046001aa00e90460
+0762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b01850389008f
+007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2
+002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f600cd03440029
+006604ee00730000140000960000b707060504030201002c2010b002254964b040515820c859
+212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559
+b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d
+2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45
+442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a2d0000010000
+00025eb8fc9fc9605f0f3cf5001f080000000000d3c22bfc00000000d3c22bfcf7d6fc4c0e59
+09dc00000008000000010000000000010000076dfe1d00000efef7d6fa510e59000100000000
+00000000000000000000000a04cd006604bc003d07cb00ba051700e1051700960517009c0517
+006404660071051200ba032300370000000000000044000001680000022c0000029c0000039c
+0000048400000540000005d800000650000006cc00010000000a0354002b0068000c00020010
+0099000800000415021600080004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5
+fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe
+03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1
+fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d4
+4705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05cc
+fe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe
+03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b7
+8004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403
+ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a512
+03a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c
+9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a41059596
+0394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d03
+8f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05891403880b038786
+25058764038685110586250385110384fe038382110583fe0382110381fe0380fe037ffe0340
+ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe
+0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03
+687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035a
+fe0359580a0559fa03580a035716190557320356fe0355541505554203541503530110055318
+03521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a
+4910054a1303491d0d05491003480d0347fe0346960345960344fe0343022d0543fa0342bb03
+414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe03
+39fe033837140538fa033736100537140336350b05361003350b03341e03330d0332310b0532
+fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912
+052a25032912032827250528410327250326250b05260f03250b0324fe0323fe03220f032101
+10052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a420319114205
+19fe031864031716190517fe031601100516190315fe0314fe0313fe031211420512fe031102
+2d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308
+022d0508fe030714030664030401100504fe03401503022d0503fe0302011005022d03011003
+00fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
+2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
+] def
+/f-1-0 currentdict end definefont pop
+%%EndResource
+%%BeginResource: font f-2-0
+%!FontType1-1.1 f-2-0 1.0
+11 dict begin
+/FontName /f-2-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -252 871 710                                    } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 32 /space put
+dup 77 /M put
+dup 84 /T put
+dup 97 /a put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 107 /k put
+dup 109 /m put
+dup 111 /o put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caca0829f5fa523
+94d1d13e531ca63f8db4384673433fdb13b6fe358f1b94f0f773b7d545f7d2c8934aae7005f686
+fa6b0f9848dbb44b0a33b71c7cc94fb20075e4d628793c700dc1d721543166ffaa65052dc20a7e
+a050ed3eb0d52ed6cb080249f6b8e86aa2eadc50f91175f6b491837bb309def4cad013211be45c
+77492109362a700e49407faaf32f73796166071945dbe6385c333bc8f4f43307a1a43e1d02fa50
+c0a3d821d4be3aecac6c1eb7e1fbef3a71eca3f3461e1006946b408e5894a215d9b68fb265189f
+60905a285c31004e120340e25565cbd7fad241b28daddb603fd84439db5f28efd955ac4b1294b6
+15d92f7bd70cc96888c4a8e85ab14dde35d079fef649e709150be2e4de5dff19e6fcfb54b2eb7f
+eb9018d31d07ea0fe3522cab463854e8f75e93fd7fd819551d5625e2b3422c12a2c4d88fe51313
+4efc4d1d01f9814f7c2d8b84573ec796c6577e6cccbb8a00731da77858e05305fbd1f14e454411
+85b861a7d6aa0b0089d5056cc157b3289bb454300e4bed6a5c48d74d6ed7bc8702ea82ec4bfe85
+647b635b8930230a537d82f611e68b82c201e0ce2e9ef3de510d05f08906b9d3221b91258aa07c
+5575a4769bac62973e5ad676c996a65714c6e0ba0b0ed3a7f6ec1f15b4e242fde1e7bc7914abd1
+0b210351d5fbde593f02b5898701a9762bff24e7f6050ebb3cb3a0f96581338cc7fdadbfacc4ac
+33087afd786c8ab37ce2a86b93626463204c0b43f32a85786eafab5cd66f00d127b067ec2d86c6
+cf3f7a3b6f099af71723fcfeda1e778353e3d8f1d3287fc6f4529e6bebf6289cea536091e7f48c
+b331b971e311fd335820e13d0ae894dff283d223305743d56b7ef9f64ccc25053370152e5a3d20
+8ef93570aa8b70d1de16c13dcd269b245bb208bb9a9646e199d2fa8e368ff7840693d0b16137cc
+458707d15952b04a19f1229c6b7e4d4b12328746e325c5e8c0ec7e61b81d2e4be9e9a8d0333e17
+7c22a91205dc439755c8ceaa65bdbe9e0f139309c6c958dd5861126275a33719c6c24a4afa9342
+987adf4ba4ddc774b10a616734537bdd2294d7f9a8ddcfbcf2cd7906b705f131fec5c1d205bc04
+cdca34ab6b2a0a073578a09c5c5f16a92e045f225fa1b6e4caf577f2281cba627161c2d6241474
+1ca321b950c8cb71f51c1511e8af0695d8aac4479122c9f48d499e6f7fed6f3f1dd9e0ecd1ddab
+60501e6643cac66de34beaf6446032187d9ba53ab4c0c5bee84d4096221339defdeaa237381161
+00db82fdd0f66bf6e69f4791bcdd767b5a04833d195abec5a9dd1f943d353138c093464f60260d
+1517989b1fdec02d1397a38395b78deefe61ff22f601e2ea17ab02276d85a3d447a4d9463d8116
+0f0fafd5d0ca921b4401c932fbfd7e05a0ced7c26e24b03906af76c800a3212609ebb89a78e5f5
+b6fea3461052c0ebcb1b0992b782836fd601a90f832c85daa45ba7edde42e992c0f0ed57affd9e
+d1aa34015cb6cf17da43ed68e6c2d7ad899e6d810d3368125e15cab34be54bd21c589167e1744d
+f392415e35524326870f0498db229958ab011985f4d2d3ad6a0d36195bb43dd7d8258b2dfa6544
+0873918e3cc999b318609530f12592850d232c800805c116d8dfe85b28a3c344a81e4b78414ba2
+21720f458349e50e8a194dd257b67a17ead5a8b81a5e7ebbf059beceb0fb6be2586acf2d101530
+8a37695de3b91809b66be1ae8810d34c6a4799607c8496913beb0aa4dab4229ef891a44437a91e
+6b79bc5b8654f8fb22b1b9080033b21c1240b127c9442d6c35b5c4c47ca31fa82b278a73bcd044
+1e6a00ed831fe52672e6c52efa818f3ee3cca2c44c25211e2bd379393b5810ede39da1cdd2693a
+1eb675c0cf9e1f5908c3d5434821674efd4b4899ea791c6d5ae8412e6b282e018b77464063d2a3
+9ffb3a7ee3a519e6f1e7cf7e35d63fed4175fb833509415225c1cd4fd61e0684190d547e4d096f
+4a61e2937c9f1466583bba13d0a243206f25481c94c0c934c7fafc34f547b6381124f8fb4b514b
+85a0ac2058bcd1bdb7b93eb5aa21a4c0edbc2c48b137b425a6eba4439827e8cf7f9907acdf1f6e
+06b663e6a2c8eee48c282506aa06f53578e90e931828b0f489b0eb4672110bc2b72df97efa4892
+e4f8434f9c49d4a0c05e99d04d52cda24125b2c0a7ad3c5297121874032226be55a20e2fc81387
+8083c7d579e97dab21ef64a9008d84c1777701874d06da2afa4567d1229dff665161cd5b2d4076
+f0f586354137d8997e8b5aadcb923a989b440932d02c13cf2c03825b89bf43e84029e2094073b3
+3be898f970f659c90d99e1000dab464f622f513599fc6f6ad8bf7eb6047e0e53c0e3a0b95e3f67
+ce06dbf9d16c7d36ae01a389da8c21a45d95101e241d780d4ff68a84097b7945debe81bb460b26
+41ee8d8b04bcb7f6ad9aab9e7f89c6ff73dfa6706deca8fa81e89f0b25e7720a23daedc9db6a54
+8a036e1dc5e0825f8f124ffc0c3d4821595b529cf785e4336455cd3085b7ef6abb11bd87d47e7d
+3258c6dd11120a4cf9d75af8e3b43d45de87ff84195479111951a64fb37a78669220ea19731382
+bb4f4d44b85f812809674e7fa98d0afbcfec0a1c180dc15b2f8b6258ef9c5ce8e18391b580f4a4
+a59ad14c8728abbba1117b41e34002705e749ad063d0ddb3c1b2e06ccd2e4500cddf5baccb90df
+aa86d8735094bad6e13f0de261e30062801c26a06639ccb77aa053c654ef18379382f90be28828
+a736de05f802357b268729a5462b4cf87a21b06014b008cc9afa4984e71dc41685a4599093297e
+2ad605582d67bf9f29e7d8d863a485217553abbd22d174ef24e4886a324e1d93a29ea6f96fe2ea
+5baffc56e294253d9d313a96e1de56200d33d9fe5314437abe536b90a66da0a76f5d864da1b6b9
+668a1f2baa34872103875810fc4aebb7489c68ad1ce6fc38e3d0265b63fbb0fee2582b618f31cd
+79b569642b70208a37aa8031727cbb5c1a37183e14fdda1f7d429572b5a36df10fdba8b90a99a2
+8d978dc474e19fca6c6067638cc4eab6577fb0d6298f700a57c7836378fdae4359bbcf09f2f8f9
+4a2cd86b870a4b8ecf0d9c2cafe56d487099b2c0922e3126e509161c1e1b6f9341a8bc77543032
+fe7459fe965d0727e933d876170fba2a54ca3e0f365010bcf0b1e4b4f1dd158cfb5d4fd62ff008
+c6db2aa8d8473e30043baac5e158bbb915b4184f0cec89433af871e4e79352431cfcefc66d1327
+5455e6e39ff66c1daeffbf474713c1eacfcc08da9144858a56b50ba769385a56322007e7930192
+81b30000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndResource
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 11 12 690 354
+%%EndPageSetup
+q 11 12 679 342 rectclip
+1 0 0 -1 0 363 cm q
+0.945098 g
+177 183.23 m 184.5 175.73 l 359.25 175.73 l 359.25 342.074 l 351.75 349.574
+ l 177 349.574 l h
+177 183.23 m f
+0.0941176 g
+0.375 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+177 183.23 m 184.5 175.73 l 359.25 175.73 l 359.25 342.074 l 351.75 349.574
+ l 177 349.574 l h
+177 183.23 m S Q
+0 g
+351.75 183.23 m 359.25 175.73 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+351.75 183.23 m 359.25 175.73 l S Q
+q 1 0 0 1 0 0 cm
+177 183.23 m 351.75 183.23 l S Q
+q 1 0 0 1 0 0 cm
+351.75 183.23 m 351.75 349.574 l S Q
+0 g
+BT
+12 0 0 -12 188.25 203.559746 Tm
+/f-0-0 1 Tf
+[(v)-61(k)-52(e)-52(2)-52( )-52(\()-52(P)-40(r)-44(o)-28(x)-52(m)-52(o)
+-28(x)-52(\))]TJ
+ET
+0.945098 g
+200.25 219.074 m 207.75 211.574 l 251.25 211.574 l 251.25 240.875 l 243.75
+ 248.375 l 200.25 248.375 l h
+200.25 219.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+200.25 219.074 m 207.75 211.574 l 251.25 211.574 l 251.25 240.875 l 243.75
+ 248.375 l 200.25 248.375 l h
+200.25 219.074 m S Q
+0 g
+243.75 219.074 m 251.25 211.574 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+243.75 219.074 m 251.25 211.574 l S Q
+q 1 0 0 1 0 0 cm
+200.25 219.074 m 243.75 219.074 l S Q
+q 1 0 0 1 0 0 cm
+243.75 219.074 m 243.75 248.375 l S Q
+0 g
+BT
+10.5 0 0 -10.5 211.5 237.800185 Tm
+/f-1-0 1 Tf
+[(v)101(m)101(1)]TJ
+ET
+0.945098 g
+277.5 219.074 m 285 211.574 l 328.5 211.574 l 328.5 240.875 l 321 248.375
+ l 277.5 248.375 l h
+277.5 219.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+277.5 219.074 m 285 211.574 l 328.5 211.574 l 328.5 240.875 l 321 248.375
+ l 277.5 248.375 l h
+277.5 219.074 m S Q
+0 g
+321 219.074 m 328.5 211.574 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+321 219.074 m 328.5 211.574 l S Q
+q 1 0 0 1 0 0 cm
+277.5 219.074 m 321 219.074 l S Q
+q 1 0 0 1 0 0 cm
+321 219.074 m 321 248.375 l S Q
+0 g
+BT
+10.5 0 0 -10.5 288.75 237.800185 Tm
+/f-1-0 1 Tf
+[(v)101(m)101(2)]TJ
+ET
+0.945098 g
+200.25 300.824 m 207.75 293.324 l 251.25 293.324 l 251.25 322.625 l 243.75
+ 330.125 l 200.25 330.125 l h
+200.25 300.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+200.25 300.824 m 207.75 293.324 l 251.25 293.324 l 251.25 322.625 l 243.75
+ 330.125 l 200.25 330.125 l h
+200.25 300.824 m S Q
+0 g
+243.75 300.824 m 251.25 293.324 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+243.75 300.824 m 251.25 293.324 l S Q
+q 1 0 0 1 0 0 cm
+200.25 300.824 m 243.75 300.824 l S Q
+q 1 0 0 1 0 0 cm
+243.75 300.824 m 243.75 330.125 l S Q
+0 g
+BT
+10.5 0 0 -10.5 211.5 319.550182 Tm
+/f-1-0 1 Tf
+[(v)101(m)101(3)]TJ
+ET
+0.945098 g
+277.5 300.824 m 285 293.324 l 328.5 293.324 l 328.5 322.625 l 321 330.125
+ l 277.5 330.125 l h
+277.5 300.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+277.5 300.824 m 285 293.324 l 328.5 293.324 l 328.5 322.625 l 321 330.125
+ l 277.5 330.125 l h
+277.5 300.824 m S Q
+0 g
+321 300.824 m 328.5 293.324 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+321 300.824 m 328.5 293.324 l S Q
+q 1 0 0 1 0 0 cm
+277.5 300.824 m 321 300.824 l S Q
+q 1 0 0 1 0 0 cm
+321 300.824 m 321 330.125 l S Q
+0 g
+BT
+10.5 0 0 -10.5 288.75 319.550182 Tm
+/f-1-0 1 Tf
+[(v)101(m)101(4)]TJ
+ET
+0.945098 g
+385.5 204.98 m 393 197.48 l 524.25 197.48 l 524.25 320.324 l 516.75 327.824
+ l 385.5 327.824 l h
+385.5 204.98 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+385.5 204.98 m 393 197.48 l 524.25 197.48 l 524.25 320.324 l 516.75 327.824
+ l 385.5 327.824 l h
+385.5 204.98 m S Q
+0 g
+516.75 204.98 m 524.25 197.48 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+516.75 204.98 m 524.25 197.48 l S Q
+q 1 0 0 1 0 0 cm
+385.5 204.98 m 516.75 204.98 l S Q
+q 1 0 0 1 0 0 cm
+516.75 204.98 m 516.75 327.824 l S Q
+0 g
+BT
+12 0 0 -12 396.75 225.309746 Tm
+/f-0-0 1 Tf
+[(v)-58(k)-49(e)-49(3)-48( )-49(\()-49(U)-59(b)-41(u)-49(n)-41(t)-33(u)
+-49(\))]TJ
+ET
+0.945098 g
+403.875 234.074 m 436.875 234.074 l 437.914 234.074 438.75 234.91 438.75
+ 235.949 c 438.75 251 l 438.75 252.039 437.914 252.875 436.875 252.875 c
+ 403.875 252.875 l 402.836 252.875 402 252.039 402 251 c 402 235.949 l 402
+ 234.91 402.836 234.074 403.875 234.074 c h
+403.875 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+403.875 234.074 m 436.875 234.074 l 437.914 234.074 438.75 234.91 438.75
+ 235.949 c 438.75 251 l 438.75 252.039 437.914 252.875 436.875 252.875 c
+ 403.875 252.875 l 402.836 252.875 402 252.039 402 251 c 402 235.949 l 402
+ 234.91 402.836 234.074 403.875 234.074 c h
+403.875 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 409.5 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(1)]TJ
+ET
+0.945098 g
+466.875 234.074 m 499.875 234.074 l 500.914 234.074 501.75 234.91 501.75
+ 235.949 c 501.75 251 l 501.75 252.039 500.914 252.875 499.875 252.875 c
+ 466.875 252.875 l 465.836 252.875 465 252.039 465 251 c 465 235.949 l 465
+ 234.91 465.836 234.074 466.875 234.074 c h
+466.875 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+466.875 234.074 m 499.875 234.074 l 500.914 234.074 501.75 234.91 501.75
+ 235.949 c 501.75 251 l 501.75 252.039 500.914 252.875 499.875 252.875 c
+ 466.875 252.875 l 465.836 252.875 465 252.039 465 251 c 465 235.949 l 465
+ 234.91 465.836 234.074 466.875 234.074 c h
+466.875 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 472.5 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(2)]TJ
+ET
+0.945098 g
+403.875 297.824 m 436.875 297.824 l 437.914 297.824 438.75 298.66 438.75
+ 299.699 c 438.75 314.75 l 438.75 315.789 437.914 316.625 436.875 316.625
+ c 403.875 316.625 l 402.836 316.625 402 315.789 402 314.75 c 402 299.699
+ l 402 298.66 402.836 297.824 403.875 297.824 c h
+403.875 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+403.875 297.824 m 436.875 297.824 l 437.914 297.824 438.75 298.66 438.75
+ 299.699 c 438.75 314.75 l 438.75 315.789 437.914 316.625 436.875 316.625
+ c 403.875 316.625 l 402.836 316.625 402 315.789 402 314.75 c 402 299.699
+ l 402 298.66 402.836 297.824 403.875 297.824 c h
+403.875 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 409.5 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(3)]TJ
+ET
+0.945098 g
+466.875 297.824 m 499.875 297.824 l 500.914 297.824 501.75 298.66 501.75
+ 299.699 c 501.75 314.75 l 501.75 315.789 500.914 316.625 499.875 316.625
+ c 466.875 316.625 l 465.836 316.625 465 315.789 465 314.75 c 465 299.699
+ l 465 298.66 465.836 297.824 466.875 297.824 c h
+466.875 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+466.875 297.824 m 499.875 297.824 l 500.914 297.824 501.75 298.66 501.75
+ 299.699 c 501.75 314.75 l 501.75 315.789 500.914 316.625 499.875 316.625
+ c 466.875 316.625 l 465.836 316.625 465 315.789 465 314.75 c 465 299.699
+ l 465 298.66 465.836 297.824 466.875 297.824 c h
+466.875 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 472.5 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(4)]TJ
+ET
+0.945098 g
+12 204.98 m 19.5 197.48 l 150.75 197.48 l 150.75 320.324 l 143.25 327.824
+ l 12 327.824 l h
+12 204.98 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+12 204.98 m 19.5 197.48 l 150.75 197.48 l 150.75 320.324 l 143.25 327.824
+ l 12 327.824 l h
+12 204.98 m S Q
+0 g
+143.25 204.98 m 150.75 197.48 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+143.25 204.98 m 150.75 197.48 l S Q
+q 1 0 0 1 0 0 cm
+12 204.98 m 143.25 204.98 l S Q
+q 1 0 0 1 0 0 cm
+143.25 204.98 m 143.25 327.824 l S Q
+0 g
+BT
+12 0 0 -12 23.25 225.309746 Tm
+/f-0-0 1 Tf
+[(v)-58(k)-49(e)-49(1)-48( )-49(\()-49(U)-59(b)-41(u)-49(n)-41(t)-33(u)
+-49(\))]TJ
+ET
+0.945098 g
+30.375 234.074 m 63.375 234.074 l 64.414 234.074 65.25 234.91 65.25 235.949
+ c 65.25 251 l 65.25 252.039 64.414 252.875 63.375 252.875 c 30.375 252.875
+ l 29.336 252.875 28.5 252.039 28.5 251 c 28.5 235.949 l 28.5 234.91 29.336
+ 234.074 30.375 234.074 c h
+30.375 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+30.375 234.074 m 63.375 234.074 l 64.414 234.074 65.25 234.91 65.25 235.949
+ c 65.25 251 l 65.25 252.039 64.414 252.875 63.375 252.875 c 30.375 252.875
+ l 29.336 252.875 28.5 252.039 28.5 251 c 28.5 235.949 l 28.5 234.91 29.336
+ 234.074 30.375 234.074 c h
+30.375 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 36 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(1)]TJ
+ET
+0.945098 g
+93.375 234.074 m 126.375 234.074 l 127.414 234.074 128.25 234.91 128.25
+ 235.949 c 128.25 251 l 128.25 252.039 127.414 252.875 126.375 252.875 c
+ 93.375 252.875 l 92.336 252.875 91.5 252.039 91.5 251 c 91.5 235.949 l 
+91.5 234.91 92.336 234.074 93.375 234.074 c h
+93.375 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+93.375 234.074 m 126.375 234.074 l 127.414 234.074 128.25 234.91 128.25
+ 235.949 c 128.25 251 l 128.25 252.039 127.414 252.875 126.375 252.875 c
+ 93.375 252.875 l 92.336 252.875 91.5 252.039 91.5 251 c 91.5 235.949 l 
+91.5 234.91 92.336 234.074 93.375 234.074 c h
+93.375 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 99 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(2)]TJ
+ET
+0.945098 g
+30.375 297.824 m 63.375 297.824 l 64.414 297.824 65.25 298.66 65.25 299.699
+ c 65.25 314.75 l 65.25 315.789 64.414 316.625 63.375 316.625 c 30.375 316.625
+ l 29.336 316.625 28.5 315.789 28.5 314.75 c 28.5 299.699 l 28.5 298.66 
+29.336 297.824 30.375 297.824 c h
+30.375 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+30.375 297.824 m 63.375 297.824 l 64.414 297.824 65.25 298.66 65.25 299.699
+ c 65.25 314.75 l 65.25 315.789 64.414 316.625 63.375 316.625 c 30.375 316.625
+ l 29.336 316.625 28.5 315.789 28.5 314.75 c 28.5 299.699 l 28.5 298.66 
+29.336 297.824 30.375 297.824 c h
+30.375 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 36 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(3)]TJ
+ET
+0.945098 g
+93.375 297.824 m 126.375 297.824 l 127.414 297.824 128.25 298.66 128.25
+ 299.699 c 128.25 314.75 l 128.25 315.789 127.414 316.625 126.375 316.625
+ c 93.375 316.625 l 92.336 316.625 91.5 315.789 91.5 314.75 c 91.5 299.699
+ l 91.5 298.66 92.336 297.824 93.375 297.824 c h
+93.375 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+93.375 297.824 m 126.375 297.824 l 127.414 297.824 128.25 298.66 128.25
+ 299.699 c 128.25 314.75 l 128.25 315.789 127.414 316.625 126.375 316.625
+ c 93.375 316.625 l 92.336 316.625 91.5 315.789 91.5 314.75 c 91.5 299.699
+ l 91.5 298.66 92.336 297.824 93.375 297.824 c h
+93.375 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 99 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(4)]TJ
+ET
+0.945098 g
+550.5 204.98 m 558 197.48 l 689.25 197.48 l 689.25 320.324 l 681.75 327.824
+ l 550.5 327.824 l h
+550.5 204.98 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+550.5 204.98 m 558 197.48 l 689.25 197.48 l 689.25 320.324 l 681.75 327.824
+ l 550.5 327.824 l h
+550.5 204.98 m S Q
+0 g
+681.75 204.98 m 689.25 197.48 l f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+681.75 204.98 m 689.25 197.48 l S Q
+q 1 0 0 1 0 0 cm
+550.5 204.98 m 681.75 204.98 l S Q
+q 1 0 0 1 0 0 cm
+681.75 204.98 m 681.75 327.824 l S Q
+0 g
+BT
+12 0 0 -12 561.75 225.309746 Tm
+/f-0-0 1 Tf
+[(v)-58(k)-49(e)-49(4)-48( )-49(\()-49(U)-59(b)-41(u)-49(n)-41(t)-33(u)
+-49(\))]TJ
+ET
+0.945098 g
+568.875 234.074 m 601.875 234.074 l 602.914 234.074 603.75 234.91 603.75
+ 235.949 c 603.75 251 l 603.75 252.039 602.914 252.875 601.875 252.875 c
+ 568.875 252.875 l 567.836 252.875 567 252.039 567 251 c 567 235.949 l 567
+ 234.91 567.836 234.074 568.875 234.074 c h
+568.875 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+568.875 234.074 m 601.875 234.074 l 602.914 234.074 603.75 234.91 603.75
+ 235.949 c 603.75 251 l 603.75 252.039 602.914 252.875 601.875 252.875 c
+ 568.875 252.875 l 567.836 252.875 567 252.039 567 251 c 567 235.949 l 567
+ 234.91 567.836 234.074 568.875 234.074 c h
+568.875 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 574.5 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(1)]TJ
+ET
+0.945098 g
+631.875 234.074 m 664.875 234.074 l 665.914 234.074 666.75 234.91 666.75
+ 235.949 c 666.75 251 l 666.75 252.039 665.914 252.875 664.875 252.875 c
+ 631.875 252.875 l 630.836 252.875 630 252.039 630 251 c 630 235.949 l 630
+ 234.91 630.836 234.074 631.875 234.074 c h
+631.875 234.074 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+631.875 234.074 m 664.875 234.074 l 665.914 234.074 666.75 234.91 666.75
+ 235.949 c 666.75 251 l 666.75 252.039 665.914 252.875 664.875 252.875 c
+ 631.875 252.875 l 630.836 252.875 630 252.039 630 251 c 630 235.949 l 630
+ 234.91 630.836 234.074 631.875 234.074 c h
+631.875 234.074 m S Q
+0 g
+BT
+10.5 0 0 -10.5 637.5 247.550185 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(2)]TJ
+ET
+0.945098 g
+568.875 297.824 m 601.875 297.824 l 602.914 297.824 603.75 298.66 603.75
+ 299.699 c 603.75 314.75 l 603.75 315.789 602.914 316.625 601.875 316.625
+ c 568.875 316.625 l 567.836 316.625 567 315.789 567 314.75 c 567 299.699
+ l 567 298.66 567.836 297.824 568.875 297.824 c h
+568.875 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+568.875 297.824 m 601.875 297.824 l 602.914 297.824 603.75 298.66 603.75
+ 299.699 c 603.75 314.75 l 603.75 315.789 602.914 316.625 601.875 316.625
+ c 568.875 316.625 l 567.836 316.625 567 315.789 567 314.75 c 567 299.699
+ l 567 298.66 567.836 297.824 568.875 297.824 c h
+568.875 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 574.5 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(3)]TJ
+ET
+0.945098 g
+631.875 297.824 m 664.875 297.824 l 665.914 297.824 666.75 298.66 666.75
+ 299.699 c 666.75 314.75 l 666.75 315.789 665.914 316.625 664.875 316.625
+ c 631.875 316.625 l 630.836 316.625 630 315.789 630 314.75 c 630 299.699
+ l 630 298.66 630.836 297.824 631.875 297.824 c h
+631.875 297.824 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+631.875 297.824 m 664.875 297.824 l 665.914 297.824 666.75 298.66 666.75
+ 299.699 c 666.75 314.75 l 666.75 315.789 665.914 316.625 664.875 316.625
+ c 631.875 316.625 l 630.836 316.625 630 315.789 630 314.75 c 630 299.699
+ l 630 298.66 630.836 297.824 631.875 297.824 c h
+631.875 297.824 m S Q
+0 g
+BT
+10.5 0 0 -10.5 637.5 311.300182 Tm
+/f-1-0 1 Tf
+[(c)47(n)47(t)46(4)]TJ
+ET
+0.945098 g
+316.875 9.98 m 405.375 9.98 l 406.414 9.98 407.25 10.816 407.25 11.855 
+c 407.25 37.406 l 407.25 38.445 406.414 39.281 405.375 39.281 c 316.875 
+39.281 l 315.836 39.281 315 38.445 315 37.406 c 315 11.855 l 315 10.816 
+315.836 9.98 316.875 9.98 c h
+316.875 9.98 m f
+0.0941176 g
+q 1 0 0 1 0 0 cm
+316.875 9.98 m 405.375 9.98 l 406.414 9.98 407.25 10.816 407.25 11.855 
+c 407.25 37.406 l 407.25 38.445 406.414 39.281 405.375 39.281 c 316.875 
+39.281 l 315.836 39.281 315 38.445 315 37.406 c 315 11.855 l 315 10.816 
+315.836 9.98 316.875 9.98 c h
+316.875 9.98 m S Q
+0 g
+BT
+10.5 0 0 -10.5 322.5 28.706174 Tm
+/f-2-0 1 Tf
+[(M)-38(i)-49(k)-47(r)-32(o)-44(T)-31(i)-49(k)-44( )-44(r)-32(o)-33(u)-32
+(t)-39(e)-43(r)]TJ
+ET
+0.0941176 g
+0.75 w
+q 1 0 0 1 0 0 cm
+329.754 39.5 m 329.754 66.434 329.754 125.113 329.754 175.551 c S Q
+0 g
+BT
+9.75 0 0 -9.75 301.25251 104.449505 Tm
+/f-2-0 1 Tf
+[(m)-130(g)-141(m)-116(t)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+344.496 39.5 m 344.496 66.434 344.496 125.113 344.496 175.551 c S Q
+0 g
+BT
+9.75 0 0 -9.75 323.49749 118.699505 Tm
+/f-2-0 1 Tf
+[(d)-114(a)-96(t)-119(a)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+392.754 39.5 m 392.754 70.453 392.754 143.348 392.754 197.465 c S Q
+0 g
+BT
+9.75 0 0 -9.75 364.25251 115.407005 Tm
+/f-2-0 1 Tf
+[(m)-130(g)-141(m)-116(t)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+399.996 39.5 m 399.996 70.453 399.996 143.348 399.996 197.465 c S Q
+0 g
+BT
+9.75 0 0 -9.75 378.99749 129.657005 Tm
+/f-2-0 1 Tf
+[(d)-114(a)-96(t)-119(a)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+314.797 19.73 m 229.949 19.73 58.254 19.73 58.254 19.73 c 58.254 19.73 
+58.254 125.316 58.254 197.293 c S Q
+0 g
+BT
+9.75 0 0 -9.75 69.24 16.6545 Tm
+/f-2-0 1 Tf
+[(m)-130(g)-141(m)-116(t)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+314.949 29.48 m 241.066 29.48 104.496 29.48 104.496 29.48 c 104.496 29.48
+ 104.496 128.445 104.496 197.453 c S Q
+0 g
+BT
+9.75 0 0 -9.75 104.737495 26.404501 Tm
+/f-2-0 1 Tf
+[(d)-114(a)-96(t)-119(a)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+407.355 19.73 m 487.32 19.73 642.996 19.73 642.996 19.73 c 642.996 19.73
+ 642.996 125.316 642.996 197.293 c S Q
+0 g
+BT
+9.75 0 0 -9.75 585.457489 16.6545 Tm
+/f-2-0 1 Tf
+[(m)-130(g)-141(m)-116(t)]TJ
+ET
+0.0941176 g
+q 1 0 0 1 0 0 cm
+407.391 29.48 m 476.016 29.48 596.754 29.48 596.754 29.48 c 596.754 29.48
+ 596.754 128.445 596.754 197.453 c S Q
+0 g
+BT
+9.75 0 0 -9.75 565.05748 40.654501 Tm
+/f-2-0 1 Tf
+[(d)-114(a)-96(t)-119(a)]TJ
+ET
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/figs/vke.svg b/figs/vke.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7a82f8fde15ba6f0c2c9db07f74b0f4ed171bfda
--- /dev/null
+++ b/figs/vke.svg
@@ -0,0 +1,235 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="483px" preserveAspectRatio="none" style="width:936px;height:483px;background:#FFFFFF;" version="1.1" viewBox="0 0 936 483" width="936px" zoomAndPan="magnify"><defs/><g><!--MD5=[a8d989a1106b4aea2af0f7de1baef343]
+entity vke2--><g id="elem_vke2"><polygon fill="#F1F1F1" points="236,244.309,246,234.309,479,234.309,479,456.101,469,466.101,236,466.101,236,244.309" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="469" x2="479" y1="244.309" y2="234.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="236" x2="469" y1="244.309" y2="244.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="469" x2="469" y1="244.309" y2="466.101"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="117" x="251" y="271.413">vke2 (Proxmox)</text><svg x="251" y="276.101"><defs/><g><rect fill="#FFFFFF" style="width:204px;height:181px;background:#FFFFFF;" /> <!--MD5=[f7217f40b8b69eb89454e570d46d4292]
+entity vm21--><g id="elem_vm21"><polygon fill="#F1F1F1" points="16,16,26,6,84,6,84,45.0679,74,55.0679,16,55.0679,16,16" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="74" x2="84" y1="16" y2="6"/><line style="stroke:#181818;stroke-width:0.5;" x1="16" x2="74" y1="16" y2="16"/><line style="stroke:#181818;stroke-width:0.5;" x1="74" x2="74" y1="16" y2="55.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="31" y="40.9659">vm1</text></g><!--MD5=[b5cd3d780367a556f1913595eec9a251]
+entity vm22--><g id="elem_vm22"><polygon fill="#F1F1F1" points="119,16,129,6,187,6,187,45.0679,177,55.0679,119,55.0679,119,16" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="177" x2="187" y1="16" y2="6"/><line style="stroke:#181818;stroke-width:0.5;" x1="119" x2="177" y1="16" y2="16"/><line style="stroke:#181818;stroke-width:0.5;" x1="177" x2="177" y1="16" y2="55.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="134" y="40.9659">vm2</text></g><!--MD5=[1db7b1867512662772ee4d08fe80fe7d]
+entity vm23--><g id="elem_vm23"><polygon fill="#F1F1F1" points="16,125,26,115,84,115,84,154.0679,74,164.0679,16,164.0679,16,125" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="74" x2="84" y1="125" y2="115"/><line style="stroke:#181818;stroke-width:0.5;" x1="16" x2="74" y1="125" y2="125"/><line style="stroke:#181818;stroke-width:0.5;" x1="74" x2="74" y1="125" y2="164.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="31" y="149.9659">vm3</text></g><!--MD5=[48f70a13556801d81435ecac2f819fff]
+entity vm24--><g id="elem_vm24"><polygon fill="#F1F1F1" points="119,125,129,115,187,115,187,154.0679,177,164.0679,119,164.0679,119,125" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="177" x2="187" y1="125" y2="115"/><line style="stroke:#181818;stroke-width:0.5;" x1="119" x2="177" y1="125" y2="125"/><line style="stroke:#181818;stroke-width:0.5;" x1="177" x2="177" y1="125" y2="164.0679"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="134" y="149.9659">vm4</text></g><!--MD5=[1fe41a2231a29101cc3e87682116881e]
+@startuml
+  node vm21 as "vm1"
+  node vm22 as "vm2"
+  node vm23 as "vm3"
+  node vm24 as "vm4"
+@enduml
+
+PlantUML version 1.2022.4(Sat Apr 09 15:29:17 CEST 2022)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg></g><!--MD5=[ac616bb4d527f2b0ae99bf54e8aea919]
+entity vke3--><g id="elem_vke3"><polygon fill="#F1F1F1" points="514,273.309,524,263.309,699,263.309,699,427.101,689,437.101,514,437.101,514,273.309" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="689" x2="699" y1="273.309" y2="263.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="514" x2="689" y1="273.309" y2="273.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="689" x2="689" y1="273.309" y2="437.101"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="107" x="529" y="300.413">vke3 (Ubuntu)</text><svg x="529" y="305.101"><defs/><g><rect fill="#FFFFFF" style="width:146px;height:123px;background:#FFFFFF;" /> <!--MD5=[65de770b521131bb3c50e72bbf9edbe7]
+entity cnt31--><g id="elem_cnt31"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="24.9659">cnt1</text></g><!--MD5=[e74697a125a2575392c4a82dc0c34091]
+entity cnt32--><g id="elem_cnt32"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="24.9659">cnt2</text></g><!--MD5=[92cb9d414add7170cd340b454a8b0b6f]
+entity cnt33--><g id="elem_cnt33"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="109.9659">cnt3</text></g><!--MD5=[635f7977c500eb2b75c89f702ddbf656]
+entity cnt34--><g id="elem_cnt34"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="109.9659">cnt4</text></g><!--MD5=[a8b770e976be418f6c206349a2ab2819]
+@startuml
+  card cnt31 as "cnt1"
+  card cnt32 as "cnt2"
+  card cnt33 as "cnt3"
+  card cnt34 as "cnt4"
+@enduml
+
+PlantUML version 1.2022.4(Sat Apr 09 15:29:17 CEST 2022)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg></g><!--MD5=[8d1728d35b21b0d8522273311c1a1e51]
+entity vke1--><g id="elem_vke1"><polygon fill="#F1F1F1" points="16,273.309,26,263.309,201,263.309,201,427.101,191,437.101,16,437.101,16,273.309" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="191" x2="201" y1="273.309" y2="263.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="16" x2="191" y1="273.309" y2="273.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="191" x2="191" y1="273.309" y2="437.101"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="107" x="31" y="300.413">vke1 (Ubuntu)</text><svg x="31" y="305.101"><defs/><g><rect fill="#FFFFFF" style="width:146px;height:123px;background:#FFFFFF;" /> <!--MD5=[2253dd68a6e32ed53bd6fe0e7388def4]
+entity cnt11--><g id="elem_cnt11"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="24.9659">cnt1</text></g><!--MD5=[523b0264bc61756beb68c7e4d3c87775]
+entity cnt12--><g id="elem_cnt12"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="24.9659">cnt2</text></g><!--MD5=[3ee5575c7c86ac087ec793e20575d80b]
+entity cnt13--><g id="elem_cnt13"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="109.9659">cnt3</text></g><!--MD5=[246eb0c2d49294ab7d218a9bb3be700d]
+entity cnt14--><g id="elem_cnt14"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="109.9659">cnt4</text></g><!--MD5=[61b83eebe528da6e117d2d56b9f4a22e]
+@startuml
+  card cnt11 as "cnt1"
+  card cnt12 as "cnt2"
+  card cnt13 as "cnt3"
+  card cnt14 as "cnt4"
+@enduml
+
+PlantUML version 1.2022.4(Sat Apr 09 15:29:17 CEST 2022)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg></g><!--MD5=[04ba423cc45a35c722442c8d94dd2d2b]
+entity vke4--><g id="elem_vke4"><polygon fill="#F1F1F1" points="734,273.309,744,263.309,919,263.309,919,427.101,909,437.101,734,437.101,734,273.309" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="909" x2="919" y1="273.309" y2="263.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="734" x2="909" y1="273.309" y2="273.309"/><line style="stroke:#181818;stroke-width:0.5;" x1="909" x2="909" y1="273.309" y2="437.101"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="16" font-weight="bold" lengthAdjust="spacing" textLength="107" x="749" y="300.413">vke4 (Ubuntu)</text><svg x="749" y="305.101"><defs/><g><rect fill="#FFFFFF" style="width:146px;height:123px;background:#FFFFFF;" /> <!--MD5=[d8dce96b39ac3ff4414bea57ee76aea8]
+entity cnt41--><g id="elem_cnt41"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="24.9659">cnt1</text></g><!--MD5=[bef4c64213f00a2ad3081beee41efe3d]
+entity cnt42--><g id="elem_cnt42"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="7"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="24.9659">cnt2</text></g><!--MD5=[2a5ee6f5d9e7b1830fcda06ed4fb44ca]
+entity cnt43--><g id="elem_cnt43"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="7" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="17" y="109.9659">cnt3</text></g><!--MD5=[d62867c546045f4a2ba5efc7dda29731]
+entity cnt44--><g id="elem_cnt44"><rect fill="#F1F1F1" height="25.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="49" x="91" y="92"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="101" y="109.9659">cnt4</text></g><!--MD5=[9028b35dc591cd8be57c64c60d3c3976]
+@startuml
+  card cnt41 as "cnt1"
+  card cnt42 as "cnt2"
+  card cnt43 as "cnt3"
+  card cnt44 as "cnt4"
+@enduml
+
+PlantUML version 1.2022.4(Sat Apr 09 15:29:17 CEST 2022)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg></g><!--MD5=[cf4bfc41de78c0fef7f9a001e80e613b]
+entity switch--><g id="elem_switch"><rect fill="#F1F1F1" height="39.0679" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="123" x="420" y="13.309"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="14" lengthAdjust="spacing" textLength="103" x="430" y="38.2749">MikroTik router</text></g><!--MD5=[d71e488186ea4fcb08cc17f52da1344d]
+link switch to vke2--><g id="link_switch_vke2"><path d="M439.67,52.669 C439.67,88.579 439.67,166.819 439.67,234.069 " fill="none" id="switch-vke2" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="37" x="401.67" y="139.266">mgmt</text></g><!--MD5=[d71e488186ea4fcb08cc17f52da1344d]
+link switch to vke2--><g id="link_switch_vke2"><path d="M459.33,52.669 C459.33,88.579 459.33,166.819 459.33,234.069 " fill="none" id="switch-vke2-1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="27" x="431.33" y="158.266">data</text></g><!--MD5=[3f8798b681bf6807665649611d7f9008]
+link switch to vke3--><g id="link_switch_vke3"><path d="M523.67,52.669 C523.67,93.939 523.67,191.129 523.67,263.289 " fill="none" id="switch-vke3" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="37" x="485.67" y="153.876">mgmt</text></g><!--MD5=[3f8798b681bf6807665649611d7f9008]
+link switch to vke3--><g id="link_switch_vke3"><path d="M533.33,52.669 C533.33,93.939 533.33,191.129 533.33,263.289 " fill="none" id="switch-vke3-1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="27" x="505.33" y="172.876">data</text></g><!--MD5=[132ec594ac5c4998606165ae6d199252]
+link switch to vke1--><g id="link_switch_vke1"><path d="M419.73,26.309 C306.6,26.309 77.67,26.309 77.67,26.309 C77.67,26.309 77.67,167.089 77.67,263.059 " fill="none" id="switch-vke1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="37" x="92.32" y="22.206">mgmt</text></g><!--MD5=[132ec594ac5c4998606165ae6d199252]
+link switch to vke1--><g id="link_switch_vke1"><path d="M419.93,39.309 C321.42,39.309 139.33,39.309 139.33,39.309 C139.33,39.309 139.33,171.259 139.33,263.269 " fill="none" id="switch-vke1-1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="27" x="139.65" y="35.206">data</text></g><!--MD5=[56230ab1cd661644c4b22469e053bb5e]
+link switch to vke4--><g id="link_switch_vke4"><path d="M543.14,26.309 C649.76,26.309 857.33,26.309 857.33,26.309 C857.33,26.309 857.33,167.089 857.33,263.059 " fill="none" id="switch-vke4" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="37" x="780.61" y="22.206">mgmt</text></g><!--MD5=[56230ab1cd661644c4b22469e053bb5e]
+link switch to vke4--><g id="link_switch_vke4"><path d="M543.19,39.309 C634.69,39.309 795.67,39.309 795.67,39.309 C795.67,39.309 795.67,171.259 795.67,263.269 " fill="none" id="switch-vke4-1" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="&quot;Minion Pro&quot;" font-size="13" lengthAdjust="spacing" textLength="27" x="753.41" y="54.206">data</text></g><!--MD5=[b63faed0dd725c7cc8b16c7a74a2be89]
+link vke1 to vke2--><!--MD5=[9a523c82942e0cfea17bec34bfb5d20d]
+link vke2 to vke3--><!--MD5=[2a7c6353a7630f16f77312f81bd3f194]
+link vke3 to vke4--><!--MD5=[d05e176a99eafe538c7b02d4aa0cc8e8]
+@startuml
+
+skinparam linetype ortho
+skinparam defaultFontName "Minion Pro"
+
+'skinparam nodesep 10
+skinparam linesep 10
+'skinparam ranksep 50
+
+
+node vke2 [
+== vke2 (Proxmox)
+{{
+  node vm21 as "vm1"
+  node vm22 as "vm2"
+  node vm23 as "vm3"
+  node vm24 as "vm4"
+}}
+]
+
+node vke3 [
+== vke3 (Ubuntu)
+{{
+  card cnt31 as "cnt1"
+  card cnt32 as "cnt2"
+  card cnt33 as "cnt3"
+  card cnt34 as "cnt4"
+}}
+]
+
+node vke1 [
+== vke1 (Ubuntu)
+{{
+  card cnt11 as "cnt1"
+  card cnt12 as "cnt2"
+  card cnt13 as "cnt3"
+  card cnt14 as "cnt4"
+}}
+]
+
+node vke4 [
+== vke4 (Ubuntu)
+{{
+  card cnt41 as "cnt1"
+  card cnt42 as "cnt2"
+  card cnt43 as "cnt3"
+  card cnt44 as "cnt4"
+}}
+]
+
+
+agent switch as "MikroTik router"
+
+vke2 -up- - - switch: mgmt
+vke2 -up- - - switch: data
+vke3 -up- - - switch: mgmt
+vke3 -up- - - switch: data
+vke1 -up- - - switch: mgmt
+vke1 -up- - - switch: data
+vke4 -up- - - switch: mgmt
+vke4 -up- - - switch: data
+
+vke1 - -[hidden]right-> vke2
+vke2 - -[hidden]right-> vke3
+vke3 - -[hidden]right-> vke4
+
+@enduml
+
+@startuml
+
+skinparam linetype ortho
+skinparam defaultFontName "Minion Pro"
+
+skinparam linesep 10
+
+
+node vke2 [
+== vke2 (Proxmox)
+{{
+  node vm21 as "vm1"
+  node vm22 as "vm2"
+  node vm23 as "vm3"
+  node vm24 as "vm4"
+}}
+]
+
+node vke3 [
+== vke3 (Ubuntu)
+{{
+  card cnt31 as "cnt1"
+  card cnt32 as "cnt2"
+  card cnt33 as "cnt3"
+  card cnt34 as "cnt4"
+}}
+]
+
+node vke1 [
+== vke1 (Ubuntu)
+{{
+  card cnt11 as "cnt1"
+  card cnt12 as "cnt2"
+  card cnt13 as "cnt3"
+  card cnt14 as "cnt4"
+}}
+]
+
+node vke4 [
+== vke4 (Ubuntu)
+{{
+  card cnt41 as "cnt1"
+  card cnt42 as "cnt2"
+  card cnt43 as "cnt3"
+  card cnt44 as "cnt4"
+}}
+]
+
+
+agent switch as "MikroTik router"
+
+vke2 -up- - - switch: mgmt
+vke2 -up- - - switch: data
+vke3 -up- - - switch: mgmt
+vke3 -up- - - switch: data
+vke1 -up- - - switch: mgmt
+vke1 -up- - - switch: data
+vke4 -up- - - switch: mgmt
+vke4 -up- - - switch: data
+
+vke1 - -[hidden]right-> vke2
+vke2 - -[hidden]right-> vke3
+vke3 - -[hidden]right-> vke4
+
+@enduml
+
+PlantUML version 1.2022.4(Sat Apr 09 15:29:17 CEST 2022)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg>
\ No newline at end of file
diff --git a/onlab.md b/onlab.md
index 7d7ee909e4a762d9983e9dab1ac99034310d4667..8c92c5df16cf97319feddbd2e881297b26ffba7c 100644
--- a/onlab.md
+++ b/onlab.md
@@ -19,15 +19,22 @@
 \end{titlepage}
 
 # Bevezetés
-Az önálló laboratóriumomat a TMIT-en a HSNLab-nál végeztem. A labornak a 
-különböző kutatásokhoz van négy szervere. Ezeket a szervereket használják
-Kubernetes, valamint docker konténerek futtatására, és ezeken a
-szervereken keresztül érik el a tanszéki belső hálózatot is.
-
-Amikor átvettem a szerverek üzemeltetését, a négy gép úgynevezett
-[bare-metal](https://en.wikipedia.org/wiki/Bare-metal_server) 
-szerver volt, azaz a fizikai szerveren futott egy operációs rendszer
-és a felhasználók azt használták. A hosztokon Ubuntu 18.04 futott.
+Az önálló laboratóriumomat a TMIT-en a HSNLab-nál végeztem.
+Az Ericsson-BME 5G VKE kutatás-fejlesztési projekt keretén belül 
+kiépítésre került egy magán 5G hálózat, annak részeként 
+rendelkezésre áll négy alkalmazás szerver (\ref{vke}. ábra). 
+Ezeket a szervereket használják Kubernetes, valamint docker 
+konténerek futtatására, és ezeken a szervereken keresztül érik el 
+a tanszéki belső hálózatot is.
+
+A félév elején megismertem a szervereken futó feladatokat (demonstrációk), 
+valamint az elvárt működést. Közösen a projekt résztvevőivel megbeszéltük, 
+hogy fontos lenne egy rugalmasan, de az OpenStack rendszernél egyszerűbben 
+külön-külön VM-ekbe szervezni a demonstrációkat. Tehát a kiindulási állapotban 
+bare-metal szerverként használt négy nagyteljesítményű számítógép futtatott 
+több feladatot.
+
+![A VKE szerverek architektúrája\label{vke}](figs/vke.eps)
 
 ## Problémák a jelenlegi megoldással
 
@@ -49,9 +56,9 @@ hiszen mindenkinek a fizikai gépen kellett dolgoznia.
 problémákra, melyet egy hypervisorral (vagy hiperfelügyelővel) terveztem 
 megoldani.
 
-# Miért jó a virtualizáció a bare-metal szerver helyett?  
+# A virtualizáció előnyei a bare-metal szerverekkel szemben 
 
-## Mi is pontosan egy bare-metal szerver?  
+## A bare-metal szerverek
 
 A bare-metal szerver a fizikai szervert jelenti, melyet általában egy 
 kliens/felhasználó használ. Sokkal nagyobb számítási kapacitással 
@@ -61,7 +68,7 @@ diszkeket és a sávszélességet is. Előny még emellett, hogy teljes
 felügyeletünk lehet a fizikai gép felett, mind hardveresen, mind 
 szoftveresen.
 
-## Mi az a virtualizáció?  
+## A virtualizáció  
 
 A virtualizáció egy hoszting megoldás, ami több virtuális gép
 párhuzamos futtatását teszi lehetővé egy fizikai eszközön. Lehetőséget
@@ -77,7 +84,7 @@ Ha a virtualizációs megoldást választják, akkor a virtuális gépek
 kiosztását és menedzselését rábízzák egy úgynevezett hypervisorra
 (magyarul hiperfelügyelőre).
 
-# Mi az a hypervisor?  
+# A hypervisor
 
 A hypervisor a virtualizációt lehetővé tevő szoftverek kulcsfontosságú 
 része. A hypervisor feladata a virtuális gépek (vendéggépek) előkészítése
diff --git a/onlab.pdf b/onlab.pdf
index b73e0d0457b1d0b5f4a3e203a0525e6d722292d5..01d2448e768bcb3ea3883f462f65e6bdadf61530 100644
Binary files a/onlab.pdf and b/onlab.pdf differ
diff --git a/onlab.tex b/onlab.tex
deleted file mode 100644
index 7ea2ea03335c80d164b278e835ecca904b45da70..0000000000000000000000000000000000000000
--- a/onlab.tex
+++ /dev/null
@@ -1,479 +0,0 @@
-% Options for packages loaded elsewhere
-\PassOptionsToPackage{unicode}{hyperref}
-\PassOptionsToPackage{hyphens}{url}
-%
-\documentclass[
-]{article}
-\usepackage{amsmath,amssymb}
-\usepackage{lmodern}
-\usepackage{iftex}
-\ifPDFTeX
-  \usepackage[T1]{fontenc}
-  \usepackage[utf8]{inputenc}
-  \usepackage{textcomp} % provide euro and other symbols
-\else % if luatex or xetex
-  \usepackage{unicode-math}
-  \defaultfontfeatures{Scale=MatchLowercase}
-  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
-\fi
-% Use upquote if available, for straight quotes in verbatim environments
-\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
-\IfFileExists{microtype.sty}{% use microtype if available
-  \usepackage[]{microtype}
-  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
-}{}
-\makeatletter
-\@ifundefined{KOMAClassName}{% if non-KOMA class
-  \IfFileExists{parskip.sty}{%
-    \usepackage{parskip}
-  }{% else
-    \setlength{\parindent}{0pt}
-    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
-}{% if KOMA class
-  \KOMAoptions{parskip=half}}
-\makeatother
-\usepackage{xcolor}
-\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
-\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
-\hypersetup{
-  pdflang={hu-HU},
-  hidelinks,
-  pdfcreator={LaTeX via pandoc}}
-\urlstyle{same} % disable monospaced font for URLs
-\usepackage[margin=3cm]{geometry}
-\usepackage{graphicx}
-\makeatletter
-\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
-\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
-\makeatother
-% Scale images if necessary, so that they will not overflow the page
-% margins by default, and it is still possible to overwrite the defaults
-% using explicit options in \includegraphics[width, height, ...]{}
-\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
-% Set default figure placement to htbp
-\makeatletter
-\def\fps@figure{htbp}
-\makeatother
-\setlength{\emergencystretch}{3em} % prevent overfull lines
-\providecommand{\tightlist}{%
-  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
-\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
-\ifLuaTeX
-\usepackage[bidi=basic]{babel}
-\else
-\usepackage[bidi=default]{babel}
-\fi
-\babelprovide[main,import]{magyar}
-% get rid of language-specific shorthands (see #6817):
-\let\LanguageShortHands\languageshorthands
-\def\languageshorthands#1{}
-% magyar helyesírás ellenőrzéshez (ispell) és elválasztáshoz
-\selectlanguage{magyar}
-%=================================================================
-% direkt ékezetes karakter beírás támogatás
-%-------------------------------------------
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage{multirow} 
-\usepackage{float}
-
-%================================================================
-% ha ábrát akarunk beemelni, akkor használjuk a graphicx/graphics
-% csomagot és az \includegraphics[width=<width>]{abra.pdf} parancsot
-\usepackage{graphicx} %for graphics
-%kepek helye a gyokerhez(ehhez a file-hoz kepest) kepest
-\graphicspath{{./figs/}}
-\usepackage{fontspec, newunicodechar}
-% \setmainfont{Noto Sans}
-\newunicodechar{ű}{\H{u}}
-\newunicodechar{ő}{\H{o}}
-
-\ifLuaTeX
-  \usepackage{selnolig}  % disable illegal ligatures
-\fi
-
-\author{}
-\date{}
-
-\begin{document}
-
-\input{onlabmacros}
-\markright{Réthelyi Bálint (IZUM0B)} 
-\begin{titlepage}
-%bme logo 
- \begin{figure}[h]
-    \centering
-      \includegraphics[width=12cm]{bme_logo}
-  \label{fig:bme_logo}
-  \end{figure}
-  \thispagestyle{empty}
-  %cím generálás
-  \onlabcim
- 
-  %\szerzo argumentumok: #1=Név, #2=Neptunkód, #3=szakirány, #4=email,#5 konzulens-1, #6 konzulens-1-email, #7 konzulens-2, #8 konzulens-2-email
-  \onlabszerzo{Réthelyi Bálint}{IZUM0B}{Mérnökinformatikus szak}{rethelyibalint@gmail.com}{Dr. Simon Csaba}{simon@tmit.bme.hu}{Dr. Maliosz Markosz}{maliosz@tmit.bme.hu}
-  \feladatcim{Proxmox alapú virtualizációs klaszter kiépítése a HSNLabnál} 
-\end{titlepage}
-
-\hypertarget{bevezetuxe9s}{%
-\subsection{Bevezetés}\label{bevezetuxe9s}}
-
-Az önálló laboratóriumomat a TMIT-en a HSNLab-nál végeztem. A labornak a
-különböző kutatásokhoz van négy szervere. Ezeket a szervereket
-használják Kubernetes, valamint docker konténerek futtatására, és ezeken
-a szervereken keresztül érik el a tanszéki belső hálózatot is.
-
-Amikor átvettem a szerverek üzemeltetését, a négy gép úgynevezett
-\href{https://en.wikipedia.org/wiki/Bare-metal_server}{bare-metal}
-szerver volt, azaz a fizikai szerveren futott egy operációs rendszer és
-a felhasználók azt használták. A hosztokon Ubuntu 18.04 futott.
-
-\hypertarget{probluxe9muxe1k-a-jelenlegi-megolduxe1ssal}{%
-\subsubsection{Problémák a jelenlegi
-megoldással}\label{probluxe9muxe1k-a-jelenlegi-megolduxe1ssal}}
-
-Míg első elgondolásra a bare metal megoldás kényelmesnek hangzik
-üzemeletetési szempontból, erről kiderült, hogy azért bőven akad vele
-probléma.\\
-A laborban sokan dolgoznak, csak a BSc és MSc hallgatók száma meghaladja
-a százat. A laborban az volt a szokásjog, hogy mindenki a \texttt{root}
-felhasználóhoz kapott hozzáférést, ezzel a \texttt{docker} használatához
-szükséges jogosultságok kiosztására nem volt szükség.\\
-Ez a megoldás sajnos nehezebb auditálhatóságot okozott, hiszen minden
-felhasználó a \texttt{root} felhasználó nevében végezte a munkáját, így
-mindent a \texttt{root} felhasználó csinált.
-
-Minden felhasználónak különböző csomagverziók és azok függőségeire volt
-szüksége, ezért ezek karbantartása és kezelése is problémákat okozott,
-hiszen mindenkinek a fizikai gépen kellett dolgoznia.
-
-Összességében arra jutottam, hogy a virtualizáció lenne a megoldás
-ezekre a problémákra, melyet egy hypervisorral (vagy hiperfelügyelővel)
-terveztem megoldani.
-
-\hypertarget{miuxe9rt-juxf3-a-virtualizuxe1ciuxf3-a-bare-metal-szerver-helyett}{%
-\subsection{Miért jó a virtualizáció a bare-metal szerver
-helyett?}\label{miuxe9rt-juxf3-a-virtualizuxe1ciuxf3-a-bare-metal-szerver-helyett}}
-
-\hypertarget{mi-is-pontosan-egy-bare-metal-szerver}{%
-\subsubsection{Mi is pontosan egy bare-metal
-szerver?}\label{mi-is-pontosan-egy-bare-metal-szerver}}
-
-A bare-metal szerver a fizikai szervert jelenti, melyet általában egy
-kliens/felhasználó használ. Sokkal nagyobb számítási kapacitással
-rendelkezik, mint egy-egy virtuális gép, hiszen hozzáférünk a fizikai
-hoszt összes erőforrásához, beleértve a memóriát, a processzort, a
-diszkeket és a sávszélességet is. Előny még emellett, hogy teljes
-felügyeletünk lehet a fizikai gép felett, mind hardveresen, mind
-szoftveresen.
-
-\hypertarget{mi-az-a-virtualizuxe1ciuxf3}{%
-\subsubsection{Mi az a
-virtualizáció?}\label{mi-az-a-virtualizuxe1ciuxf3}}
-
-A virtualizáció egy hoszting megoldás, ami több virtuális gép párhuzamos
-futtatását teszi lehetővé egy fiziaki eszközön. Lehetőséget biztosít a
-fizikai gép erőforrásainak \emph{feldarabolására}, és ezek kiosztására a
-virtuális gépek között, így azok ugyanazon erőforrás részein,
-\emph{darabkáin} tudnak megosztozni.\\
-Virtuális gépek használata elősegíti a felhasználók könnyebb
-auditálhatóságát, valamint minden felhasználónak egyedi, elszeparált
-környezetet biztosít, amit a saját igényeinek megfelelően alakíthat.
-
-Ha a virtualizációs megoldást választják, akkor a virtuális gépek
-kiosztását és menedzselését rábízzák egy úgynevezett hypervisorra
-(magyarul hiperfelügyelőre).
-
-\hypertarget{mi-az-a-hypervisor}{%
-\subsection{Mi az a Hypervisor?}\label{mi-az-a-hypervisor}}
-
-A hypervisor a virtualizációt lehetővé tevő szoftverek kulcsfontosságú
-része. A hypervisor feladata a virtuális gépek (vendéggépek)
-előkészítése és a virtuális gépek által elért hardver funckiók elkapása,
-feldolgozása.
-
-A hypervisorok egy virtualizációs réteget hoznak létre az által, hogy
-felügyelik, hogy a virtuális gépeken futó folyamatok mely fizikai
-erőforrásokhoz férnek hozzá.
-
-A gépet, amelyre a hypervisort telepítjük, gazdagépnek nevezzük, szemben
-a rajtuk futó virtuális vendéggépekkel.
-
-A hypervisorok a fizikai beosztásán kívül biztosíthatnak emulált
-hardvereket (merevlemez, egér, képernyő, hálókártya, stb.), amelyek
-használatával a vendéggépek úgy viselkedhetnek, mintha fizikai hardveren
-futnának.
-
-A VM szempontjából nincs különbség a fizikai és a virtualizált környezet
-között. A vendéggépek nem tudják, hogy a hypervisor virtuális
-környezetben hozta létre őket. Sem azt, hogy megosztják a rendelkezésre
-álló számítási teljesítményt. A VM-ek változatlanul az őket működtető
-hardveren futnak, így teljes mértékben függnek annak stabil működésétől.
-
-A hypervisornak tradícionálisan két típusa van. Az első típust
-bare-metal hypervisornak is szokták hívni, míg a másodikat hosztolt
-hypervisornak.
-
-\hypertarget{elsux151-tuxedpusuxfa-hypervisor}{%
-\subsubsection{Első típusú
-hypervisor}\label{elsux151-tuxedpusuxfa-hypervisor}}
-
-A bare-metal hypervisor egy olyan szoftverréteg, amelyet közvetlenül a
-fizikai kiszolgáló és az alapul szolgáló hardver fölé telepítünk.
-
-Nincs közte szoftver vagy bármilyen operációs rendszer, innen a
-bare-metal hypervisor (magyarul csupasz metál) elnevezés. Az 1-es típusú
-hypervisor kiváló teljesítményt és stabilitást biztosít, mivel nem egy
-operációs rendszeren belül fut.
-
-Az 1-es típusú hiypervisor egy nagyon alapszintű operációs rendszer,
-amelyen virtuális gépeket lehet futtatni. A fizikai gép, amelyen a
-hypervisor fut, csak virtualizációs célokat szolgál. Másra nem
-használható.
-
-\hypertarget{muxe1sodik-tuxedpusuxfa-hypervisor}{%
-\subsubsection{Második típusú
-hypervisor}\label{muxe1sodik-tuxedpusuxfa-hypervisor}}
-
-Az ilyen típusú hypervisor egy fizikai gép operációs rendszerén belül
-fut.
-
-Ezért nevezzük a 2. típusú hypervisorokat hosztolt hypervisoroknak. Az
-1. típusú hypervisorokkal szemben, amelyek közvetlenül a hardveren
-futnak, a hosztolt hypervisorok alatt egy szoftverréteg található. Ebben
-az esetben a következőkkel rendelkezünk:
-
-\begin{itemize}
-\tightlist
-\item
-  Egy fizikai gép.
-\item
-  A hardverre telepített operációs rendszer (Windows, Linux, macOS).
-\item
-  Az operációs rendszeren belül egy 2. típusú hypervisor szoftver.
-\item
-  A vendég virtuális gépek tényleges példányai.
-\end{itemize}
-
-Ebben az esetben a fizikai hoszton is tudjuk kezelni, menedzselni a
-virtuális gépeinket.
-
-\hypertarget{a-modern-hypervisor}{%
-\subsubsection{A modern hypervisor}\label{a-modern-hypervisor}}
-
-Manapság rájöttek, hogy a bare-metal hypervisor jó tulajdonságai mellett
-kényelmes, ha az operációs rendszer teljes értékű. Ezért a gyártók
-beleépítették az operációs rendszerekbe a hypervisor modult, ezzel
-elérve, hogy legyen egy tradícionális operációs rendszerünk, annak
-minden pozitív tulajdonságával és kényelmi funkciójával, és a hypervisor
-is kernel szintű legyen, ne legyen még egy plusz réteg az operációs
-rendszer fölött.
-
-A teljesség igénye nélkül ilyen megoldások az alábbiak:
-
-\begin{itemize}
-\tightlist
-\item
-  VMware ESXi
-\item
-  Hyper-V
-\item
-  Linux + KVM
-\item
-  bhyve (FreeBSD)
-\item
-  Hypervisor framework (Apple macOS)
-\item
-  Proxmox
-\end{itemize}
-
-\hypertarget{modern-hypervisorok-kezeluxe9se}{%
-\subsubsection{Modern hypervisorok
-kezelése}\label{modern-hypervisorok-kezeluxe9se}}
-
-Ha elindítunk egy fizikai kiszolgálót, amelyen egy hypervisor van
-telepítve, egy parancssorszerű képernyő jelenik meg. Ha egy monitort
-csatlakoztatunk a szerverhez, akkor a hardver és a hálózat néhány
-részletét láthatjuk. Ez álltalában a CPU típusából, a memória
-mennyiségéből, az IP-címből és a MAC-címből áll.
-
-Álltalában ezek csak egyszerű szerverkonfigurációt tesznek lehetővé.
-
-Ez a dátum és az idő, az IP-cím, a jelszó stb. megváltoztatásából áll. A
-virtuális példányok létrehozásához egy másik gépen beállított
-kezelőkonzolra van szükség. A konzol segítségével csatlakozhatunk a
-szerveren lévő hypervisorhoz, és kezelhetjük a virtuális környezetet.
-
-A kezelési konzol lehet webalapú vagy különálló szoftvercsomag, amelyet
-telepíthetünk arra a gépre, amelynek távoli kezelését szeretnénk.
-
-Az egyik elvégezhető művelet a virtuális gépek fizikai kiszolgálók
-közötti manuális vagy automatikus áthelyezése. Ez a mozgatás a VM adott
-pillanatban fennálló erőforrásigényén alapul, és a végfelhasználókra
-gyakorolt hatás nélkül történik. Ugyanez a folyamat történik akkor is,
-ha egy hardverdarab vagy egy egész szerver meghibásodik. A megfelelően
-konfigurált kezelőszoftver a virtuális gépeket egy működő szerverre
-helyezi át, amint probléma merül fel. Az észlelési és helyreállítási
-eljárás automatikusan és zökkenőmentesen zajlik.
-
-A hypervisorok egyik legjobb tulajdonsága, hogy lehetővé teszik a
-fizikai erőforrások túlkiosztását.
-
-A hypervisorokkal több erőforrást rendelhetünk a virtuális gépekhez,
-mint amennyi rendelkezésre áll. Ha például a kiszolgálón 128 GB RAM van,
-és nyolc virtuális gépet használunk, mindegyikhez 24 GB RAM-ot
-rendelhetünk. Ez összesen 192 GB RAM-ot jelent, de maguk a VM-ek
-valójában nem fogják elfogyasztani a fizikai kiszolgáló mind a 24
-GB-ját. A VM-ek azt hiszik, hogy 24 GB-ot használhatnak, holott
-valójában csak annyi RAM-ot használnak, amennyi az egyes feladatok
-elvégzéséhez szükséges.
-
-A hypervisor csak annyi erőforrást rendel ki, amennyi szükséges ahhoz,
-hogy egy példány teljes mértékben működőképes legyen.
-
-\hypertarget{modern-hypervisorok-uxe1ttekintuxe9se}{%
-\subsection{Modern hypervisorok
-áttekintése}\label{modern-hypervisorok-uxe1ttekintuxe9se}}
-
-\hypertarget{vmware-esxi}{%
-\subsubsection{VMware ESXi}\label{vmware-esxi}}
-
-Az ESXi egy BSD alapú operációs rendszer, melynek magja a VMkernel, mely
-a FreeBSD kernelén alapszik és ebbe építették bele a hypervisort.
-
-Nagyvállalati környezetben a legtöbbször ezt a megoldást a vSphere-el
-együtt használják, mely lehetővé teszi több ESXi hoszt klaszterizálását.
-
-Korábbi munkáim során találkoztam már a megoldással, és a tanszéki
-környezethez feleslegesen bonyolultnak és túlságosan robosztusnak
-ítéltem meg, ezért elvetettem a használatát.
-
-\hypertarget{hyper-v}{%
-\subsubsection{Hyper-V}\label{hyper-v}}
-
-A Hyper-V a Microsoft hypervisor megoldása, mely mind a fogyasztói
-Windows, mind Windows Server operációs rendszereken elérhető.
-Természetesen az átlag felhasználók számára jóval kevesebb funkció
-érhető el, mint a szerveres környezetben.
-
-A Hyper-V a Microsoft által készített NT kernel része, így Windowson
-lehetővé teszi virtuális gépek futtatását.
-
-Ezzel a megoldással is találkoztam már korábban, és mivel a tanszéki
-környezetben inkább Linuxos környezetre van szükség, feleslegesen
-bonyolultnak éreztem egy Windowsos réteg bevonását az ökoszisztémába.
-
-\hypertarget{linux-plusz-vanilla-kvm}{%
-\subsubsection{Linux plusz vanilla KVM}\label{linux-plusz-vanilla-kvm}}
-
-A KVM, azaz Kernel-based Virtual Machine (kernel alapú virtuális gép)
-egy virtualizációs infrastruktúra a Linux rendszermagba integrálva. Egy
-Hypervisor váltja a Linux rendszermagot. A KVM natív virtualizációt
-támogat.
-
-Egy kényelmesen használható, nyílt forráskódú megoldás, mely egy
-betölthető kernelmodulból, a \texttt{kvm.ko}-ból, amely az alapvető
-virtualizációs infrastruktúrát biztosítja, és egy processzorspecifikus
-modulból, a \texttt{kvm-intel.ko} vagy \texttt{kvm-amd.ko} modulból áll.
-
-Ezen a megoldáson alapszik a Proxmox VE is, amelyet végül a tanszéki
-rendszerek hypervisorának választottam.
-
-\hypertarget{proxmox-ve}{%
-\subsubsection{Proxmox VE}\label{proxmox-ve}}
-
-A Proxmox VE egy teljes körű, nyílt forráskódú, Debian alapú
-szervermenedzsment platform virtualizációhoz. Szorosan integrálja a KVM
-hypervisort és a Linux Containers (LXC), a szoftveresen definiált
-tárolási és hálózati funkciókat egyetlen platformon. Az integrált
-webalapú felhasználói felülettel könnyedén kezelhetőek a VM-ek és
-konténerek, a klaszterek magas rendelkezésre állása vagy az integrált
-katasztrófa-helyreállítási eszközök (disaster recovery tools).
-
-\hypertarget{proxmox-ve-telepuxedtuxe9se}{%
-\subsection{Proxmox VE telepítése}\label{proxmox-ve-telepuxedtuxe9se}}
-
-\hypertarget{beuxe1lluxedtuxe1sok-kivuxe1lasztuxe1sa}{%
-\subsubsection{Beállítások
-kiválasztása}\label{beuxe1lluxedtuxe1sok-kivuxe1lasztuxe1sa}}
-
-\hypertarget{fuxe1jlrendszer-beuxe1lluxedtuxe1sa}{%
-\paragraph{Fájlrendszer
-beállítása}\label{fuxe1jlrendszer-beuxe1lluxedtuxe1sa}}
-
-Szerettem volna, ha szoftveres raid-et használna a szerver zfs-el, mivel
-a zfs fájl szinten kezeli az adatokat, így sokkal több lehetőség áll
-rendelkezésre az adatok védelme, sebességnövelés, stb. érdekében.
-Hardveres raid-el szemben a szoftveres raid nincsen hardverhez kötve,
-így meghibásodás esetén a merevlemezeket át lehet tenni egy másik gépbe,
-ahol szoftveresen ugyanúgy össze lehet rakni a raid-et, és le lehet
-menteni az adatokat, valamint így a vendor lock-in (gyártókhoz kötés) se
-áll fent. A szoftveres raid rendszeresen kap frissítéseket, így az
-idővel jobb, hatékonyabb lehet, valamint biztonsági hibákat is lehet
-rajtuk javítani, ellentétben egy hardveres raid vezérlővel.
-
-Ezen kívül a zfs támogat:
-
-\begin{itemize}
-\tightlist
-\item
-  cow (copy on write)-ot
-\item
-  transparens tömörítést
-\item
-  thin allocated virtuális diskek létrehozását
-\item
-  snapshotokat és azok hálózaton való átküldését
-\end{itemize}
-
-\begin{figure}
-\centering
-\includegraphics{pics/proxmox02.png}
-\caption{Fájlrendszer beállítása}
-\end{figure}
-
-\hypertarget{huxe1luxf3zat-beuxe1lluxedtuxe1sa}{%
-\paragraph{Hálózat beállítása}\label{huxe1luxf3zat-beuxe1lluxedtuxe1sa}}
-
-Először szeretném, hogy a hosztot el lehessen érni rögtön a tanszéki
-hálózatról, valamint legyen hozzáférése az internethez is, így a korábbi
-interfészét szeretnénk megtartani, valamint a korábbi
-interfészbeállításokat is.\\
-Azaz beállítom menedzsment interfésznek a korábbi interfészt (ez jelen
-esetben az \texttt{ens18} interfész). Hosztnévnek a
-\texttt{vke2.hsnlab}-ot veszem fel (ez beírásra kerül a
-\texttt{/etc/hosts} fájlba, valamint ez alapján lesz beállítva a hoszt
-hosztneve). IP címnek beállítom a korábban használt címet:
-\texttt{10.6.6.7/24} és átjárónak szintén a korábbi átjárót:
-\texttt{10.6.6.1}.
-
-\includegraphics{pics/proxmox05.png}~
-
-\hypertarget{a-hardveres-raid-vezuxe9rlux151-uxe1tuxe1lluxedtuxe1sa-hba-muxf3dba}{%
-\subsubsection{A hardveres RAID vezérlő átállítása HBA
-módba}\label{a-hardveres-raid-vezuxe9rlux151-uxe1tuxe1lluxedtuxe1sa-hba-muxf3dba}}
-
-Mivel korábban úgy döntöttem, hogy a Proxmoxon szoftveres raid-et fogok
-használni, ezért át kellett kapcsoljam a hardveres RAID vezérlőt HBA
-módba.
-
-\hypertarget{sas-vezuxe9rlux151k-muxf3djai}{%
-\paragraph{SAS vezérlők módjai}\label{sas-vezuxe9rlux151k-muxf3djai}}
-
-A szerverekben több merevlemez vagy SSD együttes használatához
-úgynevezett SAS vezérlőt alkalmaznak (Serial Attached SCSI), mely
-segítségével sorosan lehet a merevlemezeket csatlakoztatni.
-
-Ezeknek a SAS vezérlőknek általában két módja van, a RAID mód és a HBA
-mód.
-
-RAID módban, azaz Redundant Array of Independent Disks (magyarul:
-független lemezek redundáns tömbje), az operációs rendszer nem fogja
-látni a független lemezeket, hanem egy virtuális tömbként, eszközként
-fogja azt kezelni.
-
-HBA módban (Host Bus Adapter) a vezérlő átadja a lemezeket az operációs
-rendszernek, azaz az operációs rendszer látni fogja az összes független
-lemezt.
-
-\end{document}
diff --git a/vke.puml b/vke.puml
new file mode 100644
index 0000000000000000000000000000000000000000..21e5b9a8215db87c6fdfca3f05dfed5b39523f70
--- /dev/null
+++ b/vke.puml
@@ -0,0 +1,67 @@
+@startuml
+
+skinparam linetype ortho
+skinparam defaultFontName "Minion Pro"
+
+'skinparam nodesep 10
+skinparam linesep 10
+'skinparam ranksep 50
+
+
+node vke2 [
+== vke2 (Proxmox)
+{{
+  node vm21 as "vm1"
+  node vm22 as "vm2"
+  node vm23 as "vm3"
+  node vm24 as "vm4"
+}}
+]
+
+node vke3 [
+== vke3 (Ubuntu)
+{{
+  card cnt31 as "cnt1"
+  card cnt32 as "cnt2"
+  card cnt33 as "cnt3"
+  card cnt34 as "cnt4"
+}}
+]
+
+node vke1 [
+== vke1 (Ubuntu)
+{{
+  card cnt11 as "cnt1"
+  card cnt12 as "cnt2"
+  card cnt13 as "cnt3"
+  card cnt14 as "cnt4"
+}}
+]
+
+node vke4 [
+== vke4 (Ubuntu)
+{{
+  card cnt41 as "cnt1"
+  card cnt42 as "cnt2"
+  card cnt43 as "cnt3"
+  card cnt44 as "cnt4"
+}}
+]
+
+
+agent switch as "MikroTik router"
+
+vke2 -up--- switch: mgmt
+vke2 -up--- switch: data
+vke3 -up--- switch: mgmt
+vke3 -up--- switch: data
+vke1 -up--- switch: mgmt
+vke1 -up--- switch: data
+vke4 -up--- switch: mgmt
+vke4 -up--- switch: data
+
+vke1 --[hidden]right-> vke2
+vke2 --[hidden]right-> vke3
+vke3 --[hidden]right-> vke4
+
+@enduml
\ No newline at end of file