Take new targets and sources into archive.
[obnox/slides/2015-05-sambaXP-multi-channel.git] / content.wiki
1 %
2 % colors:
3 %  _blue_text text_
4 %  _red_text text_
5 %
6
7
8 ==== Samba... ====
9
10 <[center]
11 <<<samba-kisses-better-selection.jpg,height=.8\textheight>>>
12 [center]>
13
14
15 ==== Short History ====
16
17 * 1.9.17: 1996/08
18 * 2.0: 1999/01: domain-member, +SWAT
19 * 2.2: 2001/04: NT4-DC
20 * 3.0: 2003/09: AD-member, Samba4 project started
21 * 3.2: 2008/07: GPLv3, experimental clustering
22 * 3.3: 2009/01: clustering
23 * 3.4: 2009/07: merged S3+S4 code
24 * 3.5: 2010/03: experimental SMB 2.0
25 * 3.6: 2011/09: SMB 2.0
26 * 4.0: 2012/12: AD/DC, SMB 2.0 durable handles, 2.1, 3.0
27 * 4.1: 2013/10: stability
28 * 4.2: 2015/03: AD trusts, leases, performance, scalability, CTDB
29 %%%CTDB included
30
31 %%% ==== Release Stream ====
32 %%% 
33 %%% 
34 %%% <[center]
35 %%% <<<samba-release-stream_exp.png,width=.8\textwidth>>>
36 %%% [center]>
37
38 %%% ==== Release Planning ====
39 %%% 
40 %%% <[center]
41 %%% \large
42 %%% @https://wiki.samba.org/index.php/Samba\_Release\_Planning@
43 %%% [center]>
44
45 ==== Samba Team ====
46
47 <[center]
48 <<<samba-team-20141011.png,height=.9\textheight>>>
49 [center]>
50
51 ==== Samba Team ====
52
53 <[center]
54 <<<samba-team-20141011-colorized.png,height=.9\textheight>>>
55 [center]>
56
57
58 %%% ==== ====[plain]
59 %%% 
60 %%% %%\transdissolve
61 %%% 
62 %%% <[center]
63 %%% <[columns]
64 %%% [[[.3\textwidth]]]
65 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
66 %%% [[[.3\textwidth]]]
67 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
68 %%% [[[.3\textwidth]]]
69 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
70 %%% [columns]>
71 %%% [center]>
72
73
74
75 ==== Samba File Server Topics / Challenges ====
76
77 # performance: scalable file server
78 #* scale-up: exhaust powerful boxes
79 #* scale-out: flexible all-active clusters
80 #* scale-down: perform well on low-end boxes
81 # interop: multi-protocol access (nfs, afp, ...)
82 # server workloads / SMB features
83 #* tune for: small \# of connections, threaded applications
84 #* Hyper-V, ...
85 #* SMB3 (clustering, RDMA, ...)
86 # special file systems support (gluster, ceph, gpfs, btrfs, ...)
87 # cloud / openstack?...
88 %* (samba $\leftrightarrow$ cifs.ko alternative to nfs?...)
89
90
91 %% ==== Samba File Serving Topics ====
92 %% 
93 %% * Performance
94 %% * Clustering (CTDB)
95 %% * SMB features (SMB3...)
96 %% * Interop (protocols, NFS, AFP, ...)
97 %% * special file systems support (gluster, ceph, gpfs, btrfs...)
98 %% * ...
99
100 %%==== Other Samba Topics ====
101 %%
102 %%* Auth/Domain Member
103 %%* RPC server
104 %%* AD Sever
105 %%* ...
106
107 %%% ==== Performance ====[plain]
108 %%% 
109 %%% %%\transdissolve
110 %%% 
111 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
112 %%% 
113 %%% 
114 %%% ==== Performance - low end systems ====
115 %%% 
116 %%% 
117 %%% <[block]{Reduction of CPU usage for low profile platforms like arm (SMB2)}
118 %%% * Samba 4.0:
119 %%% ** didn't saturate 1G nic (arm), CPU 100\%
120 %%% * reduced memory allocations
121 %%% * instrument SMB 2.1 multi-credit / large MTU
122 %%% * Samba 4.2:
123 %%% ** saturates 1G nic (arm), CPU $<$ 100\%
124 %%% * ==> continuing
125 %%% [block]>
126 %%% 
127 %%% ==== Performance - DB performance ====
128 %%% 
129 %%% <[block]{TDB}
130 %%% * trivial database
131 %%% * used for IPC (smbd processes)
132 %%% * cluster (CTDB): local copies
133 %%% [block]>
134 %%% 
135 %%% <[block]{hot databases}
136 %%% * @locking.tdb@ (open files)
137 %%% * @brlock.tdb@ (byte range locks)
138 %%% * @notify\_index.tdb@ (for change notify)
139 %%% [block]>
140 %%% 
141 %%% ==== Performance - DB performance ====
142 %%% 
143 %%% <[block]{problem 1}
144 %%% * fcntl byte range locks for record locks
145 %%% * contention via single kernel spinlock
146 %%% [block]>
147 %%% 
148 %%% <[block]{solution}
149 %%% * alternative to fcntl: pthread robust mutexes
150 %%% * ==> massive speedup
151 %%% * ==> included in TDB 1.3.1,  Samba 4.2
152 %%% [block]>
153 %%% 
154 %%% ==== Performance - DB performance ====
155 %%% 
156 %%% <[block]{problem 2}
157 %%% * freelist:
158 %%% ** single chain, contended (@locking.tdb@)
159 %%% ** gets fragmented (singly linked)
160 %%% * especially a problem in ctdb-cluster: vacuuming
161 %%% [block]>
162 %%% 
163 %%% <[block]{improvements}
164 %%% * make use of small per-record freelists (dead records)
165 %%% * add automatic defragmentation upon traversal
166 %%% * ==> included in TDB 1.3.1, Samba 4.2
167 %%% [block]>
168 %%% 
169 %%% ==== Performance - DB performance ====
170 %%% <[block]{problem 3}
171 %%% * change notify not scalable
172 %%% [block]>
173 %%% 
174 %%% <[block]{first improvement}
175 %%% * restructured @notify.tdb@ to
176 %%% ** global @notify\_index.tdb@ and
177 %%% ** local @notify.tdb@
178 %%% ** ==> better but still not good enough for some workloads
179 %%% [block]>
180 %%% 
181 %%% <[block]{next steps}
182 %%% * replace DB-approach by new scalable, async notify daemon using messaging
183 %%% * some false positives do not harm
184 %%% * ==> TODO
185 %%% [block]>
186 %%% 
187 %%% 
188 %%% ==== Performance - scaling ====
189 %%% 
190 %%% <[block]{parellelism}
191 %%% * samba is multi-process:
192 %%% ** smbd child process $\leftrightarrow$ TCP connection
193 %%% ** event-loop in one process
194 %%% * within a smbd process:
195 %%% ** pthread-pool jobs for potentially blocking syscalls
196 %%% ** ==> parallelism for reads/writes
197 %%% ** default for async I/O since Samba 4.0
198 %%% [block]>
199 %%% 
200 %%% ==== Performance - scaling ====
201 %%% 
202 %%% <[block]{messaging}
203 %%% * classical messaging:
204 %%% ** messages.tdb and signals between processes
205 %%% ** does not scale well
206 %%% * new massaging in Samba 4.2:
207 %%% ** fast and scalable messaging based on unix datagram messages
208 %%% ** ==> WIP: integrate with AD/DC messaging
209 %%% ** ==> features fd-passing for sockets (SMB3 multi-channel)
210 %%% ** ==> TODO: integrate into CTDB inter-node-messaging
211 %%% [block]>
212
213
214 %%% ==== Interop ====[plain]
215 %%% 
216 %%% %\transdissolve
217 %%% 
218 %%% <[center]
219 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
220 %%% [center]>
221 %%% 
222 %%% 
223 %%% ==== Interop-Central ====
224 %%% 
225 %%% <[block]{multi-protocol access}
226 %%% * nfs (kernel, ganesha, ...)
227 %%% * afp: netatalk
228 %%% * local access
229 %%% * SMB2+ unix-extensions
230 %%% [block]>
231
232
233 %%% ==== File Server Layout/Scope ====
234 %%% 
235 %%% <[center]
236 %%% <<<samba-layers.jpg,height=.8\textheight>>>
237 %%% [center]>
238
239
240 %%% ==== Interop - Fruit ====
241 %%% 
242 %%% 
243 %%% <[columns]
244 %%% [[[.9\textwidth]]]
245 %%% * MacOS 10.9: SMB 2.1 preferred file protocol
246 %%% * @vfs\_fruit@ - new module in Samba 4.2
247 %%% [[[.05\textwidth]]]
248 %%% [columns]>
249 %%% 
250 %%% <[columns]
251 %%% [[[.55\textwidth]]]
252 %%% 
253 %%% * spotlight
254 %%% ** indexed search
255 %%% ** dcerpc service
256 %%% ** ==> under review
257 %%% * AAPL
258 %%% ** SMB2 create context
259 %%% ** speed up directory listings
260 %%% ** ==> under review
261 %%% 
262 %%% [[[.4\textwidth]]]
263 %%% <<<apfel_1280.jpg,width=.9\textwidth>>>
264 %%% [columns]>
265 %%% 
266 %%% ==== ====[plain]
267 %%% 
268 %%% <[center]
269 %%% \Large
270 %%% Fruit Demo
271 %%% [center]>
272
273 ==== SMB features ====[plain]
274
275 %\transdissolve
276
277 <[center]
278 <[columns]
279 [[[.6\textwidth]]]
280
281 [[[.3\textwidth]]]
282 <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
283 [columns]>
284 [center]>
285
286
287 ==== SMB features in Samba - SMB2 ====
288
289
290 <[center]
291 <[columns]
292 [[[.7\textwidth]]]
293
294 * SMB 2.0 (Vista / 2008):
295 ** durable file handles [4.0]
296 * SMB 2.1 (Win7 / 2008R2):
297 ** multi-credit / large mtu [4.0]
298 ** dynamic reauthentication [4.0]
299 ** leasing [WIP++]
300 ** resilient file handles [WIP-tracer]
301
302 [[[.3\textwidth]]]
303 <<<durable-crop-colormod-1024,width=.9\textwidth>>>
304 [columns]>
305 [center]>
306
307
308 ==== SMB features in Samba - SMB3 ====
309
310
311 <[center]
312 <[columns]
313 [[[.7\textwidth]]]
314
315 * SMB 3.0 (Win8 / 2012):
316 ** new crypto (sign/encrypt) [4.0]
317 ** secure negotiation [4.0]
318 ** durable handles v2 [4.0]
319 ** persistent file handles [WIP.tracer]
320 ** multi-channel [WIP+]
321 ** SMB direct [designed/starting]
322 ** cluster features [designing]
323 *** witness [WIP]
324 ** storage features [WIP]
325 * SMB 3.02 (Win8.1 / 2012R2): [WIP]
326 * SMB 3.1 (Win10 / 2014): [ess.DONE]
327
328 [[[.3\textwidth]]]
329 <<<durable-crop-colormod-1024,width=.9\textwidth>>>
330 [columns]>
331 [center]>
332
333
334 %%==== ====[plain]
335 %%
336 %%old
337 %%
338 %
339 %%==== Clusterd Samba / CTDB (SOFS since 2007) ====
340 %%
341 %%<[center]
342 %%<<<design-ctdb-three-nodes.png,width=.9\textwidth>>>
343 %%[center]>
344
345
346
347 %%% === SMB 3.0 ====
348 %%% 
349 %%% \transdissolve
350 %%% 
351 %%% +<2->{
352 %%% * new crypto (signing, transport encryption)
353 %%% * persistent file handles
354 %%% * multi-channel
355 %%% * RDMA transport (SMB direct)
356 %%% * storage features
357 %%% * clustering
358 %%% ** witness
359 %%% ** transparent failover (continuous availability)
360 %%% ** all-active (scale-out)
361 %%% }
362 %%% 
363 %%% ==== SMB3 - Goals ====
364 %%% 
365 %%% \transdissolve
366 %%% 
367 %%% +<2->{
368 %%% * fault tolerance / reliability
369 %%% * performance / throughput / scaling
370 %%% * focus on support for server workloads \\ %
371 %%% (as opposed to workstation workloads)
372 %%% * especially support for:
373 %%% ** Hyper-V
374 %%% ** MS-SQL
375 %%% * goals:
376 %%% ** replace block storage in data center
377 %%% ** block (SCSI) over SMB
378 %%% }
379 %%% 
380 %%% ==== Requirements for Hyper-V ====
381 %%% 
382 %%% \transdissolve
383 %%% 
384 %%% +<2->{
385 %%% * minimum requirements:
386 %%% ** SMB 3.0
387 %%% ** is that really all??? - maybe resilient file handles..
388 %%% }
389 %%% +<3->{
390 %%% * desired features:
391 %%% ** cluster ($\ge 2$ nodes)
392 %%% ** CA / persistent handles
393 %%% ** RDMA / SMB direct
394 %%% ** multi channel
395 %%% }
396
397 %%% ==== SMB Protocol in Samba ====
398 %%% 
399 %%% \transdissolve
400 %%% 
401 %%% +<2->{
402 %%% * Samba $<$ 3.5:
403 %%% ** SMB 1
404 %%% * Samba 3.5:
405 %%% ** experimental incomplete support for SMB 2.0
406 %%% * Samba 3.6:
407 %%% ** official support for SMB 2.0
408 %%% ** missing: durable handles
409 %%% ** default server max proto: SMB 1
410 %%% * Samba 4.0:
411 %%% ** SMB 2.0: complete with durable handles
412 %%% ** SMB 2.1: basis, multi-credit, dynamic reauthentication
413 %%% ** SMB 3.0: basis, crypto, secure negotiation, durable v2
414 %%% ** default server max proto: SMB 3.0
415 %%% * Samba 4.1
416 %%% ** SMB 3.02: basic
417 %%% }
418
419 %%% ====  ==== [plain]
420 %%% <[center]
421 %%% {\Large
422 %%% Technical Details...
423 %%% }
424 %%% [center]>
425
426 %%% ==== ====[plain]
427 %%% 
428 %%% \transdissolve
429 %%% 
430 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
431 %%% 
432 %%% 
433 %%% 
434
435 ==== Multi-Channel - Windows/Protocol ====
436
437 * find interfaces with interface discovery: \\ %
438 @FSCTL\_QUERY\_NETWORK\_INTERFACE\_INFO@
439 * bind additional TCP (or RDMA) connection (channel) to established SMB3 session (session bind)
440 * windows: uses connections of same (and best quality)
441 * windows: binds only to a single node
442 * replay / retry mechanisms, epoch numbers
443
444 ==== Multi-Channel - Samba ====
445
446 * samba/smbd: multi-process
447 ** process $\Leftrightarrow$ tcp connection
448 ** ==> transfer new connection to existing smbd
449 ** use fd-passing (sendmsg/recvmsg)
450
451 * preparation: messaging rewrite using unix dgm sockets with sendmsg [DONE,4.2]
452 * add fd-passing [DONE,4.2]
453 * transfer connection already in negprot (ClientGUID) [ess.DONE]
454 * implement channel epoch numbers [WIP]
455 * implement interface discovery [WIP]
456
457 ==== Multi-Channel - Samba ====
458
459 <[center]
460 <<<smb3-mc-samba_exp.png,height=.9\textheight>>>
461 [center]>
462
463 ==== ====[plain]
464
465 <[center]
466 \Large
467 Multi-Channel Demo
468 [center]>
469
470 ==== SMB Direct (RDMA) ====
471
472 * windows:
473 ** requires multi-channel
474 ** start with TCP, bind an RDMA channel
475 ** reads and writes use RDMB write/read
476 ** protocol/metadata via send/receive
477
478 * wireshark dissector: [DONE]
479
480 * samba (TODO):
481 ** prereq: multi-channel / fd-passing
482 ** buffer / transport abstractions [TODO]
483 ** _red_problem_: libraries: not fork safe and no fd-passing \\ %
484 ==> central daemon (or kernel module) to serve as RDMA "proxy"
485
486 ==== SMB Direct (RDMA) - Plan ====
487
488 <[center]
489 <<<smb3-rdma-samba-v2_exp.png,height=.9\textheight>>>
490 [center]>
491
492 %%%==== SMB Direct (RDMA) - Plan ====
493 %%%
494 %%%+<2->{
495 %%%* smbd-d (rdma proxy daemon)
496 %%%** listens on unix domain socket (@/var/lib/smbd-d/socket@)
497 %%%** listens for RDMA connection (as told by main smbd)
498 %%%* main smbd:
499 %%%** listens for TCP connections
500 %%%** connects to smbd-d-socket
501 %%%*** request rdma-interfaces, tell smbd-d on which to listen
502 %%%** "accepts" new smb-direct connections on smdb-d-socket
503 %%%}
504 %%%
505 %%%==== SMB Direct (RDMA) - Plan ====
506 %%%
507 %%%+<2->{
508 %%%* client
509 %%%** connects via TCP --> smbd forks child smbd (c)
510 %%%** connects via RDMA to smbd-d
511 %%%* smbd-d
512 %%%** creates socket-pair as rdma-proxy-channel
513 %%%** passes one end of socket-pair to main smbd for accept
514 %%%** sends smb direct packages over proxy-channel
515 %%%* main smbd
516 %%%** upon receiving NegProt: pass proxy-socket to c based on ClientGUID
517 %%%* c
518 %%%** continues proxy-communication with smdb-d
519 %%%}
520 %%%+<3->{
521 %%%* For @rdma\_read@ and @rdma\_write@:
522 %%%** c and smbd-d establish shared memory area
523 %%%}
524
525
526 %%% ==== Persistent Handles ====
527 %%% 
528 %%% \transdissolve
529 %%% 
530 %%% +<2->{
531 %%% * like durable file handles with strong guarantees
532 %%% * framework is already there in samba (by support for durable v2)
533 %%% ** ==> easy to satisfy at the protocol level
534 %%% }
535 %%% +<3->{
536 %%% * the difficulty lies in implementing the guarantees
537 %%% ** need make metadata persistent
538 %%% ** but don't kill performance!
539 %%% ** persistent tdbs !would! kill performance
540 %%% ** ideas:
541 %%% *** need to be sync
542 %%% *** record-level transactions (instead of db-level)
543 %%% *** only replicate to some nodes, not all
544 %%% }
545
546
547 %%==== Clustering Concepts (Windows) ====
548 %%
549 %%\transdissolve
550 %%
551 %%+<2->{
552 %%* Cluster:
553 %%** (``traditional'') failover cluster (active-passive)
554 %%** protocol: @SMB2\_SHARE\_CAP\_CLUSTER@
555 %%** Windows:
556 %%*** runs off a cluster (failover) volume
557 %%*** offers the Witness service
558 %%}
559 %%+<3->{
560 %%* Scale-Out (SOFS):
561 %%** scale-out cluster (all-active!)
562 %%** protocol: @SMB2\_SHARE\_CAP\_SCALEOUT@
563 %%** no client caching
564 %%** Windows: runs off a cluster shared volume (implies cluster)
565 %%}
566 %%+<4->{
567 %%* Continuous Availability (CA):
568 %%**  transparent failover, persistent handles
569 %%**  protocol: @SMB2\_SHARE\_CAP\_CONTINUOUS\_AVAILABILITY@
570 %%**  can independently turned on on any cluster share (failover or scale-out)
571 %%** ==> changed client retry behaviour!
572 %%}
573
574 %%% ==== Clustering -- Controlling Flags from Windows ====
575 %%% 
576 %%% \transdissolve
577 %%% 
578 %%% +<2->{
579 %%% * a share on a cluster carries
580 %%% ** @SMB2\_SHARE\_CAP\_CLUSTER@ $\Leftrightarrow$ the shared FS is a cluster volume.
581 %%% }
582 %%% +<3->{
583 %%% * a share on a cluster carries
584 %%% ** @SMB2\_SHARE\_CAP\_SCALEOUT@ $\Leftrightarrow$ the shared FS is a CSV
585 %%% *** implies  @SMB2\_SHARE\_CAP\_CLUSTER@
586 %%% }
587 %%% +<4->{
588 %%% * independently settable on a clustered share:
589 %%% ** @SMB2\_SHARE\_CAP\_CONTINUOUS\_AVAILABILITY@
590 %%% *** implies  @SMB2\_SHARE\_CAP\_CLUSTER@
591 %%% }
592 %%% 
593
594 %%==== Clustering -- Server Behaviour ====
595 %%
596 %%\transdissolve
597 %%
598 %%+<2->{
599 %%* @SMB2\_SHARE\_CAP\_CLUSTER@:
600 %%** run witness service (RPC)
601 %%** client can register and get notified about resource changes
602 %%}
603 %%+<3->{
604 %%* @SMB2\_SHARE\_CAP\_SCALEOUT@:
605 %%** do not grant batch oplocks, write leases, handle leases
606 %%** ==> no durable handles unless also CA
607 %%}
608 %%+<4->{
609 %%* @SMB2\_SHARE\_CAP\_CONTINUOUS\_AVAILABILITY@:
610 %%** offer persistent handles
611 %%** timeout from durable v2 request
612 %%}
613 %%
614
615 %%==== Clustering -- Client Behaviour (Win8) ====
616 %%
617 %%\transdissolve
618 %%
619 %%
620 %%+<2->{
621 %%* @SMB2\_SHARE\_CAP\_CLUSTER@:
622 %%** clients happily work if witness is not available
623 %%}
624 %%+<3->{
625 %%* @SMB2\_SHARE\_CAP\_SCALEOUT@:
626 %%** clients happily connect if @CLUSTER@ is not set.
627 %%** clients DO request oplocks/leases/durable handles
628 %%** clients are not confused if they get these
629 %%}
630 %%+<4->{
631 %%* @SMB2\_SHARE\_CAP\_CONTINUOUS\_AVAILABILITY@:
632 %%** clients happily connect if @CLUSTER@ is not set.
633 %%** clients typically request persistent handle with RWH lease
634 %%}
635
636 %%%+<5->{
637 %%%* Note:\\ %
638 %%%Win8 sends @SMB2\_FLAGS\_REPLAY\_OPERATION@ in writes and reads (from 2nd in a row) \\ %
639 %%%$\Leftrightarrow$ \\ %
640 %%%The server announces @SMB2\_CAP\_PERSISTENT\_HANDLES@.
641 %%%}
642
643 %%% ==== Clustering -- Client Behaviour (Win8) : Retries  ====
644 %%% 
645 %%% +<2->{
646 %%% * Test: Win8 against slightly pimped Samba (2 IPs)
647 %%% }
648 %%% +<3->{
649 %%% * Server-Matrix (on/off):
650 %%% ** persistent handle cap
651 %%% ** durable handles
652 %%% ** cluster share cap
653 %%% ** scale out cap
654 %%% ** ca share cap
655 %%% }
656 %%% +<4->{
657 %%% * The test:
658 %%% ** connect to share with explorer
659 %%% ** start copying file (2G)
660 %%% ** kill smbd
661 %%% ** wait for the client to pop up an error dialog
662 %%% ** click cancel
663 %%% ** stop capture
664 %%% }
665 %%% 
666 %%% ==== Clustering -- Client Behaviour (Win8) : Retries  ====
667 %%% 
668 %%% +<2->{
669 %%% * only two different retry characteristics: CA $\leftrightarrow$ non-CA
670 %%% }
671 %%% +<3->{
672 %%% * non-CA-case
673 %%% ** 3 consecutive attempt rounds:
674 %%% *** for each of the two IPs: \\ %
675 %%% arp IP \\ %
676 %%% three tcp syn attempts to IP with 0.5 sec breaks
677 %%% ** ==> some 2.1 seconds for 1 round
678 %%% ** between attempts:
679 %%% ** dns, ping, arp ... 5.8 seconds
680 %%% ** ==> _red_18 seconds_
681 %%% }
682 %%% +<4->{
683 %%% * CA-Case
684 %%% ** retries attempt rounds from above for _red_14 minutes_
685 %%% }
686 %%% 
687 %%% 
688 %%% 
689 %%% ==== ====[plain]
690 %%% 
691 %%% \transdissolve
692 %%% 
693 %%% <[center]
694 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
695 %%% [center]>
696 %%% 
697 %%% 
698
699 %%==== Clustering with Samba/CTDB ====
700 %%
701 %%+<2->{
702 %%* all-active SMB-cluster with Samba and CTDB... \\ %
703 %%+<3->{...since 2007! \smiley }
704 %%}
705 %%+<4->{
706 %%* transparent for the client
707 %%** CTDB:
708 %%*** metadata and messaging engine for Samba in a cluster
709 %%*** plus cluster resource manager (IPs, services...)
710 %%** client only sees one ``big'' SMB server
711 %%** we could not change the client!...
712 %%** works ``well enough''
713 %%}
714 %%+<5->{
715 %%* challenge:
716 %%** how to integrate SMB3 clustering with Samba/CTDB
717 %%** good: rather orthogonal
718 %%** ctdb-clustering transparent mostly due to management
719 %%}
720 %%
721 %%==== Witness Service ====
722 %%
723 %%+<2->{
724 %%* an RPC service
725 %%** monitoring of availability of resources (shares, NICs)
726 %%** server asks client to move to another resource
727 %%}
728 %%+<3->{
729 %%* remember:
730 %%** available on a Windows SMB3 share $\Leftrightarrow$ @SMB2\_SHARE\_CAP\_CLUSTER@
731 %%** but clients happily connect w/o witness
732 %%}
733 %%+<4->{
734 %%* status in Samba [WIP (Metze, Gregor Beck)]:
735 %%** async RPC: WIP, good progress ($\Rightarrow$ Metze's talk)
736 %%** wireshark dissector: essentially done
737 %%** client: in @rpcclient@ - done
738 %%** server: dummy PoC / tracer bullet implementation done
739 %%** CTDB: changes / integration needed
740 %%}
741
742
743 %%% ==== ====[plain]
744 %%% 
745 %%% <[center]
746 %%% {\Large
747 %%% !@https://wiki.samba.org/index.php/SMB3@!
748 %%% }
749 %%% [center]>
750 %%% 
751 %%% ==== ====[plain]
752 %%% 
753 %%% \transdissolve
754 %%% 
755 %%% <[center]
756 %%% <[columns]
757 %%% [[[.6\textwidth]]]
758 %%% 
759 %%% [[[.3\textwidth]]]
760 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
761 %%% [columns]>
762 %%% [center]>
763 %%% 
764
765 ==== SMB features in Samba ====
766
767 <[center]
768 \Large
769 @https://wiki.samba.org/index.php/Samba3/SMB3@
770 [center]>
771
772
773 %%% ==== Misc ====[plain]
774 %%% 
775 %%% %\transdissolve
776 %%% 
777 %%% <[center]
778 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
779 %%% [center]>
780
781 ==== Misc ====
782
783 <[block]{File Systems}
784 * gpfs, gluster, ceph, btrfs...
785 * support through vfs modules
786 * fuse-based: avoid context switches
787 * instrument SMB3 storage features (fsctls)
788 [block]>
789
790 ==== Misc ====
791
792 %%<[block]{Under the hood}
793 %%* restructurings, reconsilations
794 %%* ctdb moved into samba tree
795 %%* published libs: talloc, tdb, tevent ...
796 %%[block]>
797
798 <[block]{Testing}
799 * unprivileged selftest, autobuild
800 * selfcontained testing: wrapper
801 ** socket wrapper
802 ** nss wrapper
803 ** uid wrapper
804 ** resolv wrapper [_red_new_]
805 * externalized as separate projects:
806 ** ==> @http://cwrap.org/@
807 ** git on samba.org
808 ** ==> Andreas Schneider's talk
809 [block]>
810
811
812 %%% ==== Forecast: Cloudy ====
813 %%% 
814 %%% <[block]{Possible involvement with OpenStack}
815 %%% * SMB storage service for Windows (and other) VMs
816 %%% * SMB3 storage backend for Hyper-V images
817 %%% * also: chances for AD-integration into auth
818 %%% [block]>
819
820 ==== Credits ====
821
822 <[block]{especially but not exclusively}
823 * Volker Lendecke
824 * Stefan Metzmacher
825 * Ralph Böhme
826 * Jeremy Allison
827 * David Disseldorp
828 * Andreas Schneider
829 [block]>
830
831
832 %%% ==== Conclusion ====[plain]
833 %%% 
834 %%% %%\transdissolve
835 %%% 
836 %%% <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
837 %%% 
838 %%% 
839 %%% ==== Conclusion ====
840 %%% 
841 %%% <[block]{Remember}
842 %%% * Samba 4.X is quite different from 3.Y
843 %%% [block]>
844 %%% 
845 %%% <[block]{What's coming?}
846 %%% * Performance: the story continues
847 %%% * Interop: strengthen strenths
848 %%% * SMB(3) features: a lot to come ( ==> cluster, hyper-v, ...)
849 %%% * Some clouds in the sky...
850 %%% [block]>
851
852
853 ==== Thanks for your attention! ====[plain]
854
855 %\transdissolve
856
857 <[center]
858 <[columns]
859 [[[.6\textwidth]]]
860
861 {\Large
862
863 Questions?
864
865 --*4em--
866
867 @obnox\@samba.org@
868
869 @madam\@redhat.com@
870 }
871 [[[.3\textwidth]]]
872 <<<samba-chilli-flavour-crop-bright-1280.jpg,height=.8\textheight>>>
873
874 [columns]>
875 [center]>
876