Ignore:
Timestamp:
Mar 1, 2010, 3:05:48 PM (15 years ago)
Author:
Herwig Bauernfeind
Message:

Update Samba 3.3.x to 3.3.11

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.3.x/docs/htmldocs/Samba3-HOWTO/SambaHA.html

    r368 r411  
    1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 32. High Availability</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="The Official Samba 3.3.x HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part III. Advanced Configuration"><link rel="prev" href="Backup.html" title="Chapter 31. Backup Techniques"><link rel="next" href="largefile.html" title="Chapter 33. Handling Large Directories"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. High Availability</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Backup.html">Prev</a> </td><th width="60%" align="center">Part III. Advanced Configuration</th><td width="20%" align="right"> <a accesskey="n" href="largefile.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 32. High Availability"><div class="titlepage"><div><div><h2 class="title"><a name="SambaHA"></a>Chapter 32. High Availability</h2></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jht@samba.org">jht@samba.org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jeremy</span> <span class="surname">Allison</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jra@samba.org">jra@samba.org</a>&gt;</code></p></div></div></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="SambaHA.html#id2678091">Features and Benefits</a></span></dt><dt><span class="sect1"><a href="SambaHA.html#id2678212">Technical Discussion</a></span></dt><dd><dl><dt><span class="sect2"><a href="SambaHA.html#id2678246">The Ultimate Goal</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2678376">Why Is This So Hard?</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2679095">A Simple Solution</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2679176">High-Availability Server Products</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2679316">MS-DFS: The Poor Man's Cluster</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2679353">Conclusions</a></span></dt></dl></dd></dl></div><div class="sect1" title="Features and Benefits"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2678091"></a>Features and Benefits</h2></div></div></div><p>
    2 <a class="indexterm" name="id2678099"></a>
    3 <a class="indexterm" name="id2678106"></a>
    4 <a class="indexterm" name="id2678113"></a>
     1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 32. High Availability</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="The Official Samba 3.3.x HOWTO and Reference Guide"><link rel="up" href="optional.html" title="Part III. Advanced Configuration"><link rel="prev" href="Backup.html" title="Chapter 31. Backup Techniques"><link rel="next" href="largefile.html" title="Chapter 33. Handling Large Directories"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. High Availability</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Backup.html">Prev</a> </td><th width="60%" align="center">Part III. Advanced Configuration</th><td width="20%" align="right"> <a accesskey="n" href="largefile.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="SambaHA"></a>Chapter 32. High Availability</h2></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="orgname">Samba Team</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jht@samba.org">jht@samba.org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jeremy</span> <span class="orgname">Samba Team</span> <span class="surname">Allison</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:jra@samba.org">jra@samba.org</a>&gt;</code></p></div></div></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="SambaHA.html#id2672006">Features and Benefits</a></span></dt><dt><span class="sect1"><a href="SambaHA.html#id2672127">Technical Discussion</a></span></dt><dd><dl><dt><span class="sect2"><a href="SambaHA.html#id2672161">The Ultimate Goal</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2672290">Why Is This So Hard?</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2673010">A Simple Solution</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2673091">High-Availability Server Products</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2673231">MS-DFS: The Poor Man's Cluster</a></span></dt><dt><span class="sect2"><a href="SambaHA.html#id2673268">Conclusions</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2672006"></a>Features and Benefits</h2></div></div></div><p>
     2<a class="indexterm" name="id2672014"></a>
     3<a class="indexterm" name="id2672021"></a>
     4<a class="indexterm" name="id2672028"></a>
    55Network administrators are often concerned about the availability of file and print
    66services. Network users are inclined toward intolerance of the services they depend
     
    99A sign in a computer room served to remind staff of their responsibilities. It read:
    1010</p><div class="blockquote"><blockquote class="blockquote"><p>
    11 <a class="indexterm" name="id2678134"></a>
    12 <a class="indexterm" name="id2678140"></a>
    13 <a class="indexterm" name="id2678147"></a>
    14 <a class="indexterm" name="id2678154"></a>
     11<a class="indexterm" name="id2672048"></a>
     12<a class="indexterm" name="id2672055"></a>
     13<a class="indexterm" name="id2672062"></a>
     14<a class="indexterm" name="id2672069"></a>
    1515All humans fail, in both great and small ways we fail continually. Machines fail too.
    1616Computers are machines that are managed by humans, the fallout from failure
     
    2222understand the problem. That is the purpose of this chapter.
    2323</p><p>
    24 <a class="indexterm" name="id2678178"></a>
    25 <a class="indexterm" name="id2678185"></a>
    26 <a class="indexterm" name="id2678192"></a>
     24<a class="indexterm" name="id2672093"></a>
     25<a class="indexterm" name="id2672100"></a>
     26<a class="indexterm" name="id2672106"></a>
    2727Parenthetically, in the following discussion there are seeds of information on how to
    2828provision a network infrastructure against failure. Our purpose here is not to provide
     
    3333presentation of the current state of knowledge and practice in high availability as it
    3434applies to the deployment of Samba and other CIFS/SMB technologies.
    35 </p></div><div class="sect1" title="Technical Discussion"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2678212"></a>Technical Discussion</h2></div></div></div><p>
    36 <a class="indexterm" name="id2678220"></a>
    37 <a class="indexterm" name="id2678227"></a>
    38 <a class="indexterm" name="id2678234"></a>
     35</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2672127"></a>Technical Discussion</h2></div></div></div><p>
     36<a class="indexterm" name="id2672135"></a>
     37<a class="indexterm" name="id2672142"></a>
     38<a class="indexterm" name="id2672148"></a>
    3939The following summary was part of a presentation by Jeremy Allison at the SambaXP 2003
    4040conference that was held at Goettingen, Germany, in April 2003. Material has been added
    4141from other sources, but it was Jeremy who inspired the structure that follows.
    42 </p><div class="sect2" title="The Ultimate Goal"><div class="titlepage"><div><div><h3 class="title"><a name="id2678246"></a>The Ultimate Goal</h3></div></div></div><p>
    43 <a class="indexterm" name="id2678254"></a>
    44 <a class="indexterm" name="id2678261"></a>
    45 <a class="indexterm" name="id2678268"></a>
     42</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2672161"></a>The Ultimate Goal</h3></div></div></div><p>
     43<a class="indexterm" name="id2672169"></a>
     44<a class="indexterm" name="id2672176"></a>
     45<a class="indexterm" name="id2672183"></a>
    4646        All clustering technologies aim to achieve one or more of the following:
    47         </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Obtain the maximum affordable computational power.</p></li><li class="listitem"><p>Obtain faster program execution.</p></li><li class="listitem"><p>Deliver unstoppable services.</p></li><li class="listitem"><p>Avert points of failure.</p></li><li class="listitem"><p>Exact most effective utilization of resources.</p></li></ul></div><p>
     47        </p><div class="itemizedlist"><ul type="disc"><li><p>Obtain the maximum affordable computational power.</p></li><li><p>Obtain faster program execution.</p></li><li><p>Deliver unstoppable services.</p></li><li><p>Avert points of failure.</p></li><li><p>Exact most effective utilization of resources.</p></li></ul></div><p>
    4848        A clustered file server ideally has the following properties:
    49 <a class="indexterm" name="id2678309"></a>
    50 <a class="indexterm" name="id2678316"></a>
    51 <a class="indexterm" name="id2678323"></a>
    52 <a class="indexterm" name="id2678330"></a>
    53         </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>All clients can connect transparently to any server.</p></li><li class="listitem"><p>A server can fail and clients are transparently reconnected to another server.</p></li><li class="listitem"><p>All servers serve out the same set of files.</p></li><li class="listitem"><p>All file changes are immediately seen on all servers.</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>Requires a distributed file system.</p></li></ul></div></li><li class="listitem"><p>Infinite ability to scale by adding more servers or disks.</p></li></ul></div></div><div class="sect2" title="Why Is This So Hard?"><div class="titlepage"><div><div><h3 class="title"><a name="id2678376"></a>Why Is This So Hard?</h3></div></div></div><p>
     49<a class="indexterm" name="id2672224"></a>
     50<a class="indexterm" name="id2672231"></a>
     51<a class="indexterm" name="id2672238"></a>
     52<a class="indexterm" name="id2672245"></a>
     53        </p><div class="itemizedlist"><ul type="disc"><li><p>All clients can connect transparently to any server.</p></li><li><p>A server can fail and clients are transparently reconnected to another server.</p></li><li><p>All servers serve out the same set of files.</p></li><li><p>All file changes are immediately seen on all servers.</p><div class="itemizedlist"><ul type="circle"><li><p>Requires a distributed file system.</p></li></ul></div></li><li><p>Infinite ability to scale by adding more servers or disks.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2672290"></a>Why Is This So Hard?</h3></div></div></div><p>
    5454        In short, the problem is one of <span class="emphasis"><em>state</em></span>.
    55         </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
    56 <a class="indexterm" name="id2678395"></a>
     55        </p><div class="itemizedlist"><ul type="disc"><li><p>
     56<a class="indexterm" name="id2672310"></a>
    5757                        All TCP/IP connections are dependent on state information.
    5858                        </p><p>
    59 <a class="indexterm" name="id2678406"></a>
     59<a class="indexterm" name="id2672321"></a>
    6060                        The TCP connection involves a packet sequence number. This
    6161                        sequence number would need to be dynamically updated on all
    6262                        machines in the cluster to effect seamless TCP failover.
    63                         </p></li><li class="listitem"><p>
    64 <a class="indexterm" name="id2678423"></a>
    65 <a class="indexterm" name="id2678430"></a>
     63                        </p></li><li><p>
     64<a class="indexterm" name="id2672338"></a>
     65<a class="indexterm" name="id2672345"></a>
    6666                        CIFS/SMB (the Windows networking protocols) uses TCP connections.
    6767                        </p><p>
    6868                        This means that from a basic design perspective, failover is not
    6969                        seriously considered.
    70                         </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>
     70                        </p><div class="itemizedlist"><ul type="circle"><li><p>
    7171                                All current SMB clusters are failover solutions
    7272                                 they rely on the clients to reconnect. They provide server
    7373                                failover, but clients can lose information due to a server failure.
    74 <a class="indexterm" name="id2678455"></a>
     74<a class="indexterm" name="id2672369"></a>
    7575                                </p></li></ul></div><p>
    76                         </p></li><li class="listitem"><p>
     76                        </p></li><li><p>
    7777                        Servers keep state information about client connections.
    78                         </p><div class="itemizedlist"><a class="indexterm" name="id2678473"></a><ul class="itemizedlist" type="circle"><li class="listitem"><p>CIFS/SMB involves a lot of state.</p></li><li class="listitem"><p>Every file open must be compared with other open files
     78                        </p><div class="itemizedlist"><a class="indexterm" name="id2672388"></a><ul type="circle"><li><p>CIFS/SMB involves a lot of state.</p></li><li><p>Every file open must be compared with other open files
    7979                                                to check share modes.</p></li></ul></div><p>
    80                         </p></li></ul></div><div class="sect3" title="The Front-End Challenge"><div class="titlepage"><div><div><h4 class="title"><a name="id2678494"></a>The Front-End Challenge</h4></div></div></div><p>
    81 <a class="indexterm" name="id2678502"></a>
    82 <a class="indexterm" name="id2678509"></a>
    83 <a class="indexterm" name="id2678516"></a>
    84 <a class="indexterm" name="id2678523"></a>
    85 <a class="indexterm" name="id2678530"></a>
    86 <a class="indexterm" name="id2678537"></a>
    87 <a class="indexterm" name="id2678544"></a>
     80                        </p></li></ul></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672409"></a>The Front-End Challenge</h4></div></div></div><p>
     81<a class="indexterm" name="id2672417"></a>
     82<a class="indexterm" name="id2672424"></a>
     83<a class="indexterm" name="id2672431"></a>
     84<a class="indexterm" name="id2672438"></a>
     85<a class="indexterm" name="id2672445"></a>
     86<a class="indexterm" name="id2672452"></a>
     87<a class="indexterm" name="id2672459"></a>
    8888                To make it possible for a cluster of file servers to appear as a single server that has one
    8989                name and one IP address, the incoming TCP data streams from clients must be processed by the
     
    9191                layer level and then feed the SMB packet to different servers in the cluster.
    9292                </p><p>
    93 <a class="indexterm" name="id2678560"></a>
    94 <a class="indexterm" name="id2678567"></a>
     93<a class="indexterm" name="id2672475"></a>
     94<a class="indexterm" name="id2672482"></a>
    9595                One could split all IPC$ connections and RPC calls to one server to handle printing and user
    9696                lookup requirements. RPC printing handles are shared between different IPC4 sessions  it is
     
    9999                Conceptually speaking, all other servers would then provide only file services. This is a simpler
    100100                problem to concentrate on.
    101                 </p></div><div class="sect3" title="Demultiplexing SMB Requests"><div class="titlepage"><div><div><h4 class="title"><a name="id2678589"></a>Demultiplexing SMB Requests</h4></div></div></div><p>
    102 <a class="indexterm" name="id2678596"></a>
    103 <a class="indexterm" name="id2678603"></a>
    104 <a class="indexterm" name="id2678610"></a>
    105 <a class="indexterm" name="id2678618"></a>
     101                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672504"></a>Demultiplexing SMB Requests</h4></div></div></div><p>
     102<a class="indexterm" name="id2672511"></a>
     103<a class="indexterm" name="id2672518"></a>
     104<a class="indexterm" name="id2672525"></a>
     105<a class="indexterm" name="id2672532"></a>
    106106                De-multiplexing of SMB requests requires knowledge of SMB state information,
    107107                all of which must be held by the front-end <span class="emphasis"><em>virtual</em></span> server.
    108108                This is a perplexing and complicated problem to solve.
    109109                </p><p>
    110 <a class="indexterm" name="id2678635"></a>
    111 <a class="indexterm" name="id2678642"></a>
    112 <a class="indexterm" name="id2678648"></a>
     110<a class="indexterm" name="id2672550"></a>
     111<a class="indexterm" name="id2672556"></a>
     112<a class="indexterm" name="id2672563"></a>
    113113                Windows XP and later have changed semantics so state information (vuid, tid, fid)
    114114                must match for a successful operation. This makes things simpler than before and is a
    115115                positive step forward.
    116116                </p><p>
    117 <a class="indexterm" name="id2678662"></a>
    118 <a class="indexterm" name="id2678669"></a>
     117<a class="indexterm" name="id2672576"></a>
     118<a class="indexterm" name="id2672583"></a>
    119119                SMB requests are sent by vuid to their associated server. No code exists today to
    120120                effect this solution. This problem is conceptually similar to the problem of
     
    122122                Terminal Server in Samba.
    123123                </p><p>
    124 <a class="indexterm" name="id2678683"></a>
     124<a class="indexterm" name="id2672598"></a>
    125125                One possibility is to start by exposing the server pool to clients directly.
    126126                This could eliminate the de-multiplexing step.
    127                 </p></div><div class="sect3" title="The Distributed File System Challenge"><div class="titlepage"><div><div><h4 class="title"><a name="id2678695"></a>The Distributed File System Challenge</h4></div></div></div><p>
    128 <a class="indexterm" name="id2678703"></a>
     127                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672609"></a>The Distributed File System Challenge</h4></div></div></div><p>
     128<a class="indexterm" name="id2672618"></a>
    129129                There exists many distributed file systems for UNIX and Linux.
    130130                </p><p>
    131 <a class="indexterm" name="id2678714"></a>
    132 <a class="indexterm" name="id2678721"></a>
    133 <a class="indexterm" name="id2678728"></a>
    134 <a class="indexterm" name="id2678735"></a>
    135 <a class="indexterm" name="id2678742"></a>
    136 <a class="indexterm" name="id2678749"></a>
     131<a class="indexterm" name="id2672629"></a>
     132<a class="indexterm" name="id2672636"></a>
     133<a class="indexterm" name="id2672643"></a>
     134<a class="indexterm" name="id2672650"></a>
     135<a class="indexterm" name="id2672657"></a>
     136<a class="indexterm" name="id2672663"></a>
    137137                Many could be adopted to backend our cluster, so long as awareness of SMB
    138138                semantics is kept in mind (share modes, locking, and oplock issues in particular).
    139139                Common free distributed file systems include:
    140 <a class="indexterm" name="id2678759"></a>
    141 <a class="indexterm" name="id2678766"></a>
    142 <a class="indexterm" name="id2678773"></a>
    143 <a class="indexterm" name="id2678780"></a>
    144                 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>NFS</p></li><li class="listitem"><p>AFS</p></li><li class="listitem"><p>OpenGFS</p></li><li class="listitem"><p>Lustre</p></li></ul></div><p>
    145 <a class="indexterm" name="id2678810"></a>
     140<a class="indexterm" name="id2672674"></a>
     141<a class="indexterm" name="id2672681"></a>
     142<a class="indexterm" name="id2672688"></a>
     143<a class="indexterm" name="id2672694"></a>
     144                </p><div class="itemizedlist"><ul type="disc"><li><p>NFS</p></li><li><p>AFS</p></li><li><p>OpenGFS</p></li><li><p>Lustre</p></li></ul></div><p>
     145<a class="indexterm" name="id2672725"></a>
    146146                The server pool (cluster) can use any distributed file system backend if all SMB
    147147                semantics are performed within this pool.
    148                 </p></div><div class="sect3" title="Restrictive Constraints on Distributed File Systems"><div class="titlepage"><div><div><h4 class="title"><a name="id2678822"></a>Restrictive Constraints on Distributed File Systems</h4></div></div></div><p>
    149 <a class="indexterm" name="id2678830"></a>
    150 <a class="indexterm" name="id2678837"></a>
    151 <a class="indexterm" name="id2678844"></a>
    152 <a class="indexterm" name="id2678851"></a>
     148                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672736"></a>Restrictive Constraints on Distributed File Systems</h4></div></div></div><p>
     149<a class="indexterm" name="id2672745"></a>
     150<a class="indexterm" name="id2672752"></a>
     151<a class="indexterm" name="id2672759"></a>
     152<a class="indexterm" name="id2672765"></a>
    153153                Where a clustered server provides purely SMB services, oplock handling
    154154                may be done within the server pool without imposing a need for this to
    155155                be passed to the backend file system pool.
    156156                </p><p>
    157 <a class="indexterm" name="id2678864"></a>
    158 <a class="indexterm" name="id2678871"></a>
     157<a class="indexterm" name="id2672779"></a>
     158<a class="indexterm" name="id2672786"></a>
    159159                On the other hand, where the server pool also provides NFS or other file services,
    160160                it will be essential that the implementation be oplock-aware so it can
     
    164164                </p><p>
    165165                Last, all state information must be shared across the server pool.
    166                 </p></div><div class="sect3" title="Server Pool Communications"><div class="titlepage"><div><div><h4 class="title"><a name="id2678898"></a>Server Pool Communications</h4></div></div></div><p>
    167 <a class="indexterm" name="id2678906"></a>
    168 <a class="indexterm" name="id2678913"></a>
    169 <a class="indexterm" name="id2678919"></a>
    170 <a class="indexterm" name="id2678926"></a>
     166                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672812"></a>Server Pool Communications</h4></div></div></div><p>
     167<a class="indexterm" name="id2672820"></a>
     168<a class="indexterm" name="id2672827"></a>
     169<a class="indexterm" name="id2672834"></a>
     170<a class="indexterm" name="id2672841"></a>
    171171                Most backend file systems support POSIX file semantics. This makes it difficult
    172172                to push SMB semantics back into the file system. POSIX locks have different properties
    173173                and semantics from SMB locks.
    174174                </p><p>
    175 <a class="indexterm" name="id2678940"></a>
    176 <a class="indexterm" name="id2678946"></a>
    177 <a class="indexterm" name="id2678953"></a>
     175<a class="indexterm" name="id2672854"></a>
     176<a class="indexterm" name="id2672861"></a>
     177<a class="indexterm" name="id2672868"></a>
    178178                All <code class="literal">smbd</code> processes in the server pool must of necessity communicate
    179179                very quickly. For this, the current <em class="parameter"><code>tdb</code></em> file structure that Samba
    180180                uses is not suitable for use across a network. Clustered <code class="literal">smbd</code>s must use something else.
    181                 </p></div><div class="sect3" title="Server Pool Communications Demands"><div class="titlepage"><div><div><h4 class="title"><a name="id2678983"></a>Server Pool Communications Demands</h4></div></div></div><p>
     181                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672898"></a>Server Pool Communications Demands</h4></div></div></div><p>
    182182                High-speed interserver communications in the server pool is a design prerequisite
    183183                for a fully functional system. Possibilities for this include:
    184                 </p><div class="itemizedlist"><a class="indexterm" name="id2678997"></a><a class="indexterm" name="id2679004"></a><ul class="itemizedlist" type="disc"><li class="listitem"><p>
     184                </p><div class="itemizedlist"><a class="indexterm" name="id2672912"></a><a class="indexterm" name="id2672919"></a><ul type="disc"><li><p>
    185185                        Proprietary shared memory bus (example: Myrinet or SCI [scalable coherent interface]).
    186186                        These are high-cost items.
    187                         </p></li><li class="listitem"><p>
     187                        </p></li><li><p>
    188188                        Gigabit Ethernet (now quite affordable).
    189                         </p></li><li class="listitem"><p>
     189                        </p></li><li><p>
    190190                        Raw Ethernet framing (to bypass TCP and UDP overheads).
    191191                        </p></li></ul></div><p>
    192192                We have yet to identify metrics for  performance demands to enable this to happen
    193193                effectively.
    194                 </p></div><div class="sect3" title="Required Modifications to Samba"><div class="titlepage"><div><div><h4 class="title"><a name="id2679038"></a>Required Modifications to Samba</h4></div></div></div><p>
     194                </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2672953"></a>Required Modifications to Samba</h4></div></div></div><p>
    195195                Samba needs to be significantly modified to work with a high-speed server interconnect
    196196                system to permit transparent failover clustering.
    197197                </p><p>
    198198                Particular functions inside Samba that will be affected include:
    199                 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
     199                </p><div class="itemizedlist"><ul type="disc"><li><p>
    200200                        The locking database, oplock notifications,
    201201                        and the share mode database.
    202                         </p></li><li class="listitem"><p>
    203 <a class="indexterm" name="id2679065"></a>
    204 <a class="indexterm" name="id2679072"></a>
     202                        </p></li><li><p>
     203<a class="indexterm" name="id2672980"></a>
     204<a class="indexterm" name="id2672987"></a>
    205205                        Failure semantics need to be defined. Samba behaves the same way as Windows.
    206206                        When oplock messages fail, a file open request is allowed, but this is
    207207                        potentially dangerous in a clustered environment. So how should interserver
    208208                        pool failure semantics function, and how should such functionality be implemented?
    209                         </p></li><li class="listitem"><p>
     209                        </p></li><li><p>
    210210                        Should this be implemented using a point-to-point lock manager, or can this
    211211                        be done using multicast techniques?
    212                         </p></li></ul></div></div></div><div class="sect2" title="A Simple Solution"><div class="titlepage"><div><div><h3 class="title"><a name="id2679095"></a>A Simple Solution</h3></div></div></div><p>
    213 <a class="indexterm" name="id2679103"></a>
    214 <a class="indexterm" name="id2679110"></a>
    215 <a class="indexterm" name="id2679117"></a>
     212                        </p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2673010"></a>A Simple Solution</h3></div></div></div><p>
     213<a class="indexterm" name="id2673018"></a>
     214<a class="indexterm" name="id2673025"></a>
     215<a class="indexterm" name="id2673032"></a>
    216216        Allowing failover servers to handle different functions within the exported file system
    217217        removes the problem of requiring a distributed locking protocol.
    218218        </p><p>
    219 <a class="indexterm" name="id2679130"></a>
    220 <a class="indexterm" name="id2679138"></a>
     219<a class="indexterm" name="id2673045"></a>
     220<a class="indexterm" name="id2673052"></a>
    221221        If only one server is active in a pair, the need for high-speed server interconnect is avoided.
    222222        This allows the use of existing high-availability solutions, instead of inventing a new one.
     
    225225        must remember where all services are located  a complexity not easily dealt with.
    226226        </p><p>
    227 <a class="indexterm" name="id2679162"></a>
     227<a class="indexterm" name="id2673077"></a>
    228228        The <span class="emphasis"><em>virtual server</em></span> is still needed to redirect requests to backend
    229229        servers. Backend file space integrity is the responsibility of the administrator.
    230         </p></div><div class="sect2" title="High-Availability Server Products"><div class="titlepage"><div><div><h3 class="title"><a name="id2679176"></a>High-Availability Server Products</h3></div></div></div><p>
    231 <a class="indexterm" name="id2679184"></a>
    232 <a class="indexterm" name="id2679191"></a>
    233 <a class="indexterm" name="id2679198"></a>
    234 <a class="indexterm" name="id2679205"></a>
    235 <a class="indexterm" name="id2679212"></a>
     230        </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2673091"></a>High-Availability Server Products</h3></div></div></div><p>
     231<a class="indexterm" name="id2673099"></a>
     232<a class="indexterm" name="id2673106"></a>
     233<a class="indexterm" name="id2673113"></a>
     234<a class="indexterm" name="id2673120"></a>
     235<a class="indexterm" name="id2673127"></a>
    236236        Failover servers must communicate in order to handle resource failover. This is essential
    237237        for high-availability services. The use of a dedicated heartbeat is a common technique to
     
    239239        link (LAN or serial).
    240240        </p><p>
    241 <a class="indexterm" name="id2679227"></a>
    242 <a class="indexterm" name="id2679234"></a>
    243 <a class="indexterm" name="id2679241"></a>
    244 <a class="indexterm" name="id2679248"></a>
    245 <a class="indexterm" name="id2679255"></a>
     241<a class="indexterm" name="id2673142"></a>
     242<a class="indexterm" name="id2673149"></a>
     243<a class="indexterm" name="id2673156"></a>
     244<a class="indexterm" name="id2673163"></a>
     245<a class="indexterm" name="id2673170"></a>
    246246        Many failover solutions (like Red Hat Cluster Manager and Microsoft Wolfpack)
    247247        can use a shared SCSI of Fiber Channel disk storage array for failover communication.
     
    249249        <a class="ulink" href="http://www.redhat.com/docs/manuals/enterprise/RHEL-AS-2.1-Manual/cluster-manager/s1-service-samba.html" target="_top">www.redhat.com</a>.
    250250        </p><p>
    251 <a class="indexterm" name="id2679277"></a>
     251<a class="indexterm" name="id2673192"></a>
    252252        The Linux High Availability project is a resource worthy of consultation if your desire is
    253253        to build a highly available Samba file server solution. Please consult the home page at
    254254        <a class="ulink" href="http://www.linux-ha.org/" target="_top">www.linux-ha.org/</a>.
    255255        </p><p>
    256 <a class="indexterm" name="id2679297"></a>
    257 <a class="indexterm" name="id2679304"></a>
     256<a class="indexterm" name="id2673211"></a>
     257<a class="indexterm" name="id2673218"></a>
    258258        Front-end server complexity remains a challenge for high availability because it must deal
    259259        gracefully with backend failures, while at the same time providing continuity of service
    260260        to all network clients.
    261         </p></div><div class="sect2" title="MS-DFS: The Poor Man's Cluster"><div class="titlepage"><div><div><h3 class="title"><a name="id2679316"></a>MS-DFS: The Poor Man's Cluster</h3></div></div></div><p>
    262 <a class="indexterm" name="id2679324"></a>
    263 <a class="indexterm" name="id2679331"></a>
     261        </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2673231"></a>MS-DFS: The Poor Man's Cluster</h3></div></div></div><p>
     262<a class="indexterm" name="id2673239"></a>
     263<a class="indexterm" name="id2673246"></a>
    264264        MS-DFS links can be used to redirect clients to disparate backend servers. This pushes
    265265        complexity back to the network client, something already included by Microsoft.
     
    269269        Above all, at the cost of complexity of management, a distributed system (pseudo-cluster) can
    270270        be created using existing Samba functionality.
    271         </p></div><div class="sect2" title="Conclusions"><div class="titlepage"><div><div><h3 class="title"><a name="id2679353"></a>Conclusions</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Transparent SMB clustering is hard to do!</p></li><li class="listitem"><p>Client failover is the best we can do today.</p></li><li class="listitem"><p>Much more work is needed before a practical and manageable high-availability transparent cluster solution will be possible.</p></li><li class="listitem"><p>MS-DFS can be used to create the illusion of a single transparent cluster.</p></li></ul></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Backup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="optional.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="largefile.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 31. Backup Techniques </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 33. Handling Large Directories</td></tr></table></div></body></html>
     271        </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2673268"></a>Conclusions</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Transparent SMB clustering is hard to do!</p></li><li><p>Client failover is the best we can do today.</p></li><li><p>Much more work is needed before a practical and manageable high-availability transparent cluster solution will be possible.</p></li><li><p>MS-DFS can be used to create the illusion of a single transparent cluster.</p></li></ul></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Backup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="optional.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="largefile.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 31. Backup Techniques </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 33. Handling Large Directories</td></tr></table></div></body></html>
Note: See TracChangeset for help on using the changeset viewer.