-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
1470 lines (1444 loc) · 168 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3Ctext%20y=%22.9em%22%20font-size=%2290%22%3E🌐%3C/text%3E%3C/svg%3E" type="image/x-icon">
<style>
[data-color-mode*='light'], [data-color-mode*='light'] body, .markdown-style[theme*='light'] { --color-prettylights-syntax-comment: #6e7781; --color-prettylights-syntax-constant: #0550ae; --color-prettylights-syntax-entity: #8250df; --color-prettylights-syntax-storage-modifier-import: #24292f; --color-prettylights-syntax-entity-tag: #116329; --color-prettylights-syntax-keyword: #cf222e; --color-prettylights-syntax-string: #0a3069; --color-prettylights-syntax-variable: #953800; --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; --color-prettylights-syntax-invalid-illegal-bg: #82071e; --color-prettylights-syntax-carriage-return-text: #f6f8fa; --color-prettylights-syntax-carriage-return-bg: #cf222e; --color-prettylights-syntax-string-regexp: #116329; --color-prettylights-syntax-markup-list: #3b2300; --color-prettylights-syntax-markup-heading: #0550ae; --color-prettylights-syntax-markup-italic: #24292f; --color-prettylights-syntax-markup-bold: #24292f; --color-prettylights-syntax-markup-deleted-text: #82071e; --color-prettylights-syntax-markup-deleted-bg: #FFEBE9; --color-prettylights-syntax-markup-inserted-text: #116329; --color-prettylights-syntax-markup-inserted-bg: #dafbe1; --color-prettylights-syntax-markup-changed-text: #953800; --color-prettylights-syntax-markup-changed-bg: #ffd8b5; --color-prettylights-syntax-markup-ignored-text: #eaeef2; --color-prettylights-syntax-markup-ignored-bg: #0550ae; --color-prettylights-syntax-meta-diff-range: #8250df; --color-prettylights-syntax-brackethighlighter-angle: #57606a; --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; --color-prettylights-syntax-constant-other-reference-link: #0a3069; --color-fg-default: #24292f; --color-fg-muted: #57606a; --color-fg-subtle: #6e7781; --color-canvas-default: #ffffff; --color-canvas-subtle: #f6f8fa; --color-border-default: #d0d7de; --color-border-muted: hsla(210,18%,87%,1); --color-neutral-muted: rgba(175,184,193,0.2); --color-accent-fg: #0969da; --color-accent-emphasis: #0969da; --color-attention-subtle: #fff8c5; --color-danger-fg: #cf222e; }
[data-color-mode*='dark'], [data-color-mode*='dark'] body, .markdown-style[theme*='dark'] { --color-prettylights-syntax-comment: #8b949e; --color-prettylights-syntax-constant: #79c0ff; --color-prettylights-syntax-entity: #d2a8ff; --color-prettylights-syntax-storage-modifier-import: #c9d1d9; --color-prettylights-syntax-entity-tag: #7ee787; --color-prettylights-syntax-keyword: #ff7b72; --color-prettylights-syntax-string: #a5d6ff; --color-prettylights-syntax-variable: #ffa657; --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; --color-prettylights-syntax-invalid-illegal-bg: #8e1519; --color-prettylights-syntax-carriage-return-text: #f0f6fc; --color-prettylights-syntax-carriage-return-bg: #b62324; --color-prettylights-syntax-string-regexp: #7ee787; --color-prettylights-syntax-markup-list: #f2cc60; --color-prettylights-syntax-markup-heading: #1f6feb; --color-prettylights-syntax-markup-italic: #c9d1d9; --color-prettylights-syntax-markup-bold: #c9d1d9; --color-prettylights-syntax-markup-deleted-text: #ffdcd7; --color-prettylights-syntax-markup-deleted-bg: #67060c; --color-prettylights-syntax-markup-inserted-text: #aff5b4; --color-prettylights-syntax-markup-inserted-bg: #033a16; --color-prettylights-syntax-markup-changed-text: #ffdfb6; --color-prettylights-syntax-markup-changed-bg: #5a1e02; --color-prettylights-syntax-markup-ignored-text: #c9d1d9; --color-prettylights-syntax-markup-ignored-bg: #1158c7; --color-prettylights-syntax-meta-diff-range: #d2a8ff; --color-prettylights-syntax-brackethighlighter-angle: #8b949e; --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; --color-fg-default: #c9d1d9; --color-fg-muted: #8b949e; --color-fg-subtle: #484f58; --color-canvas-default: #0d1117; --color-canvas-subtle: #161b22; --color-border-default: #30363d; --color-border-muted: #21262d; --color-neutral-muted: rgba(110,118,129,0.4); --color-accent-fg: #58a6ff; --color-accent-emphasis: #1f6feb; --color-attention-subtle: rgba(187,128,9,0.15); --color-danger-fg: #f85149; }
.markdown-style { display: block; -webkit-text-size-adjust: 100%; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; font-size: 16px; line-height: 1.5; word-wrap: break-word; color: var(--color-fg-default); background-color: var(--color-canvas-default); } .markdown-style details, .markdown-style figcaption, .markdown-style figure { display: block; } .markdown-style summary { display: list-item; } .markdown-style [hidden] { display: none !important; } .markdown-style a { background-color: transparent; color: var(--color-accent-fg); text-decoration: none; } .markdown-style a:active, .markdown-style a:hover { outline-width: 0; } .markdown-style abbr[title] { border-bottom: none; text-decoration: underline dotted; } .markdown-style b, .markdown-style strong { font-weight: 600; } .markdown-style dfn { font-style: italic; } .markdown-style h1 { margin: .67em 0; font-weight: 600; padding-bottom: .3em; font-size: 2em; border-bottom: 1px solid var(--color-border-muted); } .markdown-style mark { background-color: var(--color-attention-subtle); color: var(--color-text-primary); } .markdown-style small { font-size: 90%; } .markdown-style sub, .markdown-style sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } .markdown-style sub { bottom: -0.25em; } .markdown-style sup { top: -0.5em; } .markdown-style img { border-style: none; max-width: 100%; box-sizing: content-box; background-color: var(--color-canvas-default); } .markdown-style code, .markdown-style kbd, .markdown-style pre, .markdown-style samp { font-family: monospace,monospace; font-size: 1em; } .markdown-style figure { margin: 1em 40px; } .markdown-style hr { box-sizing: content-box; overflow: hidden; background: transparent; border-bottom: 1px solid var(--color-border-muted); height: .25em; padding: 0; margin: 24px 0; background-color: var(--color-border-default); border: 0; } .markdown-style input { font: inherit; margin: 0; overflow: visible; font-family: inherit; font-size: inherit; line-height: inherit; } .markdown-style [type=button], .markdown-style [type=reset], .markdown-style [type=submit] { -webkit-appearance: button; } .markdown-style [type=button]::-moz-focus-inner, .markdown-style [type=reset]::-moz-focus-inner, .markdown-style [type=submit]::-moz-focus-inner { border-style: none; padding: 0; } .markdown-style [type=button]:-moz-focusring, .markdown-style [type=reset]:-moz-focusring, .markdown-style [type=submit]:-moz-focusring { outline: 1px dotted ButtonText; } .markdown-style [type=checkbox], .markdown-style [type=radio] { box-sizing: border-box; padding: 0; } .markdown-style [type=number]::-webkit-inner-spin-button, .markdown-style [type=number]::-webkit-outer-spin-button { height: auto; } .markdown-style [type=search] { -webkit-appearance: textfield; outline-offset: -2px; } .markdown-style [type=search]::-webkit-search-cancel-button, .markdown-style [type=search]::-webkit-search-decoration { -webkit-appearance: none; } .markdown-style ::-webkit-input-placeholder { color: inherit; opacity: .54; } .markdown-style ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; } .markdown-style a:hover { text-decoration: underline; } .markdown-style hr::before { display: table; content: ""; } .markdown-style hr::after { display: table; clear: both; content: ""; } .markdown-style table { border-spacing: 0; border-collapse: collapse; display: block; width: max-content; max-width: 100%; overflow: auto; } .markdown-style td, .markdown-style th { padding: 0; } .markdown-style details summary { cursor: pointer; } .markdown-style details:not([open])>*:not(summary) { display: none !important; } .markdown-style kbd { display: inline-block; padding: 3px 5px; font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; line-height: 10px; color: var(--color-fg-default); vertical-align: middle; background-color: var(--color-canvas-subtle); border: solid 1px var(--color-neutral-muted); border-bottom-color: var(--color-neutral-muted); border-radius: 6px; box-shadow: inset 0 -1px 0 var(--color-neutral-muted); } .markdown-style h1, .markdown-style h2, .markdown-style h3, .markdown-style h4, .markdown-style h5, .markdown-style h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } .markdown-style h2 { font-weight: 600; padding-bottom: .3em; font-size: 1.5em; border-bottom: 1px solid var(--color-border-muted); } .markdown-style h3 { font-weight: 600; font-size: 1.25em; } .markdown-style h4 { font-weight: 600; font-size: 1em; } .markdown-style h5 { font-weight: 600; font-size: .875em; } .markdown-style h6 { font-weight: 600; font-size: .85em; color: var(--color-fg-muted); } .markdown-style p { margin-top: 0; margin-bottom: 10px; } .markdown-style blockquote { margin: 0; padding: 0 1em; color: var(--color-fg-muted); border-left: .25em solid var(--color-border-default); } .markdown-style ul, .markdown-style ol { margin-top: 0; margin-bottom: 0; padding-left: 2em; } .markdown-style ol ol, .markdown-style ul ol { list-style-type: lower-roman; } .markdown-style ul ul ol, .markdown-style ul ol ol, .markdown-style ol ul ol, .markdown-style ol ol ol { list-style-type: lower-alpha; } .markdown-style dd { margin-left: 0; } .markdown-style tt, .markdown-style code { font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; font-size: 12px; } .markdown-style pre { margin-top: 0; margin-bottom: 0; font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; font-size: 12px; word-wrap: normal; } .markdown-style .octicon { display: inline-block; overflow: visible !important; vertical-align: text-bottom; fill: currentColor; } .markdown-style ::placeholder { color: var(--color-fg-subtle); opacity: 1; } .markdown-style input::-webkit-outer-spin-button, .markdown-style input::-webkit-inner-spin-button { margin: 0; -webkit-appearance: none; appearance: none; }
.markdown-style .token.comment, .markdown-style .token.prolog, .markdown-style .token.doctype, .markdown-style .token.cdata { color: var(--color-prettylights-syntax-comment); } .markdown-style .token.namespace { opacity: 0.7; } .markdown-style .token.tag, .markdown-style .token.selector, .markdown-style .token.constant, .markdown-style .token.symbol, .markdown-style .token.deleted { color: var(--color-prettylights-syntax-entity-tag); } .markdown-style .token.maybe-class-name { color: var(--color-prettylights-syntax-variable); } .markdown-style .token.property-access, .markdown-style .token.operator, .markdown-style .token.boolean, .markdown-style .token.number, .markdown-style .token.selector .markdown-style .token.class, .markdown-style .token.attr-name, .markdown-style .token.string, .markdown-style .token.char, .markdown-style .token.builtin { color: var(--color-prettylights-syntax-constant); } .markdown-style .token.deleted { color: var(--color-prettylights-syntax-markup-deleted-text); } .markdown-style .token.property { color: var(--color-prettylights-syntax-constant); } .markdown-style .token.punctuation { color: var(--color-prettylights-syntax-markup-bold); } .markdown-style .token.function { color: var(--color-prettylights-syntax-entity); } .markdown-style .code-line .token.deleted { background-color: var(--color-prettylights-syntax-markup-deleted-bg); } .markdown-style .token.inserted { color: var(--color-prettylights-syntax-markup-inserted-text); } .markdown-style .code-line .token.inserted { background-color: var(--color-prettylights-syntax-markup-inserted-bg); } .markdown-style .token.variable { color: var(--color-prettylights-syntax-constant); } .markdown-style .token.entity, .markdown-style .token.url, .language-css .markdown-style .token.string, .style .markdown-style .token.string { color: var(--color-prettylights-syntax-string); } .markdown-style .token.color, .markdown-style .token.atrule, .markdown-style .token.attr-value, .markdown-style .token.function, .markdown-style .token.class-name { color: var(--color-prettylights-syntax-string); } .markdown-style .token.rule, .markdown-style .token.regex, .markdown-style .token.important, .markdown-style .token.keyword { color: var(--color-prettylights-syntax-keyword); } .markdown-style .token.coord { color: var(--color-prettylights-syntax-meta-diff-range); } .markdown-style .token.important, .markdown-style .token.bold { font-weight: bold; } .markdown-style .token.italic { font-style: italic; } .markdown-style .token.entity { cursor: help; }
.markdown-style [data-catalyst] { display: block; } .markdown-style g-emoji { font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; font-size: 1em; font-style: normal !important; font-weight: 400; line-height: 1; vertical-align: -0.075em; } .markdown-style g-emoji img { width: 1em; height: 1em; } .markdown-style::before { display: table; content: ""; } .markdown-style::after { display: table; clear: both; content: ""; } .markdown-style>*:first-child { margin-top: 0 !important; } .markdown-style>*:last-child { margin-bottom: 0 !important; } .markdown-style a:not([href]) { color: inherit; text-decoration: none; } .markdown-style .absent { color: var(--color-danger-fg); } .markdown-style a.anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1; } .markdown-style a.anchor:focus { outline: none; } .markdown-style p, .markdown-style blockquote, .markdown-style ul, .markdown-style ol, .markdown-style dl, .markdown-style table, .markdown-style pre, .markdown-style details { margin-top: 0; margin-bottom: 16px; } .markdown-style blockquote>:first-child { margin-top: 0; } .markdown-style blockquote>:last-child { margin-bottom: 0; } .markdown-style sup>a::before { content: "["; } .markdown-style sup>a::after { content: "]"; }
.markdown-style .octicon-video { border: 1px solid #d0d7de !important; border-radius: 6px !important; display: block; } .markdown-style .octicon-video summary { border-bottom: 1px solid #d0d7de !important; padding: 8px 16px !important; cursor: pointer; } .markdown-style .octicon-video > video { display: block !important; max-width: 100% !important; padding: 2px; box-sizing: border-box; border-bottom-right-radius: 6px !important; border-bottom-left-radius: 6px !important; } .markdown-style details.octicon-video:not([open])>*:not(summary) { display: none !important; } .markdown-style details.octicon-video:not([open]) > summary { border-bottom: 0 !important; } .markdown-style h1 .octicon-link, .markdown-style h2 .octicon-link, .markdown-style h3 .octicon-link, .markdown-style h4 .octicon-link, .markdown-style h5 .octicon-link, .markdown-style h6 .octicon-link { color: var(--color-fg-default); vertical-align: middle; visibility: hidden; } .markdown-style h1:hover .anchor, .markdown-style h2:hover .anchor, .markdown-style h3:hover .anchor, .markdown-style h4:hover .anchor, .markdown-style h5:hover .anchor, .markdown-style h6:hover .anchor { text-decoration: none; } .markdown-style h1:hover .anchor .octicon-link, .markdown-style h2:hover .anchor .octicon-link, .markdown-style h3:hover .anchor .octicon-link, .markdown-style h4:hover .anchor .octicon-link, .markdown-style h5:hover .anchor .octicon-link, .markdown-style h6:hover .anchor .octicon-link { visibility: visible; } .markdown-style h1 tt, .markdown-style h1 code, .markdown-style h2 tt, .markdown-style h2 code, .markdown-style h3 tt, .markdown-style h3 code, .markdown-style h4 tt, .markdown-style h4 code, .markdown-style h5 tt, .markdown-style h5 code, .markdown-style h6 tt, .markdown-style h6 code { padding: 0 .2em; font-size: inherit; } .markdown-style ul.no-list, .markdown-style ol.no-list { padding: 0; list-style-type: none; } .markdown-style ol[type="1"] { list-style-type: decimal; } .markdown-style ol[type=a] { list-style-type: lower-alpha; } .markdown-style ol[type=i] { list-style-type: lower-roman; } .markdown-style div>ol:not([type]) { list-style-type: decimal; } .markdown-style ul ul, .markdown-style ul ol, .markdown-style ol ol, .markdown-style ol ul { margin-top: 0; margin-bottom: 0; } .markdown-style li>p { margin-top: 16px; } .markdown-style li+li { margin-top: .25em; } .markdown-style dl { padding: 0; } .markdown-style dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600; } .markdown-style dl dd { padding: 0 16px; margin-bottom: 16px; } .markdown-style table th { font-weight: 600; } .markdown-style table th, .markdown-style table td { padding: 6px 13px; border: 1px solid var(--color-border-default); } .markdown-style table tr { background-color: var(--color-canvas-default); border-top: 1px solid var(--color-border-muted); } .markdown-style table tr:nth-child(2n) { background-color: var(--color-canvas-subtle); } .markdown-style table img { background-color: transparent; vertical-align: middle; } .markdown-style img[align=right] { padding-left: 20px; } .markdown-style img[align=left] { padding-right: 20px; } .markdown-style .emoji { max-width: none; vertical-align: text-top; background-color: transparent; } .markdown-style span.frame { display: block; overflow: hidden; } .markdown-style span.frame>span { display: block; float: left; width: auto; padding: 7px; margin: 13px 0 0; overflow: hidden; border: 1px solid var(--color-border-default); } .markdown-style span.frame span img { display: block; float: left; } .markdown-style span.frame span span { display: block; padding: 5px 0 0; clear: both; color: var(--color-fg-default); } .markdown-style span.align-center { display: block; overflow: hidden; clear: both; } .markdown-style span.align-center>span { display: block; margin: 13px auto 0; overflow: hidden; text-align: center; } .markdown-style span.align-center span img { margin: 0 auto; text-align: center; } .markdown-style span.align-right { display: block; overflow: hidden; clear: both; } .markdown-style span.align-right>span { display: block; margin: 13px 0 0; overflow: hidden; text-align: right; } .markdown-style span.align-right span img { margin: 0; text-align: right; } .markdown-style span.float-left { display: block; float: left; margin-right: 13px; overflow: hidden; } .markdown-style span.float-left span { margin: 13px 0 0; } .markdown-style span.float-right { display: block; float: right; margin-left: 13px; overflow: hidden; } .markdown-style span.float-right>span { display: block; margin: 13px auto 0; overflow: hidden; text-align: right; } .markdown-style code, .markdown-style tt { padding: .2em .4em; margin: 0; font-size: 85%; background-color: var(--color-neutral-muted); border-radius: 6px; } .markdown-style code br, .markdown-style tt br { display: none; } .markdown-style del code { text-decoration: inherit; } .markdown-style pre code { font-size: 100%; } .markdown-style pre>code { padding: 0; margin: 0; word-break: normal; white-space: pre; background: transparent; border: 0; } .markdown-style pre { position: relative; font-size: 85%; line-height: 1.45; background-color: var(--color-canvas-subtle); border-radius: 6px; } .markdown-style pre code, .markdown-style pre tt { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; } .markdown-style pre > code { padding: 16px; overflow: auto; display: block; } .markdown-style .csv-data td, .markdown-style .csv-data th { padding: 5px; overflow: hidden; font-size: 12px; line-height: 1; text-align: left; white-space: nowrap; } .markdown-style .csv-data .blob-num { padding: 10px 8px 9px; text-align: right; background: var(--color-canvas-default); border: 0; } .markdown-style .csv-data tr { border-top: 0; } .markdown-style .csv-data th { font-weight: 600; background: var(--color-canvas-subtle); border-top: 0; } .markdown-style .footnotes { font-size: 12px; color: var(--color-fg-muted); border-top: 1px solid var(--color-border-default); } .markdown-style .footnotes ol { padding-left: 16px; } .markdown-style .footnotes li { position: relative; } .markdown-style .footnotes li:target::before { position: absolute; top: -8px; right: -8px; bottom: -8px; left: -24px; pointer-events: none; content: ""; border: 2px solid var(--color-accent-emphasis); border-radius: 6px; } .markdown-style .footnotes li:target { color: var(--color-fg-default); } .markdown-style .footnotes .data-footnote-backref g-emoji { font-family: monospace; } .markdown-style .task-list-item { list-style-type: none; } .markdown-style .task-list-item label { font-weight: 400; } .markdown-style .task-list-item.enabled label { cursor: pointer; } .markdown-style .task-list-item+.task-list-item { margin-top: 3px; } .markdown-style .task-list-item .handle { display: none; } .markdown-style .task-list-item-checkbox, .markdown-style input[type="checkbox"] { margin: 0 .2em .25em -1.6em; vertical-align: middle; } .markdown-style .contains-task-list:dir(rtl) .task-list-item-checkbox, .markdown-style .contains-task-list:dir(rtl) input[type="checkbox"] { margin: 0 -1.6em .25em .2em; } .markdown-style ::-webkit-calendar-picker-indicator { filter: invert(50%); }
/** copy button style **/
.markdown-style pre .copied {
display: flex;
position: absolute;
cursor: pointer;
color: #a5afbb;
top: 6px;
right: 6px;
border-radius: 5px;
background: #82828226;
padding: 6px;
font-size: 12px;
transition: all .3s;
}
.markdown-style pre .copied:not(.active) { visibility: hidden; }
.markdown-style pre:hover .copied { visibility: visible; }
.markdown-style pre:hover .copied:hover { background: #4caf50; color: #fff; }
.markdown-style pre:hover .copied:active,
.markdown-style pre .copied.active { background: #2e9b33; color: #fff; }
.markdown-style pre .copied svg { position: relative; }
.markdown-style pre .copied .octicon-copy { display: block; }
.markdown-style pre .copied .octicon-check { display: none; }
.markdown-style pre .active .octicon-copy { display: none; }
.markdown-style pre .active .octicon-check { display: block; }
/** octicon style **/
.markdown-style h1:hover a.anchor .octicon-link:before,
.markdown-style h2:hover a.anchor .octicon-link:before,
.markdown-style h3:hover a.anchor .octicon-link:before,
.markdown-style h4:hover a.anchor .octicon-link:before,
.markdown-style h5:hover a.anchor .octicon-link:before,
.markdown-style h6:hover a.anchor .octicon-link:before {
width: 16px;
height: 16px;
content: ' ';
display: inline-block;
background-color: currentColor;
-webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");
mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");
}
.markdown-style ::-webkit-scrollbar {
background: transparent;
width: 8px;
height: 8px;
}
.markdown-style ::-webkit-scrollbar-thumb {
background: var(--color-fg-muted);
border-radius: 10px;
}
</style>
<style>
a:hover .octo-arm { animation: octocat-wave 560ms ease-in-out; }
svg { z-index: 99; position: fixed; border: 0px; top: 0px; right: 0; }
@media (max-width:500px) {
a:hover .octo-arm { animation: none; }
.octo-arm { animation: octocat-wave 560ms ease-in-out; }
}
@keyframes octocat-wave {
0%, 100% { transform: rotate(0); }
20%, 60% { transform: rotate(-25deg); }
40%, 80% { transform: rotate(10deg); }
}
</style>
</head>
<body><svg width="80" height="80" viewBox="0 0 250 250"><a xlink:href="https://github.com/marcossilvestrini/learning-lpic-3-305-300" target="_blank" rel="nofollow sponsored" style="fill: rgb(21, 21, 19); color: rgb(255, 255, 255);"><g><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" class="octo-arm" style="transform-origin: 130px 106px;"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></g></a></svg><dark-mode style="position: fixed; top: 8px; left: 10px; z-index: 999;" dark="Dark" light="Light" permanent="true"></dark-mode><script>const t=document;const e="_dark_mode_theme_";const s="permanent";const o="colorschemechange";const i="permanentcolorscheme";const h="light";const r="dark";const n=(t,e,s=e)=>{Object.defineProperty(t,s,{enumerable:true,get(){const t=this.getAttribute(e);return t===null?"":t},set(t){this.setAttribute(e,t)}})};const c=(t,e,s=e)=>{Object.defineProperty(t,s,{enumerable:true,get(){return this.hasAttribute(e)},set(t){if(t){this.setAttribute(e,"")}else{this.removeAttribute(e)}}})};class a extends HTMLElement{static get observedAttributes(){return["mode",h,r,s]}LOCAL_NANE=e;constructor(){super();this.t()}connectedCallback(){n(this,"mode");n(this,r);n(this,h);c(this,s);const a=localStorage.getItem(e);if(a&&[h,r].includes(a)){this.mode=a;this.permanent=true}if(this.permanent&&!a){localStorage.setItem(e,this.mode)}const l=[h,r].includes(a);if(this.permanent&&a){this.o()}else{if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches){this.mode=r;this.o()}if(window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches){this.mode=h;this.o()}}if(!this.permanent&&!l){window.matchMedia("(prefers-color-scheme: light)").onchange=t=>{this.mode=t.matches?h:r;this.o()};window.matchMedia("(prefers-color-scheme: dark)").onchange=t=>{this.mode=t.matches?r:h;this.o()}}const d=new MutationObserver(((s,h)=>{this.mode=t.documentElement.dataset.colorMode;if(this.permanent&&l){localStorage.setItem(e,this.mode);this.i(i,{permanent:this.permanent})}this.h();this.i(o,{colorScheme:this.mode})}));d.observe(t.documentElement,{attributes:true});this.i(o,{colorScheme:this.mode});this.h()}attributeChangedCallback(t,s,o){if(t==="mode"&&s!==o&&[h,r].includes(o)){const t=localStorage.getItem(e);if(this.mode===t){this.mode=o;this.h();this.o()}else if(this.mode&&this.mode!==t){this.h();this.o()}}else if((t===h||t===r)&&s!==o){this.h()}if(t==="permanent"&&typeof this.permanent==="boolean"){this.permanent?localStorage.setItem(e,this.mode):localStorage.removeItem(e)}}o(){t.documentElement.setAttribute("data-color-mode",this.mode)}h(){this.icon.textContent=this.mode===h?"🌒":"🌞";this.text.textContent=this.mode===h?this.getAttribute(r):this.getAttribute(h);if(!this.text.textContent&&this.text.parentElement&&this.text){this.text.parentElement.removeChild(this.text)}}t(){var s=this.attachShadow({mode:"open"});this.label=t.createElement("span");this.label.setAttribute("class","wrapper");this.label.onclick=()=>{this.mode=this.mode===h?r:h;if(this.permanent){localStorage.setItem(e,this.mode)}this.o();this.h()};s.appendChild(this.label);this.icon=t.createElement("span");this.icon.part="icon";this.label.appendChild(this.icon);this.text=t.createElement("span");this.text.part="text";this.label.appendChild(this.text);const o=`
[data-color-mode*='dark'], [data-color-mode*='dark'] body {
color-scheme: dark;
--color-theme-bg: #0d1117;
--color-theme-text: #c9d1d9;
background-color: var(--color-theme-bg);
color: var(--color-theme-text);
}
[data-color-mode*='light'], [data-color-mode*='light'] body {
color-scheme: light;
--color-theme-bg: #fff;
--color-theme-text: #24292f;
background-color: var(--color-theme-bg);
color: var(--color-theme-text);
}`;const i="_dark_mode_style_";const n=t.getElementById(i);if(!n){var c=t.createElement("style");c.id=i;c.textContent=o;t.head.appendChild(c)}var a=t.createElement("style");a.textContent=`
.wrapper { cursor: pointer; user-select: none; position: relative; }
.wrapper > span + span { margin-left: .4rem; }
`;s.appendChild(a)}i(t,e){this.dispatchEvent(new CustomEvent(t,{bubbles:true,composed:true,detail:e}))}}customElements.define("dark-mode",a);</script><div style="max-width: 960px; margin: 0 auto 60px auto; padding: 8px;" class="markdown-style">
<h1 id=""><a class="anchor" name="readme-top"><span class="octicon octicon-link"></span></a></h1>
<p>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/release.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/release.yml/badge.svg" alt="Create Release"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/translate.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/translate.yml/badge.svg" alt="Translate README"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/jekyll-gh-pages.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/jekyll-gh-pages.yml/badge.svg" alt="Deploy GitHub Pages"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/generate-html.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/generate-html.yml/badge.svg" alt="Generate HTML and PDF"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/powershell.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/powershell.yml/badge.svg" alt="PSScriptAnalyzer"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/slack.yml"><img src="https://github.com/marcossilvestrini/learning-lpic-3-305-300/actions/workflows/slack.yml/badge.svg" alt="Slack Notification"></a>
</p>
<hr>
<p>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/blob/master/LICENSE"><img src="https://img.shields.io/github/license/marcossilvestrini/learning-lpic-3-305-300.svg?style=for-the-badge" alt="MIT License"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/network/members"><img src="https://img.shields.io/github/forks/marcossilvestrini/learning-lpic-3-305-300.svg?style=for-the-badge" alt="Forks"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/stargazers"><img src="https://img.shields.io/github/stars/marcossilvestrini/learning-lpic-3-305-300.svg?style=for-the-badge" alt="Stargazers"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/graphs/contributors"><img src="https://img.shields.io/github/contributors/marcossilvestrini/learning-lpic-3-305-300.svg?style=for-the-badge" alt="Contributors"></a>
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/issues"><img src="https://img.shields.io/github/issues/marcossilvestrini/learning-lpic-3-305-300.svg?style=for-the-badge" alt="Issues"></a>
<a href="https://linkedin.com/in/marcossilvestrini"><img src="https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555" alt="LinkedIn"></a>
</p>
<hr>
<h1 id="learning-lpic-3-305-300"><a class="anchor" aria-hidden="true" tabindex="-1" href="#learning-lpic-3-305-300"><span class="octicon octicon-link"></span></a>LEARNING LPIC-3 305-300</h1>
<p>
<img src="images/lpic3-305-300.jpg" alt="LPIC3-305-300">
</p>
<p align="center">
<strong>Explore the docs »</strong><br><a href="">Web Site</a>
-
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300">Code Page</a>
-
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/issues">Report Bug</a>
-
<a href="https://github.com/marcossilvestrini/learning-lpic-3-305-300/issues">Request Feature</a>
</p>
<hr>
<h2 id="summary"><a class="anchor" aria-hidden="true" tabindex="-1" href="#summary"><span class="octicon octicon-link"></span></a>Summary</h2>
<details>
<summary><b>TABLE OF CONTENT</b></summary>
<ol>
<li><a href="#about-the-project">About The Project</a></li>
<li><a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#installation">installation</a></li>
</ul>
</li>
<li><a href="#usage">Usage</a></li>
<li><a href="#roadmap">Roadmap</a></li>
<li><a href="#freedoms">Four Essential Freedoms</a></li>
<li><a href="#topic-351">Topic 351: Full Virtualization</a>
<ul>
<li><a href="#topic-351.1">351.1 Virtualization Concepts and Theory</a></li>
<li><a href="#topic-351.2">351.2 Xen</a></li>
<li><a href="#topic-351.3">351.3 QEMU</a></li>
<li><a href="#topic-351.4">351.4 Libvirt Virtual Machine</a></li>
<li><a href="#topic-351.5">351.5 Virtual Machine Disk Image Management</a></li>
</ul>
</li>
<li><a href="#topic-352">Topic 352: Container Virtualization</a>
<ul>
<li><a href="#topic-352.1">352.1 Container Virtualization Concepts</a></li>
<li><a href="#topic-352.2">352.2 LXC</a></li>
<li><a href="#topic-352.3">352.3 Docker</a></li>
<li><a href="#topic-352.4">352.4 Container Orchestration Platforms</a></li>
</ul>
</li>
<li><a href="#topic-353">Topic 353: VM Deployment and Provisioning</a>
<ul>
<li><a href="#topic-353.1">353.1 Cloud Management Tools</a></li>
<li><a href="#topic-353.2">353.2 Packer</a></li>
<li><a href="#topic-353.3">353.3 cloud-init</a></li>
<li><a href="#topic-353.4">353.4 Vagrant</a></li>
</ul>
</li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#acknowledgments">Acknowledgments</a></li>
</ol>
</details><br>
<hr>
<p><a name="about-the-project"></a></p>
<h2 id="about-project"><a class="anchor" aria-hidden="true" tabindex="-1" href="#about-project"><span class="octicon octicon-link"></span></a>About Project</h2>
<blockquote>
<p>
This project aims to help students or professionals to learn the main concepts of GNULinux
and free software<br>Some GNULinux distributions like Debian and RPM will be covered<br>Installation and configuration of some packages will also be covered<br>By doing this you can give the whole community a chance to benefit from your changes.<br>Access to the source code is a precondition for this.<br>Use vagrant for up machines and execute labs and practice content in this article.<br>I have published in folder Vagrant a Vagrantfile with what is necessary<br>for you to upload an environment for studies
</p>
</blockquote>
<hr>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<p><a name="getting-started"></a></p>
<h2 id="getting-started"><a class="anchor" aria-hidden="true" tabindex="-1" href="#getting-started"><span class="octicon octicon-link"></span></a>Getting Started</h2>
<p>For starting the learning, see the documentation above.</p>
<p><a name="prerequisites"></a></p>
<h3 id="prerequisites"><a class="anchor" aria-hidden="true" tabindex="-1" href="#prerequisites"><span class="octicon octicon-link"></span></a>Prerequisites</h3>
<ul>
<li><a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git">Git</a></li>
<li><a href="https://blogs.vmware.com/workstation/2024/05/vmware-workstation-pro-now-available-free-for-personal-use.html">VMware Workstation</a></li>
<li><a href="https://developer.hashicorp.com/vagrant/install/vmware">Vagrant VMWare Utility</a></li>
<li><a href="https://developer.hashicorp.com/vagrant/install">Vagrant</a></li>
</ul>
<p><a name="installation"></a></p>
<h3 id="installation"><a class="anchor" aria-hidden="true" tabindex="-1" href="#installation"><span class="octicon octicon-link"></span></a>Installation</h3>
<p>Clone the repo</p>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token function">git</span> clone https://github.com/marcossilvestrini/learning-lpic-3-305-300.git
</span><span class="code-line line-number" line="2"><span class="token builtin class-name">cd</span> learning-lpic-3-305-300
</span></code><div onclick="copied(this)" data-code="git clone https://github.com/marcossilvestrini/learning-lpic-3-305-300.git
cd learning-lpic-3-305-300
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p>Customize a template <em>Vagrantfile-topic-XXX</em>. This file contains a vms configuration for labs. Example:</p>
<ul>
<li>File <a href="./vagrant/Vagrantfile-topic-351">Vagrantfile-topic-351</a>
<ul>
<li>vm.clone_directory = "<your_driver_letter>:\
<folder>
\<to_machine>\#{VM_NAME}-instance-1"
Example: vm.clone_directory = "E:\Servers\VMWare\#{VM_NAME}-instance-1"
</folder>
</li>
<li>vm.vmx["memsize"] = ""</li>
<li>vm.vmx["numvcpus"] = ""</li>
<li>vm.vmx["cpuid.coresPerSocket"] = ""</li>
</ul>
</li>
</ul>
<p>Customize network configuration in files <a href="configs/network/">configs/network</a>.</p>
<hr>
<p><a name="usage"></a></p>
<h2 id="usage"><a class="anchor" aria-hidden="true" tabindex="-1" href="#usage"><span class="octicon octicon-link"></span></a>Usage</h2>
<p>Use this repository for get learning about LPIC-3 305-300 exam</p>
<h3 id="for-up-and-down"><a class="anchor" aria-hidden="true" tabindex="-1" href="#for-up-and-down"><span class="octicon octicon-link"></span></a>For up and down</h3>
<p>Switch a <em>Vagrantfile-topic-xxx</em> template and copy for a new file with name <em>Vagrantfile</em></p>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token builtin class-name">cd</span> vagrant <span class="token operator">&&</span> vagrant up
</span><span class="code-line line-number" line="2"><span class="token builtin class-name">cd</span> vagrant <span class="token operator">&&</span> vagrant destroy <span class="token parameter variable">-f</span>
</span></code><div onclick="copied(this)" data-code="cd vagrant && vagrant up
cd vagrant && vagrant destroy -f
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h3 id="for-reboot-vms"><a class="anchor" aria-hidden="true" tabindex="-1" href="#for-reboot-vms"><span class="octicon octicon-link"></span></a>For reboot vms</h3>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token builtin class-name">cd</span> vagrant <span class="token operator">&&</span> vagrant reload
</span></code><div onclick="copied(this)" data-code="cd vagrant && vagrant reload
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p>
<strong>Important:</strong>
<em>If you reboot vms without vagrant, shared folder not mount after boot.</em>
</p>
<h3 id="use-powershell-for-up-and-down"><a class="anchor" aria-hidden="true" tabindex="-1" href="#use-powershell-for-up-and-down"><span class="octicon octicon-link"></span></a>Use powershell for up and down</h3>
<p>If you use Windows platform, I create a powershell script for up and down vms.</p>
<pre class="language-powershell"><code class="language-powershell code-highlight"><span class="code-line line-number" line="1">vagrant/up<span class="token punctuation">.</span>ps1
</span><span class="code-line line-number" line="2">vagrant/destroy<span class="token punctuation">.</span>ps1
</span></code><div onclick="copied(this)" data-code="vagrant/up.ps1
vagrant/destroy.ps1
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="roadmap"></a></p>
<h2 id="roadmap"><a class="anchor" aria-hidden="true" tabindex="-1" href="#roadmap"><span class="octicon octicon-link"></span></a>Roadmap</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" checked disabled> Create repository</li>
<li class="task-list-item"><input type="checkbox" checked disabled> Create scripts for provisioning labs</li>
<li class="task-list-item"><input type="checkbox" checked disabled> Create examples about Topic 351</li>
<li class="task-list-item"><input type="checkbox" disabled> Create examples about Topic 352</li>
<li class="task-list-item"><input type="checkbox" disabled> Create examples about Topic 353</li>
<li class="task-list-item"><input type="checkbox" disabled> Upload simulated itexam</li>
</ul>
<hr>
<p><a name="freedoms"></a></p>
<h2 id="four-essential-freedoms"><a class="anchor" aria-hidden="true" tabindex="-1" href="#four-essential-freedoms"><span class="octicon octicon-link"></span></a>Four Essential Freedoms</h2>
<blockquote>
<p>0.The freedom to run the program as you wish, for any purpose (freedom 0).<br>1.The freedom to study how the program works, and change it so it does<br>your computing as you wish (freedom 1).<br>Access to the source code is a precondition for this.<br>2.The freedom to redistribute copies so you can help others (freedom 2).<br>3.freedom to distribute copies of your modified versions to others (freedom 3).</p>
</blockquote>
<hr>
<h2 id="inspect-commands"><a class="anchor" aria-hidden="true" tabindex="-1" href="#inspect-commands"><span class="octicon octicon-link"></span></a>Inspect commands</h2>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token builtin class-name">type</span> COMMAND
</span><span class="code-line line-number" line="2"><span class="token function">apropos</span> COMMAND
</span><span class="code-line line-number" line="3">whatis COMMAND <span class="token parameter variable">--long</span>
</span><span class="code-line line-number" line="4"><span class="token function">whereis</span> COMMAND
</span><span class="code-line line-number" line="5">COMMAND --help, <span class="token parameter variable">--h</span>
</span><span class="code-line line-number" line="6"><span class="token function">man</span> COMMAND
</span></code><div onclick="copied(this)" data-code="type COMMAND
apropos COMMAND
whatis COMMAND --long
whereis COMMAND
COMMAND --help, --h
man COMMAND
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-351"></a></p>
<h2 id="topic-351-full-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#topic-351-full-virtualization"><span class="octicon octicon-link"></span></a>Topic 351: Full Virtualization</h2>
<p>
<img src="images/virtualization-351.png" alt="LPIC3-305-300">
</p>
<hr>
<p><a name="topic-351.1"></a></p>
<h3 id="3511-virtualization-concepts-and-theory"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3511-virtualization-concepts-and-theory"><span class="octicon octicon-link"></span></a>351.1 Virtualization Concepts and Theory</h3>
<p><strong>Weight:</strong> 6</p>
<p><strong>Description:</strong> Candidates should know and understand the general concepts, theory and terminology of virtualization. This includes Xen, QEMU and libvirt terminology.</p>
<p><strong>Key Knowledge Areas:</strong></p>
<ul>
<li>Understand virtualization terminology</li>
<li>Understand the pros and cons of virtualization</li>
<li>Understand the various variations of Hypervisors and Virtual Machine Monitors</li>
<li>Understand the major aspects of migrating physical to virtual machines</li>
<li>Understand the major aspects of migrating virtual machines between host systems</li>
<li>Understand the features and implications of virtualization for a virtual machine, such as snapshotting, pausing, cloning and resource limits</li>
<li>Awareness of oVirt, Proxmox, systemd-machined and VirtualBox</li>
<li>Awareness of Open vSwitch</li>
</ul>
<h4 id="3511-cited-objects"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3511-cited-objects"><span class="octicon octicon-link"></span></a>351.1 Cited Objects</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">Hypervisor
</span><span class="code-line line-number" line="2">Hardware Virtual Machine <span class="token punctuation">(</span>HVM<span class="token punctuation">)</span>
</span><span class="code-line line-number" line="3">Paravirtualization <span class="token punctuation">(</span>PV<span class="token punctuation">)</span>
</span><span class="code-line line-number" line="4">Emulation and Simulation
</span><span class="code-line line-number" line="5">CPU flags
</span><span class="code-line line-number" line="6">/proc/cpuinfo
</span><span class="code-line line-number" line="7">Migration <span class="token punctuation">(</span>P2V, V2V<span class="token punctuation">)</span>
</span></code><div onclick="copied(this)" data-code="Hypervisor
Hardware Virtual Machine (HVM)
Paravirtualization (PV)
Emulation and Simulation
CPU flags
/proc/cpuinfo
Migration (P2V, V2V)
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="hypervisors"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hypervisors"><span class="octicon octicon-link"></span></a>Hypervisors</h4>
<h5 id="type-1-hypervisor-bare-metal-hypervisor"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-1-hypervisor-bare-metal-hypervisor"><span class="octicon octicon-link"></span></a>Type 1 Hypervisor (Bare-Metal Hypervisor)</h5>
<h6 id="type-1-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-1-definition"><span class="octicon octicon-link"></span></a>Type 1 Definition</h6>
<p>Runs directly on the host's physical hardware, providing a base layer to manage VMs without the need for a host operating system.</p>
<h6 id="type-1-characteristics"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-1-characteristics"><span class="octicon octicon-link"></span></a>Type 1 Characteristics</h6>
<ul>
<li>High performance and efficiency.</li>
<li>Lower latency and overhead.</li>
<li>Often used in enterprise environments and data centers.</li>
</ul>
<h6 id="type-1-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-1-examples"><span class="octicon octicon-link"></span></a>Type 1 Examples</h6>
<ul>
<li>VMware ESXi: A robust and widely used hypervisor in enterprise settings.</li>
<li>Microsoft Hyper-V: Integrated with Windows Server, offering strong performance and management features.</li>
<li>Xen: An open-source hypervisor used by many cloud service providers.</li>
<li>KVM (Kernel-based Virtual Machine): Integrated into the Linux kernel, providing high performance for Linux-based systems.</li>
</ul>
<h5 id="type-2-hypervisor-hosted-hypervisor"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-2-hypervisor-hosted-hypervisor"><span class="octicon octicon-link"></span></a>Type 2 Hypervisor (Hosted Hypervisor)</h5>
<h6 id="type-2-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-2-definition"><span class="octicon octicon-link"></span></a>Type 2 Definition</h6>
<p>Runs on top of a conventional operating system, relying on the host OS for resource management and device support.</p>
<h6 id="type-2-characteristics"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-2-characteristics"><span class="octicon octicon-link"></span></a>Type 2 Characteristics</h6>
<ul>
<li>Easier to set up and use, especially on personal computers.</li>
<li>More flexible for development, testing, and smaller-scale deployments.</li>
<li>Typically less efficient than Type 1 hypervisors due to additional overhead from the host OS.</li>
</ul>
<h6 id="type-2-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#type-2-examples"><span class="octicon octicon-link"></span></a>Type 2 Examples</h6>
<ul>
<li>VMware Workstation: A powerful hypervisor for running multiple operating systems on a single desktop.</li>
<li>Oracle VirtualBox: An open-source hypervisor known for its flexibility and ease of use.</li>
<li>Parallels Desktop: Designed for Mac users to run Windows and other operating systems alongside macOS.</li>
<li>QEMU (Quick EMUlator): An open-source emulator and virtualizer, often used in conjunction with KVM.</li>
</ul>
<h5 id="key-differences-between-type-1-and-type-2-hypervisors"><a class="anchor" aria-hidden="true" tabindex="-1" href="#key-differences-between-type-1-and-type-2-hypervisors"><span class="octicon octicon-link"></span></a>Key Differences Between Type 1 and Type 2 Hypervisors</h5>
<ul>
<li>Deployment Environment:
<ul>
<li>Type 1 hypervisors are commonly deployed in data centers and enterprise environments due to their direct interaction with hardware and high performance.</li>
<li>Type 2 hypervisors are more suitable for personal use, development, testing, and small-scale virtualization tasks.</li>
</ul>
</li>
<li>Performance:
<ul>
<li>Type 1 hypervisors generally offer better performance and lower latency because they do not rely on a host OS.</li>
<li>Type 2 hypervisors may experience some performance degradation due to the overhead of running on top of a host OS.</li>
</ul>
</li>
<li>Management and Ease of Use:
<ul>
<li>Type 1 hypervisors require more complex setup and management but provide advanced features and scalability for large-scale deployments.</li>
<li>Type 2 hypervisors are easier to install and use, making them ideal for individual users and smaller projects.</li>
</ul>
</li>
</ul>
<h5 id="migration-types"><a class="anchor" aria-hidden="true" tabindex="-1" href="#migration-types"><span class="octicon octicon-link"></span></a>Migration Types</h5>
<p>In the context of hypervisors, which are technologies used to create and manage virtual machines, the terms P2V migration and V2V migration are common in virtualization environments.<br>They refer to processes of migrating systems between different types of platforms.</p>
<h5 id="p2v---physical-to-virtual-migration"><a class="anchor" aria-hidden="true" tabindex="-1" href="#p2v---physical-to-virtual-migration"><span class="octicon octicon-link"></span></a>P2V - Physical to Virtual Migration</h5>
<p>P2V migration refers to the process of migrating a physical server to a virtual machine.<br>In other words, an operating system and its applications, running on dedicated physical hardware, are "converted" and moved to a virtual machine that runs on a hypervisor (such as VMware, Hyper-V, KVM, etc.).</p>
<ul>
<li>Example: You have a physical server running a Windows or Linux system, and you want to move it to a virtual environment, like a cloud infrastructure or an internal virtualization server.<br>The process involves copying the entire system state, including the operating system, drivers, and data, to create an equivalent virtual machine that can run as if it were on the physical hardware.</li>
</ul>
<h5 id="v2v----virtual-to-virtual-migration"><a class="anchor" aria-hidden="true" tabindex="-1" href="#v2v----virtual-to-virtual-migration"><span class="octicon octicon-link"></span></a>V2V - Virtual to Virtual Migration</h5>
<p>V2V migration refers to the process of migrating a virtual machine from one hypervisor to another.<br>In this case, you already have a virtual machine running in a virtualized environment (like VMware), and you want to move it to another virtualized environment (for example, to Hyper-V or to a new VMware server).</p>
<ul>
<li>Example: You have a virtual machine running on a VMware virtualization server, but you decide to migrate it to a Hyper-V platform. In this case, the V2V migration converts the virtual machine from one format or hypervisor to another, ensuring it can continue running correctly.</li>
</ul>
<h4 id="hvm-and-paravirtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-and-paravirtualization"><span class="octicon octicon-link"></span></a>HVM and Paravirtualization</h4>
<h5 id="hardware-assisted-virtualization-hvm"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hardware-assisted-virtualization-hvm"><span class="octicon octicon-link"></span></a>Hardware-assisted Virtualization (HVM)</h5>
<h6 id="hvm-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-definition"><span class="octicon octicon-link"></span></a>HVM Definition</h6>
<p>HVM leverages hardware extensions provided by modern CPUs to virtualize hardware, enabling the creation and management of VMs with minimal performance overhead.</p>
<h6 id="hvm-key-characteristics"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-key-characteristics"><span class="octicon octicon-link"></span></a>HVM Key Characteristics</h6>
<ul>
<li><strong>Hardware Support</strong>: Requires CPU support for virtualization extensions such as Intel VT-x or AMD-V.</li>
<li><strong>Full Virtualization:</strong> VMs can run unmodified guest operating systems, as the hypervisor provides a complete emulation of the hardware environment.</li>
<li><strong>Performance:</strong> Typically offers near-native performance because of direct execution of guest code on the CPU.</li>
<li><strong>Isolation:</strong> Provides strong isolation between VMs since each VM operates as if it has its own dedicated hardware.</li>
</ul>
<h6 id="hvm-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-examples"><span class="octicon octicon-link"></span></a>HVM Examples</h6>
<p>VMware ESXi, Microsoft Hyper-V, KVM (Kernel-based Virtual Machine).</p>
<h6 id="hvm-advantages"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-advantages"><span class="octicon octicon-link"></span></a>HVM Advantages</h6>
<ul>
<li><strong>Compatibility:</strong> Can run any operating system without modification.</li>
<li><strong>Performance:</strong> High performance due to hardware support.</li>
<li><strong>Security:</strong> Enhanced isolation and security features provided by hardware.</li>
</ul>
<h6 id="hvm-disadvantages"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-disadvantages"><span class="octicon octicon-link"></span></a>HVM Disadvantages</h6>
<ul>
<li><strong>Hardware Dependency:</strong> Requires specific hardware features, limiting compatibility with older systems.</li>
<li><strong>Complexity:</strong> May involve more complex configuration and management.</li>
</ul>
<h5 id="paravirtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization"><span class="octicon octicon-link"></span></a>Paravirtualization</h5>
<h6 id="paravirtualization-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization-definition"><span class="octicon octicon-link"></span></a>Paravirtualization Definition</h6>
<p>Paravirtualization involves modifying the guest operating system to be aware of the virtual environment, allowing it to interact more efficiently with the hypervisor.</p>
<h6 id="paravirtualization-key-characteristics"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization-key-characteristics"><span class="octicon octicon-link"></span></a>Paravirtualization Key Characteristics</h6>
<ul>
<li><strong>Guest Modification:</strong> Requires changes to the guest operating system to communicate directly with the hypervisor using hypercalls.</li>
<li><strong>Performance:</strong> Can be more efficient than traditional full virtualization because it reduces the overhead associated with emulating hardware.</li>
<li><strong>Compatibility:</strong> Limited to operating systems that have been modified for paravirtualization.</li>
</ul>
<h6 id="paravirtualization-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization-examples"><span class="octicon octicon-link"></span></a>Paravirtualization Examples</h6>
<p>Xen with paravirtualized guests, VMware tools in certain configurations, and some KVM configurations.</p>
<h6 id="paravirtualization-advantages"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization-advantages"><span class="octicon octicon-link"></span></a>Paravirtualization Advantages</h6>
<ul>
<li><strong>Efficiency:</strong> Reduces the overhead of virtualizing hardware, potentially offering better performance for certain workloads.</li>
<li><strong>Resource Utilization:</strong> More efficient use of system resources due to direct communication between the guest OS and hypervisor.</li>
</ul>
<h6 id="paravirtualization-disadvantages"><a class="anchor" aria-hidden="true" tabindex="-1" href="#paravirtualization-disadvantages"><span class="octicon octicon-link"></span></a>Paravirtualization Disadvantages</h6>
<ul>
<li><strong>Guest OS Modification:</strong> Requires modifications to the guest OS, limiting compatibility to supported operating systems.</li>
<li><strong>Complexity:</strong> Requires additional complexity in the guest OS for hypercall implementations.</li>
</ul>
<h5 id="key-differences"><a class="anchor" aria-hidden="true" tabindex="-1" href="#key-differences"><span class="octicon octicon-link"></span></a>Key Differences</h5>
<h6 id="guest-os-requirements"><a class="anchor" aria-hidden="true" tabindex="-1" href="#guest-os-requirements"><span class="octicon octicon-link"></span></a>Guest OS Requirements</h6>
<ul>
<li><strong>HVM:</strong> Can run unmodified guest operating systems.</li>
<li><strong>Paravirtualization:</strong> Requires guest operating systems to be modified to work with the hypervisor.</li>
</ul>
<h6 id="performance"><a class="anchor" aria-hidden="true" tabindex="-1" href="#performance"><span class="octicon octicon-link"></span></a>Performance</h6>
<ul>
<li><strong>HVM:</strong> Typically provides near-native performance due to hardware-assisted execution.</li>
<li><strong>Paravirtualization:</strong> Can offer efficient performance by reducing the overhead of hardware emulation, but relies on modified guest OS.</li>
</ul>
<h6 id="hardware-dependency"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hardware-dependency"><span class="octicon octicon-link"></span></a>Hardware Dependency</h6>
<ul>
<li><strong>HVM:</strong> Requires specific CPU features (Intel VT-x, AMD-V).</li>
<li><strong>Paravirtualization:</strong> Does not require specific CPU features but needs modified guest OS.</li>
</ul>
<h6 id="isolation"><a class="anchor" aria-hidden="true" tabindex="-1" href="#isolation"><span class="octicon octicon-link"></span></a>Isolation</h6>
<ul>
<li><strong>HVM:</strong> Provides strong isolation using hardware features.</li>
<li><strong>Paravirtualization:</strong> Relies on software-based isolation, which may not be as robust as hardware-based isolation.</li>
</ul>
<h6 id="complexity"><a class="anchor" aria-hidden="true" tabindex="-1" href="#complexity"><span class="octicon octicon-link"></span></a>Complexity</h6>
<ul>
<li><strong>HVM:</strong> Generally more straightforward to deploy since it supports unmodified OS.</li>
<li><strong>Paravirtualization:</strong> Requires additional setup and modifications to the guest OS, increasing complexity.</li>
</ul>
<h4 id="numa-non-uniform-memory-access"><a class="anchor" aria-hidden="true" tabindex="-1" href="#numa-non-uniform-memory-access"><span class="octicon octicon-link"></span></a>NUMA (Non-Uniform Memory Access)</h4>
<p>NUMA (Non-Uniform Memory Access) is a memory architecture used in multiprocessor systems to optimize memory access by processors.<br>In a NUMA system, memory is distributed unevenly among processors, meaning that each processor has faster access to a portion of memory (its "local memory") than to memory that is physically further away (referred to as "remote memory") and associated with other processors.</p>
<h5 id="key-features-of-numa-architecture"><a class="anchor" aria-hidden="true" tabindex="-1" href="#key-features-of-numa-architecture"><span class="octicon octicon-link"></span></a>Key Features of NUMA Architecture</h5>
<ol>
<li><strong>Local and Remote Memory</strong>: Each processor has its own local memory, which it can access more quickly. However, it can also access the memory of other processors, although this takes longer.</li>
<li><strong>Differentiated Latency</strong>: The latency of memory access varies depending on whether the processor is accessing its local memory or the memory of another node. Local memory access is faster, while accessing another node’s memory (remote) is slower.</li>
<li><strong>Scalability</strong>: NUMA architecture is designed to improve scalability in systems with many processors. As more processors are added, memory is also distributed, avoiding the bottleneck that would occur in a uniform memory access (UMA) architecture.</li>
</ol>
<h5 id="advantages-of-numa"><a class="anchor" aria-hidden="true" tabindex="-1" href="#advantages-of-numa"><span class="octicon octicon-link"></span></a>Advantages of NUMA</h5>
<ul>
<li>Better Performance in Large Systems: Since each processor has local memory, it can work more efficiently without competing as much with other processors for memory access.</li>
<li>Scalability: NUMA allows systems with many processors and large amounts of memory to scale more effectively compared to a UMA architecture.</li>
</ul>
<h5 id="disadvantages"><a class="anchor" aria-hidden="true" tabindex="-1" href="#disadvantages"><span class="octicon octicon-link"></span></a>Disadvantages</h5>
<ul>
<li>Programming Complexity: Programmers need to be aware of which regions of memory are local or remote, optimizing the use of local memory to achieve better performance.</li>
<li>
Potential Performance Penalties: If a processor frequently accesses remote memory, performance may suffer due to higher latency.
This architecture is common in high-performance multiprocessor systems, such as servers and supercomputers, where scalability and memory optimization are critical.
</li>
</ul>
<h4 id="opensource-solutions"><a class="anchor" aria-hidden="true" tabindex="-1" href="#opensource-solutions"><span class="octicon octicon-link"></span></a>Opensource Solutions</h4>
<ul>
<li>
<p>oVirt: <a href="https://www.ovirt.org/">https://www.ovirt.org/</a></p>
</li>
<li>
<p>Proxmox: <a href="https://www.proxmox.com/en/proxmox-virtual-environment/overview">https://www.proxmox.com/en/proxmox-virtual-environment/overview</a></p>
</li>
<li>
<p>Oracle VirtualBox: <a href="https://www.virtualbox.org/">https://www.virtualbox.org/</a></p>
</li>
<li>
<p>Open vSwitch: <a href="https://www.openvswitch.org/">https://www.openvswitch.org/</a></p>
</li>
</ul>
<h4 id="types-of-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#types-of-virtualization"><span class="octicon octicon-link"></span></a>Types of Virtualization</h4>
<h5 id="hardware-virtualization-server-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hardware-virtualization-server-virtualization"><span class="octicon octicon-link"></span></a>Hardware Virtualization (Server Virtualization)</h5>
<h6 id="hv-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hv-definition"><span class="octicon octicon-link"></span></a>HV Definition</h6>
<p>Abstracts physical hardware to create virtual machines (VMs) that run separate operating systems and applications.</p>
<h6 id="hv-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hv-use-cases"><span class="octicon octicon-link"></span></a>HV Use Cases</h6>
<p>Data centers, cloud computing, server consolidation.</p>
<h6 id="hv-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hv-examples"><span class="octicon octicon-link"></span></a>HV Examples</h6>
<p>VMware ESXi, Microsoft Hyper-V, KVM.</p>
<h5 id="operating-system-virtualization-containerization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#operating-system-virtualization-containerization"><span class="octicon octicon-link"></span></a>Operating System Virtualization (Containerization)</h5>
<h6 id="containerization-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#containerization-definition"><span class="octicon octicon-link"></span></a>Containerization Definition</h6>
<p>Allows multiple isolated user-space instances (containers) to run on a single OS kernel.</p>
<h6 id="containerization-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#containerization-use-cases"><span class="octicon octicon-link"></span></a>Containerization Use Cases</h6>
<p>Microservices architecture, development and testing environments.</p>
<h6 id="containerization-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#containerization-examples"><span class="octicon octicon-link"></span></a>Containerization Examples</h6>
<p>Docker, Kubernetes, LXC.</p>
<h5 id="network-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#network-virtualization"><span class="octicon octicon-link"></span></a>Network Virtualization</h5>
<h6 id="network-virtualization-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#network-virtualization-definition"><span class="octicon octicon-link"></span></a>Network Virtualization Definition</h6>
<p>Combines hardware and software network resources into a single, software-based administrative entity.</p>
<h6 id="network-virtualization-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#network-virtualization-use-cases"><span class="octicon octicon-link"></span></a>Network Virtualization Use Cases</h6>
<p>Software-defined networking (SDN), network function virtualization (NFV).</p>
<h6 id="network-virtualization-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#network-virtualization-examples"><span class="octicon octicon-link"></span></a>Network Virtualization Examples</h6>
<p>VMware NSX, Cisco ACI, OpenStack Neutron.</p>
<h5 id="storage-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#storage-virtualization"><span class="octicon octicon-link"></span></a>Storage Virtualization</h5>
<h6 id="storage-virtualizationdefinition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#storage-virtualizationdefinition"><span class="octicon octicon-link"></span></a>Storage VirtualizationDefinition</h6>
<p>Pools physical storage from multiple devices into a single virtual storage unit that can be managed centrally.</p>
<h6 id="storage-virtualizationdefinition-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#storage-virtualizationdefinition-use-cases"><span class="octicon octicon-link"></span></a>Storage VirtualizationDefinition Use Cases</h6>
<p>Data management, storage optimization, disaster recovery.</p>
<h6 id="storage-virtualizationdefinition-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#storage-virtualizationdefinition-examples"><span class="octicon octicon-link"></span></a>Storage VirtualizationDefinition Examples</h6>
<p>IBM SAN Volume Controller, VMware vSAN, NetApp ONTAP.</p>
<h5 id="desktop-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#desktop-virtualization"><span class="octicon octicon-link"></span></a>Desktop Virtualization</h5>
<h6 id="desktop-virtualization-definition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#desktop-virtualization-definition"><span class="octicon octicon-link"></span></a>Desktop Virtualization Definition</h6>
<p>Allows a desktop operating system to run on a virtual machine hosted on a server.</p>
<h6 id="desktop-virtualization-definition-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#desktop-virtualization-definition-use-cases"><span class="octicon octicon-link"></span></a>Desktop Virtualization Definition Use Cases</h6>
<p>Virtual desktop infrastructure (VDI), remote work solutions.</p>
<h6 id="desktop-virtualization-definition-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#desktop-virtualization-definition-examples"><span class="octicon octicon-link"></span></a>Desktop Virtualization Definition Examples</h6>
<p>Citrix Virtual Apps and Desktops, VMware Horizon, Microsoft Remote Desktop Services.</p>
<h5 id="application-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#application-virtualization"><span class="octicon octicon-link"></span></a>Application Virtualization</h5>
<h6 id="application-virtualizationdefinition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#application-virtualizationdefinition"><span class="octicon octicon-link"></span></a>Application VirtualizationDefinition</h6>
<p>Separates applications from the underlying hardware and operating system, allowing them to run in isolated environments.</p>
<h6 id="application-virtualizationdefinition-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#application-virtualizationdefinition-use-cases"><span class="octicon octicon-link"></span></a>Application VirtualizationDefinition Use Cases</h6>
<p>Simplified application deployment, compatibility testing.</p>
<h6 id="application-virtualizationdefinition-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#application-virtualizationdefinition-examples"><span class="octicon octicon-link"></span></a>Application VirtualizationDefinition Examples</h6>
<p>VMware ThinApp, Microsoft App-V, Citrix XenApp.</p>
<h5 id="data-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#data-virtualization"><span class="octicon octicon-link"></span></a>Data Virtualization</h5>
<h6 id="data-virtualizationdefinition"><a class="anchor" aria-hidden="true" tabindex="-1" href="#data-virtualizationdefinition"><span class="octicon octicon-link"></span></a>Data VirtualizationDefinition</h6>
<p>Integrates data from various sources without physically consolidating it, providing a unified view for analysis and reporting.</p>
<h6 id="data-virtualizationdefinition-use-cases"><a class="anchor" aria-hidden="true" tabindex="-1" href="#data-virtualizationdefinition-use-cases"><span class="octicon octicon-link"></span></a>Data VirtualizationDefinition Use Cases</h6>
<p>Business intelligence, real-time data integration.</p>
<h6 id="data-virtualizationdefinition-examples"><a class="anchor" aria-hidden="true" tabindex="-1" href="#data-virtualizationdefinition-examples"><span class="octicon octicon-link"></span></a>Data VirtualizationDefinition Examples</h6>
<p>Denodo, Red Hat JBoss Data Virtualization, IBM InfoSphere.</p>
<h5 id="benefits-of-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#benefits-of-virtualization"><span class="octicon octicon-link"></span></a>Benefits of Virtualization</h5>
<ul>
<li>Resource Efficiency: Better utilization of physical resources.</li>
<li>Cost Savings: Reduced hardware and operational costs.</li>
<li>Scalability: Easy to scale up or down according to demand.</li>
<li>Flexibility: Supports a variety of workloads and applications.</li>
<li>Disaster Recovery: Simplified backup and recovery processes.</li>
<li>Isolation: Improved security through isolation of environments.</li>
</ul>
<p align="right">(<a href="#topic-351.1">back to sub Topic 351.1</a>)</p>
<p align="right">(<a href="#topic-351">back to Topic 351</a>)</p>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-351.2"></a></p>
<h3 id="3512-xen"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3512-xen"><span class="octicon octicon-link"></span></a>351.2 Xen</h3>
<p>
<img src="images/xen-achitecture.png" alt="xen-architecture">
</p>
<p>
<img src="images/xen-achitecture2.png" alt="xen-architecture">
</p>
<p><strong>Weight:</strong> 3</p>
<p><strong>Description:</strong> Candidates should be able to install, configure, maintain, migrate and troubleshoot Xen installations. The focus is on Xen version 4.x.</p>
<p><strong>Key Knowledge Areas:</strong></p>
<ul>
<li>Understand architecture of Xen, including networking and storage</li>
<li>Basic configuration of Xen nodes and domains</li>
<li>Basic management of Xen nodes and domains</li>
<li>Basic troubleshooting of Xen installations</li>
<li>Awareness of XAPI</li>
<li>Awareness of XenStore</li>
<li>Awareness of Xen Boot Parameters</li>
<li>Awareness of the xm utility</li>
</ul>
<h4 id="xen"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen"><span class="octicon octicon-link"></span></a>Xen</h4>
<p>
<img src="images/xen-panda.png" alt="panda">
</p>
<p>Xen is an open-source type-1 (bare-metal) hypervisor, which allows multiple operating systems to run concurrently on the same physical hardware.<br>Xen provides a layer between the physical hardware and virtual machines (VMs), enabling efficient resource sharing and isolation.</p>
<ul>
<li><strong>Architecture:</strong> Xen operates with a two-tier system where Domain 0 (Dom0) is the privileged domain with direct hardware access and manages the hypervisor. Other virtual machines, called Domain U (DomU), run guest operating systems and are managed by Dom0.</li>
<li>
<strong>Types of Virtualization:</strong> Xen supports both paravirtualization (PV), which requires modified guest OS, and hardware-assisted virtualization (HVM), which uses hardware extensions (e.g., Intel VT-x or AMD-V) to run unmodified guest operating systems.
Xen is widely used in cloud environments, notably by Amazon Web Services (AWS) and other large-scale cloud providers.
</li>
</ul>
<h4 id="xensource"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xensource"><span class="octicon octicon-link"></span></a>XenSource</h4>
<p>XenSource was the company founded by the original developers of the Xen hypervisor at the University of Cambridge to commercialize Xen.<br>The company provided enterprise solutions based on Xen and offered additional tools and support to enhance Xen’s capabilities for enterprise use.</p>
<ul>
<li><strong>Acquisition by Citrix</strong>: In 2007, XenSource was acquired by Citrix Systems, Inc. Citrix used Xen technology as the foundation for its Citrix XenServer product, which became a popular enterprise-grade virtualization platform based on Xen.</li>
<li><strong>Transition</strong>: After the acquisition, the Xen project continued as an open-source project, while Citrix focused on commercial offerings like XenServer, leveraging XenSource technology.</li>
</ul>
<h4 id="xen-project"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen-project"><span class="octicon octicon-link"></span></a>Xen Project</h4>
<p>Xen Project refers to the open-source community and initiative responsible for developing and maintaining the Xen hypervisor after its commercialization.<br>The Xen Project operates under the Linux Foundation, with a focus on building, improving, and supporting Xen as a collaborative, community-driven effort.</p>
<ul>
<li><strong>Goals:</strong> The Xen Project aims to advance the hypervisor by improving its performance, security, and feature set for a wide range of use cases, including cloud computing, security-focused virtualization (e.g., Qubes OS), and embedded systems.</li>
<li><strong>Contributors:</strong> The project includes contributors from various organizations, including major cloud providers, hardware vendors, and independent developers.</li>
<li><strong>XAPI and XenTools:</strong> The Xen Project also includes tools such as XAPI (XenAPI), which is used for managing Xen hypervisor installations, and various other utilities for system management and optimization.</li>
</ul>
<h4 id="xenstore"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xenstore"><span class="octicon octicon-link"></span></a>XenStore</h4>
<p>Xen Store is a critical component of the Xen Hypervisor.<br>Essentially, Xen Store is a distributed key-value database used for communication and information sharing between the Xen hypervisor and the virtual machines (also known as domains) it manages.</p>
<p>Here are some key aspects of Xen Store:</p>
<ul>
<li>
<p><strong>Inter-Domain Communication:</strong> Xen Store enables communication between domains, such as Dom0 (the privileged domain that controls hardware resources) and DomUs (user domains, which are the VMs). This is done through key-value entries, where each domain can read or write information.</p>
</li>
<li>
<p><strong>Configuration Management:</strong> It is used to store and access configuration information, such as virtual devices, networking, and boot parameters. This facilitates the dynamic management and configuration of VMs.</p>
</li>
<li>
<p><strong>Events and Notifications:</strong> Xen Store also supports event notifications. When a particular key or value in the Xen Store is modified, interested domains can be notified to react to these changes. This is useful for monitoring and managing resources.</p>
</li>
<li>
<p>Simple API: Xen Store provides a simple API for reading and writing data, making it easy for developers to integrate their applications with the Xen virtualization system.</p>
</li>
</ul>
<h4 id="xapi"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xapi"><span class="octicon octicon-link"></span></a>XAPI</h4>
<p>XAPI, or XenAPI, is the application programming interface (API) used to manage the Xen Hypervisor and its virtual machines (VMs).<br>XAPI is a key component of XenServer (now known as Citrix Hypervisor) and provides a standardized way to interact with the Xen hypervisor to perform operations such as creating, configuring, monitoring, and controlling VMs.</p>
<p>Here are some important aspects of XAPI:</p>
<ul>
<li>
<p><strong>VM Management:</strong> XAPI allows administrators to programmatically create, delete, start, and stop virtual machines.</p>
</li>
<li>
<p><strong>Automation:</strong> With XAPI, it's possible to automate the management of virtual resources, including networking, storage, and computing, which is crucial for large cloud environments.</p>
</li>
<li>
<p><strong>Integration:</strong> XAPI can be integrated with other tools and scripts to provide more efficient and customized administration of the Xen environment.</p>
</li>
<li>
<p><strong>Access Control:</strong> XAPI also provides access control mechanisms to ensure that only authorized users can perform specific operations in the virtual environment.</p>
</li>
</ul>
<p>XAPI is the interface that enables control and automation of the Xen Hypervisor, making it easier to manage virtualized environments.</p>
<h4 id="xen-summary"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen-summary"><span class="octicon octicon-link"></span></a>Xen Summary</h4>
<ul>
<li><strong>Xen:</strong> The core hypervisor technology enabling virtual machines to run on physical hardware.</li>
<li><strong>XenSource:</strong> The company that commercialized Xen, later acquired by Citrix, leading to the development of Citrix XenServer.</li>
<li><strong>Xen Project:</strong> The open-source initiative and community that continues to develop and maintain the Xen hypervisor under the Linux Foundation.</li>
<li><strong>XenStore:</strong> Xen Store acts as a communication and configuration intermediary between the Xen hypervisor and the VMs, streamlining the operation and management of virtualized environments.</li>
<li><strong>XAPI</strong> is the interface that enables control and automation of the Xen Hypervisor, making it easier to manage virtualized environments.</li>
</ul>
<h4 id="domain0-dom0"><a class="anchor" aria-hidden="true" tabindex="-1" href="#domain0-dom0"><span class="octicon octicon-link"></span></a>Domain0 (Dom0)</h4>
<p>Domain0, or Dom0, is the control domain in a Xen architecture. It manages other domains (DomUs) and has direct access to hardware.<br>Dom0 runs device drivers, allowing DomUs, which lack direct hardware access, to communicate with devices. Typically, it is a full instance of an operating system, like Linux, and is essential for Xen hypervisor operation.</p>
<h4 id="domainu-domu"><a class="anchor" aria-hidden="true" tabindex="-1" href="#domainu-domu"><span class="octicon octicon-link"></span></a>DomainU (DomU)</h4>
<p>DomUs are non-privileged domains that run virtual machines.<br>They are managed by Dom0 and do not have direct access to hardware. DomUs can be configured to run different operating systems and are used for various purposes, such as application servers and development environments. They rely on Dom0 for hardware interaction.</p>
<h4 id="pv-domu-paravirtualized-domainu"><a class="anchor" aria-hidden="true" tabindex="-1" href="#pv-domu-paravirtualized-domainu"><span class="octicon octicon-link"></span></a>PV-DomU (Paravirtualized DomainU)</h4>
<p>PV-DomUs use a technique called paravirtualization. In this model, the DomU operating system is modified to be aware that it runs in a virtualized environment, allowing it to communicate directly with the hypervisor for optimized performance.<br>This results in lower overhead and better efficiency compared to full virtualization.</p>
<h4 id="hvm-domu-hardware-virtual-machine-domainu"><a class="anchor" aria-hidden="true" tabindex="-1" href="#hvm-domu-hardware-virtual-machine-domainu"><span class="octicon octicon-link"></span></a>HVM-DomU (Hardware Virtual Machine DomainU)</h4>
<p>HVM-DomUs are virtual machines that utilize full virtualization, allowing unmodified operating systems to run. The Xen hypervisor provides hardware emulation for these DomUs, enabling them to run any operating system that supports the underlying hardware architecture.<br>While this offers greater flexibility, it can result in higher overhead compared to PV-DomUs.</p>
<h4 id="xen-network"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen-network"><span class="octicon octicon-link"></span></a>Xen Network</h4>
<p>
Paravirtualised Network Devices
<img src="images/xen-networking2.png" alt="pv-networking">
</p>
<p>
Bridging
<img src="images/xen-networking1.png" alt="pv-networking">
</p>
<h4 id="3512-cited-objects"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3512-cited-objects"><span class="octicon octicon-link"></span></a>351.2 Cited Objects</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">Domain0 <span class="token punctuation">(</span>Dom0<span class="token punctuation">)</span>, DomainU <span class="token punctuation">(</span>DomU<span class="token punctuation">)</span>
</span><span class="code-line line-number" line="2">PV-DomU, HVM-DomU
</span><span class="code-line line-number" line="3">/etc/xen/
</span><span class="code-line line-number" line="4">xl
</span><span class="code-line line-number" line="5">xl.cfg
</span><span class="code-line line-number" line="6">xl.conf <span class="token comment"># Xen global configurations</span>
</span><span class="code-line line-number" line="7">xentop
</span><span class="code-line line-number" line="8">oxenstored <span class="token comment"># Xenstore configurations</span>
</span></code><div onclick="copied(this)" data-code="Domain0 (Dom0), DomainU (DomU)
PV-DomU, HVM-DomU
/etc/xen/
xl
xl.cfg
xl.conf # Xen global configurations
xentop
oxenstored # Xenstore configurations
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="3512-notes"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3512-notes"><span class="octicon octicon-link"></span></a>351.2 Notes</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">
</span><span class="code-line line-number" line="2"><span class="token comment"># Xen Settings</span>
</span><span class="code-line line-number" line="3">/etc/xen/
</span><span class="code-line line-number" line="4">/etc/xen/xl.conf - Main general configuration <span class="token function">file</span> <span class="token keyword">for</span> Xen
</span><span class="code-line line-number" line="5">/etc/xen/oxenstored.conf - Xenstore configurations
</span><span class="code-line line-number" line="6">
</span><span class="code-line line-number" line="7"><span class="token comment"># VM Configurations</span>
</span><span class="code-line line-number" line="8">/etc/xen/xlexample.pvlinux
</span><span class="code-line line-number" line="9">/etc/xen/xlexample.hvm
</span><span class="code-line line-number" line="10">
</span><span class="code-line line-number" line="11"><span class="token comment"># Service Configurations</span>
</span><span class="code-line line-number" line="12">/etc/default/xen
</span><span class="code-line line-number" line="13">/etc/default/xendomains
</span><span class="code-line line-number" line="14">
</span><span class="code-line line-number" line="15"><span class="token comment"># xen-tools configurations</span>
</span><span class="code-line line-number" line="16">/etc/xen-tools/
</span><span class="code-line line-number" line="17">/usr/share/xen-tools/
</span></code><div onclick="copied(this)" data-code="
# Xen Settings
/etc/xen/
/etc/xen/xl.conf - Main general configuration file for Xen
/etc/xen/oxenstored.conf - Xenstore configurations
# VM Configurations
/etc/xen/xlexample.pvlinux
/etc/xen/xlexample.hvm
# Service Configurations
/etc/default/xen
/etc/default/xendomains
# xen-tools configurations
/etc/xen-tools/
/usr/share/xen-tools/
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="3512-important-commands"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3512-important-commands"><span class="octicon octicon-link"></span></a>351.2 Important Commands</h4>
<h5 id="xen-create-image"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen-create-image"><span class="octicon octicon-link"></span></a>xen-create-image</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># create a pv image</span>
</span><span class="code-line line-number" line="2">xen-create-image <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="3"> <span class="token parameter variable">--hostname</span><span class="token operator">=</span>lpic3-pv-guest <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="4"> <span class="token parameter variable">--memory</span><span class="token operator">=</span>1gb <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="5"> <span class="token parameter variable">--vcpus</span><span class="token operator">=</span><span class="token number">2</span> <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="6"> <span class="token parameter variable">--lvm</span><span class="token operator">=</span>vg_xen <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="7"> <span class="token parameter variable">--dhcp</span> <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="8"> <span class="token parameter variable">--pygrub</span> <span class="token punctuation">\</span>
</span><span class="code-line line-number" line="9"> <span class="token parameter variable">--dist</span><span class="token operator">=</span>bookworm
</span></code><div onclick="copied(this)" data-code="# create a pv image
xen-create-image \
--hostname=lpic3-pv-guest \
--memory=1gb \
--vcpus=2 \
--lvm=vg_xen \
--dhcp \
--pygrub \
--dist=bookworm
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h5 id="xen-delete-image"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xen-delete-image"><span class="octicon octicon-link"></span></a>xen-delete-image</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># delete a pv image</span>
</span><span class="code-line line-number" line="2">xen-delete-image lpic3-pv-guest <span class="token parameter variable">--lvm</span><span class="token operator">=</span>vg_xen
</span></code><div onclick="copied(this)" data-code="# delete a pv image
xen-delete-image lpic3-pv-guest --lvm=vg_xen
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h5 id="brctl"><a class="anchor" aria-hidden="true" tabindex="-1" href="#brctl"><span class="octicon octicon-link"></span></a>brctl</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># list xen interfaces</span>
</span><span class="code-line line-number" line="2">brctl show
</span></code><div onclick="copied(this)" data-code="# list xen interfaces
brctl show
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h5 id="xl"><a class="anchor" aria-hidden="true" tabindex="-1" href="#xl"><span class="octicon octicon-link"></span></a>xl</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># view xen information</span>
</span><span class="code-line line-number" line="2">xl infos
</span><span class="code-line line-number" line="3">
</span><span class="code-line line-number" line="4"><span class="token comment"># list Domains</span>
</span><span class="code-line line-number" line="5">xl list
</span><span class="code-line line-number" line="6">
</span><span class="code-line line-number" line="7"><span class="token comment"># view dmesg information</span>
</span><span class="code-line line-number" line="8">xl <span class="token function">dmesg</span>
</span><span class="code-line line-number" line="9">
</span><span class="code-line line-number" line="10"><span class="token comment"># monitoring domain</span>
</span><span class="code-line line-number" line="11">xl <span class="token function">top</span>
</span><span class="code-line line-number" line="12">xentop
</span><span class="code-line line-number" line="13">xen <span class="token function">top</span>
</span><span class="code-line line-number" line="14">
</span><span class="code-line line-number" line="15"><span class="token comment"># Limit mem Dom0</span>
</span><span class="code-line line-number" line="16">xl mem-set <span class="token number">0</span> <span class="token number">2048</span>
</span><span class="code-line line-number" line="17">
</span><span class="code-line line-number" line="18"><span class="token comment"># Limite cpu (not permanent after boot)</span>
</span><span class="code-line line-number" line="19">xl vcpu-set <span class="token number">0</span> <span class="token number">2</span>
</span><span class="code-line line-number" line="20">
</span><span class="code-line line-number" line="21"><span class="token comment"># manual conf</span>
</span><span class="code-line line-number" line="22"><span class="token function">man</span> xl.conf
</span><span class="code-line line-number" line="23">
</span><span class="code-line line-number" line="24"><span class="token comment"># manual cfg - about guest configuration</span>
</span><span class="code-line line-number" line="25"><span class="token function">man</span> xl.cfg
</span><span class="code-line line-number" line="26">
</span><span class="code-line line-number" line="27"><span class="token comment"># create DomainU - virtual machines</span>
</span><span class="code-line line-number" line="28">xl create /etc/xen/lpic3-pv-guest.cfg
</span><span class="code-line line-number" line="29">
</span><span class="code-line line-number" line="30"><span class="token comment"># create DomainU virtual machine and connect to guest</span>
</span><span class="code-line line-number" line="31">xl create <span class="token parameter variable">-c</span> /etc/xen/lpic3-pv-guest.cfg
</span><span class="code-line line-number" line="32">
</span><span class="code-line line-number" line="33"><span class="token comment"># connect in domain guest</span>
</span><span class="code-line line-number" line="34">xl console <span class="token operator"><</span>id<span class="token operator">>|</span><span class="token operator"><</span>name<span class="token operator">></span> <span class="token punctuation">(</span>press enter<span class="token punctuation">)</span>
</span><span class="code-line line-number" line="35">xl console <span class="token number">1</span>
</span><span class="code-line line-number" line="36">xl console lpic3-pv-guest
</span><span class="code-line line-number" line="37">
</span><span class="code-line line-number" line="38"><span class="token comment">#How do I exit domU "xl console" session</span>
</span><span class="code-line line-number" line="39"><span class="token comment">#Press ctrl+] or if you're using Putty press ctrl+5.</span>
</span><span class="code-line line-number" line="40">
</span><span class="code-line line-number" line="41"><span class="token comment"># Poweroff domain</span>
</span><span class="code-line line-number" line="42">xl <span class="token function">shutdown</span> lpic3-pv-guest
</span><span class="code-line line-number" line="43">
</span><span class="code-line line-number" line="44"><span class="token comment"># destroy domain</span>
</span><span class="code-line line-number" line="45">xl destroy lpic3-pv-guest
</span><span class="code-line line-number" line="46">
</span><span class="code-line line-number" line="47"><span class="token comment"># reboot domain</span>
</span><span class="code-line line-number" line="48">xl <span class="token function">reboot</span> lpic3-pv-guest
</span></code><div onclick="copied(this)" data-code="# view xen information
xl infos
# list Domains
xl list
# view dmesg information
xl dmesg
# monitoring domain
xl top
xentop
xen top
# Limit mem Dom0
xl mem-set 0 2048
# Limite cpu (not permanent after boot)
xl vcpu-set 0 2
# manual conf
man xl.conf
# manual cfg - about guest configuration
man xl.cfg
# create DomainU - virtual machines
xl create /etc/xen/lpic3-pv-guest.cfg
# create DomainU virtual machine and connect to guest
xl create -c /etc/xen/lpic3-pv-guest.cfg
# connect in domain guest
xl console <id>|<name> (press enter)
xl console 1
xl console lpic3-pv-guest
#How do I exit domU "xl console" session
#Press ctrl+] or if you're using Putty press ctrl+5.
# Poweroff domain
xl shutdown lpic3-pv-guest
# destroy domain
xl destroy lpic3-pv-guest
# reboot domain
xl reboot lpic3-pv-guest
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#topic-351.2">back to sub Topic 351.2</a>)</p>
<p align="right">(<a href="#topic-351">back to Topic 351</a>)</p>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-351.3"></a></p>
<h3 id="3513-qemu"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3513-qemu"><span class="octicon octicon-link"></span></a>351.3 QEMU</h3>
<p><strong>Weight:</strong> 4</p>
<p><strong>Description:</strong> Candidates should be able to install, configure, maintain, migrate and troubleshoot QEMU installations.</p>
<p><strong>Key Knowledge Areas:</strong></p>
<ul>
<li>Understand the architecture of QEMU, including KVM, networking and storage</li>
<li>Start QEMU instances from the command line</li>
<li>Manage snapshots using the QEMU monitor</li>
<li>Install the QEMU Guest Agent and VirtIO device drivers</li>
<li>Troubleshoot QEMU installations, including networking and storage</li>
<li>Awareness of important QEMU configuration parameters</li>
</ul>
<h4 id="3513-cited-objects"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3513-cited-objects"><span class="octicon octicon-link"></span></a>351.3 Cited Objects</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">Kernel modules: kvm, kvm-intel and kvm-amd
</span><span class="code-line line-number" line="2">/dev/kvm
</span><span class="code-line line-number" line="3">QEMU monitor
</span><span class="code-line line-number" line="4">qemu
</span><span class="code-line line-number" line="5">qemu-system-x86_64
</span><span class="code-line line-number" line="6"><span class="token function">ip</span>
</span><span class="code-line line-number" line="7">brctl
</span><span class="code-line line-number" line="8">tunctl
</span></code><div onclick="copied(this)" data-code="Kernel modules: kvm, kvm-intel and kvm-amd
/dev/kvm
QEMU monitor
qemu
qemu-system-x86_64
ip
brctl
tunctl
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="3513-important-commands"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3513-important-commands"><span class="octicon octicon-link"></span></a>351.3 Important Commands</h4>
<h5 id="ip"><a class="anchor" aria-hidden="true" tabindex="-1" href="#ip"><span class="octicon octicon-link"></span></a>ip</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># list links</span>
</span><span class="code-line line-number" line="2"><span class="token function">ip</span> <span class="token function">link</span> show
</span></code><div onclick="copied(this)" data-code="# list links
ip link show
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#topic-351.3">back to sub Topic 351.3</a>)</p>
<p align="right">(<a href="#topic-351">back to Topic 351</a>)</p>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-351.4"></a></p>
<h3 id="3514-libvirt-virtual-machine-management"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3514-libvirt-virtual-machine-management"><span class="octicon octicon-link"></span></a>351.4 Libvirt Virtual Machine Management</h3>
<p><strong>Weight:</strong> 9</p>
<p><strong>Description:</strong> Candidates should be able to manage virtualization hosts and virtual machines (‘libvirt domains’) using libvirt and related tools.</p>
<p><strong>Key Knowledge Areas:</strong></p>
<ul>
<li>Understand the architecture of libvirt</li>
<li>Manage libvirt connections and nodes</li>
<li>Create and manage QEMU and Xen domains, including snapshots</li>
<li>Manage and analyze resource consumption of domains</li>
<li>Create and manage storage pools and volumes</li>
<li>Create and manage virtual networks</li>
<li>Migrate domains between nodes</li>
<li>Understand how libvirt interacts with Xen and QEMU</li>
<li>Understand how libvirt interacts with network services such as dnsmasq and radvd</li>
<li>Understand libvirt XML configuration files</li>
<li>Awareness of virtlogd and virtlockd</li>
</ul>
<h4 id="3514-cited-objects"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3514-cited-objects"><span class="octicon octicon-link"></span></a>351.4 Cited Objects</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">libvirtd
</span><span class="code-line line-number" line="2">/etc/libvirt/
</span><span class="code-line line-number" line="3"><span class="token function">virsh</span> <span class="token punctuation">(</span>including relevant subcommands<span class="token punctuation">)</span>
</span></code><div onclick="copied(this)" data-code="libvirtd
/etc/libvirt/
virsh (including relevant subcommands)
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="3514-important-commands"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3514-important-commands"><span class="octicon octicon-link"></span></a>351.4 Important Commands</h4>
<h5 id="foo"><a class="anchor" aria-hidden="true" tabindex="-1" href="#foo"><span class="octicon octicon-link"></span></a>foo</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">foo
</span></code><div onclick="copied(this)" data-code="foo
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#topic-351.4">back to sub Topic 351.4</a>)</p>
<p align="right">(<a href="#topic-351">back to Topic 351</a>)</p>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-351.5"></a></p>
<h3 id="3515-virtual-machine-disk-image-management"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3515-virtual-machine-disk-image-management"><span class="octicon octicon-link"></span></a>351.5 Virtual Machine Disk Image Management</h3>
<p><strong>Weight:</strong> 3</p>
<p><strong>Description:</strong> Candidates should be able to manage virtual machines disk images. This includes converting disk images between various formats and hypervisors and accessing data stored within an image.</p>
<p><strong>Key Knowledge Areas:</strong></p>
<ul>
<li>Understand features of various virtual disk image formats, such as raw images, qcow2 and VMDK</li>
<li>Manage virtual machine disk images using qemu-img</li>
<li>Mount partitions and access files contained in virtual machine disk images using libguestfish</li>
<li>Copy physical disk content to a virtual machine disk image</li>
<li>Migrate disk content between various virtual machine disk image formats</li>
<li>Awareness of Open Virtualization Format (OVF)</li>
</ul>
<h4 id="3515-cited-objects"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3515-cited-objects"><span class="octicon octicon-link"></span></a>351.5 Cited Objects</h4>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">qemu-img
</span><span class="code-line line-number" line="2">guestfish <span class="token punctuation">(</span>including relevant subcommands<span class="token punctuation">)</span>
</span><span class="code-line line-number" line="3">guestmount
</span><span class="code-line line-number" line="4">guestumount
</span><span class="code-line line-number" line="5">virt-cat
</span><span class="code-line line-number" line="6">virt-copy-in
</span><span class="code-line line-number" line="7">virt-copy-out
</span><span class="code-line line-number" line="8">virt-diff
</span><span class="code-line line-number" line="9">virt-inspector
</span><span class="code-line line-number" line="10">virt-filesystems
</span><span class="code-line line-number" line="11">virt-rescue
</span><span class="code-line line-number" line="12">virt-df
</span><span class="code-line line-number" line="13">virt-resize
</span><span class="code-line line-number" line="14">virt-sparsify
</span><span class="code-line line-number" line="15">virt-p2v
</span><span class="code-line line-number" line="16">virt-p2v-make-disk
</span><span class="code-line line-number" line="17">virt-v2v
</span><span class="code-line line-number" line="18">virt-sysprep
</span></code><div onclick="copied(this)" data-code="qemu-img
guestfish (including relevant subcommands)
guestmount
guestumount
virt-cat
virt-copy-in
virt-copy-out
virt-diff
virt-inspector
virt-filesystems
virt-rescue
virt-df
virt-resize
virt-sparsify
virt-p2v
virt-p2v-make-disk
virt-v2v
virt-sysprep
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<h4 id="3515-important-commands"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3515-important-commands"><span class="octicon octicon-link"></span></a>351.5 Important Commands</h4>
<h5 id="foo-1"><a class="anchor" aria-hidden="true" tabindex="-1" href="#foo-1"><span class="octicon octicon-link"></span></a>foo</h5>
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1">foo
</span></code><div onclick="copied(this)" data-code="foo
" class="copied"><svg class="octicon-copy" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg><svg class="octicon-check" aria-hidden="true" viewBox="0 0 16 16" fill="currentColor" height="12" width="12"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></div></pre>
<p align="right">(<a href="#topic-351.5">back to sub Topic 351.5</a>)</p>
<p align="right">(<a href="#topic-351">back to Topic 351</a>)</p>
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<hr>
<p><a name="topic-352"></a></p>
<h2 id="topic-352-container-virtualization"><a class="anchor" aria-hidden="true" tabindex="-1" href="#topic-352-container-virtualization"><span class="octicon octicon-link"></span></a>Topic 352: Container Virtualization</h2>
<hr>
<p><a name="topic-352.1"></a></p>
<h3 id="3521--container-virtualization-concepts"><a class="anchor" aria-hidden="true" tabindex="-1" href="#3521--container-virtualization-concepts"><span class="octicon octicon-link"></span></a>352.1 Container Virtualization Concepts</h3>
<p><strong>Weight:</strong> 7</p>
<p><strong>Description:</strong> Candidates should understand the concept of container virtualization. This includes understanding the Linux components used to implement container virtualization as well as using standard Linux tools to troubleshoot these components.</p>
<p><strong>Key Knowledge Areas:</strong></p>