1 <?xml version="1.0" encoding="UTF-8"?>
2 <chapter id="HDRWQ387">
3 <title>Administering Client Machines and the Cache Manager</title>
5 <para>This chapter describes how to administer an AFS client machine, which is any machine from which users can access the AFS
6 filespace and communicate with AFS server processes. (A client machine can simultaneously function as an AFS server machine if
7 appropriately configured.) An AFS client machine has the following characteristics: <itemizedlist>
9 <para>The kernel includes the set of modifications, commonly referred to as the <emphasis>Cache Manager</emphasis>, that
10 enable access to AFS files and directories. You can configure many of the Cache Manager's features to suit your users'
11 needs. See <link linkend="HDRWQ390">Overview of Cache Manager Customization</link>.</para>
15 <para>The <emphasis role="bold">/usr/vice/etc</emphasis> directory on the local disk stores several configuration files. See
16 <link linkend="HDRWQ392">Configuration Files in the /usr/vice/etc Directory</link>.</para>
20 <para>A cache stores temporary copies of data fetched from AFS file server machines, either in machine memory or on a
21 devoted local disk partition. See <link linkend="HDRWQ394">Determining the Cache Type, Size, and Location</link> and <link
22 linkend="HDRWQ402">Setting Other Cache Parameters with the afsd program</link>.</para>
24 </itemizedlist></para>
26 <para>To learn how to install the client functionality on a machine, see the <emphasis>IBM AFS Quick Beginnings</emphasis>.</para>
29 <title>Summary of Instructions</title>
31 <para>This chapter explains how to perform the following tasks by using the indicated commands:</para>
33 <informaltable frame="none">
35 <colspec colwidth="67*" />
37 <colspec colwidth="33*" />
41 <entry>Display cache size set at reboot</entry>
43 <entry><emphasis role="bold">cat /usr/vice/etc/cacheinfo</emphasis></entry>
47 <entry>Display current cache size and usage</entry>
49 <entry><emphasis role="bold">fs getcacheparms</emphasis></entry>
53 <entry>Change disk cache size without rebooting</entry>
55 <entry><emphasis role="bold">fs setcachesize</emphasis></entry>
59 <entry>Initialize Cache Manager</entry>
61 <entry><emphasis role="bold">afsd</emphasis></entry>
65 <entry>Display contents of <emphasis role="bold">CellServDB</emphasis> file</entry>
67 <entry><emphasis role="bold">cat /usr/vice/etc/CellServDB</emphasis></entry>
71 <entry>Display list of database server machines from kernel memory</entry>
73 <entry><emphasis role="bold">fs listcells</emphasis></entry>
77 <entry>Change list of database server machines in kernel memory</entry>
79 <entry><emphasis role="bold">fs newcell</emphasis></entry>
83 <entry>Check cell's status regarding setuid</entry>
85 <entry><emphasis role="bold">fs getcellstatus</emphasis></entry>
89 <entry>Set cell's status regarding setuid</entry>
91 <entry><emphasis role="bold">fs setcell</emphasis></entry>
95 <entry>Set server probe interval</entry>
97 <entry><emphasis role="bold">fs checkservers -interval</emphasis></entry>
101 <entry>Display machine's cell membership</entry>
103 <entry><emphasis role="bold">cat /usr/vice/etc/ThisCell</emphasis></entry>
107 <entry>Change machine's cell membership</entry>
109 <entry>Edit <emphasis role="bold">/usr/vice/etc/ThisCell</emphasis></entry>
113 <entry>Flush cached file/directory</entry>
115 <entry><emphasis role="bold">fs flush</emphasis></entry>
119 <entry>Flush everything cached from a volume</entry>
121 <entry><emphasis role="bold">fs flushvolume</emphasis></entry>
125 <entry>Update volume-to-mount-point mappings</entry>
127 <entry><emphasis role="bold">fs checkvolumes</emphasis></entry>
131 <entry>Display Cache Manager's server preference ranks</entry>
133 <entry><emphasis role="bold">fs getserverprefs</emphasis></entry>
137 <entry>Set Cache Manager's server preference ranks</entry>
139 <entry><emphasis role="bold">fs setserverprefs</emphasis></entry>
143 <entry>Display client machine addresses to register</entry>
145 <entry><emphasis role="bold">fs getclientaddrs</emphasis></entry>
149 <entry>Set client machine addresses to register</entry>
151 <entry><emphasis role="bold">fs setclientaddrs</emphasis></entry>
155 <entry>Control the display of warning and status messages</entry>
157 <entry><emphasis role="bold">fs messages</emphasis></entry>
161 <entry>Display and change machine's system type</entry>
163 <entry><emphasis role="bold">fs sysname</emphasis></entry>
167 <entry>Enable asynchronous writes</entry>
169 <entry><emphasis role="bold">fs storebehind</emphasis></entry>
176 <sect1 id="HDRWQ390">
177 <title>Overview of Cache Manager Customization</title>
180 <primary>Cache Manager</primary>
182 <secondary>configuring and customizing</secondary>
186 <primary>configuring</primary>
188 <secondary>Cache Manager</secondary>
192 <primary>Cache Manager</primary>
194 <secondary>described</secondary>
197 <para>An AFS client machine's kernel includes a set of modifications, commonly referred to as the <emphasis>Cache
198 Manager</emphasis>, that enable access to AFS files and directories and communications with AFS server processes. It is common
199 to speak of the Cache Manager as a process or program, and in regular usage it appears to function like one. When configuring
200 it, though, it is helpful to keep in mind that this usage is not strictly accurate.</para>
202 <para>The Cache Manager mainly fetches files on behalf of application programs running on the machine. When an application
203 requests an AFS file, the Cache Manager contacts the Volume Location (VL) Server to obtain a list of the file server machines
204 that house the volume containing the file. The Cache Manager then translates the application program's system call requests into
205 remote procedure calls (RPCs) to the File Server running on the appropriate machine. When the File Server delivers the file, the
206 Cache Manager stores it in a local <emphasis>cache</emphasis> before delivering it to the application program.</para>
208 <para>The File Server delivers a data structure called a <emphasis>callback</emphasis> along with the file. (To be precise, it
209 delivers a callback for each file fetched from a read/write volume, and a single callback for all data fetched from a read-only
210 volume.) A valid callback indicates that the Cache Manager's cached copy of a file matches the central copy maintained by the
211 File Server. If an application on another AFS client machine changes the central copy, the File Server breaks the callback, and
212 the Cache Manager must retrieve the new version when an application program on its machine next requests data from the file. As
213 long as the callback is unbroken, however, the Cache Manager can continue to provide the cached version of the file to
214 applications on its machine, which eliminates unnecessary network traffic.</para>
216 <para>The indicated sections of this chapter explain how to configure and customize the following Cache Manager features. All
217 but the first (choosing disk or memory cache) are optional, because AFS sets suitable defaults for them. <itemizedlist>
219 <para><emphasis>disk or memory cache</emphasis>. The AFS Cache Manager can use machine memory for caching instead of space
220 on the local disk. Deciding which to use is the most basic configuration decision you must make. See <link
221 linkend="HDRWQ394">Determining the Cache Type, Size, and Location</link>.</para>
225 <para><emphasis>cache size</emphasis>. Cache size probably has the most direct influence on client machine performance. It
226 determines how often the Cache Manager must contact the File Server across the network or discard cached data to make room
227 for newly requested files, both of which affect how quickly the Cache Manager delivers files to users. See <link
228 linkend="HDRWQ394">Determining the Cache Type, Size, and Location</link>.</para>
232 <para><emphasis>cache location</emphasis>. For a disk cache, you can alter the conventional cache directory location
233 (<emphasis role="bold">/usr/vice/cache</emphasis>) to take advantage of greater space availability on other disks on the
234 machine. A larger cache can result in faster file delivery. See <link linkend="HDRWQ394">Determining the Cache Type, Size,
235 and Location</link>.</para>
239 <para><emphasis>chunk size and number</emphasis>. The <emphasis role="bold">afsd</emphasis> program, which initializes the
240 Cache Manager, allows you to control the size and number of chunks into which a cache is divided, plus related parameters.
241 Setting these parameters is optional, because there are reasonable defaults, but it provides precise control. The AFS
242 distribution includes configuration scripts that set Cache Manager parameters to values that are reasonable for different
243 configurations and usage patterns. See <link linkend="HDRWQ402">Setting Other Cache Parameters with the afsd
244 program</link>.</para>
248 <para><emphasis>knowledge of database server machines</emphasis>. Enable access to a cell's AFS filespace and other
249 services by listing the cell's database server machines in the <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis>
250 file on the local disk. See <link linkend="HDRWQ406">Maintaining Knowledge of Database Server Machines</link>.</para>
254 <para><emphasis>setuid privilege</emphasis>. You can control whether the Cache Manager allows programs from a cell to
255 execute with setuid permission. See <link linkend="HDRWQ409">Determining if a Client Can Run Setuid
256 Programs</link>.</para>
260 <para><emphasis>cell membership</emphasis>. Each client belongs to a one cell defined by the local <emphasis
261 role="bold">/usr/vice/etc/ThisCell</emphasis> file. Cell membership determines the default cell in which the machine's
262 users are authenticated and in which AFS commands run. See <link linkend="HDRWQ411">Setting a Client Machine's Cell
263 Membership</link>.</para>
267 <para><emphasis>cached file version</emphasis>. AFS's system of callbacks normally guarantees that the Cache Manager has
268 the most current versions of files and directories possible. Nevertheless, you can force the Cache Manager to fetch the
269 most current version of a file from the File Server if you suspect that the cache contains an outdated version. See <link
270 linkend="HDRWQ412">Forcing the Update of Cached Data</link>.</para>
274 <para><emphasis>File Server and Volume Location Server preferences</emphasis>. The Cache Manager sets numerical preference
275 ranks for the interfaces on file server machines and Volume Server (VL) machines. The ranks determine which interface the
276 Cache Manager first attempts to use when fetching data from a volume or from the Volume Location Database (VLDB). The
277 Cache Manager sets default ranks as it initializes, basing them on its network proximity to each interface, but you can
278 modify the preference ranks if you wish. See <link linkend="HDRWQ414">Maintaining Server Preference Ranks</link>.</para>
282 <para><emphasis>interfaces registered with the File Server</emphasis>. If the Cache Manager is multihomed (has multiple
283 interface addresses), you can control which of them it registers for File Servers to use when they initiate RPCs to the
284 client machine. See <link linkend="HDRWQ415">Managing Multihomed Client Machines</link>.</para>
288 <para><emphasis>display of information messages</emphasis>. By default, the Cache Manager sends basic error and
289 informational messages to the client machine's console and to command shells. You can disable the messaging. See <link
290 linkend="HDRWQ416">Controlling the Display of Warning and Informational Messages</link>.</para>
294 <para><emphasis>system type</emphasis>. The Cache Manager records the local machine's AFS system type in kernel memory,
295 and substitutes the value for the @sys variable in pathnames. See <link linkend="HDRWQ417">Displaying and Setting the
296 System Type Name</link>.</para>
300 <para><emphasis>delayed writes</emphasis>. By default, the Cache Manager writes all data to the File Server immediately
301 and synchronously when an application program closes a file. You can enable asynchronous writes, either for an individual
302 file, or all files that the Cache Manager handles, and set how much data remains to be written when the Cache Manager
303 returns control to the closing application. See <link linkend="HDRWQ418">Enabling Asynchronous Writes</link>.</para>
305 </itemizedlist></para>
307 <para>You must make all configuration changes on the client machine itself (at the console or over a direct connection such as a
308 <emphasis role="bold">telnet</emphasis> connection). You cannot configure the Cache Manager remotely. You must be logged in as
309 the local superuser <emphasis role="bold">root</emphasis> to issue some commands, whereas others require no privilege. All files
310 mentioned in this chapter must actually reside on the local disk of each AFS client machine (they cannot, for example, be
311 symbolic links to files in AFS).</para>
313 <para>AFS's <emphasis role="bold">package</emphasis> program can simplify other aspects of client machine configuration,
314 including those normally set in the machine's AFS initialization file. See <link linkend="HDRWQ419">Configuring Client Machines
315 with the package Program</link>.</para>
318 <sect1 id="HDRWQ391">
319 <title>Configuration and Cache-Related Files on the Local Disk</title>
322 <primary>usr/vice/etc directory</primary>
326 <primary>directory</primary>
328 <secondary>/usr/vice/etc</secondary>
332 <primary>configuration files</primary>
334 <secondary>client machine</secondary>
338 <primary>client machine</primary>
340 <secondary>configuration files</secondary>
344 <primary>client machine</primary>
346 <secondary>/usr/vice/etc directory</secondary>
349 <para>This section briefly describes the client configuration files that must reside in the local <emphasis
350 role="bold">/usr/vice/etc</emphasis> directory on every client machine. If the machine uses a disk cache, there must be a
351 partition devoted to cache files; by convention, it is mounted at the <emphasis role="bold">/usr/vice/cache</emphasis>
354 <para><emphasis role="bold">Note for Windows users:</emphasis> Some files described in this document possibly do not exist on
355 machines that run a Windows operating system. Also, Windows uses a backslash (<emphasis role="bold">\</emphasis>) rather than a
356 forward slash (<emphasis role="bold">/</emphasis>) to separate the elements in a pathname.</para>
358 <sect2 id="HDRWQ392">
359 <title>Configuration Files in the /usr/vice/etc Directory</title>
361 <para>The <emphasis role="bold">/usr/vice/etc</emphasis> directory on a client machine's local disk must contain certain
362 configuration files for the Cache Manager to function properly. They control the most basic aspects of Cache Manager
363 configuration.</para>
365 <para>If it is important that the client machines in your cell perform uniformly, it is most efficient to update these files
366 from a central source. The following descriptions include pointers to sections that discuss how best to maintain the files.
369 <primary>afsd program</primary>
373 <primary>Cache Manager</primary>
375 <secondary>afsd initialization program</secondary>
379 <primary>files</primary>
381 <secondary>afsd</secondary>
385 <primary>commands</primary>
387 <secondary>afsd</secondary>
391 <primary>programs</primary>
393 <secondary>afsd</secondary>
397 <term><emphasis role="bold">afsd</emphasis></term>
400 <para>The binary file for the program that initializes the Cache Manager. It must run each time the machine reboots in
401 order for the machine to remain an AFS client machine. The program also initializes several daemons that improve Cache
402 Manager functioning, such as the process that handles callbacks. <indexterm>
403 <primary>files</primary>
405 <secondary>cacheinfo</secondary>
406 </indexterm> <indexterm>
407 <primary>cacheinfo file</primary>
413 <term><emphasis role="bold">cacheinfo</emphasis></term>
416 <para>A one-line file that sets the cache's most basic configuration parameters: the local directory at which the
417 Cache Manager mounts the AFS filespace, the local disk directory to use as the cache, and how many kilobytes to
418 allocate to the cache.</para>
420 <para>The <emphasis>IBM AFS Quick Beginnings</emphasis> explains how to create this file as you install a client
421 machine. To change the cache size on a machine that uses a memory cache, edit the file and reboot the machine. On a
422 machine that uses a disk cache, you can change the cache size without rebooting by issuing the <emphasis
423 role="bold">fs setcachesize</emphasis> command. For instructions, see <link linkend="HDRWQ394">Determining the Cache
424 Type, Size, and Location</link>. <indexterm>
425 <primary>CellServDB file (client)</primary>
427 <secondary>about</secondary>
428 </indexterm> <indexterm>
429 <primary>files</primary>
431 <secondary>CellServDB (client)</secondary>
437 <term><emphasis role="bold">CellServDB</emphasis></term>
440 <para>This ASCII file names the database server machines in the local cell and in any foreign cell to which you want
441 to enable access from this machine. (Database server machines are the machines in a cell that run the Authentication,
442 Backup, Protection, and VL Server processes; see <link linkend="HDRWQ92">Database Server Machines</link>.)</para>
444 <para>The Cache Manager must be able to reach a cell's database server machines to fetch files from its filespace.
445 Incorrect or missing information in the <emphasis role="bold">CellServDB</emphasis> file can slow or completely block
446 access. It is important to update the file whenever a cell's database server machines change.</para>
448 <para>As the <emphasis role="bold">afsd</emphasis> program initializes the Cache Manager, it loads the contents of the
449 file into kernel memory. The Cache Manager does not read the file between reboots, so to incorporate changes to the
450 file into kernel memory, you must reboot the machine. Alternatively, you can issue the <emphasis role="bold">fs
451 newcell</emphasis> command to insert the changes directly into kernel memory without changing the file. It can also be
452 convenient to upgrade the file from a central source. For instructions, see <link linkend="HDRWQ406">Maintaining
453 Knowledge of Database Server Machines</link>.</para>
455 <para>(The <emphasis role="bold">CellServDB</emphasis> file on client machines is not the same as the one kept in the
456 <emphasis role="bold">/usr/afs/etc</emphasis> directory on server machines, which lists only the local cell's database
457 server machines. For instructions on maintaining the server <emphasis role="bold">CellServDB</emphasis> file, see
458 <link linkend="HDRWQ118">Maintaining the Server CellServDB File</link>). <indexterm>
459 <primary>NetInfo file (client version)</primary>
460 </indexterm> <indexterm>
461 <primary>files</primary>
463 <secondary>NetInfo (client version)</secondary>
469 <term><emphasis role="bold">NetInfo</emphasis></term>
472 <para>This optional ASCII file lists one or more of the network interface addresses on the client machine. If it
473 exists when the Cache Manager initializes, the Cache Manager uses it as the basis for the list of interfaces that it
474 registers with File Servers. See <link linkend="HDRWQ415">Managing Multihomed Client Machines</link>. <indexterm>
475 <primary>NetRestrict file (client version)</primary>
476 </indexterm> <indexterm>
477 <primary>files</primary>
479 <secondary>NetRestrict (client version)</secondary>
485 <term><emphasis role="bold">NetRestrict</emphasis></term>
488 <para>This optional ASCII file lists one or more network interface addresses. If it exists when the Cache Manager
489 initializes, the Cache Manager removes the specified addresses from the list of interfaces that it registers with File
490 Servers. See <link linkend="HDRWQ415">Managing Multihomed Client Machines</link>. <indexterm>
491 <primary>ThisCell file (client)</primary>
492 </indexterm> <indexterm>
493 <primary>files</primary>
495 <secondary>ThisCell (client)</secondary>
501 <term><emphasis role="bold">ThisCell</emphasis></term>
504 <para>This ASCII file contains a single line that specifies the complete domain-style name of the cell to which the
505 machine belongs. Examples are <computeroutput>abc.com</computeroutput> and
506 <computeroutput>stateu.edu</computeroutput>. This value defines the default cell in which the machine's users become
507 authenticated, and in which the command interpreters (for example, the <emphasis role="bold">bos</emphasis> command)
508 contact server processes.</para>
510 <para>The <emphasis>IBM AFS Quick Beginnings</emphasis> explains how to create this file as you install the AFS client
511 functionality. To learn about changing a client machine's cell membership, see <link linkend="HDRWQ411">Setting a
512 Client Machine's Cell Membership</link>.</para>
515 </variablelist></para>
517 <para>In addition to these files, the <emphasis role="bold">/usr/vice/etc</emphasis> directory also sometimes contains the
518 following types of files and subdirectories: <itemizedlist>
520 <primary>AFS</primary>
522 <secondary>initialization script</secondary>
526 <primary>files</primary>
528 <secondary>AFS initialization script</secondary>
532 <primary>initialization script for AFS</primary>
536 <primary>script for AFS initialization</primary>
540 <para>The AFS initialization script, called <emphasis role="bold">afs.rc</emphasis> on many system types. In the
541 conventional configuration specified by the <emphasis>IBM AFS Quick Beginnings</emphasis>, it is a symbolic link to the
542 actual script kept in the same directory as other initialization files used by the operating system. <indexterm>
543 <primary>dynamic kernel loader programs</primary>
545 <secondary>directory for AFS library files</secondary>
546 </indexterm> <indexterm>
547 <primary>files</primary>
549 <secondary>AFS libraries used by dynamic kernel loader programs</secondary>
554 <para>A subdirectory that houses AFS kernel library files used by a dynamic kernel loading program. <indexterm>
555 <primary>afszcm.cat file</primary>
556 </indexterm> <indexterm>
557 <primary>files</primary>
559 <secondary>afszcm.cat</secondary>
564 <para>A subdirectory called <emphasis role="bold">C</emphasis>, which houses the Cache Manager catalog file called
565 <emphasis role="bold">afszcm.cat</emphasis>. The fstrace program uses the catalog file to translate operation codes into
566 character strings, which makes the message in the trace log more readable. See <link linkend="HDRWQ342">About the
567 fstrace Command Suite</link>.</para>
569 </itemizedlist></para>
572 <sect2 id="HDRWQ393">
573 <title>Cache-Related Files</title>
576 <primary>usr/vice/cache directory</primary>
580 <primary>directory</primary>
582 <secondary>/usr/vice/cache</secondary>
586 <primary>directory</primary>
588 <secondary>disk cache</secondary>
592 <primary>cache files (client)</primary>
596 <primary>client machine</primary>
598 <secondary>cache files</secondary>
601 <para>A client machine that uses a disk cache must have a local disk directory devoted to the cache. The conventional mount
602 point is <emphasis role="bold">/usr/vice/cache</emphasis>, but you can use another partition that has more available
605 <para>Do not delete or directly modify any of the files in the cache directory. Doing so can cause a kernel panic, from which
606 the only way to recover is to reboot the machine. By default, only the local superuser <emphasis role="bold">root</emphasis>
607 can read the files directly, by virtue of owning them.</para>
609 <para>A client machine that uses a memory cache keeps all of the information stored in these files in machine memory instead.
612 <primary>CacheItems file</primary>
616 <primary>files</primary>
618 <secondary>CacheItems</secondary>
622 <term><emphasis role="bold">CacheItems</emphasis></term>
625 <para>A binary-format file in which the Cache Manager tracks the contents of cache chunks (the <emphasis
626 role="bold">V</emphasis> files in the directory, described just following), including the file ID number (fID) and the
627 data version number. <indexterm>
628 <primary>files</primary>
630 <secondary>VolumeItems</secondary>
631 </indexterm> <indexterm>
632 <primary>VolumeItems file</primary>
638 <term><emphasis role="bold">VolumeItems</emphasis></term>
641 <para>A binary-format file in which the Cache Manager records the mapping between mount points and the volumes from
642 which it has fetched data. The Cache Manager uses the information when responding to the <emphasis
643 role="bold">pwd</emphasis> command, among others. <indexterm>
644 <primary>files</primary>
646 <secondary>Vn</secondary>
647 </indexterm> <indexterm>
648 <primary>Vn file (data cache)</primary>
649 </indexterm> <indexterm>
650 <primary>data cache</primary>
652 <secondary>Vn file in</secondary>
658 <term><emphasis role="bold">Vn</emphasis></term>
661 <para>A cache chunk file, which expands to a maximum size (by default, 64 KB) to house data fetched from AFS files.
662 The number of <emphasis role="bold">V</emphasis>n files in the cache depends on the cache size among other factors.
663 The n is the index assigned to each file; they are numbered sequentially, but the Cache Manager does not necessarily
664 use them in order or contiguously. If an AFS file is larger than the maximum size for <emphasis
665 role="bold">V</emphasis>n files, the Cache Manager divides it across multiple <emphasis role="bold">V</emphasis>n
669 </variablelist></para>
673 <sect1 id="HDRWQ394">
674 <title>Determining the Cache Type, Size, and Location</title>
676 <para>This section explains how to configure a memory or disk cache, how to display and set the size of either type of cache,
677 and how to set the location of the cache directory for a disk cache. <indexterm>
678 <primary>data cache</primary>
680 <secondary>disk versus memory</secondary>
681 </indexterm> <indexterm>
682 <primary>client machine</primary>
684 <secondary>disk versus memory cache</secondary>
687 <para>The Cache Manager uses a disk cache by default, and it is the preferred type of caching. To configure a memory cache,
688 include the <emphasis role="bold">-memcache</emphasis> flag on the <emphasis role="bold">afsd</emphasis> command, which is
689 normally invoked in the machine's AFS initialization file. If configured to use a memory cache, the Cache Manager does no disk
690 caching, even if the machine has a disk.</para>
692 <sect2 id="Header_438">
693 <title>Choosing the Cache Size</title>
696 <primary>data cache</primary>
698 <secondary>size</secondary>
700 <tertiary>recommendations</tertiary>
703 <para>Cache size influences the performance of a client machine more directly than perhaps any other cache parameter. The
704 larger the cache, the faster the Cache Manager is likely to deliver files to users. A small cache can impair performance
705 because it increases the frequency at which the Cache Manager must discard cached data to make room for newly requested data.
706 When an application asks for data that has been discarded, the Cache Manager must request it from the File Server, and
707 fetching data across the network is almost always slower than fetching it from the local disk. The Cache Manager never
708 discards data from a file that has been modified locally but not yet stored back to the File Server. If the cache is very
709 small, the Cache Manager possible cannot find any data to discard. For more information about the algorithm it uses when
710 discarding cached data, see <link linkend="HDRWQ401">How the Cache Manager Chooses Data to Discard</link>).</para>
712 <para>The amount of disk or memory you devote to caching depends on several factors. The amount of space available in memory
713 or on the partition housing the disk cache directory imposes an absolute limit. In addition, you cannot allocate more than 95%
714 of the space available on the cache directory's partition to a disk cache. The <emphasis role="bold">afsd</emphasis> program
715 exits without starting the Cache Manager and prints an appropriate message to the standard output stream if you violate this
716 restriction. For a memory cache, you must leave enough memory for other processes and applications to run. If you try to
717 allocate more memory than is actually available, the <emphasis role="bold">afsd</emphasis> program exits without initializing
718 the Cache Manager and produces the following message on the standard output stream:</para>
721 afsd: memCache allocation failure at number KB
724 <para>where number is how many kilobytes were allocated just before the failure.</para>
726 <para>Within these hard limits, the factors that determine appropriate cache size include the number of users working on the
727 machine, the size of the files with which they usually work, and (for a memory cache) the number of processes that usually run
728 on the machine. The higher the demand from these factors, the larger the cache needs to be to maintain good
731 <para>Disk caches smaller than 10 MB do not generally perform well. Machines serving multiple users usually perform better
732 with a cache of at least 60 to 70 MB. The point at which enlarging the cache further does not really improve performance
733 depends on the factors mentioned previously, and is difficult to predict.</para>
735 <para>Memory caches smaller than 1 MB are nonfunctional, and the performance of caches smaller than 5 MB is usually
736 unsatisfactory. Suitable upper limits are similar to those for disk caches but are probably determined more by the demands on
737 memory from other sources on the machine (number of users and processes). Machines running only a few processes possibly can
738 use a smaller memory cache.</para>
740 <para>AFS imposes an absolute limit on cache size in some versions. See the <emphasis>IBM AFS Release Notes</emphasis> for the
741 version you are using.</para>
744 <sect2 id="HDRWQ395">
745 <title>Displaying and Setting the Cache Size and Location</title>
748 <primary>Cache Manager</primary>
750 <secondary>setting</secondary>
752 <tertiary>disk cache location</tertiary>
756 <primary>Cache Manager</primary>
758 <secondary>displaying</secondary>
760 <tertiary>cache size from cacheinfo file</tertiary>
764 <primary>Cache Manager</primary>
766 <secondary>setting</secondary>
768 <tertiary>cache size in cacheinfo file</tertiary>
772 <primary>Cache Manager</primary>
774 <secondary>data cache</secondary>
776 <tertiary>displaying size set at reboot</tertiary>
780 <primary>cacheinfo file</primary>
782 <secondary>setting</secondary>
784 <tertiary>disk cache location</tertiary>
788 <primary>cacheinfo file</primary>
790 <secondary>displaying contents</secondary>
794 <primary>cacheinfo file</primary>
796 <secondary>setting</secondary>
798 <tertiary>cache size</tertiary>
802 <primary>changing</primary>
804 <secondary>data cache size specified in cacheinfo file</secondary>
808 <primary>changing</primary>
810 <secondary>disk cache location, in cacheinfo file</secondary>
814 <primary>client machine</primary>
816 <secondary>setting</secondary>
818 <tertiary>disk cache location</tertiary>
822 <primary>client machine</primary>
824 <secondary>data cache size set at reboot</secondary>
826 <tertiary>displaying</tertiary>
830 <primary>client machine</primary>
832 <secondary>displaying</secondary>
834 <tertiary>data cache size from cacheinfo file</tertiary>
838 <primary>client machine</primary>
840 <secondary>setting</secondary>
842 <tertiary>data cache size in cacheinfo file</tertiary>
846 <primary>displaying</primary>
848 <secondary>data cache size</secondary>
850 <tertiary>set at reboot</tertiary>
854 <primary>displaying</primary>
856 <secondary>data cache size</secondary>
858 <tertiary>specified in cacheinfo file</tertiary>
862 <primary>data cache</primary>
864 <secondary>size</secondary>
866 <tertiary>setting in cacheinfo file</tertiary>
870 <primary>data cache</primary>
872 <secondary>changing location of disk cache</secondary>
876 <primary>data cache</primary>
878 <secondary>size</secondary>
880 <tertiary>set at reboot, displaying</tertiary>
884 <primary>data cache</primary>
886 <secondary>displaying size specified in cacheinfo file</secondary>
890 <primary>location</primary>
892 <secondary>setting for client</secondary>
896 <primary>setting</primary>
898 <secondary>disk cache location in cacheinfo file</secondary>
901 <para>The Cache Manager determines how big to make the cache by reading the <emphasis
902 role="bold">/usr/vice/etc/cacheinfo</emphasis> file as it initializes. As directed in the <emphasis>IBM AFS Quick
903 Beginnings</emphasis>, you must create the file before running the <emphasis role="bold">afsd</emphasis> program. The file
904 also defines the directory on which to mount AFS (by convention, <emphasis role="bold">/afs</emphasis>), and the local disk
905 directory to use for a cache directory.</para>
907 <para>To change any of the values in the file, log in as the local superuser <emphasis role="bold">root</emphasis>. You must
908 reboot the machine to have the new value take effect. For instructions, see <link linkend="HDRWQ398">To edit the cacheinfo
911 <para>To change the cache size at reboot without editing the <emphasis role="bold">cacheinfo</emphasis> file, include the
912 <emphasis role="bold">-blocks</emphasis> argument to the <emphasis role="bold">afsd</emphasis> command; see the command's
913 reference page in the IBM AFS Administration Reference.</para>
915 <para>For a disk cache, you can also use the <emphasis role="bold">fs setcachesize</emphasis> command to reset the cache size
916 without rebooting. The value you set persists until the next reboot, at which time the cache size returns to the value
917 specified in the <emphasis role="bold">cacheinfo</emphasis> file or by the <emphasis role="bold">-blocks</emphasis> argument
918 to the <emphasis role="bold">afsd</emphasis> command. For instructions, see <link linkend="HDRWQ399">To change the disk cache
919 size without rebooting</link>.</para>
921 <para>To display the current cache size and the amount of space the Cache Manager is using at the moment, use the <emphasis
922 role="bold">fs getcacheparms</emphasis> command as detailed in <link linkend="HDRWQ397">To display the current cache
926 <sect2 id="HDRWQ396">
927 <title>To display the cache size set at reboot</title>
931 <para>Use a text editor or the <emphasis role="bold">cat</emphasis> command to display the contents of the <emphasis
932 role="bold">/usr/vice/etc/cacheinfo</emphasis> file. <programlisting>
933 % <emphasis role="bold">cat /usr/vice/etc/cacheinfo</emphasis>
934 </programlisting></para>
939 <primary>data cache</primary>
941 <secondary>size</secondary>
943 <tertiary>current, displaying</tertiary>
947 <primary>client machine</primary>
949 <secondary>data cache size</secondary>
951 <tertiary>displaying current</tertiary>
955 <primary>Cache Manager</primary>
957 <secondary>data cache size</secondary>
959 <tertiary>displaying current</tertiary>
963 <primary>displaying</primary>
965 <secondary>data cache size, current</secondary>
969 <primary>fs commands</primary>
971 <secondary>getcacheparms</secondary>
975 <primary>commands</primary>
977 <secondary>fs getcacheparms</secondary>
981 <sect2 id="HDRWQ397">
982 <title>To display the current cache size</title>
986 <para>Issue the <emphasis role="bold">fs getcacheparms</emphasis> command on the client machine. <programlisting>
987 % <emphasis role="bold">fs getcacheparms</emphasis>
988 </programlisting></para>
990 <para>where <emphasis role="bold">getca</emphasis> is the shortest acceptable abbreviation of <emphasis
991 role="bold">getcacheparms</emphasis>.</para>
993 <para>The output shows the number of kilobyte blocks the Cache Manager is using as a cache at the moment the command is
994 issued, and the current size of the cache. For example:</para>
997 AFS using 13709 of the cache's available 15000 1K byte blocks.
1003 <primary>data cache</primary>
1005 <secondary>size</secondary>
1007 <tertiary>setting in cacheinfo file</tertiary>
1011 <primary>client machine</primary>
1013 <secondary>data cache size</secondary>
1015 <tertiary>setting in cacheinfo file</tertiary>
1019 <primary>Cache Manager</primary>
1021 <secondary>data cache size</secondary>
1023 <tertiary>setting in cacheinfo file</tertiary>
1027 <primary>setting</primary>
1029 <secondary>data cache size in cacheinfo file</secondary>
1033 <primary>cacheinfo file</primary>
1035 <secondary>format</secondary>
1039 <sect2 id="HDRWQ398">
1040 <title>To edit the cacheinfo file</title>
1044 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
1045 the <emphasis role="bold">su</emphasis> command. <programlisting>
1046 % <emphasis role="bold">su root</emphasis>
1047 Password: <<replaceable>root_password</replaceable>>
1048 </programlisting></para>
1052 <para>Use a text editor to edit the <emphasis role="bold">/usr/vice/etc/cacheinfo</emphasis> file, which has three fields,
1053 separated by colons: <itemizedlist>
1055 <para>The first field names the local directory on which to mount the AFS filespace. The conventional location is
1056 <emphasis role="bold">/afs</emphasis>.</para>
1060 <para>The second field defines the local disk directory to use for the disk cache. The conventional location is the
1061 <emphasis role="bold">/usr/vice/cache</emphasis> directory, but you can specify an alternate directory if another
1062 partition has more space available. There must always be a value in this field, but the Cache Manager ignores it if
1063 the machine uses a memory cache.</para>
1067 <para>The third field defines cache size as a number of kilobyte (1024-byte) blocks.</para>
1069 </itemizedlist></para>
1071 <para>The following example mounts the AFS filespace at the <emphasis role="bold">/afs</emphasis> directory, names
1072 <emphasis role="bold">/usr/vice/cache</emphasis> as the cache directory, and sets cache size to 50,000 KB:</para>
1075 <emphasis role="bold">/afs:/usr/vice/cache:50000</emphasis>
1081 <primary>data cache</primary>
1083 <secondary>size</secondary>
1085 <tertiary>setting until next reboot</tertiary>
1089 <primary>changing</primary>
1091 <secondary>data cache size temporarily</secondary>
1095 <primary>client machine</primary>
1097 <secondary>data cache size</secondary>
1099 <tertiary>setting until next reboot</tertiary>
1103 <primary>Cache Manager</primary>
1105 <secondary>data cache size</secondary>
1107 <tertiary>setting until next reboot</tertiary>
1111 <primary>fs commands</primary>
1113 <secondary>setcachesize</secondary>
1117 <primary>commands</primary>
1119 <secondary>fs setcachesize</secondary>
1123 <sect2 id="HDRWQ399">
1124 <title>To change the disk cache size without rebooting</title>
1128 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
1129 the <emphasis role="bold">su</emphasis> command. <programlisting>
1130 % <emphasis role="bold">su root</emphasis>
1131 Password: <<replaceable>root_password</replaceable>>
1132 </programlisting></para>
1136 <para><anchor id="LIWQ400" />Issue the <emphasis role="bold">fs setcachesize</emphasis> command to set a new disk cache
1140 <para>This command does not work for a memory cache.</para>
1144 # <emphasis role="bold">fs setcachesize</emphasis> <<replaceable>size in 1K byte blocks (0 =</replaceable>> reset)>
1147 <para>where <variablelist>
1149 <term><emphasis role="bold">setca</emphasis></term>
1152 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">setcachesize</emphasis>.</para>
1157 <term><emphasis role="bold">size in 1K byte blocks (0 => reset)</emphasis></term>
1160 <para>Sets the number of kilobyte blocks to be used for the cache. Specify a positive integer (<emphasis
1161 role="bold">1024</emphasis> equals 1 MB), or <emphasis role="bold">0</emphasis> (zero) to reset the cache size to
1162 the value specified in the <emphasis role="bold">cacheinfo</emphasis> file.</para>
1165 </variablelist></para>
1170 <primary>data cache</primary>
1172 <secondary>disk cache size</secondary>
1174 <tertiary>resetting to default value</tertiary>
1178 <primary>changing</primary>
1180 <secondary>disk cache size to default value</secondary>
1184 <primary>resetting</primary>
1186 <secondary>disk cache size to default value</secondary>
1190 <primary>cacheinfo file</primary>
1192 <secondary>resetting disk cache to size specified</secondary>
1196 <primary>client machine</primary>
1198 <secondary>disk cache size</secondary>
1200 <tertiary>resetting to default value</tertiary>
1204 <primary>Cache Manager</primary>
1206 <secondary>data cache size</secondary>
1208 <tertiary>resetting to default value (for disk cache only)</tertiary>
1212 <sect2 id="Header_444">
1213 <title>To reset the disk cache size to the default without rebooting</title>
1217 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
1218 the <emphasis role="bold">su</emphasis> command. <programlisting>
1219 % <emphasis role="bold">su root</emphasis>
1220 Password: <<replaceable>root_password</replaceable>>
1221 </programlisting></para>
1225 <para>Issue the <emphasis role="bold">fs setcachesize</emphasis> command to reset the size of the local disk cache (the
1226 command does not work for a memory cache). Choose one of the two following options: <itemizedlist>
1228 <para>To reset the cache size to the value specified in the local <emphasis role="bold">cacheinfo</emphasis> file,
1229 specify the value <emphasis role="bold">0</emphasis> (zero) <programlisting>
1230 # <emphasis role="bold">fs setcachesize 0</emphasis>
1231 </programlisting></para>
1235 <para>To reset the cache size to the value set at the last reboot of the machine, include the <emphasis
1236 role="bold">-reset</emphasis> flag. Unless the <emphasis role="bold">-blocks</emphasis> argument was used on the
1237 <emphasis role="bold">afsd</emphasis> command, this is also the value in the <emphasis
1238 role="bold">cacheinfo</emphasis> file. <programlisting>
1239 # <emphasis role="bold">fs setcachesize -reset</emphasis>
1240 </programlisting></para>
1242 </itemizedlist></para>
1244 <para>where <variablelist>
1246 <term><emphasis role="bold">setca</emphasis></term>
1249 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">setcachesize</emphasis>.</para>
1254 <term><emphasis role="bold">0</emphasis></term>
1257 <para>Resets the disk cache size to the value in the third field of the <emphasis
1258 role="bold">/usr/vice/etc/cacheinfo</emphasis> file.</para>
1263 <term><emphasis role="bold">-reset</emphasis></term>
1266 <para>Resets the cache size to the value set at the last reboot.</para>
1269 </variablelist></para>
1274 <sect2 id="HDRWQ401">
1275 <title>How the Cache Manager Chooses Data to Discard</title>
1277 <para>When the cache is full and application programs request more data from AFS, the Cache Manager must flush out cache
1278 chunks to make room for the data. The Cache Manager considers two factors: <orderedlist>
1280 <para>How recently an application last accessed the data.</para>
1284 <para>Whether the chunk is <emphasis>dirty</emphasis>. A dirty chunk contains changes to a file that have not yet been
1285 saved back to the permanent copy stored on a file server machine.</para>
1287 </orderedlist></para>
1289 <para>The Cache Manager first checks the least-recently used chunk. If it is not dirty, the Cache Manager discards the data in
1290 that chunk. If the chunk is dirty, the Cache Manager moves on to check the next least recently used chunk. It continues in
1291 this manner until it has created a sufficient number of empty chunks.</para>
1293 <para>Chunks that contain data fetched from a read-only volume are by definition never dirty, so the Cache Manager can always
1294 discard them. Normally, the Cache Manager can also find chunks of data fetched from read/write volumes that are not dirty, but
1295 a small cache makes it difficult to find enough eligible data. If the Cache Manager cannot find any data to discard, it must
1296 return I/O errors to application programs that request more data from AFS. Application programs usually have a means for
1297 notifying the user of such errors, but not for revealing their cause.</para>
1301 <sect1 id="HDRWQ402">
1302 <title>Setting Other Cache Parameters with the afsd program</title>
1304 <para>There are only three cache configuration parameters you must set: the mount directory for AFS, the location of the disk
1305 cache directory, and the cache size. They correspond to the three fields in the <emphasis
1306 role="bold">/usr/vice/etc/cacheinfo</emphasis> file, as discussed in <link linkend="HDRWQ394">Determining the Cache Type, Size,
1307 and Location</link>. However, if you want to experiment with fine-tuning cache performance, you can use the arguments on the
1308 <emphasis role="bold">afsd</emphasis> command to control several other parameters. This section discusses a few of these
1309 parameters that have the most direct effect on cache performance. To learn more about the <emphasis role="bold">afsd</emphasis>
1310 command's arguments, see its reference page in the <emphasis>IBM AFS Administration Reference</emphasis>.</para>
1312 <para>In addition, the AFS initialization script included in the AFS distribution for each system type includes several
1313 variables that set several <emphasis role="bold">afsd</emphasis> arguments in a way that is suitable for client machines of
1314 different sizes and usage patterns. For instructions on using the script most effectively, see the section on configuring the
1315 Cache Manager in the <emphasis>IBM AFS Quick Beginnings</emphasis>.</para>
1317 <sect2 id="HDRWQ403">
1318 <title>Setting Cache Configuration Parameters</title>
1320 <para>The cache configuration parameters with the most direct effect on cache performance include the following: <itemizedlist>
1322 <para><emphasis>total cache size</emphasis>. This is the amount of disk space or machine memory available for caching,
1323 as discussed in detail in <link linkend="HDRWQ394">Determining the Cache Type, Size, and Location</link>.</para>
1327 <para><emphasis>number of cache chunks</emphasis>. For a disk cache, each chunk is a <emphasis role="bold">V</emphasis>n
1328 file in the local cache directory (see <link linkend="HDRWQ393">Cache-Related Files</link>). For a memory cache, each
1329 chunk is a set of contiguous blocks allocated in machine memory.</para>
1331 <para>This parameter does not have as much of an effect on cache performance as total size. However, adjusting it can
1332 influence how often the Cache Manager must discard cached data to make room for new data. Suppose, for example, that you
1333 set the disk cache size to 50 MB and the number of chunks (<emphasis role="bold">V</emphasis>n files) to 1,000. If each
1334 of the ten users on the machine caches 100 AFS files that average 20 KB in size, then all 1,000 chunks are full (a chunk
1335 can contain data from only one AFS file) but the cache holds only about 20 MB of data. When a user requests more data
1336 from the File Server, the Cache Manager must discard cached data to reclaim some chunks, even though the cache is filled
1337 to less than 50% of its capacity. In such a situation, increasing the number of chunks enables the Cache Manager to
1338 discard data less often.</para>
1342 <para><emphasis>chunk size</emphasis>. This parameter determines the maximum amount of data that can fit in a chunk. If
1343 a cached element is smaller than the chunk size, the remaining space in the chunk is not used (a chunk can hold no more
1344 than one element). If an element cannot fit in a single chunk, it is split across as many chunks as needed. This
1345 parameter also determines how much data the Cache Manager requests at a time from the File Server (how much data per
1346 <emphasis>fetch RPC</emphasis>, because AFS uses partial file transfer).</para>
1348 <para>The main reason to change chunk size is because of its relation to the amount of data fetched per RPC. If your
1349 network links are very fast, it can improve performance to increase chunk size; if the network is especially slow, it
1350 can make sense to decrease chunk size.</para>
1354 <para><emphasis>number of dcache entries in memory</emphasis>. The Cache Manager maintains one dcache entry for each
1355 cache chunk, recording a small amount of information, such as the file ID (fID) and version number of the AFS file
1356 corresponding to the chunk.</para>
1358 <para>For a disk cache, dcache entries reside in the <emphasis role="bold">/usr/vice/cache/CacheItems</emphasis> file; a
1359 small number are duplicated in machine memory to speed access.</para>
1361 <para>For a memory cache, the number of dcache entries equals the number of cache chunks. For a discussion of the
1362 implications of this correspondence, see <link linkend="HDRWQ405">Controlling Memory Cache Configuration</link>.</para>
1364 </itemizedlist></para>
1366 <para>For a description of how the Cache Manager determines defaults for number of chunks, chunk size, and number of dcache
1367 entries in a disk cache, see <link linkend="HDRWQ404">Configuring a Disk Cache</link>; for a memory cache, see <link
1368 linkend="HDRWQ405">Controlling Memory Cache Configuration</link>. The instructions also explain how to use the <emphasis
1369 role="bold">afsd</emphasis> command's arguments to override the defaults.</para>
1372 <sect2 id="HDRWQ404">
1373 <title>Configuring a Disk Cache</title>
1375 <para>The default number of cache chunks (<emphasis role="bold">V</emphasis>n files) in a disk cache is calculated by the
1376 <emphasis role="bold">afsd</emphasis> command to be the greatest of the following: <itemizedlist>
1382 <para>1.5 times the result of dividing cache size by chunk size (cachesize/chunksize * 1.5)</para>
1386 <para>The result of dividing cachesize by 10 MB (cachesize/10240)</para>
1388 </itemizedlist></para>
1390 <para>You can override this value by specifying a positive integer with the <emphasis role="bold">-files</emphasis> argument.
1391 Consider increasing this value if more than 75% of the <emphasis role="bold">V</emphasis>n files are already used soon after
1392 the Cache Manager finishes initializing. Consider decreasing it if only a small percentage of the chunks are used at that
1393 point. In any case, never specify a value less than 100, because a smaller value can cause performance problems.</para>
1395 <para>The following example sets the number of <emphasis role="bold">V</emphasis>n files to 2,000:</para>
1398 <emphasis role="bold">/usr/vice/etc/afsd -files 2000</emphasis>
1402 <para>It is conventional to place the <emphasis role="bold">afsd</emphasis> command in a machine's AFS initialization file,
1403 rather than entering it in a command shell. Furthermore, the values specified in this section are examples only, and are not
1404 necessarily suitable for a specific machine.</para>
1407 <para>The default chunk size for a disk cache is 64 KB. In general, the only reason to change it is to adjust to exceptionally
1408 slow or fast networks; see <link linkend="HDRWQ403">Setting Cache Configuration Parameters</link>. You can use the <emphasis
1409 role="bold">-chunksize</emphasis> argument to override the default. Chunk size must be a power of 2, so provide an integer
1410 between 0 (zero) and 30 to be used as an exponent of 2. For example, a value of 10 sets chunk size to 1 KB (210 = 1024); a
1411 value of 16 equals the default for disk caches (216 = 64 KB). Specifying a value of 0 (zero) or greater than 30 returns chunk
1412 size to the default. Values less than 10 (1 KB) are not recommended. The following example sets chunk size to 16 KB
1416 <emphasis role="bold">/usr/vice/etc/afsd -chunksize 14</emphasis>
1419 <para>For a disk cache, the default number of dcache entries duplicated in memory is one-half the number of chunks specified
1420 with the <emphasis role="bold">-files</emphasis> argument, to a maximum of 2,000 entries. You can use the <emphasis
1421 role="bold">-dcache</emphasis> argument to change the default, even exceeding 2,000 if you wish. Duplicating more than half
1422 the dcache entries in memory is not usually necessary, but sometimes improves performance slightly, because access to memory
1423 is faster than access to disk. The following example sets the number to 750:</para>
1426 <emphasis role="bold">/usr/vice/etc/afsd -dcache 750</emphasis>
1429 <para>When configuring a disk cache, you can combine the <emphasis role="bold">afsd</emphasis> command's arguments in any way.
1430 The main reason for this flexibility is that the setting you specify for disk cache size (in the <emphasis
1431 role="bold">cacheinfo</emphasis> file or with the <emphasis role="bold">-blocks</emphasis> argument) is an absolute maximum
1432 limit. You cannot override it by specifying higher values for the <emphasis role="bold">-files</emphasis> or <emphasis
1433 role="bold">-chunksize</emphasis> arguments, alone or in combination. A related reason is that the Cache Manager does not have
1434 to reserve a set amount of memory on disk. <emphasis role="bold">V</emphasis>n files (the chunks in a disk cache) are
1435 initially zero-length, but can expand up to the specified chunk size and shrink again, as needed. If you set the number of
1436 <emphasis role="bold">V</emphasis>n files to such a large value that expanding all of them to the full allowable size exceeds
1437 the total cache size, they simply never grow to full size.</para>
1440 <sect2 id="HDRWQ405">
1441 <title>Controlling Memory Cache Configuration</title>
1443 <para>Configuring a memory cache differs from configuring a disk cache in that not all combinations of the <emphasis
1444 role="bold">afsd</emphasis> command's arguments are allowed. This limitation results from the greater interaction between the
1445 configuration parameters in a memory cache than a disk cache. If all combinations are allowed, it is possible to set the
1446 parameters in an inconsistent way. A list of the acceptable and unacceptable combinations follows a discussion of default
1449 <para>The default chunk size for a memory cache is 8 KB. In general, the only reason to change it is to adjust to
1450 exceptionally slow or fast networks; see <link linkend="HDRWQ403">Setting Cache Configuration Parameters</link>.</para>
1452 <para>There is no predefined default for number of chunks in a memory cache. The Cache Manager instead calculates the correct
1453 number by dividing the total cache size by the chunk size. Recall that for a memory cache, all dcache entries must be in
1454 memory. This implies that the number of chunks equals the number of dcache entries in memory, and that there is no default for
1455 number of dcache entries (like the number of chunks, it is calculated by dividing the total size by the chunk size).</para>
1457 <para>The following are acceptable combinations of the <emphasis role="bold">afsd</emphasis> command's arguments when
1458 configuring a memory cache: <itemizedlist>
1460 <para><emphasis role="bold">-blocks</emphasis> alone, which overrides the cache size specified in the <emphasis
1461 role="bold">/usr/vice/etc/cacheinfo</emphasis> file. The Cache Manager divides the value of this argument by the default
1462 chunk size of eight KB to calculate the number of chunks and dcache entries. The following example sets cache size to
1463 five MB (5,120 KB) and the number of chunks to 640 (5,120 divided by 8): <programlisting><emphasis role="bold">/usr/vice/etc/afsd -memcache -blocks 5120</emphasis></programlisting></para>
1467 <para><emphasis role="bold">-chunksize</emphasis> alone, to override the default of eight KB. The chunk size must be a
1468 power of two, so provide an integer between 0 (zero) and 30 to be used as an exponent of two. For example, a value of
1469 ten sets chunk size to 1 KB (210 = 1024); a value of 13 equals the default for memory caches (213 = 8 KB). Specifying a
1470 value of 0 (zero) or greater than 30 returns the chunk size to the default. Values less than ten (equivalent to 1 KB)
1471 are not recommended. The following example sets the chunk size to four KB (212). Assuming a total cache size of four MB
1472 (4,096 KB), the resulting number of chunks is 1024. <programlisting><emphasis role="bold">/usr/vice/etc/afsd -memcache -chunksize 12</emphasis></programlisting></para>
1476 <para><emphasis role="bold">-blocks</emphasis> and <emphasis role="bold">-chunksize</emphasis> together override the
1477 defaults for cache size and chunk size. The Cache Manager divides the first by the second to calculate the number of
1478 chunks and dcache entries. For example, the following example sets the cache size to six MB (6,144 KB) and chunksize to
1479 four KB (212), resulting in 1,536 chunks: <programlisting><emphasis role="bold">/usr/vice/etc/afsd -memcache -blocks 6144 -chunksize 12</emphasis></programlisting></para>
1481 </itemizedlist></para>
1483 <para>The following arguments or combinations explicitly set the number of chunks and dcache entries. It is best not to use
1484 them, because they set the cache size indirectly, forcing you to perform a hand calculation to determine the size of the
1485 cache. Instead, set the <emphasis role="bold">-blocks</emphasis> and <emphasis role="bold">-chunksize</emphasis> arguments
1486 alone or in combination; in those cases, the Cache Manager determines the number of chunks and dcache entries itself. Because
1487 the following combinations are not recommended, no examples are included. <itemizedlist>
1489 <para>The <emphasis role="bold">-dcache</emphasis> argument alone explicitly sets the number of chunks and dcache
1490 entries. The Cache Manager multiples this value times the default chunk size of 8 KB to derive the total cache size
1491 (overriding the value in the <emphasis role="bold">cacheinfo</emphasis> file).</para>
1495 <para>The combination of <emphasis role="bold">-dcache</emphasis> and <emphasis role="bold">-chunksize</emphasis> sets
1496 the chunk number and size. The Cache Manager sets the specified values and multiplies them together to obtain total
1497 cache size (overriding the value in the <emphasis role="bold">cacheinfo</emphasis> file).</para>
1499 </itemizedlist></para>
1501 <para>Do not use the following arguments for a memory cache: <itemizedlist>
1503 <para><emphasis role="bold">-files</emphasis> alone. This argument controls the number of <emphasis
1504 role="bold">V</emphasis>n files for a disk cache, but is ignored for a memory cache.</para>
1508 <para><emphasis role="bold">-blocks</emphasis> and <emphasis role="bold">-dcache</emphasis>. An error message results,
1509 because it is possible to provide values such that dividing the first (total size) by the second (number of chunks)
1510 results in a chunk size that is not a power of two.</para>
1512 </itemizedlist></para>
1516 <sect1 id="HDRWQ406">
1517 <title>Maintaining Knowledge of Database Server Machines</title>
1520 <primary>CellServDB file (client)</primary>
1522 <secondary>about</secondary>
1526 <primary>files</primary>
1528 <secondary>CellServDB file (client)</secondary>
1532 <primary>database server machine</primary>
1534 <secondary>client knowledge of</secondary>
1538 <primary>client machine</primary>
1540 <secondary>database server processes, contacting</secondary>
1544 <primary>Cache Manager</primary>
1546 <secondary>database server processes, contacting</secondary>
1550 <primary>Cache Manager</primary>
1552 <secondary>CellServDB file (client), using</secondary>
1556 <primary>command interpreters</primary>
1558 <secondary>CellServDB file (client), using</secondary>
1562 <primary>CellServDB file (client)</primary>
1564 <secondary>copied into kernel memory</secondary>
1568 <primary>kernel memory (client)</primary>
1570 <secondary>CellServDB file, reading into</secondary>
1573 <para>For the users of an AFS client machine to access a cell's AFS filespace and other services, the Cache Manager and other
1574 client-side agents must have an accurate list of the cell's database server machines. The affected functions include the
1575 following: <itemizedlist>
1577 <para>Accessing files. The Cache Manager contacts the Volume Location (VL) Server to learn which file server machine
1578 houses the volume containing a requested file or directory. If the Cache Manager cannot contact a cell's VL Servers, it
1579 cannot fetch files.</para>
1583 <para>Authenticating. The <emphasis role="bold">klog</emphasis> program and AFS-modified login utilities contact the
1584 Authentication Server to obtain tokens, which the AFS server processes accept as proof that the user is
1585 authenticated.</para>
1589 <para>Creating protection groups. The <emphasis role="bold">pts</emphasis> command interpreter contacts the Protection
1590 Server when users create protection groups or request information from the Protection Database.</para>
1594 <para>Editing access control lists (ACLs). The <emphasis role="bold">fs</emphasis> command interpreter contacts the File
1595 Server that maintains the read/write volume containing a file or directory; the location information comes from the VL
1598 </itemizedlist></para>
1600 <para>To enable a machine's users to access a cell, you must list the names and IP addresses of its database server machines in
1601 the <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file on the machine's local disk. In addition to the machine's
1602 home cell, you can list any foreign cells that you want to enable users to access. (To enable access to a cell's filespace, you
1603 must also mount its <emphasis role="bold">root.cell</emphasis> volume in the local AFS filespace; the conventional location is
1604 just under the AFS root directory, <emphasis role="bold">/afs</emphasis>. For instructions, see the <emphasis>IBM AFS Quick
1605 Beginnings</emphasis>.)</para>
1607 <sect2 id="Header_451">
1608 <title>How Clients Use the List of Database Server Machines</title>
1610 <para>As the <emphasis role="bold">afsd</emphasis> program runs and initializes the Cache Manager, it reads the contents of
1611 the <emphasis role="bold">CellServDB</emphasis> file into kernel memory. The Cache Manager does not consult the file again
1612 until the machine next reboots. In contrast, the command interpreters for the AFS command suites (such as <emphasis
1613 role="bold">fs</emphasis> and <emphasis role="bold">pts</emphasis>) read the <emphasis role="bold">CellServDB</emphasis> file
1614 each time they need to contact a database server process.</para>
1616 <para>When a cell's list of database server machines changes, you must change both the <emphasis
1617 role="bold">CellServDB</emphasis> file and the list in kernel memory to preserve consistent client performance; some commands
1618 probably fail if the two lists of machines disagree. One possible method for updating both the <emphasis
1619 role="bold">CellServDB</emphasis> file and kernel memory is to edit the file and reboot the machine. To avoid needing to
1620 reboot, you can instead perform both of the following steps: <orderedlist>
1622 <para>Issue the <emphasis role="bold">fs newcell</emphasis> command to alter the list in kernel memory directly, making
1623 the changes available to the Cache Manager.</para>
1627 <para>Edit the <emphasis role="bold">CellServDB</emphasis> file to make the changes available to command interpreters.
1628 For a description of the file's format, see <link linkend="HDRWQ407">The Format of the CellServDB file</link>.</para>
1630 </orderedlist></para>
1632 <para>The consequences of missing or incorrect information in the <emphasis role="bold">CellServDB</emphasis> file or kernel
1633 memory are as follows: <itemizedlist>
1635 <para>If there is no entry for a cell, the machine's users cannot access the cell.</para>
1639 <para>If a cell's entry does not include a database server machine, then the Cache Manager and command interpreters
1640 never attempt to contact the machine. The omission does not prevent access to the cell--as long as the information about
1641 the other database server machines is correct and the server processes, machines, and network are functioning
1642 correctly--but it can put an undue burden on the machines that are listed. If all of the listed machines become
1643 inaccessible to clients, then the cell becomes inaccessible even if the omitted database server machine is functioning
1648 <para>If a machine's name or address is incorrect, or the machine is not actually running the database server processes,
1649 then requests from clients time out. Users can experience lengthy delays because they have to wait the full timeout
1650 period before the Cache Manager or command interpreter contacts another database server machine.</para>
1652 </itemizedlist></para>
1655 <sect2 id="HDRWQ407">
1656 <title>The Format of the CellServDB file</title>
1659 <primary>CellServDB file (client)</primary>
1661 <secondary>correct format</secondary>
1665 <primary>format of CellServDB file (client)</primary>
1668 <para>When editing the <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file, you must use the correct format for
1669 cell and machine entries. Each cell has a separate entry. The first line has the following format:</para>
1672 >cell_name #organization
1675 <para>where cell_name is the cell's complete Internet domain name (for example, <emphasis role="bold">abc.com</emphasis>) and
1676 organization is an optional field that follows any number of spaces and the number sign (<computeroutput>#</computeroutput>)
1677 and can name the organization to which the cell corresponds (for example, the ABC Corporation). After the first line comes a
1678 separate line for each database server machine. Each line has the following format:</para>
1681 IP_address #machine_name
1684 <para>where IP_address is the machine's IP address in dotted decimal format (for example, 192.12.105.3). Following any number
1685 of spaces and the number sign (<computeroutput>#</computeroutput>) is machine_name, the machine's fully-qualified hostname
1686 (for example, <emphasis role="bold">db1.abc.com</emphasis>). In this case, the number sign does not indicate a comment:
1687 machine_name is a required field.</para>
1689 <para>The order in which the cells appear is not important, but it is convenient to put the client machine's home cell first.
1690 Do not include any blank lines in the file, not even after the last entry.</para>
1692 <para>The following example shows entries for two cells, each of which has three database server machines:</para>
1695 >abc.com #ABC Corporation (home cell)
1696 192.12.105.3 #db1.abc.com
1697 192.12.105.4 #db2.abc.com
1698 192.12.105.55 #db3.abc.com
1699 >stateu.edu #State University cell
1700 138.255.68.93 #serverA.stateu.edu
1701 138.255.68.72 #serverB.stateu.edu
1702 138.255.33.154 #serverC.stateu.edu
1706 <sect2 id="HDRWQ408">
1707 <title>Maintaining the Client CellServDB File</title>
1710 <primary>maintaining</primary>
1712 <secondary>CellServDB file (client)</secondary>
1716 <primary>CellServDB file (client)</primary>
1718 <secondary>maintaining</secondary>
1721 <para>Because a correct entry in the <emphasis role="bold">CellServDB</emphasis> file is vital for consistent client
1722 performance, you must also update the file on each client machine whenever a cell's list of database server machines changes
1723 (for instance, when you follow the instructions in the <emphasis>IBM AFS Quick Beginnings</emphasis> to add or remove a
1724 database server machine). To facilitate the client updates, you can use the <emphasis role="bold">package</emphasis> program,
1725 which copies files from a central source in AFS to the local disk of client machines. It is conventional to invoke the
1726 <emphasis role="bold">package</emphasis> program in a client machine's AFS initialization file so that it runs as the machine
1727 reboots, but you can also issue the <emphasis role="bold">package</emphasis> command at any time. For instructions, see <link
1728 linkend="HDRWQ448">Running the package program</link>.</para>
1730 <para>If you use the <emphasis role="bold">package</emphasis> program, the conventional location for your cell's central
1731 source <emphasis role="bold">CellServDB</emphasis> file is <emphasis role="bold">/afs/</emphasis>cell_name<emphasis
1732 role="bold">/common/etc/CellServDB</emphasis>, where cell_name is your cell name. <indexterm>
1733 <primary>CellServDB file (client)</primary>
1735 <secondary>central update source for clients</secondary>
1738 <para>Creating a symbolic or hard link from <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> to a central source file
1739 in AFS is not a viable option. The <emphasis role="bold">afsd</emphasis> program reads the file into kernel memory before the
1740 Cache Manager is completely initialized and able to access AFS.</para>
1742 <para>Because every client machine has its own copy of the <emphasis role="bold">CellServDB</emphasis> file, you can in theory
1743 make the set of accessible cells differ on various machines. In most cases, however, it is best to maintain consistency
1744 between the files on all client machines in the cell: differences between machines are particularly confusing if users
1745 commonly use a variety of machines rather than just one.</para>
1747 <para>The AFS Product Support group maintains a central <emphasis role="bold">CellServDB</emphasis> file that includes all
1748 cells that have agreed to make their database server machines access to other AFS cells. It is advisable to check this file
1749 periodically for updated information. See <link linkend="HDRWQ38">Making Your Cell Visible to Others</link>. <indexterm>
1750 <primary>CellServDB file (client)</primary>
1752 <secondary>global source from AFS Support</secondary>
1755 <para>An entry in the local <emphasis role="bold">CellServDB</emphasis> is one of the two requirements for accessing a cell.
1756 The other is that the cell's <emphasis role="bold">root.cell</emphasis> volume is mounted in the local filespace, by
1757 convention as a subdirectory of the <emphasis role="bold">/afs</emphasis> directory. For instructions, see <link
1758 linkend="HDRWQ213">To create a cellular mount point</link>.</para>
1761 <para>The <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file on a client machine is not the same as the
1762 <emphasis role="bold">/usr/afs/etc/CellServDB</emphasis> file on the local disk of a file server machine. The server version
1763 lists only the database server machines in the server machine's home cell, because server processes never need to contact
1764 foreign cells. It is important to update both types of <emphasis role="bold">CellServDB</emphasis> file on all machines in
1765 the cell whenever there is a change to your cell's database server machines. For more information about maintaining the
1766 server version of the <emphasis role="bold">CellServDB</emphasis> file, see <link linkend="HDRWQ118">Maintaining the Server
1767 CellServDB File</link>.</para>
1771 <primary>CellServDB file (client)</primary>
1773 <secondary>displaying</secondary>
1777 <primary>displaying</primary>
1779 <secondary>CellServDB file (client)</secondary>
1783 <primary>database server machine</primary>
1785 <secondary>CellServDB file (client), displaying</secondary>
1789 <primary>client machine</primary>
1791 <secondary>CellServDB file, displaying</secondary>
1795 <primary>client machine</primary>
1797 <secondary>database server machines, displaying knowledge of</secondary>
1801 <sect2 id="Header_454">
1802 <title>To display the /usr/vice/etc/CellServDB file</title>
1806 <para>Use a text editor or the <emphasis role="bold">cat</emphasis> command to display the contents of the <emphasis
1807 role="bold">/usr/vice/etc/CellServDB</emphasis> file. By default, the mode bits on the file permit anyone to read it.
1809 % <emphasis role="bold">cat /usr/vice/etc/CellServDB</emphasis>
1810 </programlisting></para>
1815 <primary>fs commands</primary>
1817 <secondary>listcells</secondary>
1821 <primary>commands</primary>
1823 <secondary>fs listcells</secondary>
1827 <sect2 id="Header_455">
1828 <title>To display the list of database server machines in kernel memory</title>
1832 <para>Issue the <emphasis role="bold">fs listcells</emphasis> command. <programlisting>
1833 % <emphasis role="bold">fs listcells [&]</emphasis>
1834 </programlisting></para>
1836 <para>where <emphasis role="bold">listc</emphasis> is the shortest acceptable abbreviation of <emphasis
1837 role="bold">listcells</emphasis>.</para>
1839 <para>To have your shell prompt return immediately, include the ampersand (<emphasis role="bold">&</emphasis>), which
1840 makes the command run in the background. It can take a while to generate the complete output because the kernel stores
1841 database server machines' IP addresses only, and the <emphasis role="bold">fs</emphasis> command interpreter has the
1842 cell's name resolution service (such as the Domain Name Service or a local host table) translate them into hostnames. You
1843 can halt the command at any time by issuing an interrupt signal such as <emphasis role="bold">Ctrl-c</emphasis>.</para>
1845 <para>The output includes a single line for each cell, in the following format:</para>
1848 Cell cell_name on hosts list_of_hostnames.
1851 <para>The name service sometimes returns hostnames in uppercase letters, and if it cannot resolve a name at all, it
1852 returns its IP address. The following example illustrates all three possibilities:</para>
1855 % <emphasis role="bold">fs listcells</emphasis>
1858 Cell abc.com on hosts db1.abc.com db2.abc.com db3.abc.com
1859 Cell stateu.edu on hosts SERVERA.STATEU.EDU SERVERB.STATEU.EDU
1861 Cell ghi.org on hosts 191.255.64.111 191.255.64.112
1869 <primary>adding</primary>
1871 <secondary>database server machine</secondary>
1873 <tertiary>to client CellServDB file and kernel memory</tertiary>
1877 <primary>removing</primary>
1879 <secondary>database server machine</secondary>
1881 <tertiary>from client CellServDB file and kernel memory</tertiary>
1885 <primary>database server machine</primary>
1887 <secondary>adding</secondary>
1889 <tertiary>to client CellServDB file and kernel memory</tertiary>
1893 <primary>database server machine</primary>
1895 <secondary>removing</secondary>
1897 <tertiary>from client CellServDB file and kernel memory</tertiary>
1901 <primary>client machine</primary>
1903 <secondary>changing list of cells in kernel memory</secondary>
1907 <primary>cell</primary>
1909 <secondary>changing list in client kernel memory</secondary>
1913 <primary>client machine</primary>
1915 <secondary>changing CellServDB file</secondary>
1919 <primary>CellServDB file (client)</primary>
1921 <secondary>changing</secondary>
1925 <primary>package</primary>
1927 <secondary>to update client</secondary>
1931 <primary>CellServDB file (client)</primary>
1933 <secondary>updating with or without package</secondary>
1937 <primary>updating</primary>
1939 <secondary>CellServDB file (client) with or without package</secondary>
1943 <sect2 id="Header_456">
1944 <title>To change the list of a cell's database server machines in kernel memory</title>
1948 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
1949 the <emphasis role="bold">su</emphasis> command. <programlisting>
1950 % <emphasis role="bold">su root</emphasis>
1951 Password: <<replaceable>root_password</replaceable>>
1952 </programlisting></para>
1956 <para>If you a use a central copy of the <emphasis role="bold">CellServDB</emphasis> file as a source for client machines,
1957 verify that its directory's ACL grants you the <emphasis role="bold">l</emphasis> (<emphasis
1958 role="bold">lookup</emphasis>), <emphasis role="bold">r</emphasis> (<emphasis role="bold">read</emphasis>), and <emphasis
1959 role="bold">w</emphasis> (<emphasis role="bold">write</emphasis>) permissions. The conventional directory is <emphasis
1960 role="bold">/afs/</emphasis>cell_name<emphasis role="bold">/common/etc</emphasis>. If necessary, issue the <emphasis
1961 role="bold">fs listacl</emphasis> command, which is fully described in <link linkend="HDRWQ572">Displaying ACLs</link>.
1963 # <emphasis role="bold">fs listacl</emphasis> [<<replaceable>dir/file path</replaceable>>]
1964 </programlisting> <indexterm>
1965 <primary>fs commands</primary>
1967 <secondary>newcell</secondary>
1968 </indexterm> <indexterm>
1969 <primary>commands</primary>
1971 <secondary>fs newcell</secondary>
1976 <para><anchor id="LINEWCELL" />Issue the <emphasis role="bold">fs newcell</emphasis> command to add or change a cell's
1977 entry in kernel memory. Repeat the command for each cell.</para>
1980 <para>You cannot use this command to remove a cell's entry completely from kernel memory. In the rare cases when you
1981 urgently need to prevent access to a specific cell, you must edit the <emphasis role="bold">CellServDB</emphasis> file
1982 and reboot the machine.</para>
1986 # <emphasis role="bold">fs newcell</emphasis> <<replaceable>cell name</replaceable>> <<replaceable>primary servers</replaceable>>+ \
1987 [<emphasis role="bold">-linkedcell</emphasis> <<replaceable>linked cell name</replaceable>>]
1990 <para>where <variablelist>
1992 <term><emphasis role="bold">n</emphasis></term>
1995 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">newcell</emphasis>.</para>
2000 <term><emphasis role="bold">cell name</emphasis></term>
2003 <para>Specifies the complete Internet domain name of the cell for which to record a new list of database server
2009 <term><emphasis role="bold">primary servers</emphasis></term>
2012 <para>Specifies the fully-qualified hostname or IP address in dotted-decimal format for each database server
2013 machine in the cell. The list you provide completely replaces the existing list.</para>
2018 <term><emphasis role="bold">-linkedcell</emphasis></term>
2021 <para>Specifies the complete Internet domain name of the AFS cell to link to a DCE cell for the purposes of DFS
2022 fileset location. You can use this argument if the machine's AFS users access DFS via the AFS/DFS Migration
2023 Toolkit Protocol Translator. For instructions, see the <emphasis>IBM AFS/DFS Migration Toolkit Administration
2024 Guide and Reference</emphasis>.</para>
2027 </variablelist></para>
2031 <para>Add or edit the cell's entry in the local <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file, using one
2032 of the following three methods. In each case, be sure to obey the formatting requirements described in <link
2033 linkend="HDRWQ407">The Format of the CellServDB file</link>. <itemizedlist>
2035 <para>If you maintain a central source version of the <emphasis role="bold">CellServDB</emphasis> file and use the
2036 <emphasis role="bold">package</emphasis> program, first use a text editor to alter the central copy of the file.
2037 Then issue the <emphasis role="bold">package</emphasis> command to transfer the contents of the file to the local
2038 machine. For complete instructions, see <link linkend="HDRWQ448">Running the package program</link>.
2040 # <emphasis role="bold">/etc/package -v -c</emphasis> <<replaceable>name of package file</replaceable>>
2041 </programlisting></para>
2045 <para>If you maintain a central source <emphasis role="bold">CellServDB</emphasis> file but do not use the <emphasis
2046 role="bold">package</emphasis> program, first use a text editor to alter the central copy of the file. Then use a
2047 copying command such as the <emphasis role="bold">cp</emphasis> command to copy it to the local <emphasis
2048 role="bold">/usr/vice/etc/CellServDB</emphasis> file.</para>
2052 <para>If you do not use a central source <emphasis role="bold">CellServDB</emphasis> file, edit the local machine's
2053 <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file directly.</para>
2055 </itemizedlist></para>
2061 <sect1 id="HDRWQ409">
2062 <title>Determining if a Client Can Run Setuid Programs</title>
2065 <primary>client machine</primary>
2067 <secondary>controlling running of setuid programs</secondary>
2071 <primary>Cache Manager</primary>
2073 <secondary>setuid programs</secondary>
2077 <primary>setuid programs</primary>
2080 <para>A <emphasis>setuid program</emphasis> is one whose binary file has the UNIX setuid mode bit turned on. While a setuid
2081 program runs, the user who initialized it assumes the local identity (UNIX UID) of the binary file's owner, and so is granted
2082 the permissions in the local file system that pertain to the owner. Most commonly, the issuer's assumed identity (often referred
2083 to as <emphasis>effective UID</emphasis>) is the local superuser <emphasis role="bold">root</emphasis>.</para>
2085 <para>AFS does not recognize effective UID: if a setuid program accesses AFS files and directories, it uses the current AFS
2086 identity of the user who initialized the program, not of the program's owner. Nevertheless, it can be useful to store setuid
2087 programs in AFS for use on more than one client machine. AFS enables a client machine's administrator to determine whether the
2088 local Cache Manager allows setuid programs to run or not.</para>
2090 <para>By default, the Cache Manager allows programs from its home cell to run with setuid permission, but denies setuid
2091 permission to programs from foreign cells. A program belongs to the same cell as the file server machine that houses the volume
2092 in which the file resides, as specified in the file server machine's <emphasis role="bold">/usr/afs/etc/ThisCell</emphasis>
2093 file. The Cache Manager determines its own home cell by reading the <emphasis role="bold">/usr/vice/etc/ThisCell</emphasis> file
2094 at initialization.</para>
2096 <para>To change a cell's setuid status with respect to the local machine, become the local superuser <emphasis
2097 role="bold">root</emphasis> and issue the <emphasis role="bold">fs setcell</emphasis> command. To determine a cell's current
2098 setuid status, use the <emphasis role="bold">fs getcellstatus</emphasis> command.</para>
2100 <para>When you issue the <emphasis role="bold">fs setcell</emphasis> command, you directly alter a cell's setuid status as
2101 recorded in kernel memory, so rebooting the machine is not necessary. However, nondefault settings do not persist across reboots
2102 of the machine unless you add the appropriate <emphasis role="bold">fs setcell</emphasis> command to the machine's AFS
2103 initialization file.</para>
2105 <para>Only members of the <emphasis role="bold">system:administrators</emphasis> group can turn on the setuid mode bit on an AFS
2106 file or directory. When the setuid mode bit is turned on, the UNIX <emphasis role="bold">ls -l</emphasis> command displays the
2107 third user mode bit as an <emphasis role="bold">s</emphasis> instead of an <emphasis role="bold">x</emphasis>, but for an AFS
2108 file or directory, the <emphasis role="bold">s</emphasis> appears only if setuid permission is enabled for the cell in which the
2109 file resides. <indexterm>
2110 <primary>fs commands</primary>
2112 <secondary>getcellstatus</secondary>
2113 </indexterm> <indexterm>
2114 <primary>commands</primary>
2116 <secondary>fs getcellstatus</secondary>
2119 <sect2 id="Header_458">
2120 <title>To determine a cell's setuid status</title>
2124 <para>Issue the <emphasis role="bold">fs getcellstatus</emphasis> command to check the setuid status of each desired cell.
2126 % <emphasis role="bold">fs getcellstatus</emphasis> <<replaceable>cell name</replaceable>>
2127 </programlisting></para>
2129 <para>where <variablelist>
2131 <term><emphasis role="bold">getce</emphasis></term>
2134 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">getcellstatus</emphasis>.</para>
2139 <term><emphasis role="bold">cell name</emphasis></term>
2142 <para>Names each cell for which to report setuid status. Provide the complete Internet domain name or a shortened
2143 form that distinguishes it from the other cells listed in the local <emphasis
2144 role="bold">/usr/vice/etc/CellServDB</emphasis> file.</para>
2147 </variablelist></para>
2151 <para>The output reports the setuid status of each cell: <itemizedlist>
2153 <para>the string <computeroutput>no setuid allowed</computeroutput> indicates that the Cache Manager does not allow
2154 programs from the cell to run with <computeroutput>setuid permission</computeroutput></para>
2158 <para>setuid allowed indicates that the Cache Manager allows programs from the cell to run with setuid permission</para>
2160 </itemizedlist></para>
2163 <primary>fs commands</primary>
2165 <secondary>setcell</secondary>
2169 <primary>commands</primary>
2171 <secondary>fs setcell</secondary>
2175 <sect2 id="Header_459">
2176 <title>To change a cell's setuid status</title>
2180 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
2181 the <emphasis role="bold">su</emphasis> command. <programlisting>
2182 % <emphasis role="bold">su root</emphasis>
2183 Password: <<replaceable>root_password</replaceable>>
2184 </programlisting></para>
2188 <para>Issue the <emphasis role="bold">fs setcell</emphasis> command to change the setuid status of the cell.
2190 # <emphasis role="bold">fs setcell</emphasis> <<replaceable>cell name</replaceable>>+ [<emphasis role="bold">-suid</emphasis>] [<emphasis
2191 role="bold">-nosuid</emphasis>]
2192 </programlisting></para>
2194 <para>where <variablelist>
2196 <term><emphasis role="bold">setce</emphasis></term>
2199 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">setcell</emphasis>.</para>
2204 <term><emphasis role="bold">cell name</emphasis></term>
2207 <para>Names each cell for which to change setuid status as specified by the <emphasis role="bold">-suid</emphasis>
2208 or <emphasis role="bold">-nosuid</emphasis> flag. Provide each cell's complete Internet domain name or a shortened
2209 form that distinguishes it from the other cells listed in the local <emphasis
2210 role="bold">/usr/vice/etc/CellServDB</emphasis> file.</para>
2215 <term><emphasis role="bold">-suid</emphasis></term>
2218 <para>Enables programs from each specified cell to execute with setuid permission. Provide this flag or the
2219 <emphasis role="bold">-nosuid</emphasis> flag, or omit both to disable setuid permission for each cell.</para>
2224 <term><emphasis role="bold">-nosuid</emphasis></term>
2227 <para>Prevents programs from each specified cell from executing with setuid permission. Provide this flag or the
2228 <emphasis role="bold">-suid</emphasis> flag, or omit both to disable setuid permission for each cell.</para>
2231 </variablelist></para>
2237 <sect1 id="HDRWQ410">
2238 <title>Setting the File Server Probe Interval</title>
2241 <primary>file server probe interval</primary>
2243 <secondary>setting for a client machine</secondary>
2247 <primary>setting</primary>
2249 <secondary>client-to-file-server probe interval</secondary>
2253 <primary>Cache Manager</primary>
2255 <secondary>setting</secondary>
2257 <tertiary>probe interval for File Server</tertiary>
2260 <para>The Cache Manager periodically sends a probe to server machines to verify that they are still accessible. Specifically, it
2261 probes the database server machines in its cell and those file servers that house data it has cached.</para>
2263 <para>If a server process does not respond to a probe, the client machine assumes that it is inaccessible. By default, the
2264 interval between probes is three minutes, so it can take up to three minutes for a client to recognize that a server process is
2265 once again accessible after it was inaccessible.</para>
2267 <para>To adjust the probe interval, include the <emphasis role="bold">-interval</emphasis> argument to the <emphasis
2268 role="bold">fs checkservers</emphasis> command while logged in as the local superuser <emphasis role="bold">root</emphasis>. The
2269 new interval setting persists until you again issue the command or reboot the machine, at which time the setting returns to the
2270 default. To preserve a nondefault setting across reboots, include the appropriate <emphasis role="bold">fs
2271 checkservers</emphasis> command in the machine's AFS initialization file.</para>
2273 <sect2 id="Header_461">
2274 <title>To set a client's file server probe interval</title>
2278 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
2279 the <emphasis role="bold">su</emphasis> command. <programlisting>
2280 % <emphasis role="bold">su root</emphasis>
2281 Password: <<replaceable>root_password</replaceable>>
2282 </programlisting></para>
2286 <para>Issue the <emphasis role="bold">fs checkservers</emphasis> command with the <emphasis
2287 role="bold">-interval</emphasis> argument. <indexterm>
2288 <primary>fs commands</primary>
2290 <secondary>checkservers</secondary>
2291 </indexterm> <indexterm>
2292 <primary>commands</primary>
2294 <secondary>fs checkservers</secondary>
2295 </indexterm> <programlisting>
2296 # <emphasis role="bold">fs checkservers -interval</emphasis> <<replaceable>seconds between probes</replaceable>>
2297 </programlisting></para>
2299 <para>where <variablelist>
2301 <term><emphasis role="bold">checks</emphasis></term>
2304 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">checkservers</emphasis>.</para>
2309 <term><emphasis role="bold">-interval</emphasis></term>
2312 <para>Specifies the number of seconds between probes. Provide an integer value greater than zero.</para>
2315 </variablelist></para>
2321 <sect1 id="HDRWQ411">
2322 <title>Setting a Client Machine's Cell Membership</title>
2325 <primary>cell</primary>
2327 <secondary>setting home cell for client machine</secondary>
2331 <primary>setting</primary>
2333 <secondary>home cell for client machine</secondary>
2337 <primary>setting</primary>
2339 <secondary>ThisCell file (client), value in</secondary>
2343 <primary>Cache Manager</primary>
2345 <secondary>setting</secondary>
2347 <tertiary>home cell</tertiary>
2351 <primary>client machine</primary>
2353 <secondary>setting</secondary>
2355 <tertiary>home cell</tertiary>
2359 <primary>ThisCell file (client)</primary>
2361 <secondary>setting value in</secondary>
2364 <para>Each client machine belongs to a particular cell, as named in the <emphasis role="bold">/usr/vice/etc/ThisCell</emphasis>
2365 on its local disk. The machine's cell membership determines three defaults important to users of the machine: <itemizedlist>
2367 <para>The cell for which users of the machine obtain tokens (authenticate) when they use the <emphasis
2368 role="bold">login</emphasis> program or issue the <emphasis role="bold">klog</emphasis> command. There are two effects:
2371 <para>The <emphasis role="bold">klog</emphasis> program and AFS-modified login utilities contact an Authentication
2372 Server in the cell named in the <emphasis role="bold">ThisCell</emphasis> file.</para>
2376 <para>The <emphasis role="bold">klog</emphasis> program and AFS-modified login utilities combine the contents of the
2377 <emphasis role="bold">ThisCell</emphasis> file with the password that the user provides, generating an encryption
2378 key from the combination. The user's entry in the Authentication Database includes an encryption key also generated
2379 from the combination of password and cell name. If the cell name in the <emphasis role="bold">ThisCell</emphasis>
2380 file is incorrect, users cannot authenticate even if they provide the correct password.</para>
2382 </itemizedlist></para>
2386 <para>The cell the Cache Manager considers its local, or home, cell. The Cache Manager allows programs from its local cell
2387 to run with setuid permission, but not programs from foreign cells, as discussed further in <link
2388 linkend="HDRWQ409">Determining if a Client Can Run Setuid Programs</link>.</para>
2392 <para>The default database server machines that are contacted by the AFS command interpreters running on this
2395 </itemizedlist></para>
2397 <sect2 id="Header_463">
2398 <title>To display a client machine's cell membership</title>
2402 <para>Use a text editor or the <emphasis role="bold">cat</emphasis> command to display the contents of the <emphasis
2403 role="bold">/usr/vice/etc/ThisCell</emphasis> file. <programlisting>
2404 % <emphasis role="bold">cat /usr/vice/etc/ThisCell</emphasis>
2405 </programlisting></para>
2410 <sect2 id="Header_464">
2411 <title>To set a client machine's cell membership</title>
2415 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
2416 the <emphasis role="bold">su</emphasis> command. <programlisting>
2417 % <emphasis role="bold">su root</emphasis>
2418 Password: <<replaceable>root_password</replaceable>>
2419 </programlisting></para>
2423 <para>Using a text editor, replace the cell name in the <emphasis role="bold">/usr/vice/etc/ThisCell</emphasis>
2428 <para><emphasis role="bold">(Optional.)</emphasis> Reboot the machine to enable the Cache Manager to use the new cell name
2429 immediately; the appropriate command depends on the machine's system type. The <emphasis role="bold">klog</emphasis>
2430 program, AFS-modified login utilities, and the AFS command interpreters use the new cell name the next time they are
2431 invoked; no reboot is necessary. <programlisting>
2432 # <emphasis role="bold">sync</emphasis>
2433 # <emphasis role="bold">shutdown</emphasis>
2434 </programlisting></para>
2440 <sect1 id="HDRWQ412">
2441 <title>Forcing the Update of Cached Data</title>
2444 <primary>flushing</primary>
2446 <secondary>data cache on client machine</secondary>
2450 <primary>data cache</primary>
2452 <secondary>flushing (forcing update)</secondary>
2456 <primary>Cache Manager</primary>
2458 <secondary>flushing cache</secondary>
2462 <primary>file</primary>
2464 <secondary>flushing from data cache on client machine</secondary>
2468 <primary>directory</primary>
2470 <secondary>flushing from data cache on client machine</secondary>
2474 <primary>volume</primary>
2476 <secondary>flushing from data cache on client machine</secondary>
2480 <primary>mount point</primary>
2482 <secondary>flushing from data cache on client machine</secondary>
2486 <primary>client machine</primary>
2488 <secondary>flushing data cache</secondary>
2491 <para>AFS's callback mechanism normally guarantees that the Cache Manager provides the most current version of a file or
2492 directory to the application programs running on its machine. However, you can force the Cache Manager to discard (flush) cached
2493 data so that the next time an application program requests it, the Cache Manager fetches the latest version available at the
2496 <para>You can control how many file system elements to flush at a time: <itemizedlist>
2498 <para>To flush only specific files or directories, use the <emphasis role="bold">fs flush</emphasis> command. This command
2499 forces the Cache Manager to discard the data and status information it has cached from the specified files or directories.
2500 It does not discard information from an application program's buffer or information that has been altered locally (changes
2501 made in the cache but not yet saved permanently to the File Server). However, the next time an application requests the
2502 element's data or status information, the Cache Manager has to contact the File Server to get it.</para>
2506 <para>To flush everything cached from a certain volume, use the <emphasis role="bold">fs flushvolume</emphasis> command.
2507 This command works like the <emphasis role="bold">fs flush</emphasis> command, but differs in two ways: <itemizedlist>
2509 <para>The Cache Manager discards data for all elements in the cache that come from the same volume as the specified
2510 files or directories.</para>
2514 <para>The Cache Manager discards only data, not status information. This difference has little practical effect, but
2515 can lead to different output from the <emphasis role="bold">ls</emphasis> command when the two different commands
2516 are used to flush the same element.</para>
2518 </itemizedlist></para>
2520 </itemizedlist></para>
2522 <para>In addition to callbacks, the Cache Manager has a mechanism for tracking other kinds of possible changes, such as changes
2523 in a volume's location. If a volume moves and the Cache Manager has not accessed any data in it for a long time, the Cache
2524 Manager's volume location record can be wrong. To resynchronize it, use the <emphasis role="bold">fs checkvolumes</emphasis>
2525 command. When you issue the command, the Cache Manager creates a new table of mappings between volume names, ID numbers, and
2526 locations. This forces the Cache Manager to reference newly relocated and renamed volumes before it can provide data from
2529 <para>It is also possible for information about mount points to become corrupted in the cache. Symptoms of a corrupted mount
2530 point included garbled output from the <emphasis role="bold">fs lsmount</emphasis> command, and failed attempts to change
2531 directory to or list the contents of a mount point. Use the <emphasis role="bold">fs flushmount</emphasis> command to discard a
2532 corrupted mount point. The Cache Manager must refetch the mount point the next time it crosses it in a pathname. (The Cache
2533 Manager periodically refreshes cached mount points, but the only other way to discard them immediately is to reinitialize the
2534 Cache Manager by rebooting the machine. <indexterm>
2535 <primary>fs commands</primary>
2537 <secondary>flush</secondary>
2538 </indexterm> <indexterm>
2539 <primary>commands</primary>
2541 <secondary>fs flush</secondary>
2544 <sect2 id="Header_466">
2545 <title>To flush certain files or directories</title>
2549 <para>Issue the <emphasis role="bold">fs flush</emphasis> command. <programlisting>
2550 % <emphasis role="bold">fs flush</emphasis> [<<replaceable>dir/file path</replaceable>>+]
2551 </programlisting></para>
2553 <para>where <variablelist>
2555 <term><emphasis role="bold">flush</emphasis></term>
2558 <para>Must be typed in full.</para>
2563 <term><emphasis role="bold">dir/file path</emphasis></term>
2566 <para>Names each file or directory structure to flush from the cache. Omit this argument to flush the current
2567 working directory. Flushing a directory structure does not flush any files or subdirectories cached from
2571 </variablelist></para>
2576 <primary>fs commands</primary>
2578 <secondary>flushvolume</secondary>
2582 <primary>commands</primary>
2584 <secondary>fs flushvolume</secondary>
2588 <sect2 id="Header_467">
2589 <title>To flush all data from a volume</title>
2593 <para>Issue the <emphasis role="bold">fs flushvolume</emphasis> command. <programlisting>
2594 % <emphasis role="bold">fs flushvolume</emphasis> [<<replaceable>dir/file path</replaceable>>+]
2595 </programlisting></para>
2597 <para>where <variablelist>
2599 <term><emphasis role="bold">flushv</emphasis></term>
2602 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">flushvolume</emphasis>.</para>
2607 <term><emphasis role="bold">dir/file path</emphasis></term>
2610 <para>Names a file or directory from each volume to flush from the cache. The Cache Manager flushes everything in
2611 the cache that it has fetched from the same volume. Omit this argument to flush all cached data fetched from the
2612 volume that contains the current working directory.</para>
2615 </variablelist></para>
2620 <primary>fs commands</primary>
2622 <secondary>checkvolumes</secondary>
2626 <primary>commands</primary>
2628 <secondary>fs checkvolumes</secondary>
2632 <sect2 id="Header_468">
2633 <title>To force the Cache Manager to notice other volume changes</title>
2637 <para>Issue the <emphasis role="bold">fs checkvolumes</emphasis> command. <programlisting>
2638 % <emphasis role="bold">fs checkvolumes</emphasis>
2639 </programlisting></para>
2641 <para>where <emphasis role="bold">checkv</emphasis> is the shortest acceptable abbreviation of <emphasis
2642 role="bold">checkvolumes</emphasis>.</para>
2646 <para>The following command confirms that the command completed successfully:</para>
2649 All volumeID/name mappings checked.
2653 <primary>fs commands</primary>
2655 <secondary>flushmount</secondary>
2659 <primary>commands</primary>
2661 <secondary>fs flushmount</secondary>
2665 <sect2 id="HDRWQ413">
2666 <title>To flush one or more mount points</title>
2670 <para>Issue the <emphasis role="bold">fs flushmount</emphasis> command. <programlisting>
2671 % <emphasis role="bold">fs flush</emphasis> [<<replaceable>dir/file path</replaceable>>+]
2672 </programlisting></para>
2674 <para>where <variablelist>
2676 <term><emphasis role="bold">flushm</emphasis></term>
2679 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">flushmount</emphasis>.</para>
2684 <term><emphasis role="bold">dir/file path</emphasis></term>
2687 <para>Names each mount point to flush from the cache. Omit this argument to flush the current working directory.
2688 Files or subdirectories cached from the associated volume are unaffected.</para>
2691 </variablelist></para>
2697 <sect1 id="HDRWQ414">
2698 <title>Maintaining Server Preference Ranks</title>
2701 <primary>Cache Manager</primary>
2703 <secondary>preference ranks for File Server and VL Server</secondary>
2707 <primary>file server machine</primary>
2709 <secondary>Cache Manager preference ranks for</secondary>
2713 <primary>displaying</primary>
2715 <secondary>Cache Manager preference ranks for file server machines</secondary>
2719 <primary>setting</primary>
2721 <secondary>Cache Manager preferences for file server machines</secondary>
2725 <primary>server preference ranks</primary>
2729 <primary>VL Server</primary>
2731 <secondary>Cache Manager preference ranks for</secondary>
2734 <para>As mentioned in the introduction to this chapter, AFS uses client-side data caching and callbacks to reduce the amount of
2735 network traffic in your cell. The Cache Manager also tries to make its use of the network as efficient as possible by assigning
2736 <emphasis>preference ranks</emphasis> to server machines based on their network proximity to the local machine. The ranks bias
2737 the Cache Manager to fetch information from the server machines that are on its own subnetwork or network rather than on other
2738 networks, if possible. Reducing the network distance that data travels between client and server machine tends to reduce network
2739 traffic and speed the Cache Manager's delivery of data to applications.</para>
2741 <para>The Cache Manager stores two separate sets of preference ranks in kernel memory. The first set of ranks applies to
2742 machines that run the Volume Location (VL) Server process, hereafter referred to as <emphasis>VL Server machines</emphasis>. The
2743 second set of ranks applies to machines that run the File Server process, hereafter referred to as <emphasis>file server
2744 machines</emphasis>. This section explains how the Cache Manager sets default ranks, how to use the <emphasis role="bold">fs
2745 setserverprefs</emphasis> command to change the defaults or set new ranks, and how to use the <emphasis role="bold">fs
2746 getserverprefs</emphasis> command to display the current set of ranks.</para>
2748 <sect2 id="Header_471">
2749 <title>How the Cache Manager Sets Default Ranks</title>
2751 <para>As the <emphasis role="bold">afsd</emphasis> program initializes the Cache Manager, it assigns a preference rank of
2752 10,000 to each of the VL Server machines listed in the local <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file.
2753 It then randomizes the ranks by adding an integer randomly chosen from the range 0 (zero) to 126. It avoids assigning the same
2754 rank to machines in one cell, but it is possible for machines from different cells to have the same rank. This does not
2755 present a problem in use, because the Cache Manager compares the ranks of only one cell's database server machines at a time.
2756 Although AFS supports the use of multihomed database server machines, the Cache Manager only uses the single address listed
2757 for each database server machine in the local <emphasis role="bold">/usr/vice/etc/CellServDB</emphasis> file. Only Ubik can
2758 take advantage of a multihomed database server machine's multiple interfaces.</para>
2760 <para>The Cache Manager assigns preference ranks to a file server machine when it obtains the server's VLDB record from the VL
2761 Server, the first time that it accesses a volume that resides on the machine. If the machine is multihomed, the Cache Manager
2762 assigns a distinct rank to each of its interfaces (up to the number of interfaces that the VLDB can store for each machine,
2763 which is specified in the <emphasis>IBM AFS Release Notes</emphasis>). The Cache Manager compares the interface's IP address
2764 to the local machine's address and applies the following algorithm: <itemizedlist>
2766 <para>If the local machine is a file server machine, the base rank for each of its interfaces is 5,000.</para>
2770 <para>If the file server machine interface is on the same subnetwork as the local machine, its base rank is
2775 <para>If the file server machine interface is on the same network as the local machine, or is at the distant end of a
2776 point-to-point link with the local machine, its base rank is 30,000.</para>
2780 <para>If the file server machine interface is on a different network than the local machine, or the Cache Manager cannot
2781 obtain network information about it, its base rank is 40,000.</para>
2783 </itemizedlist></para>
2785 <para>If the client machine has only one interface, the Cache Manager compares it to the server interface's IP address and
2786 sets a rank according to the algorithm. If the client machine is multihomed, the Cache Manager compares each of the local
2787 interface addresses to the server interface, and assigns to the server interface the lowest rank that results from comparing
2788 it to all of the client interfaces.</para>
2790 <para>After assigning a base rank to a file server machine interface, the Cache Manager adds to it a number randomly chosen
2791 from the range 0 (zero) to 15. As an example, a file server machine interface in the same subnetwork as the local machine
2792 receives a base rank of 20,000, but the Cache Manager records the actual rank as an integer between 20,000 and 20,015. This
2793 process reduces the number of interfaces that have exactly the same rank. As with VL Server machine ranks, it is possible for
2794 file server machine interfaces from foreign cells to have the same rank as interfaces in the local cell, but this does not
2795 present a problem. Only the relative ranks of the interfaces that house a specific volume are relevant, and AFS supports
2796 storage of a volume in only one cell at a time.</para>
2799 <sect2 id="Header_472">
2800 <title>How the Cache Manager Uses Preference Ranks</title>
2802 <para>Each preference rank pairs an interface's IP address with an integer that can range from 1 to 65,534. A lower rank
2803 (lower number) indicates a stronger preference. Once set, a rank persists until the machine reboots, or until you use the
2804 <emphasis role="bold">fs setserverprefs</emphasis> command to change it.</para>
2806 <para>The Cache Manager uses VL Server machine ranks when it needs to fetch volume location information from a cell. It
2807 compares the ranks for the cell's VL Server machines and attempts to contact the VL Server process on the machine with the
2808 best (lowest integer) rank. If it cannot reach that VL Server, it tries to contact the VL Server with the next best rank, and
2809 so on. If all of a cell's VL Server machines are inaccessible, the Cache Manager cannot fetch data from the cell.</para>
2811 <para>Similarly, when the Cache Manager needs to fetch data from a volume, it compares the ranks for the interfaces of
2812 machines that house the volume, and attempts to contact the interface that has the best rank. If it cannot reach the <emphasis
2813 role="bold">fileserver</emphasis> process via that interface, it tries to contact the interface with the next best integer
2814 rank, and so on. If it cannot reach any of the interfaces for machines that house the volume, it cannot fetch data from the
2818 <sect2 id="Header_473">
2819 <title>Displaying and Setting Preference Ranks</title>
2821 <para>To display the file server machine ranks that the Cache Manager is using, use the <emphasis role="bold">fs
2822 getserverprefs</emphasis> command. Include the <emphasis role="bold">-vlservers</emphasis> flag to display VL Server machine
2823 ranks instead. By default, the output appears on the standard output stream (stdout), but you can write it to a file instead
2824 by including the <emphasis role="bold">-file</emphasis> argument.</para>
2826 <para>The Cache Manager stores IP addresses rather than hostnames in its kernel list of ranks, but by default the output
2827 identifies interfaces by hostname after calling a translation routine that refers to either the cell's name service (such as
2828 the Domain Name Server) or the local host table. If an IP address appears in this case, it is because the translation attempt
2829 failed. To bypass the translation step and display IP addresses rather than hostnames, include the <emphasis
2830 role="bold">-numeric</emphasis> flag. This can significantly speed up the output.</para>
2832 <para>You can use the <emphasis role="bold">fs setserverprefs</emphasis> command to reset an existing preference rank, or to
2833 set the initial rank of a file server machine interface or VL Server machine for which the Cache Manager has no rank. The
2834 ranks you set persist until the machine reboots or until you issue the <emphasis role="bold">fs setserverprefs</emphasis>
2835 command again. To make a rank persist across a reboot, place the appropriate <emphasis role="bold">fs
2836 setserverprefs</emphasis> command in the machine's AFS initialization file.</para>
2838 <para>As with default ranks, the Cache Manager adds a randomly chosen integer to each rank range that you assign. For file
2839 server machine interfaces, the randomizing number is from the range 0 (zero) to 15; for VL Server machines, it is from the
2840 range 0 (zero) to 126. For example, if you assign a rank of 15,000 to a file server machine interface, the Cache Manager
2841 stores an integer between 15,000 to 15,015.</para>
2843 <para>To assign VL Server machine ranks, list them after the <emphasis role="bold">-vlserver</emphasis> argument to the
2844 <emphasis role="bold">fs setserverprefs</emphasis> command.</para>
2846 <para>To assign file server machine ranks, use or more of the three possible methods: <orderedlist>
2848 <para>List them after the <emphasis role="bold">-servers</emphasis> argument on the command line.</para>
2852 <para>Record them in a file and name it with the <emphasis role="bold">-file</emphasis> argument. You can easily
2853 generate a file with the proper format by including the <emphasis role="bold">-file</emphasis> argument to the <emphasis
2854 role="bold">fs getserverprefs</emphasis> command.</para>
2858 <para>Provide them via the standard input stream, by including the <emphasis role="bold">-stdin</emphasis> flag. This
2859 enables you to feed in values directly from a command or script that generates preferences using an algorithm
2860 appropriate for your cell. It must generate them in the proper format, with one or more spaces between each pair and
2861 between the two parts of the pair. The AFS distribution does not include such a script, so you must write one if you
2862 want to use this method.</para>
2864 </orderedlist></para>
2866 <para>You can combine any of the <emphasis role="bold">-servers</emphasis>, <emphasis role="bold">-file</emphasis>, and
2867 <emphasis role="bold">-stdin</emphasis> options on the same command line if you wish. If more than one of them specifies a
2868 rank for the same interface, the one assigned with the <emphasis role="bold">-servers</emphasis> argument takes precedence.
2869 You can also provide the <emphasis role="bold">-vlservers</emphasis> argument on the same command line to set VL Server
2870 machine ranks at the same time as file server machine ranks.</para>
2872 <para>The <emphasis role="bold">fs</emphasis> command interpreter does not verify hostnames or IP addresses, and so willingly
2873 stores ranks for hostnames and addresses that don't actually exist. The Cache Manager never uses such ranks unless the same
2874 VLDB record for a server machine records the same incorrect information. <indexterm>
2875 <primary>fs commands</primary>
2877 <secondary>getserverprefs</secondary>
2878 </indexterm> <indexterm>
2879 <primary>commands</primary>
2881 <secondary>fs getserverprefs</secondary>
2885 <sect2 id="Header_474">
2886 <title>To display server preference ranks</title>
2890 <para>Issue the <emphasis role="bold">fs getserverprefs</emphasis> command to display the Cache Manager's preference ranks
2891 for file server machines or VL Server machines. <programlisting>
2892 % <emphasis role="bold">fs getserverprefs</emphasis> [<emphasis role="bold">-file</emphasis> <<replaceable>output to named file</replaceable>>] [<emphasis
2893 role="bold">-numeric</emphasis>] [<emphasis role="bold">-vlservers</emphasis>]
2894 </programlisting></para>
2896 <para>where <variablelist>
2898 <term><emphasis role="bold">gp</emphasis></term>
2901 <para>Is an acceptable alias for <emphasis role="bold">getserverprefs</emphasis> (<emphasis
2902 role="bold">gets</emphasis> is the shortest acceptable abbreviation).</para>
2907 <term><emphasis role="bold">-file</emphasis></term>
2910 <para>Specifies the pathname of the file to which to write the list of ranks. Omit this argument to display the
2911 list on the standard output stream (stdout).</para>
2916 <term><emphasis role="bold">-numeric</emphasis></term>
2919 <para>Displays the IP address, rather than the hostname, of each ranked machine interface. Omit this flag to have
2920 the addresses translated into hostnames, which takes longer.</para>
2925 <term><emphasis role="bold">-vlservers</emphasis></term>
2928 <para>Displays ranks for VL Server machines rather than file server machines.</para>
2931 </variablelist></para>
2933 <para>The following example displays file server machine ranks. The <emphasis role="bold">-numeric</emphasis> flag is not
2934 used, so the appearance of an IP address indicates that is not currently possible to translate it to a hostname.</para>
2937 % <emphasis role="bold">fs gp</emphasis>
2940 server1.stateu.edu 40011
2943 192.12.106.120 40002
2944 192.12.106.119 40001
2951 <primary>fs commands</primary>
2953 <secondary>setserverprefs</secondary>
2957 <primary>commands</primary>
2959 <secondary>fs setserverprefs</secondary>
2963 <primary>preferences</primary>
2965 <secondary>setting</secondary>
2969 <sect2 id="Header_475">
2970 <title>To set server preference ranks</title>
2974 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
2975 the <emphasis role="bold">su</emphasis> command. <programlisting>
2976 % <emphasis role="bold">su root</emphasis>
2977 Password: <<replaceable>root_password</replaceable>>
2978 </programlisting></para>
2982 <para>Issue the <emphasis role="bold">fs setserverprefs</emphasis> command to set the Cache Manager's preference ranks for
2983 one or more file server machines or VL Server machines. <programlisting>
2984 # <emphasis role="bold">fs setserverprefs</emphasis> [<emphasis role="bold">-servers</emphasis> <<replaceable>fileserver names and ranks</replaceable>>+] \
2985 [<emphasis role="bold">-vlservers</emphasis> <<replaceable>VL server names and ranks</replaceable>>+] \
2986 [<emphasis role="bold">-file</emphasis> <<replaceable>input from named file</replaceable>>] [<emphasis
2987 role="bold">-stdin</emphasis>]
2988 </programlisting></para>
2990 <para>where <variablelist>
2992 <term><emphasis role="bold">sp</emphasis></term>
2995 <para>Is an acceptable alias for <emphasis role="bold">setserverprefs</emphasis> (<emphasis
2996 role="bold">sets</emphasis> is the shortest acceptable abbreviation).</para>
3001 <term><emphasis role="bold">-servers</emphasis></term>
3004 <para>Specifies one or more pairs of file server machine interface and rank. Identify each interface by its
3005 fully-qualified hostname or IP address in dotted decimal format. Acceptable ranks are the integers from <emphasis
3006 role="bold">1</emphasis> to <emphasis role="bold">65534</emphasis>. Separate the parts of a pair, and the pairs
3007 from one another, with one or more spaces.</para>
3012 <term><emphasis role="bold">-vlservers</emphasis></term>
3015 <para>Specifies one or more pairs of VL Server machine and rank. Identify each machine by its fully-qualified
3016 hostname or IP address in dotted decimal format. Acceptable ranks are the integers from <emphasis
3017 role="bold">1</emphasis> to <emphasis role="bold">65534</emphasis>.</para>
3022 <term><emphasis role="bold">-file</emphasis></term>
3025 <para>Specifies the pathname of a file that contains one more pairs of file server machine interface and rank.
3026 Place each pair on its own line in the file. Use the same format for interfaces and ranks as with the <emphasis
3027 role="bold">-servers</emphasis> argument.</para>
3032 <term><emphasis role="bold">-stdin</emphasis></term>
3035 <para>Indicates that pairs of file server machine interface and rank are being provided via the standard input
3036 stream (stdin). The program or script that generates the pairs must format them in the same manner as for the
3037 <emphasis role="bold">-servers</emphasis> argument.</para>
3040 </variablelist></para>
3046 <sect1 id="HDRWQ415">
3047 <title>Managing Multihomed Client Machines</title>
3050 <primary>Cache Manager</primary>
3052 <secondary>use of NetInfo file</secondary>
3056 <primary>Cache Manager</primary>
3058 <secondary>use of NetRestrict file</secondary>
3062 <primary>Cache Manager</primary>
3064 <secondary>interfaces registered with File Server</secondary>
3068 <primary>File Server</primary>
3070 <secondary>client interfaces registered</secondary>
3074 <primary>setting</primary>
3076 <secondary>client interfaces registered with File Server</secondary>
3080 <primary>displaying</primary>
3082 <secondary>client interfaces registered with File Server</secondary>
3085 <para>The File Server can choose the interface to which to send a message when it initiates communication with the Cache Manager
3086 on a multihomed client machine (one with more than one network interface and IP address). If that interface is inaccessible, it
3087 automatically switches to an alternate. This improves AFS performance, because it means that the outage of an interface does not
3088 interrupt communication between File Server and Cache Manager.</para>
3090 <para>The File Server can choose the client interface when it sends two types of messages: <itemizedlist>
3092 <para>A message to break the callback that the Cache Manager holds on a cached file</para>
3096 <para>A <emphasis>ping</emphasis> message to check that the Cache Manager is still accessible and responding; the File
3097 Server sends such a message every few minutes</para>
3099 </itemizedlist></para>
3101 <para>(The File Server does not choose which client interface to respond to when filling a Cache Manager's request for AFS data.
3102 In that case, it always responds to the client interface via which the Cache Manager sent the request.)</para>
3104 <para>The Cache Manager compiles the list of eligible interfaces on its client machine automatically as it initializes, and
3105 records them in kernel memory. When the Cache Manager first establishes a connection with the File Server, it sends along the
3106 list of interface addresses. The File Server records the addresses, and uses the one at the top of the list when it needs to
3107 break a callback or send a ping to the Cache Manager. If that interface is inaccessible, the File Server simultaneously sends a
3108 message to all of the other interfaces in the list. Whichever interface replies first is the one to which the File Server sends
3109 future messages.</para>
3111 <para>You can control which addresses the Cache Manager registers with File Servers by listing them in two files in the
3112 <emphasis role="bold">/usr/vice/etc</emphasis> directory on the client machine's local disk: <emphasis
3113 role="bold">NetInfo</emphasis> and <emphasis role="bold">NetRestrict</emphasis>. If the <emphasis role="bold">NetInfo</emphasis>
3114 file exists when the Cache Manager initializes, the Cache Manager uses its contents as the basis for the list of interfaces.
3115 Otherwise, the Cache Manager uses the list of interfaces configured with the operating system. It then removes from the list any
3116 addresses that appear in the <emphasis role="bold">/usr/vice/etc/NetRestrict</emphasis> file, if it exists. The Cache Manager
3117 records the resulting list in kernel memory.</para>
3119 <para>You can also use the <emphasis role="bold">fs setclientaddrs</emphasis> command to change the list of addresses stored in
3120 the Cache Manager's kernel memory, without rebooting the client machine. The list of addresses you provide on the command line
3121 completely replaces the current list in kernel memory. The changes you make persist only until the client machine reboots,
3122 however. To preserve the revised list across reboots, list the interfaces in the <emphasis role="bold">NetInfo</emphasis> file
3123 (and if appropriate, the <emphasis role="bold">NetRestrict</emphasis> file) in the local <emphasis
3124 role="bold">/usr/vice/etc</emphasis> directory. (You can also place the appropriate <emphasis role="bold">fs
3125 setclientaddrs</emphasis> command in the machine's AFS initialization script, but that is less efficient: by the time the Cache
3126 Manager reads the command in the script, it has already compiled a list of interfaces.)</para>
3128 <para>To display the list of addresses that the Cache Manager is currently registering with File Servers, use the <emphasis
3129 role="bold">fs getclientaddrs</emphasis> command.</para>
3131 <para>Keep the following in mind when you change the <emphasis role="bold">NetInfo</emphasis> or <emphasis
3132 role="bold">NetRestrict</emphasis> file, or issue the <emphasis role="bold">fs getclientaddrs</emphasis> or <emphasis
3133 role="bold">fs setclientaddrs</emphasis> commands: <itemizedlist>
3135 <para>When you issue the <emphasis role="bold">fs setclientaddrs</emphasis> command, the revised list of addresses does
3136 not propagate automatically to File Servers with which the Cache Manager has already established a connection. They
3137 continue to use the list that the Cache Manager registered with them when it first established a connection. To force
3138 previously contacted File Servers to use the revised list, you must either reboot each file server machine, or reboot the
3139 client machine after changing its <emphasis role="bold">NetInfo</emphasis> file, <emphasis
3140 role="bold">NetRestrict</emphasis> file, or both.</para>
3144 <para>The <emphasis role="bold">fs</emphasis> command interpreter verifies that each of the addresses you specify on the
3145 <emphasis role="bold">fs setclientaddrs</emphasis> command line is actually configured with the client machine's operating
3146 system. If it is not, the command fails with an error message that marks the address as a <computeroutput>Nonexistent
3147 interface</computeroutput>.</para>
3151 <para>As previously noted, the File Server does not use the registered list of addresses when it responds to the Cache
3152 Manager's request for data (as opposed to initiating communication itself). It always attempts to send its reply to the
3153 interface from which the Cache Manager sent the request. If the reply attempt fails, the File Server selects an alternate
3154 route for resending the reply according to its server machine's network routing configuration, not the list of addresses
3155 registered by the Cache Manager.</para>
3159 <para>The Cache Manager does not use the list of interfaces when choosing the interface via which to establish a
3160 connection to a File Server.</para>
3164 <para>The list of addresses that the <emphasis role="bold">fs getclientaddrs</emphasis> command displays is not
3165 necessarily the one that a specific File Server is using, if an administrator has issued the <emphasis role="bold">fs
3166 setclientaddrs</emphasis> command since the Cache Manager first contacted that File Server. It determines only which
3167 addresses the Cache Manager registers when connecting to File Servers in future.</para>
3169 </itemizedlist></para>
3172 <primary>files</primary>
3174 <secondary>NetInfo (client version)</secondary>
3178 <primary>NetInfo file (client version)</primary>
3182 <primary>creating</primary>
3184 <secondary>NetInfo file (client version)</secondary>
3188 <primary>editing</primary>
3190 <secondary>NetInfo file (client version)</secondary>
3193 <sect2 id="Header_477">
3194 <title>To create or edit the client NetInfo file</title>
3198 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3199 the <emphasis role="bold">su</emphasis> command. <programlisting>
3200 % <emphasis role="bold">su root</emphasis>
3201 Password: <<replaceable>root_password</replaceable>>
3202 </programlisting></para>
3206 <para>Using a text editor, open the <emphasis role="bold">/usr/vice/etc/NetInfo</emphasis> file. Place one IP address in
3207 dotted decimal format (for example, <computeroutput>192.12.107.33</computeroutput>) on each line. On the first line, put
3208 the address that you want each File Server to use initially. The order of the remaining machines does not matter, because
3209 if an RPC to the first interface fails, the File Server simultaneously sends RPCs to all of the other interfaces in the
3210 list. Whichever interface replies first is the one to which the File Server then sends pings and RPCs to break
3215 <para>If you want the Cache Manager to start using the revised list immediately, either reboot the machine, or use the
3216 <emphasis role="bold">fs setclientaddrs</emphasis> command to create the same list of addresses in kernel memory
3222 <primary>files</primary>
3224 <secondary>NetRestrict (client version)</secondary>
3228 <primary>NetRestrict file (client version)</primary>
3232 <primary>creating</primary>
3234 <secondary>NetRestrict file (client version)</secondary>
3238 <primary>editing</primary>
3240 <secondary>NetRestrict file (client version)</secondary>
3244 <sect2 id="Header_478">
3245 <title>To create or edit the client NetRestrict file</title>
3249 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3250 the <emphasis role="bold">su</emphasis> command. <programlisting>
3251 % <emphasis role="bold">su root</emphasis>
3252 Password: <<replaceable>root_password</replaceable>>
3253 </programlisting></para>
3257 <para>Using a text editor, open the <emphasis role="bold">/usr/vice/etc/NetRestrict</emphasis> file. Place one IP address
3258 in dotted decimal format on each line. The order of the addresses is not significant. Use the value <emphasis
3259 role="bold">255</emphasis> as a wildcard that represents all possible addresses in that field. For example, the entry
3260 <computeroutput>192.12.105.255</computeroutput> indicates that the Cache Manager does not register any of the addresses in
3261 the 192.12.105 subnet.</para>
3265 <para>If you want the Cache Manager to start using the revised list immediately, either reboot the machine, or use the
3266 <emphasis role="bold">fs setclientaddrs</emphasis> command to set a list of addresses that does not included the
3267 prohibited ones.</para>
3272 <primary>fs commands</primary>
3274 <secondary>getclientaddrs</secondary>
3278 <primary>commands</primary>
3280 <secondary>fs getclientaddrs</secondary>
3284 <sect2 id="Header_479">
3285 <title>To display the list of addresses from kernel memory</title>
3289 <para>Issue the <emphasis role="bold">fs getclientaddrs</emphasis> command. <programlisting>
3290 % <emphasis role="bold">fs getclientaddrs</emphasis>
3291 </programlisting></para>
3293 <para>where <emphasis role="bold">gc</emphasis> is an acceptable alias for <emphasis role="bold">getclientaddrs</emphasis>
3294 (<emphasis role="bold">getcl</emphasis> is the shortest acceptable abbreviation).</para>
3298 <para>The output lists each IP address on its own line, in dotted decimal format. <indexterm>
3299 <primary>fs commands</primary>
3301 <secondary>setclientaddrs</secondary>
3302 </indexterm> <indexterm>
3303 <primary>commands</primary>
3305 <secondary>fs setclientaddrs</secondary>
3309 <sect2 id="Header_480">
3310 <title>To set the list of addresses in kernel memory</title>
3314 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3315 the <emphasis role="bold">su</emphasis> command. <programlisting>
3316 % <emphasis role="bold">su root</emphasis>
3317 Password: <<replaceable>root_password</replaceable>>
3318 </programlisting></para>
3322 <para>Issue the <emphasis role="bold">fs setclientaddrs</emphasis> command to replace the list of addresses currently in
3323 kernel memory with a new list. <programlisting>
3324 # <emphasis role="bold">fs setclientaddrs</emphasis> [<emphasis role="bold">-address</emphasis> <<replaceable>client network interfaces</replaceable>>+]
3325 </programlisting></para>
3327 <para>where <variablelist>
3329 <term><emphasis role="bold">sc</emphasis></term>
3332 <para>Is an acceptable alias for <emphasis role="bold">setclientaddrs</emphasis> (<emphasis
3333 role="bold">setcl</emphasis> is the shortest acceptable abbreviation).</para>
3338 <term><emphasis role="bold">-address</emphasis></term>
3341 <para>Specifies one or more IP addresses in dotted decimal format (hostnames are not acceptable). Separate each
3342 address with one or more spaces.</para>
3345 </variablelist></para>
3351 <sect1 id="HDRWQ416">
3352 <title>Controlling the Display of Warning and Informational Messages</title>
3355 <primary>Cache Manager</primary>
3357 <secondary>messages displayed, controlling</secondary>
3361 <primary>client machine</primary>
3363 <secondary>messages displayed, controlling</secondary>
3366 <para>By default, the Cache Manager generates two types of warning and informational messages: <itemizedlist>
3368 <para>It sends <emphasis>user messages</emphasis>, which provide user-level status and warning information, to user
3373 <para>It sends <emphasis>console messages</emphasis>, which provide system-level status and warning information, to the
3374 client machine's designated console.</para>
3376 </itemizedlist></para>
3378 <para>You can use the <emphasis role="bold">fs messages</emphasis> command to control whether the Cache Manager displays either
3379 type of message, both types, or neither. It is best not to disable messages completely, because they provide useful
3382 <para>If you want to monitor Cache Manager status and performance more actively, you can use the <emphasis
3383 role="bold">afsmonitor</emphasis> program to collect an extensive set of statistics (it also gathers File Server statistics). If
3384 you experience performance problems, you can use <emphasis role="bold">fstrace</emphasis> suite of commands to gather a
3385 low-level trace of Cache Manager operations, which the AFS Support and Development groups can analyze to help solve your
3386 problem. To learn about both utilities, see <link linkend="HDRWQ323">Monitoring and Auditing AFS Performance</link>. <indexterm>
3387 <primary>fs commands</primary>
3389 <secondary>messages</secondary>
3390 </indexterm> <indexterm>
3391 <primary>commands</primary>
3393 <secondary>fs messages</secondary>
3396 <sect2 id="Header_482">
3397 <title>To control the display of warning and status messages</title>
3401 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3402 the <emphasis role="bold">su</emphasis> command. <programlisting>
3403 % <emphasis role="bold">su root</emphasis>
3404 Password: <<replaceable>root_password</replaceable>>
3405 </programlisting></para>
3409 <para>Issue the <emphasis role="bold">fs messages</emphasis> command, using the <emphasis role="bold">-show</emphasis>
3410 argument to specify the type of messages to be displayed. <programlisting>
3411 # <emphasis role="bold">fs messages -show</emphasis> <<emphasis role="bold">user</emphasis>|<emphasis role="bold">console</emphasis>|<emphasis
3412 role="bold">all</emphasis>|<emphasis role="bold">none</emphasis>>
3413 </programlisting></para>
3415 <para>where <variablelist>
3417 <term><emphasis role="bold">me</emphasis></term>
3420 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">messages</emphasis>.</para>
3425 <term><emphasis role="bold">-show</emphasis></term>
3428 <para>Specifies the types of messages to display. Choose one of the following values: <variablelist>
3430 <term><emphasis role="bold">user</emphasis></term>
3433 <para>Sends user messages to user screens.</para>
3438 <term><emphasis role="bold">console</emphasis></term>
3441 <para>Sends console messages to the console.</para>
3446 <term><emphasis role="bold">all</emphasis></term>
3449 <para>Sends user messages to user screens and console messages to the console (the default if the
3450 <emphasis role="bold">-show</emphasis> argument is omitted).</para>
3455 <term><emphasis role="bold">none</emphasis></term>
3458 <para>Disables messages completely.</para>
3461 </variablelist></para>
3464 </variablelist></para>
3470 <sect1 id="HDRWQ417">
3471 <title>Displaying and Setting the System Type Name</title>
3474 <primary>Cache Manager</primary>
3476 <secondary>system type name stored in kernel memory</secondary>
3480 <primary>client machine</primary>
3482 <secondary>system type name stored in Cache Manager memory</secondary>
3485 <para>The Cache Manager stores the system type name of the local client machine in kernel memory. It reads in the default value
3486 from a hardcoded definition in the AFS client software.</para>
3488 <para>The Cache Manager uses the system name as a substitute for the @sys variable in AFS pathnames. The variable is useful when
3489 creating a symbolic link from the local disk to an AFS directory that houses binaries for the client machine's system type.
3490 Because the @sys variable automatically steers the Cache Manager to the appropriate directory, you can create the same symbolic
3491 link on client machines of different system types. (You can even automate the creation operation by using the package utility
3492 described in <link linkend="HDRWQ419">Configuring Client Machines with the package Program</link>.) The link also remains valid
3493 when you upgrade the machine to a new system type.</para>
3495 <para>Configuration is simplest if you use the system type names that AFS assigns. For a list, see the <emphasis>IBM AFS Release
3496 Notes</emphasis>.</para>
3498 <para>To display the system name stored in kernel memory, use the <emphasis role="bold">sys</emphasis> or <emphasis
3499 role="bold">fs sysname</emphasis> command. To change the name, add the latter command's <emphasis role="bold">-newsys</emphasis>
3500 argument. <indexterm>
3501 <primary>fs commands</primary>
3503 <secondary>sysname</secondary>
3504 </indexterm> <indexterm>
3505 <primary>commands</primary>
3507 <secondary>fs sysname</secondary>
3508 </indexterm> <indexterm>
3509 <primary>sys command</primary>
3510 </indexterm> <indexterm>
3511 <primary>commands</primary>
3513 <secondary>sys</secondary>
3516 <sect2 id="Header_484">
3517 <title>To display the system type name</title>
3521 <para>Issue the <emphasis role="bold">fs sysname</emphasis> or <emphasis role="bold">sys</emphasis> command.
3523 % <emphasis role="bold">fs sysname</emphasis>
3524 % <emphasis role="bold">sys</emphasis>
3525 </programlisting></para>
3529 <para>The output of the <emphasis role="bold">fs sysname</emphasis> command has the following format:</para>
3532 Current sysname is 'system_name'
3535 <para>The <emphasis role="bold">sys</emphasis> command displays the system_name string with no other text.</para>
3538 <sect2 id="Header_485">
3539 <title>To change the system type name</title>
3543 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3544 the <emphasis role="bold">su</emphasis> command. <programlisting>
3545 % <emphasis role="bold">su root</emphasis>
3546 Password: <<replaceable>root_password</replaceable>>
3547 </programlisting></para>
3551 <para>Issue the <emphasis role="bold">fs sysname</emphasis> command, using the <emphasis role="bold">-newsys</emphasis>
3552 argument to specify the new name. <programlisting>
3553 # <emphasis role="bold">fs sysname</emphasis> <<replaceable>new sysname</replaceable>>
3554 </programlisting></para>
3556 <para>where <variablelist>
3558 <term><emphasis role="bold">sys</emphasis></term>
3561 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">sysname</emphasis>.</para>
3566 <term><emphasis role="bold">new sysname</emphasis></term>
3569 <para>Specifies the new system type name.</para>
3572 </variablelist></para>
3578 <sect1 id="HDRWQ418">
3579 <title>Enabling Asynchronous Writes</title>
3582 <primary>asynchrony</primary>
3584 <secondary>enabling for Cache Manager write operations</secondary>
3588 <primary>synchrony</primary>
3590 <secondary>controlling for Cache Manager write operations</secondary>
3594 <primary>Cache Manager</primary>
3596 <secondary>enabling asynchrony for write operations</secondary>
3599 <para>By default, the Cache Manager writes all data to the File Server immediately and synchronously when an application program
3600 closes a file. That is, the <emphasis role="bold">close</emphasis> system call does not return until the Cache Manager has
3601 actually written all of the cached data from the file back to the File Server. You can enable the Cache Manager to write files
3602 asynchronously by specifying the number of kilobytes of a file that can remain to be written to the File Server when the Cache
3603 Manager returns control to the application.</para>
3605 <para>Enabling asynchronous writes can be helpful to users who commonly work with very large files, because it usually means
3606 that the application appears to perform faster. However, it introduces some complications. It is best not to enable asynchronous
3607 writes unless the machine's users are sophisticated enough to understand the potential problems and how to avoid them. The
3608 complications include the following: <itemizedlist>
3610 <para>In most cases, the Cache Manager returns control to applications earlier than it does by default, but it is not
3611 guaranteed to do so. Users cannot always expect faster performance.</para>
3615 <para>If an asynchronous write fails, there is no way to notify the application, because the <emphasis
3616 role="bold">close</emphasis> system call has already returned with a code indicating success.</para>
3620 <para>Asynchronous writing increases the possibility that the user fails to notice when a write operation makes a volume
3621 exceed its quota. As always, the portion of the file that exceeds the quota is lost, as indicated by a message like the
3622 following: <programlisting>
3623 No space left on device
3624 </programlisting></para>
3626 <para>To avoid losing data because of insufficient quota, before closing a file users must verify that the volume housing
3627 the file has enough free space to accommodate it.</para>
3629 </itemizedlist></para>
3631 <para>When you enable asynchronous writes by issuing the <emphasis role="bold">fs storebehind</emphasis> command, you set the
3632 number of kilobytes of a file that can still remain to be written to the File Server when the Cache Manager returns control to
3633 the application program. You can apply the setting either to all files manipulated by applications running on the machine, or
3634 only to certain files: <itemizedlist>
3636 <para>The setting that applies to all files is called the <emphasis>default store asynchrony</emphasis> for the machine,
3637 and persists until the machine reboots. If, for example, you set the default store asynchrony to 10 KB, it means that when
3638 an application closes a file, the Cache Manager can return control to the application as soon as no more than 10 KB of a
3639 file that the application has closed remain to be written to the File Server.</para>
3643 <para>The setting for an individual file overrides the default store asynchrony and persists as long as there is an entry
3644 for the file in the internal table that the Cache Manager uses to track information about files. In general, such an entry
3645 persists at least until an application closes the file or exits completely, but the Cache Manager is free to recycle the
3646 entry if the file is inactive and it needs to free up slots in the table. To be sure the entry exists in the table, issue
3647 the <emphasis role="bold">fs storebehind</emphasis> command shortly before closing the file.</para>
3649 </itemizedlist></para>
3652 <primary>fs commands</primary>
3654 <secondary>storebehind</secondary>
3656 <tertiary>setting default asynchrony</tertiary>
3660 <primary>commands</primary>
3662 <secondary>fs storebehind</secondary>
3664 <tertiary>setting default asynchrony</tertiary>
3667 <sect2 id="Header_487">
3668 <title>To set the default store asynchrony</title>
3672 <para>Become the local superuser <emphasis role="bold">root</emphasis> on the machine, if you are not already, by issuing
3673 the <emphasis role="bold">su</emphasis> command. <programlisting>
3674 % <emphasis role="bold">su root</emphasis>
3675 Password: <<replaceable>root_password</replaceable>>
3676 </programlisting></para>
3680 <para>Issue the <emphasis role="bold">fs storebehind</emphasis> command with the <emphasis
3681 role="bold">-allfiles</emphasis> argument. <programlisting>
3682 # <emphasis role="bold">fs storebehind -allfiles</emphasis> <<replaceable>new default (KB)</replaceable>> [<emphasis
3683 role="bold">-verbose</emphasis>]
3684 </programlisting></para>
3686 <para>where <variablelist>
3688 <term><emphasis role="bold">st</emphasis></term>
3691 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">storebehind</emphasis>.</para>
3696 <term><emphasis role="bold">-allfiles</emphasis></term>
3699 <para>Sets the number of kilobytes of data that can remain to be written to the File Server when the Cache Manager
3700 returns control to the application that closed a file.</para>
3705 <term><emphasis role="bold">-verbose</emphasis></term>
3708 <para>Produces a message that confirms the new setting.</para>
3711 </variablelist></para>
3716 <primary>fs commands</primary>
3718 <secondary>storebehind</secondary>
3720 <tertiary>setting asynchrony for specific files</tertiary>
3724 <primary>commands</primary>
3726 <secondary>fs storebehind</secondary>
3728 <tertiary>setting asynchrony for specific files</tertiary>
3732 <sect2 id="Header_488">
3733 <title>To set the store asynchrony for one or more files</title>
3737 <para>Verify that you have the <emphasis role="bold">w</emphasis> (<emphasis role="bold">write</emphasis>) permission on
3738 the access control list (ACL) of each file for which you are setting the store asynchrony, by issuing the <emphasis
3739 role="bold">fs listacl</emphasis> command, which is described fully in <link linkend="HDRWQ572">Displaying ACLs</link>.
3741 % <emphasis role="bold">fs listacl</emphasis> dir/file path
3742 </programlisting></para>
3744 <para>Alternatively, become the local superuser <emphasis role="bold">root</emphasis> on the client machine, if you are
3745 not already, by issuing the <emphasis role="bold">su</emphasis> command.</para>
3748 % <emphasis role="bold">su root</emphasis>
3749 Password: <<replaceable>root_password</replaceable>>
3754 <para>Issue the <emphasis role="bold">fs storebehind</emphasis> command with the <emphasis role="bold">-kbytes</emphasis>
3755 and <emphasis role="bold">-files</emphasis> arguments. <programlisting>
3756 # <emphasis role="bold">fs storebehind -kbytes</emphasis> <<replaceable>asynchrony for specified names</replaceable>> \
3757 <emphasis role="bold">-files</emphasis> <<replaceable>specific pathnames</replaceable>>+ \
3758 [<emphasis role="bold">-verbose</emphasis>]
3759 </programlisting></para>
3761 <para>where <variablelist>
3763 <term><emphasis role="bold">st</emphasis></term>
3766 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">storebehind</emphasis>.</para>
3771 <term><emphasis role="bold">-kbytes</emphasis></term>
3774 <para>Sets the number of kilobytes of data that can remain to be written to the File Server when the Cache Manager
3775 returns control to the application that closed a file named by the <emphasis role="bold">-files</emphasis>
3781 <term><emphasis role="bold">-files</emphasis></term>
3784 <para>Specifies each file for which to set a store asynchrony that overrides the default. Partial pathnames are
3785 interpreted relative to the current working directory.</para>
3790 <term><emphasis role="bold">-verbose</emphasis></term>
3793 <para>Produces a message that confirms that new setting.</para>
3796 </variablelist></para>
3801 <primary>fs commands</primary>
3803 <secondary>storebehind</secondary>
3805 <tertiary>displaying default asynchrony</tertiary>
3809 <primary>commands</primary>
3811 <secondary>fs storebehind</secondary>
3813 <tertiary>displaying default asynchrony</tertiary>
3817 <sect2 id="Header_489">
3818 <title>To display the default store asynchrony</title>
3822 <para>Issue the <emphasis role="bold">fs storebehind</emphasis> command with no arguments, or with the <emphasis
3823 role="bold">-verbose</emphasis> flag only. <programlisting>
3824 % <emphasis role="bold">fs storebehind</emphasis> [<emphasis role="bold">-verbose</emphasis>]
3825 </programlisting></para>
3827 <para>where <variablelist>
3829 <term><emphasis role="bold">st</emphasis></term>
3832 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">storebehind</emphasis>.</para>
3837 <term><emphasis role="bold">-verbose</emphasis></term>
3840 <para>Produces output that reports the default store asynchrony.</para>
3843 </variablelist></para>
3848 <primary>fs commands</primary>
3850 <secondary>storebehind</secondary>
3852 <tertiary>displaying asynchrony for specific files</tertiary>
3856 <primary>commands</primary>
3858 <secondary>fs storebehind</secondary>
3860 <tertiary>displaying asynchrony for specific files</tertiary>
3864 <sect2 id="Header_490">
3865 <title>To display the store asynchrony for one or more files</title>
3869 <para>Issue the <emphasis role="bold">fs storebehind</emphasis> command with the <emphasis role="bold">-files</emphasis>
3870 argument only. <programlisting>
3871 % <emphasis role="bold">fs storebehind</emphasis> <emphasis role="bold">-files</emphasis> <<replaceable>specific pathnames</replaceable>>+
3872 </programlisting></para>
3874 <para>where <variablelist>
3876 <term><emphasis role="bold">st</emphasis></term>
3879 <para>Is the shortest acceptable abbreviation of <emphasis role="bold">storebehind</emphasis>.</para>
3884 <term><emphasis role="bold">-files</emphasis></term>
3887 <para>Specifies each file for which to display the store asynchrony. Partial pathnames are interpreted relative to
3888 the current working directory.</para>
3891 </variablelist></para>
3895 <para>The output lists each file separately. If a value has previously been set for the specified files, the output reports
3896 the following:</para>
3899 Will store up to y kbytes of file asynchronously.
3900 Default store asynchrony is x kbytes.
3903 <para>If the default store asynchrony applies to a file (because you have not set a <emphasis role="bold">-kbytes</emphasis>
3904 value for it), the output reports the following:</para>
3907 Will store file according to default.
3908 Default store asynchrony is x kbytes.