From 789100b7cac6bdc6a5147031415b229edec2b905 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 11 Jun 2019 17:59:04 +0100 Subject: [PATCH] Add tech introductions. --- 2019-tech-introductions/.gitignore | 2 + 2019-tech-introductions/1000-introduction.html | 19 + .../2000-nbdkit-universal-connector.html | 8 + .../2100-nbdkit-universal-connector-2.html | 8 + .../2200-nbdkit-connect-directly.html | 8 + .../2300-custom-plugins-are-easy-to-write.term | 14 + 2019-tech-introductions/2400-nbdkit-layers.html | 15 + 2019-tech-introductions/4000-libnbd-why.html | 13 + 2019-tech-introductions/4010-libnbd-why-2.html | 16 + .../4100-nbd-not-easy-or-efficient.html | 9 + .../4110-nbd-not-easy-or-efficient-2.html | 23 + .../4120-nbd-not-easy-or-efficient-3.html | 35 ++ 2019-tech-introductions/4200-libnbd.html | 14 + 2019-tech-introductions/4300-libnbd-example.html | 23 + 2019-tech-introductions/4400-nbdsh-example.term | 13 + .../6000-v2v-warm-migrations.html | 6 + 2019-tech-introductions/6100-snapshots.html | 7 + 2019-tech-introductions/6200-changed-blocks.html | 7 + 2019-tech-introductions/6300-todo.html | 45 ++ .../8000-kvm-to-kvm-introduction.html | 11 + 2019-tech-introductions/8100-reuse-the-tools.html | 12 + 2019-tech-introductions/bashrc | 19 + 2019-tech-introductions/code.js | 67 +++ 2019-tech-introductions/custom.sh | 13 + 2019-tech-introductions/functions | 43 ++ 2019-tech-introductions/restore | 5 + 2019-tech-introductions/run | 22 + 2019-tech-introductions/style.css | 243 +++++++++ 2019-tech-introductions/universal-connector-1.svg | 201 ++++++++ 2019-tech-introductions/universal-connector-2.svg | 417 +++++++++++++++ 2019-tech-introductions/universal-connector-3.svg | 561 +++++++++++++++++++++ 2019-tech-introductions/warm-migrations-2.svg | 269 ++++++++++ 2019-tech-introductions/warm-migrations.svg | 225 +++++++++ 33 files changed, 2393 insertions(+) create mode 100644 2019-tech-introductions/.gitignore create mode 100644 2019-tech-introductions/1000-introduction.html create mode 100644 2019-tech-introductions/2000-nbdkit-universal-connector.html create mode 100644 2019-tech-introductions/2100-nbdkit-universal-connector-2.html create mode 100644 2019-tech-introductions/2200-nbdkit-connect-directly.html create mode 100755 2019-tech-introductions/2300-custom-plugins-are-easy-to-write.term create mode 100644 2019-tech-introductions/2400-nbdkit-layers.html create mode 100644 2019-tech-introductions/4000-libnbd-why.html create mode 100644 2019-tech-introductions/4010-libnbd-why-2.html create mode 100644 2019-tech-introductions/4100-nbd-not-easy-or-efficient.html create mode 100644 2019-tech-introductions/4110-nbd-not-easy-or-efficient-2.html create mode 100644 2019-tech-introductions/4120-nbd-not-easy-or-efficient-3.html create mode 100644 2019-tech-introductions/4200-libnbd.html create mode 100644 2019-tech-introductions/4300-libnbd-example.html create mode 100755 2019-tech-introductions/4400-nbdsh-example.term create mode 100644 2019-tech-introductions/6000-v2v-warm-migrations.html create mode 100644 2019-tech-introductions/6100-snapshots.html create mode 100644 2019-tech-introductions/6200-changed-blocks.html create mode 100644 2019-tech-introductions/6300-todo.html create mode 100644 2019-tech-introductions/8000-kvm-to-kvm-introduction.html create mode 100644 2019-tech-introductions/8100-reuse-the-tools.html create mode 100644 2019-tech-introductions/bashrc create mode 100644 2019-tech-introductions/code.js create mode 100755 2019-tech-introductions/custom.sh create mode 100644 2019-tech-introductions/functions create mode 100755 2019-tech-introductions/restore create mode 100755 2019-tech-introductions/run create mode 100644 2019-tech-introductions/style.css create mode 100644 2019-tech-introductions/universal-connector-1.svg create mode 100644 2019-tech-introductions/universal-connector-2.svg create mode 100644 2019-tech-introductions/universal-connector-3.svg create mode 100644 2019-tech-introductions/warm-migrations-2.svg create mode 100644 2019-tech-introductions/warm-migrations.svg diff --git a/2019-tech-introductions/.gitignore b/2019-tech-introductions/.gitignore new file mode 100644 index 0000000..ceb0adb --- /dev/null +++ b/2019-tech-introductions/.gitignore @@ -0,0 +1,2 @@ +bindings +history diff --git a/2019-tech-introductions/1000-introduction.html b/2019-tech-introductions/1000-introduction.html new file mode 100644 index 0000000..692a6e5 --- /dev/null +++ b/2019-tech-introductions/1000-introduction.html @@ -0,0 +1,19 @@ + + + + +
+

+ Introduction to nbdkit, libnbd, IMS, KVM to KVM migrations +

+ +

+ Richard W.M. Jones
+ rjones @ redhat.com +

+ +

+ +

+
+ diff --git a/2019-tech-introductions/2000-nbdkit-universal-connector.html b/2019-tech-introductions/2000-nbdkit-universal-connector.html new file mode 100644 index 0000000..fee7f77 --- /dev/null +++ b/2019-tech-introductions/2000-nbdkit-universal-connector.html @@ -0,0 +1,8 @@ + + + + +

The “universal connector”

+ + diff --git a/2019-tech-introductions/2100-nbdkit-universal-connector-2.html b/2019-tech-introductions/2100-nbdkit-universal-connector-2.html new file mode 100644 index 0000000..b5b1955 --- /dev/null +++ b/2019-tech-introductions/2100-nbdkit-universal-connector-2.html @@ -0,0 +1,8 @@ + + + + +

The “universal connector”

+ + diff --git a/2019-tech-introductions/2200-nbdkit-connect-directly.html b/2019-tech-introductions/2200-nbdkit-connect-directly.html new file mode 100644 index 0000000..122369d --- /dev/null +++ b/2019-tech-introductions/2200-nbdkit-connect-directly.html @@ -0,0 +1,8 @@ + + + + +

Why not connect directly?

+ + diff --git a/2019-tech-introductions/2300-custom-plugins-are-easy-to-write.term b/2019-tech-introductions/2300-custom-plugins-are-easy-to-write.term new file mode 100755 index 0000000..361110c --- /dev/null +++ b/2019-tech-introductions/2300-custom-plugins-are-easy-to-write.term @@ -0,0 +1,14 @@ +#!/bin/bash + +source functions + +# Title. +export title="Custom plugins are easy to write" + +# History. +remember 'cat custom.sh' +remember 'nbdkit sh custom.sh' +remember "qemu-io -r -f raw nbd://localhost -c 'r -v 0 512'" + +./restore +terminal diff --git a/2019-tech-introductions/2400-nbdkit-layers.html b/2019-tech-introductions/2400-nbdkit-layers.html new file mode 100644 index 0000000..ad8c1ae --- /dev/null +++ b/2019-tech-introductions/2400-nbdkit-layers.html @@ -0,0 +1,15 @@ + + + + +

Filters

+ + diff --git a/2019-tech-introductions/4000-libnbd-why.html b/2019-tech-introductions/4000-libnbd-why.html new file mode 100644 index 0000000..2ade029 --- /dev/null +++ b/2019-tech-introductions/4000-libnbd-why.html @@ -0,0 +1,13 @@ + + + + +

libnbd — Something was missing

+ + diff --git a/2019-tech-introductions/4010-libnbd-why-2.html b/2019-tech-introductions/4010-libnbd-why-2.html new file mode 100644 index 0000000..a517e2b --- /dev/null +++ b/2019-tech-introductions/4010-libnbd-why-2.html @@ -0,0 +1,16 @@ + + + + +

libnbd — We need a client library

+ + diff --git a/2019-tech-introductions/4100-nbd-not-easy-or-efficient.html b/2019-tech-introductions/4100-nbd-not-easy-or-efficient.html new file mode 100644 index 0000000..6281855 --- /dev/null +++ b/2019-tech-introductions/4100-nbd-not-easy-or-efficient.html @@ -0,0 +1,9 @@ + + + + +

NBD is easy to implement

+ +

+... but it's hard to get good performance +

diff --git a/2019-tech-introductions/4110-nbd-not-easy-or-efficient-2.html b/2019-tech-introductions/4110-nbd-not-easy-or-efficient-2.html new file mode 100644 index 0000000..73a96e8 --- /dev/null +++ b/2019-tech-introductions/4110-nbd-not-easy-or-efficient-2.html @@ -0,0 +1,23 @@ + + + + +

NBD is easy to implement

+ +
+$ time nbdkit memory 100M \
+    --run 'examples/threaded-reads-and-writes localhost 10809'
+
+ +

+In three weeks: +

+ +
    +
  1. +50% faster? +
  2. +twice as fast? +
  3. +15 times faster? +
diff --git a/2019-tech-introductions/4120-nbd-not-easy-or-efficient-3.html b/2019-tech-introductions/4120-nbd-not-easy-or-efficient-3.html new file mode 100644 index 0000000..79c88bd --- /dev/null +++ b/2019-tech-introductions/4120-nbd-not-easy-or-efficient-3.html @@ -0,0 +1,35 @@ + + + + +

NBD is easy to implement

+ +

+It's hard to get good performance +

+ +
+$ time nbdkit memory 100M \
+    --run 'examples/threaded-reads-and-writes localhost 10809'
+
+ + + + + + + + + + + + + + + + +
+May 21st 2019 + 587 seconds
+Jun 11th 2019 + 38 seconds
Ratio 15 times faster
diff --git a/2019-tech-introductions/4200-libnbd.html b/2019-tech-introductions/4200-libnbd.html new file mode 100644 index 0000000..a2c2a41 --- /dev/null +++ b/2019-tech-introductions/4200-libnbd.html @@ -0,0 +1,14 @@ + + + + +

libnbd is ...

+ + diff --git a/2019-tech-introductions/4300-libnbd-example.html b/2019-tech-introductions/4300-libnbd-example.html new file mode 100644 index 0000000..d3d8db0 --- /dev/null +++ b/2019-tech-introductions/4300-libnbd-example.html @@ -0,0 +1,23 @@ + + + + +

libnbd is easy to use

+ +
+struct nbd_handle *nbd;
+
+nbd = nbd_create ();
+
+nbd_connect_unix (nbd, "/tmp/socket");
+
+nbd_pread (nbd, buf, sizeof buf, 0, 0);
+
+nbd_close (nbd);
+
+ +

+... also a low level, +high performance, +asynchronous (AIO) API +

diff --git a/2019-tech-introductions/4400-nbdsh-example.term b/2019-tech-introductions/4400-nbdsh-example.term new file mode 100755 index 0000000..8be607b --- /dev/null +++ b/2019-tech-introductions/4400-nbdsh-example.term @@ -0,0 +1,13 @@ +#!/bin/bash + +source functions + +# Title. +export title="nbdsh example" + +# History. +remember 'nbdkit memory 1M' +remember "nbdsh --connect nbd://localhost -c 'print(h.get_size())'" + +./restore +terminal diff --git a/2019-tech-introductions/6000-v2v-warm-migrations.html b/2019-tech-introductions/6000-v2v-warm-migrations.html new file mode 100644 index 0000000..006bf03 --- /dev/null +++ b/2019-tech-introductions/6000-v2v-warm-migrations.html @@ -0,0 +1,6 @@ + + + + +

virt-v2v warm migrations

+ diff --git a/2019-tech-introductions/6100-snapshots.html b/2019-tech-introductions/6100-snapshots.html new file mode 100644 index 0000000..e6e6146 --- /dev/null +++ b/2019-tech-introductions/6100-snapshots.html @@ -0,0 +1,7 @@ + + + + +

virt-v2v warm migrations

+ + diff --git a/2019-tech-introductions/6200-changed-blocks.html b/2019-tech-introductions/6200-changed-blocks.html new file mode 100644 index 0000000..2ccc452 --- /dev/null +++ b/2019-tech-introductions/6200-changed-blocks.html @@ -0,0 +1,7 @@ + + + + +

virt-v2v warm migrations

+ + diff --git a/2019-tech-introductions/6300-todo.html b/2019-tech-introductions/6300-todo.html new file mode 100644 index 0000000..a7b8325 --- /dev/null +++ b/2019-tech-introductions/6300-todo.html @@ -0,0 +1,45 @@ + + + + +

virt-v2v warm migrations — to do

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
nbdkit +VDDK extents, CBT, +and some other minor features +
libnbd +lots of work +
libguestfs +extra tool to handle snapshotting and +copying +
virt-v2v +unmodified! +
user interface +lots of work +
diff --git a/2019-tech-introductions/8000-kvm-to-kvm-introduction.html b/2019-tech-introductions/8000-kvm-to-kvm-introduction.html new file mode 100644 index 0000000..2f03c0a --- /dev/null +++ b/2019-tech-introductions/8000-kvm-to-kvm-introduction.html @@ -0,0 +1,11 @@ + + + + +

KVM to KVM migrations

+ + + + + +
OSP 10 OSP 16
RHV CNV (KubeVirt)
OSP CNV
diff --git a/2019-tech-introductions/8100-reuse-the-tools.html b/2019-tech-introductions/8100-reuse-the-tools.html new file mode 100644 index 0000000..2da3cbe --- /dev/null +++ b/2019-tech-introductions/8100-reuse-the-tools.html @@ -0,0 +1,12 @@ + + + + +

Not virt-v2v, but reuse the tools

+ + diff --git a/2019-tech-introductions/bashrc b/2019-tech-introductions/bashrc new file mode 100644 index 0000000..f526961 --- /dev/null +++ b/2019-tech-introductions/bashrc @@ -0,0 +1,19 @@ +# -*- shell-script -*- + +# Colour ls. +if [ -f /etc/profile.d/colorls.sh ]; then . /etc/profile.d/colorls.sh; fi + +# Fancy prompt colours (see +# https://wiki.archlinux.org/index.php/Color_Bash_Prompt) +promptcol='\e[0;32m' ;# colour for the prompt +commandcol='\e[1;31m' ;# colour for the typed command +outputcol='\e[0m' ;# colour for command output + +export PS1="\n\[$promptcol\]\$ \[$commandcol\]" + +trap 'echo -ne "$outputcol"' DEBUG + +# Load key bindings (if any). +bind -f $talkdir/bindings + +echo $title diff --git a/2019-tech-introductions/code.js b/2019-tech-introductions/code.js new file mode 100644 index 0000000..d167d3a --- /dev/null +++ b/2019-tech-introductions/code.js @@ -0,0 +1,67 @@ +function plugins () +{ + document.write ("\ +
\ +

plugins available in nbdkit 1.12

\ + \ +
\ +"); +} + +function filters (layer) +{ + document.write ("\ +
\ +

filters available in nbdkit 1.12

\ + \ +
\ +"); +} diff --git a/2019-tech-introductions/custom.sh b/2019-tech-introductions/custom.sh new file mode 100755 index 0000000..48bdcb4 --- /dev/null +++ b/2019-tech-introductions/custom.sh @@ -0,0 +1,13 @@ +#!/bin/bash - + +case "$1" in + get_size) + echo 1M ;; + pread) + for i in `seq 1 $(( $3/16 ))`; do + echo -ne 'HELLO BEIJING __' + done + ;; + *) + exit 2;; +esac diff --git a/2019-tech-introductions/functions b/2019-tech-introductions/functions new file mode 100644 index 0000000..d5347e7 --- /dev/null +++ b/2019-tech-introductions/functions @@ -0,0 +1,43 @@ +# -*- shell-script -*- +# This creates some standard functions. See also $talkdir/bashrc +# which runs in the same bash context as the terminal. + +# Place any local environment variables and settings in "local". +if [ -f local ]; then source local; fi + +# Environment variables. +export HISTFILE=$talkdir/history +export PATH=$talkdir:$PATH +export EDITOR="emacs -nw" + +# Ditch libvirt for stability :-( +export LIBGUESTFS_BACKEND=direct + +# remember +# +# This function does two things: (1) It adds the command and arguments +# to the shell history, so that commands can be recalled using up +# arrow or reverse search. (2) It makes a function key recall the +# command. The first command is assigned to F2, the second to F3 and +# so forth. + +rm -f $HISTFILE +touch $HISTFILE +rm -f $talkdir/bindings +touch bindings + +fnum=2 +keys=(- OP OQ OR OS '[15~' '[17~' '[18~' '[19~' '[20~' '[21~') + +remember () +{ + echo "$@" >> $HISTFILE + echo \"\\e${keys[$fnum]}\":\"\\C-k \\C-u"$@"\" >> $talkdir/bindings + ((fnum++)) +} + +terminal () +{ + chmod -w $HISTFILE + /bin/bash --rcfile $talkdir/bashrc "$@" +} diff --git a/2019-tech-introductions/restore b/2019-tech-introductions/restore new file mode 100755 index 0000000..3976ea5 --- /dev/null +++ b/2019-tech-introductions/restore @@ -0,0 +1,5 @@ +#!/bin/bash - + +killall nbdkit >&/dev/null + +exit 0 diff --git a/2019-tech-introductions/run b/2019-tech-introductions/run new file mode 100755 index 0000000..39d43f6 --- /dev/null +++ b/2019-tech-introductions/run @@ -0,0 +1,22 @@ +#!/bin/bash - +# Run the talk. + +set -e + +# Avoid GNOME keyring stupidity +export GNOME_KEYRING_CONTROL= +export GNOME_KEYRING_PID= + +# No proxy. +unset http_proxy +unset https_proxy +unset ftp_proxy + +# Remove any old nbdkit processes etc. +./restore + +# Run techtalk. +techtalk-pse +#~/d/techtalk-pse/techtalk-pse + +./restore diff --git a/2019-tech-introductions/style.css b/2019-tech-introductions/style.css new file mode 100644 index 0000000..35588a8 --- /dev/null +++ b/2019-tech-introductions/style.css @@ -0,0 +1,243 @@ +/* Red Hat red is rgb(204,0,0). */ + +body { + background: url(redhat.png) no-repeat; + background-position: 98% 0; + /* font-size: 28pt; */ /* For max */ + font-size: 20pt; /* For 1024x768 */ + /* font-family: liberation, helvetica; */ + font-family: helvetica; + + /* Can be used to scale the whole document. */ + /*transform: translate(-10%,-10%) scale(0.75,0.75);*/ +} + +body td, body th { /* why?? */ + font-size: 24pt; + padding-bottom: 8px; +} + +h1 { + color: rgb(204,0,0); + /*font-size: 48px;*/ + font-size: 40px; + top: 8; + left: 0; + border-bottom: 2px solid rgb(204,0,0); +} + +h2 { + color: rgb(204,0,0); + font-size: 32px; + font-style: italic; + border-bottom: 2px solid rgb(204,0,0); +} + +b { + color: rgb(204,0,0); +} + +/* Title page. */ +div#titlepage { + margin-top: 100px; + width: 80%; + margin-left: 10%; +} + +div#titlepage p.title { + color: rgb(204,0,0); + font-weight: bold; + font-size: 48px; + text-align: left; +} + +div#titlepage p.author { + font-size: 36px; + text-align: left; +} + +div#titlepage p.abstract { + font-size: 28px; + text-align: left; +} + +/* Code */ +pre.code { + margin-left: 1em; + background: #eee; +} + +code { + color: rgb(204,0,0); +} + +/* Bullet points */ +li { + padding-bottom: 16px; +} + +/* Plugins box. */ +div.plugins { + background: #f8f8ff; + border: 1px solid rgb(204,0,0); + border-radius: 15px; + margin-left: auto; + margin-right: auto; + width: 800px; + height: 400px; + /* Position relative is needed so that items may be + positioned inside. */ + position: relative; +} + +div.plugins p#caption { + position: absolute; + bottom: -5px; right: 5px; + color: rgb(204,0,0); + text-align: right; + font-size: 16px; + font-weight: bold; +} + +div.plugins ul { + position: absolute; + top: 10%; + width: 700px; + height: 380px; + column-count: 4; + list-style-type: none; + margin: 0; +} + +div.plugins ul li { + padding: 0px; + margin: 5px; +} + +div.plugins ul li.highlighted { + border: 1px solid rgb(204,0,0); + background: #fff; + padding-left: 10px; + color: rgb(204,0,0); + border-radius: 20px; + font-weight: bold; +} + +/* Filters box. */ +div.filters { + background: #f8fff8; + border: 1px solid rgb(204,0,0); + border-radius: 15px; + margin-left: auto; + margin-right: auto; + width: 800px; + height: 200px; + /* Position relative is needed so that items may be + positioned inside. */ + position: relative; +} + +div.filters p.filtercaption { + position: absolute; + bottom: -5px; right: 5px; + color: rgb(204,0,0); + text-align: right; + font-size: 16px; + font-weight: bold; +} + +div.filters ul { + position: absolute; + top: 10%; + width: 700px; + height: 180px; + column-count: 4; + list-style-type: none; + margin: 0; +} + +div.filters ul li { + padding: 0px; + margin: 5px; +} + +div.filters ul li.highlighted { + border: 1px solid rgb(204,0,0); + background: #fff; + padding-left: 10px; + color: rgb(204,0,0); + border-radius: 20px; + font-weight: bold; +} + +/* For images which must be centered on the page. */ +div.allcenter { + display: flex; + justify-content: center; + align-items: center; + height: 50vw; +} + +div.all-center img { +} + +/* Outlined text. */ +.outline { + text-shadow: 2px 2px 0 rgb(204,0,0), + -2px 2px 0 rgb(204,0,0), + 2px -2px 0 rgb(204,0,0), + -2px -2px 0 rgb(204,0,0), + 0px 2px 0 rgb(204,0,0), + 0px -2px 0 rgb(204,0,0), + -2px 0px 0 rgb(204,0,0), + 2px 0px 0 rgb(204,0,0), + 4px 4px 0 rgb(204,0,0), + -4px 4px 0 rgb(204,0,0), + 4px -4px 0 rgb(204,0,0), + -4px -4px 0 rgb(204,0,0), + + 0px 4px 0 rgb(204,0,0), + 0px -4px 0 rgb(204,0,0), + -4px 0px 0 rgb(204,0,0), + 4px 0px 0 rgb(204,0,0), + 2px 4px 0 rgb(204,0,0), + -2px 4px 0 rgb(204,0,0), + 2px -4px 0 rgb(204,0,0), + -2px -4px 0 rgb(204,0,0), + 4px 2px 0 rgb(204,0,0), + -4px 2px 0 rgb(204,0,0), + 4px -2px 0 rgb(204,0,0), + -4px -2px 0 rgb(204,0,0), + + 4px 4px 0 rgb(255,128,128), + -4px 4px 0 rgb(255,128,128), + 4px -4px 0 rgb(255,128,128), + -4px -4px 0 rgb(255,128,128), + 0px 4px 0 rgb(255,128,128), + 0px -4px 0 rgb(255,128,128), + -4px 0px 0 rgb(255,128,128), + 4px 0px 0 rgb(255,128,128), + 8px 8px 0 rgb(255,128,128), + -8px 8px 0 rgb(255,128,128), + 8px -8px 0 rgb(255,128,128), + -8px -8px 0 rgb(255,128,128), + + 0px 8px 0 rgb(255,128,128), + 0px -8px 0 rgb(255,128,128), + -8px 0px 0 rgb(255,128,128), + 8px 0px 0 rgb(255,128,128), + 4px 8px 0 rgb(255,128,128), + -4px 8px 0 rgb(255,128,128), + 4px -8px 0 rgb(255,128,128), + -4px -8px 0 rgb(255,128,128), + 8px 4px 0 rgb(255,128,128), + -8px 4px 0 rgb(255,128,128), + 8px -4px 0 rgb(255,128,128), + -8px -4px 0 rgb(255,128,128); +} + +/* Warning symbol. */ +span.warning { + background-color: yellow; + font-weight: bold; +} diff --git a/2019-tech-introductions/universal-connector-1.svg b/2019-tech-introductions/universal-connector-1.svg new file mode 100644 index 0000000..fac6a67 --- /dev/null +++ b/2019-tech-introductions/universal-connector-1.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + qemu + + ? + + + httpimageiosshvddk + + + + + diff --git a/2019-tech-introductions/universal-connector-2.svg b/2019-tech-introductions/universal-connector-2.svg new file mode 100644 index 0000000..27b2c35 --- /dev/null +++ b/2019-tech-introductions/universal-connector-2.svg @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + qemu + + nbdkit + + + httpimageiosshvddk + + + + nbd client + + + diff --git a/2019-tech-introductions/universal-connector-3.svg b/2019-tech-introductions/universal-connector-3.svg new file mode 100644 index 0000000..8151f45 --- /dev/null +++ b/2019-tech-introductions/universal-connector-3.svg @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + qemu + + nbdkit + + + httpimageiosshvddk + + + + nbd client + + + + + + + http client + + diff --git a/2019-tech-introductions/warm-migrations-2.svg b/2019-tech-introductions/warm-migrations-2.svg new file mode 100644 index 0000000..b88ea99 --- /dev/null +++ b/2019-tech-introductions/warm-migrations-2.svg @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + VMware + + KVM + RHV, OSP, etc. + + + + + + + snapshots + changed blocks + + + diff --git a/2019-tech-introductions/warm-migrations.svg b/2019-tech-introductions/warm-migrations.svg new file mode 100644 index 0000000..99eee10 --- /dev/null +++ b/2019-tech-introductions/warm-migrations.svg @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + VMware + + KVM + RHV, OSP, etc. + + + + + + + snapshots + + -- 1.8.3.1