home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / Multi-Disk-HOWTO < prev    next >
Text File  |  1999-05-31  |  211KB  |  5,677 lines

  1.   HOWTO: Multi Disk System Tuning
  2.   Stein Gjoen, sgjoen@nyx.net
  3.   v0.22i, 27 May 1999
  4.  
  5.   This document describes how best to use multiple disks and partitions
  6.   for a Linux system. Although some of this text is Linux specific the
  7.   general approach outlined here can be applied to many other multi
  8.   tasking operating systems.
  9.   ______________________________________________________________________
  10.  
  11.   Table of Contents
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   1. Introduction
  68.  
  69.      1.1 Copyright
  70.      1.2 Disclaimer
  71.      1.3 News
  72.      1.4 Credits
  73.  
  74.   2. Structure
  75.  
  76.      2.1 Logical structure
  77.      2.2 Document structure
  78.      2.3 Reading plan
  79.  
  80.   3. Drive technologies
  81.  
  82.      3.1 Drives
  83.      3.2 Geometry
  84.      3.3 Media
  85.         3.3.1 Magnetic Drives
  86.         3.3.2 Optical Drives
  87.         3.3.3 Solid State Drives
  88.      3.4 Interfaces
  89.         3.4.1 MFM and RLL
  90.         3.4.2 ESDI
  91.         3.4.3 IDE and ATA
  92.         3.4.4 EIDE, Fast-ATA and ATA-2
  93.         3.4.5 Ultra-ATA
  94.         3.4.6 ATAPI
  95.         3.4.7 SCSI
  96.      3.5 Cabling
  97.      3.6 Host Adapters
  98.      3.7 Multi Channel Systems
  99.      3.8 Multi Board Systems
  100.      3.9 Speed Comparison
  101.         3.9.1 Controllers
  102.         3.9.2 Bus Types
  103.      3.10 Benchmarking
  104.      3.11 Comparisons
  105.      3.12 Future Development
  106.      3.13 Recommendations
  107.  
  108.   4. File System Structure
  109.  
  110.      4.1 File System Features
  111.         4.1.1 Swap
  112.         4.1.2 Temporary Storage (
  113.         4.1.3 Spool Areas (
  114.         4.1.4 Home Directories (
  115.         4.1.5 Main Binaries (
  116.         4.1.6 Libraries (
  117.         4.1.7 Boot
  118.         4.1.8 Root
  119.         4.1.9 DOS etc.
  120.      4.2 Explanation of Terms
  121.         4.2.1 Speed
  122.         4.2.2 Reliability
  123.         4.2.3 Files
  124.  
  125.   5. File Systems
  126.  
  127.      5.1 General Purpose File Systems
  128.         5.1.1 (TT
  129.         5.1.2 (TT
  130.         5.1.3 (TT
  131.         5.1.4 (TT
  132.         5.1.5 (TT
  133.         5.1.6 (TT
  134.         5.1.7 (TT
  135.      5.2 Microsoft File Systems
  136.         5.2.1 (TT
  137.         5.2.2 (TT
  138.         5.2.3 (TT
  139.         5.2.4 (TT
  140.      5.3 Logging and Journaling File Systems
  141.      5.4 Read-only File Systems
  142.         5.4.1 (TT
  143.         5.4.2 (TT
  144.         5.4.3 (TT
  145.         5.4.4 (TT
  146.         5.4.5 Trivia
  147.         5.4.6 (TT
  148.      5.5 Networking File Systems
  149.         5.5.1 (TT
  150.         5.5.2 (TT
  151.         5.5.3 Coda
  152.         5.5.4 (TT
  153.         5.5.5 GFS
  154.      5.6 Special File Systems
  155.         5.6.1 (TT
  156.         5.6.2 (TT
  157.         5.6.3 (TT
  158.      5.7 File System Recommendations
  159.  
  160.   6. Technologies
  161.  
  162.      6.1 RAID
  163.         6.1.1 SCSI-to-SCSI
  164.         6.1.2 PCI-to-SCSI
  165.         6.1.3 Software RAID
  166.         6.1.4 RAID Levels
  167.      6.2 Volume Management
  168.      6.3 Linux
  169.      6.4 Compression
  170.      6.5 ACL
  171.      6.6 (TT
  172.      6.7 Translucent or Inheriting File Systems
  173.      6.8 Physical Track Positioning
  174.         6.8.1 Disk Speed Values
  175.      6.9 Stacking
  176.      6.10 Recommendations
  177.  
  178.   7. Other Operating Systems
  179.  
  180.      7.1 DOS
  181.      7.2 Windows
  182.      7.3 OS/2
  183.      7.4 NT
  184.      7.5 Sun OS
  185.         7.5.1 Sun OS 4
  186.         7.5.2 Sun OS 5 (aka Solaris)
  187.         7.5.3 BeOS
  188.  
  189.   8. Clusters
  190.  
  191.   9. Mount Points
  192.  
  193.   10. Considerations and Dimensioning
  194.  
  195.      10.1 Home Systems
  196.      10.2 Servers
  197.         10.2.1 Home Directories
  198.         10.2.2 Anonymous FTP
  199.         10.2.3 WWW
  200.         10.2.4 Mail
  201.         10.2.5 News
  202.         10.2.6 Others
  203.         10.2.7 Server Recommendations
  204.      10.3 Pitfalls
  205.  
  206.   11. Disk Layout
  207.  
  208.      11.1 Selection for Partitioning
  209.      11.2 Mapping Partitions to Drives
  210.      11.3 Sorting Partitions on Drives
  211.      11.4 Optimizing
  212.         11.4.1 Optimizing by Characteristics
  213.         11.4.2 Optimizing by Drive Parallelising
  214.      11.5 Compromises
  215.  
  216.   12. Implementation
  217.  
  218.      12.1 Drives and Partitions
  219.      12.2 Partitioning
  220.      12.3 Repartitioning
  221.      12.4 Microsoft Partition Bug
  222.      12.5 Multiple Devices (
  223.      12.6 Formatting
  224.      12.7 Mounting
  225.      12.8 (TT
  226.      12.9 Recommendations
  227.  
  228.   13. Maintenance
  229.  
  230.      13.1 Backup
  231.      13.2 Defragmentation
  232.      13.3 Deletions
  233.      13.4 Upgrades
  234.      13.5 Recovery
  235.  
  236.   14. Advanced Issues
  237.  
  238.      14.1 Hard Disk Tuning
  239.      14.2 File System Tuning
  240.      14.3 Spindle Synchronizing
  241.  
  242.   15. Further Information
  243.  
  244.      15.1 News groups
  245.      15.2 Mailing Lists
  246.      15.3 HOWTO
  247.      15.4 Mini-HOWTO
  248.      15.5 Local Resources
  249.      15.6 Web Pages
  250.      15.7 Search Engines
  251.  
  252.   16. Getting Help
  253.  
  254.   17. Concluding Remarks
  255.  
  256.      17.1 Coming Soon
  257.      17.2 Request for Information
  258.      17.3 Suggested Project Work
  259.  
  260.   18. Questions and Answers
  261.  
  262.   19. Bits and Pieces
  263.  
  264.      19.1 Swap Partition: to Use or Not to Use
  265.      19.2 Mount Point and
  266.      19.3 Power and Heating
  267.      19.4 Dejanews
  268.  
  269.   20. Appendix A: Partitioning Layout Table: Mounting and Linking
  270.  
  271.   21. Appendix B: Partitioning Layout Table: Numbering and Sizing
  272.  
  273.   22. Appendix C: Partitioning Layout Table: Partition Placement
  274.  
  275.   23. Appendix D: Example: Multipurpose Server
  276.  
  277.   24. Appendix E: Example: Mounting and Linking
  278.  
  279.   25. Appendix F: Example: Numbering and Sizing
  280.  
  281.   26. Appendix G: Example: Partition Placement
  282.  
  283.   27. Appendix H: Example II
  284.  
  285.   28. Appendix I: Example III: SPARC Solaris
  286.  
  287.   29. Appendix J: Example IV: Server with 4 Drives
  288.  
  289.   30. Appendix K: Example V: Dual Drive System
  290.  
  291.   31. Appendix L: Example VI: Single Drive System
  292.  
  293.  
  294.  
  295.   ______________________________________________________________________
  296.  
  297.   1.  Introduction
  298.  
  299.   In commemoration of Linux kernel 2.2 release this brand new release is
  300.   codenamed the Daniella release.
  301.  
  302.   New code names will appear as per industry standard guidelines to
  303.   emphasize the state-of-the-art-ness of this document.
  304.  
  305.  
  306.   This document was written for two reasons, mainly because I got hold
  307.   of 3 old SCSI disks to set up my Linux system on and I was pondering
  308.   how best to utilise the inherent possibilities of parallelizing in a
  309.   SCSI system. Secondly I hear there is a prize for people who write
  310.   documents...
  311.  
  312.   This is intended to be read in conjunction with the Linux Filesystem
  313.   Structure Standard (FSSTND). It does not in any way replace it but
  314.   tries to suggest where physically to place directories detailed in the
  315.   FSSTND, in terms of drives, partitions, types, RAID, file system (fs),
  316.   physical sizes and other parameters that should be considered and
  317.   tuned in a Linux system, ranging from single home systems to large
  318.   servers on the Internet.
  319.  
  320.  
  321.   The followup to FSSTND is called the Filesystem Hierarchy Standard
  322.   (FHS) and covers more than Linux alone. FHS version 2.0 has been
  323.   released but there are still a few issues to be dealt with and even
  324.   longer before this new standard will have an impact on actual
  325.   distributions. FHS is not yet used in any distributions but Debian has
  326.   announced they will use it in Debian 2.1 which is their next
  327.   distribution.
  328.  
  329.   It is also a good idea to read the Linux Installation guides
  330.   thoroughly and if you are using a PC system, which I guess the
  331.   majority still does, you can find much relevant and useful information
  332.   in the FAQs for the newsgroup comp.sys.ibm.pc.hardware especially for
  333.   storage media.
  334.  
  335.   This is also a learning experience for myself and I hope I can start
  336.   the ball rolling with this HOWTO and that it perhaps can evolve into a
  337.   larger more detailed and hopefully even more correct HOWTO.
  338.  
  339.  
  340.   First of all we need a bit of legalese. Recent development shows it is
  341.   quite important.
  342.  
  343.  
  344.   1.1.  Copyright
  345.  
  346.  
  347.   This HOWTO is copyrighted 1996 Stein Gjoen.
  348.  
  349.   Unless otherwise stated, Linux HOWTO documents are copyrighted by
  350.   their respective authors. Linux HOWTO documents may be reproduced and
  351.   distributed in whole or in part, in any medium physical or electronic,
  352.   as long as this copyright notice is retained on all copies. Commercial
  353.   redistribution is allowed and encouraged; however, the author would
  354.   like to be notified of any such distributions.
  355.  
  356.   All translations, derivative works, or aggregate works incorporating
  357.   any Linux HOWTO documents must be covered under this copyright notice.
  358.   That is, you may not produce a derivative work from a HOWTO and impose
  359.   additional restrictions on its distribution. Exceptions to these rules
  360.   may be granted under certain conditions; please contact the Linux
  361.   HOWTO coordinator at the address given below.
  362.  
  363.   In short, we wish to promote dissemination of this information through
  364.   as many channels as possible. However, we do wish to retain copyright
  365.   on the HOWTO documents, and would like to be notified of any plans to
  366.   redistribute the HOWTOs.
  367.  
  368.   If you have questions, please contact the Linux HOWTO coordinator, at
  369.   linux-howto@metalab.unc.edu via email.
  370.  
  371.  
  372.   1.2.  Disclaimer
  373.  
  374.  
  375.   Use the information in this document at your own risk. I disavow any
  376.   potential liability for the contents of this document. Use of the
  377.   concepts, examples, and/or other content of this document is entirely
  378.   at your own risk.
  379.  
  380.   All copyrights are owned by their owners, unless specifically noted
  381.   otherwise.  Use of a term in this document should not be regarded as
  382.   affecting the validity of any trademark or service mark.
  383.  
  384.   Naming of particular products or brands should not be seen as
  385.   endorsements.
  386.  
  387.   You are strongly recommended to take a backup of your system before
  388.   major installation and backups at regular intervals.
  389.  
  390.  
  391.  
  392.   1.3.  News
  393.  
  394.  
  395.  
  396.  
  397.   This release features a major restructuring and more additions than I
  398.   can list here especially on added file system support.
  399.  
  400.   This HOWTO now uses indexing and is based on SGMLtools version 1.0.5
  401.   and the old version will therefore not format this document properly.
  402.  
  403.   Also quite new is a number of new translations available.
  404.  
  405.  
  406.   On the development front people are concentrating their energy towards
  407.   completing Linux 2.2 and until that is released there is not going to
  408.   be much news on disk technology for Linux.
  409.  
  410.   Debian 2.1 is readying for release and as I use Debian for my test
  411.   systems I will make more updates when I upgrade.
  412.  
  413.  
  414.   The latest version number of this document can be gleaned from my plan
  415.   entry if you finger
  416.   <http://www.cs.indiana.edu/finger/nox.nyx.net/sgjoen> my Nyx account.
  417.  
  418.   Also, the latest version will be available on my web space on nyx in a
  419.   number of formats:
  420.  
  421.   ╖  HTML <http://www.nyx.net/~sgjoen/disk.html>.
  422.  
  423.   ╖  plain ASCII text <http://www.nyx.net/~sgjoen/disk.txt>.
  424.  
  425.   ╖  compressed postscript <http://www.nyx.net/~sgjoen/disk.ps.gz>.
  426.  
  427.   ╖  SGML source <http://www.nyx.net/~sgjoen/disk.sgml>.
  428.  
  429.  
  430.   A European mirror of the Multi Disk HOWTO
  431.   <http://home.sol.no/~gjoen/stein/disk.html> just went on line.
  432.  
  433.  
  434.  
  435.   1.4.  Credits
  436.  
  437.   In this version I have the pleasure of acknowledging even more people
  438.   who have contributed in one way or another:
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.   ronnej (at ) ucs.orst.edu
  464.   cm (at) kukuruz.ping.at
  465.   armbru (at) pond.sub.org
  466.   R.P.Blake (at) open.ac.uk
  467.   neuffer (at) goofy.zdv.Uni-Mainz.de
  468.   sjmudd (at) redestb.es
  469.   nat (at) nataa.fr.eu.org
  470.   sundbyk (at) oslo.geco-prakla.slb.com
  471.   ggjoeen (at) online.no
  472.   mike (at) i-Connect.Net
  473.   roth (at) uiuc.edu
  474.   phall (at) ilap.com
  475.   szaka (at) mirror.cc.u-szeged.hu
  476.   CMckeon (at) swcp.com
  477.   kris (at) koentopp.de
  478.   edick (at) idcomm.com
  479.   pot (at) fly.cnuce.cnr.it
  480.   earl (at) sbox.tu-graz.ac.at
  481.   ebacon (at) oanet.com
  482.   vax (at) linkdead.paranoia.com
  483.   tschenk (at) theoffice.net
  484.   pjfarley (at) dorsai.org
  485.   jean (at) stat.ubc.ca
  486.   johnf (at) whitsunday.net.au
  487.   clasen (at) unidui.uni-duisburg.de
  488.   eeslgw (at) ee.surrey.asc.uk
  489.   adam (at) onshore.com
  490.   anikolae (at) wega-fddi2.rz.uni-ulm.de
  491.   cjaeger (at) dwave.net
  492.   eperezte (at) c2i.net
  493.  
  494.  
  495.  
  496.  
  497.   Special thanks go to nakano (at) apm.seikei.ac.jp for doing the
  498.   Japanese translation <http://jf.linux.or.jp/JF/JF-ftp/other-
  499.   formats/Disk-HOWTO/html/Disk-HOWTO.html>, general contributions as
  500.   well as contributing an example of a computer in an academic setting,
  501.   which is included at the end of this document.
  502.  
  503.   There are now many new translations available and special thanks go to
  504.   the translators for the job and the input they have given:
  505.  
  506.  
  507.   ╖  German Translation <http://> by chewie (at) nuernberg.netsurf.de
  508.  
  509.   ╖  Swedish Translation  <http://www.swe-doc.linux.nu> by jonah (at)
  510.      swipnet.se
  511.  
  512.   ╖  French Translation <http://www.lri.fr/~loisel/howto/> by
  513.      Patrick.Loiseleur (at) lri.fr
  514.  
  515.  
  516.  
  517.  
  518.   Also DPT is acknowledged for sending me documentation on their
  519.   controllers as well as permission to quote from the material. These
  520.   quotes have been approved before appearing here and will be clearly
  521.   labelled. No quotes as of yet but that is coming.
  522.  
  523.   Not many still, so please read through this document, make a
  524.   contribution and join the elite. If I have forgotten anyone, please
  525.   let me know.
  526.  
  527.   New in this version is an appendix with a few tables you can fill in
  528.   for your system in order to simplify the design process.
  529.   Any comments or suggestions can be mailed to my mail address on nyx:
  530.   sgjoen@nyx.net.
  531.  
  532.  
  533.   So let's cut to the chase where swap and /tmp are racing along hard
  534.   drive...
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.   2.  Structure
  542.  
  543.   As this type of document is supposed to be as much for learning as a
  544.   technical reference document I have rearranged the structure to this
  545.   end. For the designer of a system it is more useful to have the
  546.   information presented in terms of the goals of this exercise than from
  547.   the point of view of the logical layer structure of the devices
  548.   themselves. Nevertheless this document would not be complete without
  549.   such a layer structure the computer field is so full of, so I will
  550.   include it here as an introduction to how it works.
  551.  
  552.   It is a long time since the mini in mini-HOWTO could be defended as
  553.   proper but I am convinced that this document is as long as it needs to
  554.   be in order to make the right design decisions, and not longer.
  555.  
  556.  
  557.   2.1.  Logical structure
  558.  
  559.   This is based on how each layer access each other, traditionally with
  560.   the application on top and the physical layer on the bottom.  It is
  561.   quite useful to show the interrelationship between each of the layers
  562.   used in controlling drives.
  563.  
  564.  
  565.                ___________________________________________________________
  566.                |__     File structure          ( /usr /tmp etc)        __|
  567.                |__     File system             (ext2fs, vfat etc)      __|
  568.                |__     Volume management       (AFS)                   __|
  569.                |__     RAID, concatenation     (md)                    __|
  570.                |__     Device driver           (SCSI, IDE etc)         __|
  571.                |__     Controller              (chip, card)            __|
  572.                |__     Connection              (cable, network)        __|
  573.                |__     Drive                   (magnetic, optical etc) __|
  574.                -----------------------------------------------------------
  575.  
  576.  
  577.  
  578.  
  579.   In the above diagram both volume management and RAID and concatenation
  580.   are optional layers. The 3 lower layers are in hardware.  All parts
  581.   are discussed at length later on in this document.
  582.  
  583.  
  584.   2.2.  Document structure
  585.  
  586.   Most users start out with a given set of hardware and some plans on
  587.   what they wish to achieve and how big the system should be. This is
  588.   the point of view I will adopt in this document in presenting the
  589.   material, starting out with hardware, continuing with design
  590.   constraints before detailing the design strategy that I have found to
  591.   work well.  I have used this both for my own personal computer at
  592.   home, a multi purpose server at work and found it worked quite well.
  593.   In addition my Japanese co-worker in this project have applied the
  594.   same strategy on a server in an academic setting with similar success.
  595.   Finally at the end I have detailed some configuration tables for use
  596.   in your own design. If you have any comments regarding this or notes
  597.   from your own design work I would like to hear from you so this
  598.   document can be upgraded.
  599.  
  600.  
  601.   2.3.  Reading plan
  602.  
  603.   Although not the biggest HOWTO it is nevertheless rather big already
  604.   and I have been requested to make a reading plan to make it possible
  605.   to cut down on the volume
  606.  
  607.  
  608.      Expert
  609.         (aka the elite). If you are familiar with Linux as well as disk
  610.         drive technologies you will find most of what you need in the
  611.         appendices. Additionally you are recommended to read the FAQ and
  612.         the ``Bits'n'pieces'' chapter.
  613.  
  614.  
  615.      Experienced
  616.         (aka Competent). If you are familiar with computers in general
  617.         you can go straight to the chapters on ``technologies'' and
  618.         continue from there on.
  619.  
  620.  
  621.      Newbie
  622.         (mostly harmless). You just have to read the whole thing.
  623.         Sorry. In addition you are also recommended to read all the
  624.         other disk related HOWTOs.
  625.  
  626.  
  627.  
  628.   3.  Drive technologies
  629.  
  630.   A far more complete discussion on drive technologies for IBM PCs can
  631.   be found at the home page of The Enhanced IDE/Fast-ATA FAQ
  632.   <http://thef-nym.sci.kun.nl/~pieterh/storage.html> which is also
  633.   regularly posted on Usenet News.  Here I will just present what is
  634.   needed to get an understanding of the technology and get you started
  635.   on your setup.
  636.  
  637.  
  638.   3.1.  Drives
  639.  
  640.   This is the physical device where your data lives and although the
  641.   operating system makes the various types seem rather similar they can
  642.   in actual fact be very different. An understanding of how it works can
  643.   be very useful in your design work. Floppy drives fall outside the
  644.   scope of this document, though should there be a big demand I could
  645.   perhaps be persuaded to add a little here.
  646.  
  647.  
  648.   3.2.  Geometry
  649.  
  650.   Physically disk drives consists of one or more platters containing
  651.   data that is read in and out using sensors mounted on movable heads
  652.   that are fixed with respects to themselves. Data transfers therefore
  653.   happens across all surfaces simultaneously which defines a cylinder of
  654.   tracks. The drive is also divided into sectors containing a number of
  655.   data fields.
  656.  
  657.   Drives are therefore often specified in terms of its geometry: the
  658.   number of Cylinders, Heads and Sectors (CHS).
  659.  
  660.  
  661.   For various reasons there is now a number of translations between
  662.  
  663.   ╖  the physical CHS of the drive itself
  664.  
  665.   ╖  the logical CHS the drive reports to the BIOS or OS
  666.  
  667.   ╖  the logical CHS used by the OS
  668.  
  669.   Basically it is a mess and a source of much confusion. For more
  670.   information you are strongly recommended to read the Large Disk mini-
  671.   HOWTO
  672.  
  673.  
  674.   3.3.  Media
  675.  
  676.   The media technology determines important parameters such as
  677.   read/write rates, seek times, storage size as well as if it is
  678.   read/write or read only.
  679.  
  680.  
  681.   3.3.1.  Magnetic Drives
  682.  
  683.   This is the typical read-write mass storage medium, and as everything
  684.   else in the computer world, comes in many flavours with different
  685.   properties. Usually this is the fastest technology and offers
  686.   read/write capability. The platter rotates with a constant angular
  687.   velocity (CAV) with a variable physical sector density for more
  688.   efficient magnetic media area utilisation.  In other words, the number
  689.   of bits per unit length is kept roughly constant by increasing the
  690.   number of logical sectors for the outer tracks.
  691.  
  692.   Typical values for rotational speeds are 4500 and 5400 RPM, though
  693.   7200 is also used. Very recently also 10000 RPM has entered the mass
  694.   market.  Seek times are around 10 ms, transfer rates quite variable
  695.   from one type to another but typically 4-40 MB/s.  With the extreme
  696.   high performance drives you should remember that performance costs
  697.   more electric power which is dissipated as heat, see the point on
  698.   ``Power and Heating''.
  699.  
  700.  
  701.   Note that there are several kinds of transfers going on here, and that
  702.   these are quoted in different units. First of all there is the
  703.   platter-to-drive cache transfer, usually quoted in Mbits/s. Typical
  704.   values here is about 50-250 Mbits/s. The second stage is from the
  705.   built in drive cache to the adapter, and this is typically quoted in
  706.   MB/s, and typical quoted values here is 3-40 MB/s. Note, however, that
  707.   this assumed data is already in the cache and hence for maximum
  708.   readout speed from the drive the effective transfer rate will decrease
  709.   dramatically.
  710.  
  711.  
  712.  
  713.   3.3.2.  Optical Drives
  714.  
  715.   Optical read/write drives exist but are slow and not so common. They
  716.   were used in the NeXT machine but the low speed was a source for much
  717.   of the complaints. The low speed is mainly due to the thermal nature
  718.   of the phase change that represents the data storage. Even when using
  719.   relatively powerful lasers to induce the phase changes the effects are
  720.   still slower than the magnetic effect used in magnetic drives.
  721.  
  722.   Today many people use CD-ROM drives which, as the name suggests, is
  723.   read-only. Storage is about 650 MB, transfer speeds are variable,
  724.   depending on the drive but can exceed 1.5 MB/s. Data is stored on a
  725.   spiraling single track so it is not useful to talk about geometry for
  726.   this. Data density is constant so the drive uses constant linear
  727.   velocity (CLV). Seek is also slower, about 100 ms, partially due to
  728.   the spiraling track. Recent, high speed drives, use a mix of CLV and
  729.   CAV in order to maximize performance. This also reduces access time
  730.   caused by the need to reach correct rotational speed for readout.
  731.  
  732.   A new type (DVD) is on the horizon, offering up to about 18 GB on a
  733.   single disk.
  734.  
  735.  
  736.   3.3.3.  Solid State Drives
  737.  
  738.   This is a relatively recent addition to the available technology and
  739.   has been made popular especially in portable computers as well as in
  740.   embedded systems. Containing no movable parts they are very fast both
  741.   in terms of access and transfer rates. The most popular type is flash
  742.   RAM, but also other types of RAM is used. A few years ago many had
  743.   great hopes for magnetic bubble memories but it turned out to be
  744.   relatively expensive and is not that common.
  745.  
  746.   In general the use of RAM disks are regarded as a bad idea as it is
  747.   normally more sensible to add more RAM to the motherboard and let the
  748.   operating system divide the memory pool into buffers, cache, program
  749.   and data areas. Only in very special cases, such as real time systems
  750.   with short time margins, can RAM disks be a sensible solution.
  751.  
  752.   Flash RAM is today available in several 10's of megabytes in storage
  753.   and one might be tempted to use it for fast, temporary storage in a
  754.   computer. There is however a huge snag with this: flash RAM has a
  755.   finite life time in terms of the number of times you can rewrite data,
  756.   so putting swap, /tmp or /var/tmp on such a device will certainly
  757.   shorten its lifetime dramatically.  Instead, using flash RAM for
  758.   directories that are read often but rarely written to, will be a big
  759.   performance win.
  760.  
  761.   In order to get the optimum life time out of flash RAM you will need
  762.   to use special drivers that will use the RAM evenly and minimize the
  763.   number of block erases.
  764.  
  765.   This example illustrates the advantages of splitting up your directory
  766.   structure over several devices.
  767.  
  768.   Solid state drives have no real cylinder/head/sector addressing but
  769.   for compatibility reasons this is simulated by the driver to give a
  770.   uniform interface to the operating system.
  771.  
  772.  
  773.   3.4.  Interfaces
  774.  
  775.   There is a plethora of interfaces to chose from widely ranging in
  776.   price and performance. Most motherboards today include IDE interface
  777.   which are part of modern chipsets.
  778.  
  779.   Many motherboards also include a SCSI interface chip made by Symbios
  780.   (formerly NCR) and that is connected directly to the PCI bus.  Check
  781.   what you have and what BIOS support you have with it.
  782.  
  783.  
  784.   3.4.1.  MFM and RLL
  785.  
  786.   Once upon a time this was the established technology, a time when 20
  787.   MB was awesome, which compared to todays sizes makes you think that
  788.   dinosaurs roamed the Earth with these drives. Like the dinosaurs these
  789.   are outdated and are slow and unreliable compared to what we have
  790.   today. Linux does support this but you are well advised to think twice
  791.   about what you would put on this. One might argue that an emergency
  792.   partition with a suitable vintage of DOS might be fitting.
  793.   3.4.2.  ESDI
  794.  
  795.   Actually, ESDI was an adaptation of the very widely used SMD interface
  796.   used on "big" computers to the cable set used with the ST506
  797.   interface, which was more convenient to package than the 60-pin +
  798.   26-pin connector pair used with SMD.  The ST506 was a "dumb" interface
  799.   which relied entirely on the controller and host computer to do
  800.   everything from computing head/cylinder/sector locations and keeping
  801.   track of the head location, etc. ST506 required the controller to
  802.   extract clock from the recovered data, and control the physical
  803.   location of detailed track features on the medium, bit by bit. It had
  804.   about a 10-year life if you include the use of MFM, RLL, and ERLL/ARLL
  805.   modulation schemes. ESDI, on the other hand, had intelligence, often
  806.   using three or four separate microprocessors on a single drive, and
  807.   high-level commands to format a track, transfer data, perform seeks,
  808.   and so on. Clock recovery from the data stream was accomplished at the
  809.   drive, which drove the clock line and presented its data in NRZ,
  810.   though error correction was still the task of the controller.  ESDI
  811.   allowed the use of variable bit density recording, or, for that
  812.   matter, any other modulation technique, since it was locally generated
  813.   and resolved at the drive. Though many of the techniques used in ESDI
  814.   were later incorporated in IDE, it was the increased popularity of
  815.   SCSI which led to the demise of ESDI in computers. ESDI had a life of
  816.   about 10 years, though mostly in servers and otherwise "big" systems
  817.   rather than PC's.
  818.  
  819.  
  820.  
  821.   3.4.3.  IDE and ATA
  822.  
  823.   Progress made the drive electronics migrate from the ISA slot card
  824.   over to the drive itself and Integrated Drive Electronics was borne.
  825.   It was simple, cheap and reasonably fast so the BIOS designers
  826.   provided the kind of snag that the computer industry is so full of. A
  827.   combination of an IDE limitation of 16 heads together with the BIOS
  828.   limitation of 1024 cylinders gave us the infamous 504 MB limit.
  829.   Following the computer industry traditions again, the snag was patched
  830.   with a kludge and we got all sorts of translation schemes and BIOS
  831.   bodges. This means that you need to read the installation
  832.   documentation very carefully and check up on what BIOS you have and
  833.   what date it has as the BIOS has to tell Linux what size drive you
  834.   have. Fortunately with Linux you can also tell the kernel directly
  835.   what size drive you have with the drive parameters, check the
  836.   documentation for LILO and Loadlin, thoroughly. Note also that IDE is
  837.   equivalent to ATA, AT Attachment.  IDE uses CPU-intensive Programmed
  838.   Input/Output (PIO) to transfer data to and from the drives and has no
  839.   capability for the more efficient Direct Memory Access (DMA)
  840.   technology. Highest transfer rate is 8.3 MB/s.
  841.  
  842.  
  843.   3.4.4.  EIDE, Fast-ATA and ATA-2
  844.  
  845.   These 3 terms are roughly equivalent, fast-ATA is ATA-2 but EIDE
  846.   additionally includes ATAPI. ATA-2 is what most use these days which
  847.   is faster and with DMA. Highest transfer rate is increased to 16.6
  848.   MB/s.
  849.  
  850.  
  851.  
  852.   3.4.5.  Ultra-ATA
  853.  
  854.   A new, faster DMA mode that is approximately twice the speed of EIDE
  855.   PIO-Mode 4 (33 MB/s). Disks with and without Ultra-ATA can be mixed on
  856.   the same cable without speed penalty for the faster adapters. The
  857.   Ultra-ATA interface is electrically identical with the normal Fast-ATA
  858.   interface, including the maximum cable length.
  859.   3.4.6.  ATAPI
  860.  
  861.   The ATA Packet Interface was designed to support CD-ROM drives using
  862.   the IDE port and like IDE it is cheap and simple.
  863.  
  864.  
  865.   3.4.7.  SCSI
  866.  
  867.   The Small Computer System Interface is a multi purpose interface that
  868.   can be used to connect to everything from drives, disk arrays,
  869.   printers, scanners and more. The name is a bit of a misnomer as it has
  870.   traditionally been used by the higher end of the market as well as in
  871.   work stations since it is well suited for multi tasking environments.
  872.  
  873.   The standard interface is 8 bits wide and can address 8 devices.
  874.   There is a wide version with 16 bit that is twice as fast on the same
  875.   clock and can address 16 devices. The host adapter always counts as a
  876.   device and is usually number 7.  It is also possible to have 32 bit
  877.   wide busses but this usually requires a double set of cables to carry
  878.   all the lines.
  879.  
  880.   The old standard was 5 MB/s and the newer fast-SCSI increased this to
  881.   10 MB/s. Recently ultra-SCSI, also known as Fast-20, arrived with 20
  882.   MB/s transfer rates for an 8 bit wide bus.  New low voltage
  883.   differential (LVD) signalling allows these high speeds as well as much
  884.   longer cabling than before.
  885.  
  886.   Even more recently an even faster standard has been proposed: SCSI
  887.   160/m which is capable of a monstrous 160 MB/s over a 16 bit wide bus.
  888.   Support is scarce yet but for a few 10000 RPM drives that can transfer
  889.   40 MB/s sustained.  Putting 6 such drives on a RAID will keep such a
  890.   bus saturated and also saturate most PCI busses. Obviously this is
  891.   only for the very highest end servers per today.
  892.  
  893.   The higher performance comes at a cost that is usually higher than for
  894.   (E)IDE. The importance of correct termination and good quality cables
  895.   cannot be overemphasized. SCSI drives also often tend to be of a
  896.   higher quality than IDE drives. Also adding SCSI devices tend to be
  897.   easier than adding more IDE drives: Often it is only a matter of
  898.   plugging or unplugging the device; some people do this without
  899.   powering down the system. This feature is most convenient when you
  900.   have multiple systems and you can just take the devices from one
  901.   system to the other should one of them fail for some reason.
  902.  
  903.   There is a number of useful documents you should read if you use SCSI,
  904.   the SCSI HOWTO as well as the SCSI FAQ posted on Usenet News.
  905.  
  906.   SCSI also has the advantage you can connect it easily to tape drives
  907.   for backing up your data, as well as some printers and scanners. It is
  908.   even possible to use it as a very fast network between computers while
  909.   simultaneously share SCSI devices on the same bus. Work is under way
  910.   but due to problems with ensuring cache coherency between the
  911.   different computers connected, this is a non trivial task.
  912.  
  913.   SCSI numbers are also used for arbitration. If several drives request
  914.   service, the drive with the lowest number is given priority.
  915.  
  916.  
  917.  
  918.   3.5.  Cabling
  919.  
  920.  
  921.   I do not intend to make too many comments on hardware but I feel I
  922.   should make a little note on cabling. This might seem like a
  923.   remarkably low technological piece of equipment, yet sadly it is the
  924.   source of many frustrating problems. At todays high speeds one should
  925.   think of the cable more of a an RF device with its inherent demands on
  926.   impedance matching. If you do not take your precautions you will get a
  927.   much reduced reliability or total failure. Some SCSI host adapters are
  928.   more sensitive to this than others.
  929.  
  930.   Shielded cables are of course better than unshielded but the price is
  931.   much higher. With a little care you can get good performance from a
  932.   cheap unshielded cable.
  933.  
  934.  
  935.   ╖  For Fast-ATA and Ultra-ATA, the maximum cable length is specified
  936.      as 45cm (18"). The data lines of both IDE channels are connected on
  937.      many boards, though, so they count as one cable. In any case EIDE
  938.      cables should be as short as possible. If there are mysterious
  939.      crashes or spontaneous changes of data, it is well worth
  940.      investigating your cabling.  Try a lower PIO mode or disconnect the
  941.      second channel and see if the problem still occurs.
  942.  
  943.   ╖  Use as short cable as possible, but do not forget the 30 cm minimum
  944.      separation for ultra SCSI and 60 cm separation for differential
  945.      SCSI.
  946.  
  947.   ╖  Avoid long stubs between the cable and the drive, connect the plug
  948.      on the cable directly to the drive without an extension.
  949.  
  950.   ╖  SCSI Cabling limitations:
  951.  
  952.  
  953.  
  954.        Bus Speed (MHz)         |    Max Length (m)
  955.        --------------------------------------------------
  956.         5                      |        6
  957.        10  (fast)              |        3
  958.        20  (fast-20 / ultra)   |        3 (max 4 devices), 1.5 (max 8 devices)
  959.        xx  (differential)      |       25 (max 16 devices
  960.        --------------------------------------------------
  961.  
  962.  
  963.  
  964.  
  965.  
  966.   ╖  Use correct termination for SCSI devices and at the correct
  967.      positions: both ends of the SCSI chain. Remember the host adapter
  968.      itself may have on board termination.
  969.  
  970.   ╖  Do not mix shielded or unshielded cabling, do not wrap cables
  971.      around metal, try to avoid proximity to metal parts along parts of
  972.      the cabling. Any such discontinuities can cause impedance
  973.      mismatching which in turn can cause reflection of signals which
  974.      increases noise on the cable.  This problems gets even more severe
  975.      in the case of multi channel controllers.  Recently someone
  976.      suggested wrapping bubble plastic around the cables in order to
  977.      avoid too close proximity to metal, a real problem inside crowded
  978.      cabinets.
  979.  
  980.   More information on SCSI cabling and termination can be found at other
  981.   <http://resource.simplenet.com/files/68_50_n.htm> web pages around the
  982.   net.
  983.  
  984.  
  985.  
  986.   3.6.  Host Adapters
  987.  
  988.  
  989.   This is the other end of the interface from the drive, the part that
  990.   is connected to a computer bus. The speed of the computer bus and that
  991.   of the drives should be roughly similar, otherwise you have a
  992.   bottleneck in your system. Connecting a RAID 0 disk-farm to a ISA card
  993.   is pointless. These days most computers come with 32 bit PCI bus
  994.   capable of 132 MB/s transfers which should not represent a bottleneck
  995.   for most people in the near future.
  996.  
  997.   As the drive electronic migrated to the drives the remaining part that
  998.   became the (E)IDE interface is so small it can easily fit into the PCI
  999.   chip set. The SCSI host adapter is more complex and often includes a
  1000.   small CPU of its own and is therefore more expensive and not
  1001.   integrated into the PCI chip sets available today. Technological
  1002.   evolution might change this.
  1003.  
  1004.   Some host adapters come with separate caching and intelligence but as
  1005.   this is basically second guessing the operating system the gains are
  1006.   heavily dependent on which operating system is used. Some of the more
  1007.   primitive ones, that shall remain nameless, experience great gains.
  1008.   Linux, on the other hand, have so much smarts of its own that the
  1009.   gains are much smaller.
  1010.  
  1011.   Mike Neuffer, who did the drivers for the DPT controllers, states that
  1012.   the DPT controllers are intelligent enough that given enough cache
  1013.   memory it will give you a big push in performance and suggests that
  1014.   people who have experienced little gains with smart controllers just
  1015.   have not used a sufficiently intelligent caching controller.
  1016.  
  1017.  
  1018.   3.7.  Multi Channel Systems
  1019.  
  1020.   In order to increase throughput it is necessary to identify the most
  1021.   significant bottlenecks and then eliminate them. In some systems, in
  1022.   particular where there are a great number of drives connected, it is
  1023.   advantageous to use several controllers working in parallel, both for
  1024.   SCSI host adapters as well as IDE controllers which usually have 2
  1025.   channels built in. Linux supports this.
  1026.  
  1027.   Some RAID controllers feature 2 or 3 channels and it pays to spread
  1028.   the disk load across all channels. In other words, if you have two
  1029.   SCSI drives you want to RAID and a two channel controller, you should
  1030.   put each drive on separate channels.
  1031.  
  1032.  
  1033.   3.8.  Multi Board Systems
  1034.  
  1035.   In addition to having both a SCSI and an IDE in the same machine it is
  1036.   also possible to have more than one SCSI controller. Check the SCSI-
  1037.   HOWTO on what controllers you can combine. Also you will most likely
  1038.   have to tell the kernel it should probe for more than just a single
  1039.   SCSI or a single IDE controller. This is done using kernel parameters
  1040.   when booting, for instance using LILO.  Check the HOWTOs for SCSI and
  1041.   LILO for how to do this.
  1042.  
  1043.   Multi board systems can offer significant speed gains if you configure
  1044.   your disks right, especially for RAID0. Make sure you interleave the
  1045.   controllers as well as the drives, so that you add drives to the md
  1046.   RAID device in the right order.  If controller 1 is connected to
  1047.   drives sda and sdc while controller 2 is connected to drives sdb and
  1048.   sdd you will gain more paralellicity by adding in the order of sda -
  1049.   sdc - sdb - sdd rather than sda - sdb - sdc - sdd because a read or
  1050.   write over more then one cluster will be more likely to span two
  1051.   controllers.
  1052.  
  1053.   The same methods can also be applied to IDE. Most motherboards come
  1054.   with typically 4 IDE ports:
  1055.  
  1056.  
  1057.   ╖  hda primary controller
  1058.  
  1059.   ╖  hdb primary slave
  1060.  
  1061.   ╖  hdc secondary controller
  1062.  
  1063.   ╖  hdd secondary slave
  1064.  
  1065.      where the two primaries share one flat cable and the secondaries
  1066.      share another cable. Modern chipsets keep these independent.
  1067.      Therefore it is best to RAID in the order hda - hdc - hdb - hdd as
  1068.      this will most likely parallelise both channels.
  1069.  
  1070.  
  1071.   3.9.  Speed Comparison
  1072.  
  1073.   The following tables are given just to indicate what speeds are
  1074.   possible but remember that these are the theoretical maximum speeds.
  1075.   All transfer rates are in MB per second and bus widths are measured in
  1076.   bits.
  1077.  
  1078.  
  1079.  
  1080.   3.9.1.  Controllers
  1081.  
  1082.  
  1083.  
  1084.        IDE             :        8.3 - 16.7
  1085.        Ultra-ATA       :       33
  1086.  
  1087.        SCSI            :
  1088.                                Bus width (bits)
  1089.  
  1090.        Bus Speed (MHz)         |        8      16      32
  1091.        --------------------------------------------------
  1092.         5                      |        5      10      20
  1093.        10  (fast)              |       10      20      40
  1094.        20  (fast-20 / ultra)   |       20      40      80
  1095.        40  (fast-40 / ultra-2) |       40      80      --
  1096.        --------------------------------------------------
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.   3.9.2.  Bus Types
  1104.  
  1105.  
  1106.  
  1107.  
  1108.        ISA             :        8-12
  1109.        EISA            :       33
  1110.        VESA            :       40    (Sometimes tuned to 50)
  1111.  
  1112.        PCI
  1113.                                Bus width (bits)
  1114.  
  1115.        Bus Speed (MHz)         |       32      64
  1116.        --------------------------------------------------
  1117.        33                      |       132     264
  1118.        66                      |       264     528
  1119.        --------------------------------------------------
  1120.  
  1121.  
  1122.  
  1123.   3.10.  Benchmarking
  1124.  
  1125.   This is a very, very difficult topic and I will only make a few
  1126.   cautious comments about this minefield. First of all, it is more
  1127.   difficult to make comparable benchmarks that have any actual meaning.
  1128.   This, however, does not stop people from trying...
  1129.  
  1130.   Instead one can use benchmarking to diagnose your own system, to check
  1131.   it is going as fast as it should, that is, not slowing down.  Also you
  1132.   would expect a significant increase when switching from a simple file
  1133.   system to RAID, so a lack of performance gain will tell you something
  1134.   is wrong.
  1135.  
  1136.   When you try to benchmark you should not hack up your own, instead
  1137.   look up iozone and bonnie and read the documentation very carefully.
  1138.   In particular make sure your buffer size is bigger than your RAM size,
  1139.   otherwise you test your RAM rather than your disks which will give you
  1140.   unrealistically high performance.
  1141.  
  1142.   A very simple benchmark can be obtained using hdparm -tT which can be
  1143.   used both on IDE and SCSI drives.
  1144.  
  1145.   For more information on benchmarking and software for a number of
  1146.   platforms, check out ACNC <http://www.acnc.com/benchmarks.html>
  1147.   benchmark page.
  1148.  
  1149.  
  1150.  
  1151.   3.11.  Comparisons
  1152.  
  1153.   SCSI offers more performance than EIDE but at a price.  Termination is
  1154.   more complex but expansion not too difficult.  Having more than 4 (or
  1155.   in some cases 2) IDE drives can be complicated, with wide SCSI you can
  1156.   have up to 15 per adapter.  Some SCSI host adapters have several
  1157.   channels thereby multiplying the number of possible drives even
  1158.   further.
  1159.  
  1160.   For SCSI you have to dedicate one IRQ per host adapter which can
  1161.   control up to 15 drives. With EIDE you need one IRQ for each drive
  1162.   which can cause conflict.
  1163.  
  1164.   RLL and MFM is in general too old, slow and unreliable to be of much
  1165.   use.
  1166.  
  1167.  
  1168.  
  1169.   3.12.  Future Development
  1170.  
  1171.  
  1172.   SCSI-3 is under way and will hopefully be released soon. Faster
  1173.   devices are already being announced, recently an 80 MB/s and then a
  1174.   160 MB/s monster specification has been proposed.  These are based
  1175.   around the Ultra-2 standard (which used a 40 MHz clock) combined with
  1176.   a 16 bit cable.
  1177.  
  1178.   Some manufacturers already announce SCSI-3 devices but this is
  1179.   currently rather premature as the standard is not yet firm. As the
  1180.   transfer speeds increase the saturation point of the PCI bus is
  1181.   getting closer. Currently the 64 bit version has a limit of 264 MB/s.
  1182.   The PCI transfer rate will in the future be increased from the current
  1183.   33 MHz to 66 MHz, thereby increasing the limit to 528 MB/s.
  1184.  
  1185.   Another trend is for larger and larger drives. I hear it is possible
  1186.   to get 55 GB on a single drive though this is rather expensive.
  1187.   Currently the optimum storage for your money is about 6.4 GB but also
  1188.   this is continuously increasing. The introduction of DVD will in the
  1189.   near future have a big impact, with nearly 20 GB on a single disk you
  1190.   can have a complete copy of even major FTP sites from around the
  1191.   world. The only thing we can be reasonably sure about the future is
  1192.   that even if it won't get any better, it will definitely be bigger.
  1193.  
  1194.   Addendum: soon after I first wrote this I read that the maximum useful
  1195.   speed for a CD-ROM was 20x as mechanical stability would be too great
  1196.   a problem at these speeds. About one month after that again the first
  1197.   commercial 24x CD-ROMs were available... Currently you can get 40x and
  1198.   no doubt higher speeds are in the pipeline.
  1199.  
  1200.  
  1201.   3.13.  Recommendations
  1202.  
  1203.   My personal view is that EIDE or Ultra ATA is the best way to start
  1204.   out on your system, especially if you intend to use DOS as well on
  1205.   your machine.  If you plan to expand your system over many years or
  1206.   use it as a server I would strongly recommend you get SCSI drives.
  1207.   Currently wide SCSI is a little more expensive. You are generally more
  1208.   likely to get more for your money with standard width SCSI. There is
  1209.   also differential versions of the SCSI bus which increases maximum
  1210.   length of the cable. The price increase is even more substantial and
  1211.   cannot therefore be recommended for normal users.
  1212.  
  1213.   In addition to disk drives you can also connect some types of scanners
  1214.   and printers and even networks to a SCSI bus.
  1215.  
  1216.   Also keep in mind that as you expand your system you will draw ever
  1217.   more power, so make sure your power supply is rated for the job and
  1218.   that you have sufficient cooling. Many SCSI drives offer the option of
  1219.   sequential spin-up which is a good idea for large systems.  See also
  1220.   ``Power and Heating''.
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.   4.  File System Structure
  1228.  
  1229.   Linux has been multi tasking from the very beginning where a number of
  1230.   programs interact and run continuously. It is therefore important to
  1231.   keep a file structure that everyone can agree on so that the system
  1232.   finds data where it expects to. Historically there has been so many
  1233.   different standards that it was confusing and compatibility was
  1234.   maintained using symbolic links which confused the issue even further
  1235.   and the structure ended looking like a maze.
  1236.  
  1237.   In the case of Linux a standard was fortunately agreed on early on
  1238.   called the File Systems Standard (FSSTND) which today is used by all
  1239.   main Linux distributions.
  1240.  
  1241.   Later it was decided to make a successor that should also support
  1242.   operating systems other than just Linux, called the Filesystem
  1243.   Hierarchy Standard (FHS) at version 2.1 currently.  This standard is
  1244.   is under continuous development and will soon be adopted by Linux
  1245.   distributions.
  1246.  
  1247.   I recommend not trying to roll your own structure as a lot of thought
  1248.   has gone into the standards and many software packages comply with the
  1249.   standards. Instead you can read more about this at the FHS home page
  1250.   <http://www.pathname.com/fhs>.
  1251.  
  1252.   This HOWTO endeavours to comply with FSSTND and will follow FHS when
  1253.   distributions become available.
  1254.  
  1255.   4.1.  File System Features
  1256.  
  1257.   The various parts of FSSTND have different requirements regarding
  1258.   speed, reliability and size, for instance losing root is a pain but
  1259.   can easily be recovered. Losing /var/spool/mail is a rather different
  1260.   issue. Here is a quick summary of some essential parts and their
  1261.   properties and requirements. Note that this is just a guide, there can
  1262.   be binaries in etc and lib directories, libraries in bin directories
  1263.   and so on.
  1264.  
  1265.  
  1266.  
  1267.   4.1.1.  Swap
  1268.  
  1269.  
  1270.      Speed
  1271.         Maximum! Though if you rely too much on swap you should consider
  1272.         buying some more RAM. Note, however, that on many PC
  1273.         motherboards the cache will not work on RAM above 128 MB.
  1274.  
  1275.  
  1276.      Size
  1277.         Similar as for RAM. Quick and dirty algorithm: just as for tea:
  1278.         16 MB for the machine and 2 MB for each user. Smallest kernel
  1279.         run in 1 MB but is tight, use 4 MB for general work and light
  1280.         applications, 8 MB for X11 or GCC or 16 MB to be comfortable.
  1281.         (The author is known to brew a rather powerful cuppa tea...)
  1282.  
  1283.         Some suggest that swap space should be 1-2 times the size of the
  1284.         RAM, pointing out that the locality of the programs determines
  1285.         how effective your added swap space is. Note that using the same
  1286.         algorithm as for 4BSD is slightly incorrect as Linux does not
  1287.         allocate space for pages in core.
  1288.  
  1289.         A more thorough approach is to consider swap space plus RAM as
  1290.         your total working set, so if you know how much space you will
  1291.         need at most, you subtract the physical RAM you have and that is
  1292.         the swap space you will need.
  1293.  
  1294.         There is also another reason to be generous when dimensioning
  1295.         your swap space: memory leaks. Ill behaving programs that do not
  1296.         free the memory they allocate for themselves are said to have a
  1297.         memory leak.  This allocation remains even after the offending
  1298.         program has stopped so this is a source of memory consumption.
  1299.         Once all physical RAM and swap space are exhausted the only
  1300.         solution is to reboot and start over.  Thankfully such programs
  1301.         are not too common but should you come across one you will find
  1302.         that extra swap space will buy you extra time between reboots.
  1303.  
  1304.         Also remember to take into account the type of programs you use.
  1305.         Some programs that have large working sets, such as finite
  1306.         element modeling (FEM) have huge data structures loaded in RAM
  1307.         rather than working explicitly on disk files. Data and computing
  1308.         intensive programs like this will cause excessive swapping if
  1309.         you have less RAM than the requirements.
  1310.  
  1311.         Other types of programs can lock their pages into RAM. This can
  1312.         be for security reasons, preventing copies of data reaching a
  1313.         swap device or for performance reasons such as in a real time
  1314.         module. Either way, locking pages reduces the remaining amount
  1315.         of swappable memory and can cause the system to swap earlier
  1316.         then otherwise expected.
  1317.  
  1318.         In man 8 mkswap it is explained that each swap partition can be
  1319.         a maximum of just under 128 MB in size for 32-bit machines and
  1320.         just under 256 MB for 64-bit machines.
  1321.      Reliability
  1322.         Medium. When it fails you know it pretty quickly and failure
  1323.         will cost you some lost work. You save often, don't you?
  1324.  
  1325.  
  1326.      Note 1
  1327.         Linux offers the possibility of interleaved swapping across
  1328.         multiple devices, a feature that can gain you much. Check out
  1329.         "man 8 swapon" for more details. However, software raiding swap
  1330.         across multiple devices adds more overheads than you gain.
  1331.  
  1332.         Thus the /etc/fstab file might look like this:
  1333.  
  1334.  
  1335.           /dev/sda1       swap            swap    pri=1           0       0
  1336.           /dev/sdc1       swap            swap    pri=1           0       0
  1337.  
  1338.  
  1339.  
  1340.  
  1341.      Remember that the fstab file is very sensitive to the formatting
  1342.      used, read the man page carefully and do not just cut and paste the
  1343.      lines above.
  1344.  
  1345.  
  1346.      Note 2
  1347.         Some people use a RAM disk for swapping or some other file
  1348.         systems. However, unless you have some very unusual requirements
  1349.         or setups you are unlikely to gain much from this as this cuts
  1350.         into the memory available for caching and buffering.
  1351.  
  1352.  
  1353.      Note 2b
  1354.         There is once exception: on a number of badly designed
  1355.         motherboards the on board cache memory is not able to cache all
  1356.         the RAM that can be addressed. Many older motherboards could
  1357.         accept 128 MB RAM but only cache the lower 64 MB. In such cases
  1358.         it would improve the performance if you used the upper
  1359.         (uncached) 64 MB RAM for RAMdisk based swap or other temporary
  1360.         storage.
  1361.  
  1362.  
  1363.  
  1364.  
  1365.   4.1.2.  Temporary Storage ( /tmp  and /var/tmp )
  1366.  
  1367.  
  1368.      Speed
  1369.         Very high. On a separate disk/partition this will reduce
  1370.         fragmentation generally, though ext2fs handles fragmentation
  1371.         rather well.
  1372.  
  1373.  
  1374.      Size
  1375.         Hard to tell, small systems are easy to run with just a few MB
  1376.         but these are notorious hiding places for stashing files away
  1377.         from prying eyes and quota enforcement and can grow without
  1378.         control on larger machines. Suggested: small home machine: 8 MB,
  1379.         large home machine: 32 MB, small server: 128 MB, and large
  1380.         machines up to 500 MB (The machine used by the author at work
  1381.         has 1100 users and a 300 MB /tmp directory). Keep an eye on
  1382.         these directories, not only for hidden files but also for old
  1383.         files. Also be prepared that these partitions might be the first
  1384.         reason you might have to resize your partitions.
  1385.  
  1386.  
  1387.      Reliability
  1388.         Low. Often programs will warn or fail gracefully when these
  1389.         areas fail or are filled up. Random file errors will of course
  1390.         be more serious, no matter what file area this is.
  1391.  
  1392.  
  1393.      Files
  1394.         Mostly short files but there can be a huge number of them.
  1395.         Normally programs delete their old tmp files but if somehow an
  1396.         interruption occurs they could survive. Many distributions have
  1397.         a policy regarding cleaning out tmp files at boot time, you
  1398.         might want to check out what your setup is.
  1399.  
  1400.  
  1401.      Note1
  1402.         In FSSTND there is a note about putting /tmp on RAM disk. This,
  1403.         however, is not recommended for the same reasons as stated for
  1404.         swap. Also, as noted earlier, do not use flash RAM drives for
  1405.         these directories. One should also keep in mind that some
  1406.         systems are set to automatically clean tmp areas on rebooting.
  1407.  
  1408.  
  1409.      Note2
  1410.         Older systems had a /usr/tmp but this is no longer recommended
  1411.         and for historical reasons a symbolic link now makes it point to
  1412.         one of the other tmp areas.
  1413.  
  1414.  
  1415.  
  1416.   (* That was 50 lines, I am home and dry! *)
  1417.  
  1418.  
  1419.   4.1.3.  Spool Areas ( /var/spool/news  and /var/spool/mail )
  1420.  
  1421.  
  1422.      Speed
  1423.         High, especially on large news servers. News transfer and
  1424.         expiring are disk intensive and will benefit from fast drives.
  1425.         Print spools: low. Consider RAID0 for news.
  1426.  
  1427.  
  1428.      Size
  1429.         For news/mail servers: whatever you can afford. For single user
  1430.         systems a few MB will be sufficient if you read continuously.
  1431.         Joining a list server and taking a holiday is, on the other
  1432.         hand, not a good idea.  (Again the machine I use at work has 100
  1433.         MB reserved for the entire /var/spool)
  1434.  
  1435.  
  1436.      Reliability
  1437.         Mail: very high, news: medium, print spool: low. If your mail is
  1438.         very important (isn't it always?) consider RAID for reliability.
  1439.  
  1440.  
  1441.      Files
  1442.         Usually a huge number of files that are around a few KB in size.
  1443.         Files in the print spool can on the other hand be few but quite
  1444.         sizable.
  1445.  
  1446.  
  1447.      Note
  1448.         Some of the news documentation suggests putting all the
  1449.         .overview files on a drive separate from the news files, check
  1450.         out all news FAQs for more information.  Typical size is about
  1451.         3-10 percent of total news spool size.
  1452.  
  1453.   4.1.4.  Home Directories ( /home )
  1454.  
  1455.  
  1456.      Speed
  1457.         Medium. Although many programs use /tmp for temporary storage,
  1458.         others such as some news readers frequently update files in the
  1459.         home directory which can be noticeable on large multiuser
  1460.         systems. For small systems this is not a critical issue.
  1461.  
  1462.  
  1463.      Size
  1464.         Tricky! On some systems people pay for storage so this is
  1465.         usually then a question of finance. Large systems such as
  1466.         nyx.net <http://www.nyx.net/> (which is a free Internet service
  1467.         with mail, news and WWW services) run successfully with a
  1468.         suggested limit of 100 KB per user and 300 KB as enforced
  1469.         maximum. Commercial ISPs offer typically about 5 MB in their
  1470.         standard subscription packages.
  1471.  
  1472.         If however you are writing books or are doing design work the
  1473.         requirements balloon quickly.
  1474.  
  1475.  
  1476.      Reliability
  1477.         Variable. Losing /home on a single user machine is annoying but
  1478.         when 2000 users call you to tell you their home directories are
  1479.         gone it is more than just annoying. For some their livelihood
  1480.         relies on what is here. You do regular backups of course?
  1481.  
  1482.  
  1483.      Files
  1484.         Equally tricky. The minimum setup for a single user tends to be
  1485.         a dozen files, 0.5 - 5 KB in size. Project related files can be
  1486.         huge though.
  1487.  
  1488.  
  1489.      Note1
  1490.         You might consider RAID for either speed or reliability. If you
  1491.         want extremely high speed and reliability you might be looking
  1492.         at other operating system and hardware platforms anyway.  (Fault
  1493.         tolerance etc.)
  1494.  
  1495.  
  1496.      Note2
  1497.         Web browsers often use a local cache to speed up browsing and
  1498.         this cache can take up a substantial amount of space and cause
  1499.         much disk activity. There are many ways of avoiding this kind of
  1500.         performance hits, for more information see the sections on
  1501.         ``Home Directories'' and ``WWW''.
  1502.  
  1503.  
  1504.      Note3
  1505.         Users often tend to use up all available space on the /home
  1506.         partition. The Linux Quota subsystem is capable of limiting the
  1507.         number of blocks and the number of inode a single user ID can
  1508.         allocate on a per-filesystem basis. See the Linux Quota mini-
  1509.         HOWTO <http://metalab.unc.edu/LDP/mini> by Albert M.C. Tam
  1510.         bertie (at) scn.org for details on setup.
  1511.  
  1512.  
  1513.  
  1514.  
  1515.   4.1.5.  Main Binaries ( /usr/bin  and /usr/local/bin )
  1516.  
  1517.  
  1518.  
  1519.      Speed
  1520.         Low. Often data is bigger than the programs which are demand
  1521.         loaded anyway so this is not speed critical. Witness the
  1522.         successes of live file systems on CD ROM.
  1523.  
  1524.  
  1525.      Size
  1526.         The sky is the limit but 200 MB should give you most of what you
  1527.         want for a comprehensive system. A big system, for software
  1528.         development or a multi purpose server should perhaps reserve 500
  1529.         MB both for installation and for growth.
  1530.  
  1531.  
  1532.      Reliability
  1533.         Low. This is usually mounted under root where all the essentials
  1534.         are collected. Nevertheless losing all the binaries is a pain...
  1535.  
  1536.  
  1537.      Files
  1538.         Variable but usually of the order of 10 - 100 KB.
  1539.  
  1540.  
  1541.  
  1542.   4.1.6.  Libraries ( /usr/lib  and /usr/local/lib )
  1543.  
  1544.  
  1545.      Speed
  1546.         Medium. These are large chunks of data loaded often, ranging
  1547.         from object files to fonts, all susceptible to bloating. Often
  1548.         these are also loaded in their entirety and speed is of some use
  1549.         here.
  1550.  
  1551.  
  1552.      Size
  1553.         Variable. This is for instance where word processors store their
  1554.         immense font files. The few that have given me feedback on this
  1555.         report about 70 MB in their various lib directories.  A rather
  1556.         complete Debian 1.2 installation can take as much as 250 MB
  1557.         which can be taken as an realistic upper limit.  The following
  1558.         ones are some of the largest disk space consumers: GCC, Emacs,
  1559.         TeX/LaTeX, X11 and perl.
  1560.  
  1561.  
  1562.      Reliability
  1563.         Low. See point ``Main binaries''.
  1564.  
  1565.  
  1566.      Files
  1567.         Usually large with many of the order of 1 MB in size.
  1568.  
  1569.  
  1570.      Note
  1571.         For historical reasons some programs keep executables in the lib
  1572.         areas. One example is GCC which have some huge binaries in the
  1573.         /usr/lib/gcc/lib hierarchy.
  1574.  
  1575.  
  1576.   4.1.7.  Boot
  1577.  
  1578.  
  1579.      Speed
  1580.         Quite low: after all booting doesn't happen that often and
  1581.         loading the kernel is just a tiny fraction of the time it takes
  1582.         to get the system up and running.
  1583.  
  1584.  
  1585.      Size
  1586.         Quite small, a complete image with some extras fit on a single
  1587.         floppy so 5 MB should be plenty.
  1588.  
  1589.  
  1590.      Reliability
  1591.         High. See section below on Root.
  1592.  
  1593.  
  1594.      Note 1
  1595.         The most important part about the Boot partition is that on many
  1596.         systems it must reside below cylinder 1023. This is a BIOS
  1597.         limitation that Linux cannot get around.
  1598.  
  1599.  
  1600.  
  1601.   4.1.8.  Root
  1602.  
  1603.  
  1604.      Speed
  1605.         Quite low: only the bare minimum is here, much of which is only
  1606.         run at startup time.
  1607.  
  1608.  
  1609.      Size
  1610.         Relatively small. However it is a good idea to keep some
  1611.         essential rescue files and utilities on the root partition and
  1612.         some keep several kernel versions. Feedback suggests about 20 MB
  1613.         would be sufficient.
  1614.  
  1615.  
  1616.      Reliability
  1617.         High. A failure here will possibly cause a fair bit of grief and
  1618.         you might end up spending some time rescuing your boot
  1619.         partition. With some practice you can of course do this in an
  1620.         hour or so, but I would think if you have some practice doing
  1621.         this you are also doing something wrong.
  1622.  
  1623.         Naturally you do have a rescue disk? Of course this is updated
  1624.         since you did your initial installation? There are many ready
  1625.         made rescue disks as well as rescue disk creation tools you
  1626.         might find valuable.  Presumably investing some time in this
  1627.         saves you from becoming a root rescue expert.
  1628.  
  1629.  
  1630.      Note 1
  1631.         If you have plenty of drives you might consider putting a spare
  1632.         emergency boot partition on a separate physical drive. It will
  1633.         cost you a little bit of space but if your setup is huge the
  1634.         time saved, should something fail, will be well worth the extra
  1635.         space.
  1636.  
  1637.  
  1638.      Note 2
  1639.         For simplicity and also in case of emergencies it is not
  1640.         advisable to put the root partition on a RAID level 0 system.
  1641.         Also if you use RAID for your boot partition you have to
  1642.         remember to have the md option turned on for your emergency
  1643.         kernel.
  1644.  
  1645.  
  1646.      Note 3
  1647.         For simplicity it is quite common to keep Boot and Root on the
  1648.         same partition. if you do that, then in order to boot from LILO
  1649.         it is important that the essential boot files reside wholly
  1650.         within cylinder 1023. This includes the kernel as well as files
  1651.         found in /boot.
  1652.  
  1653.  
  1654.  
  1655.   4.1.9.  DOS etc.
  1656.  
  1657.   At the danger of sounding heretical I have included this little
  1658.   section about something many reading this document have strong
  1659.   feelings about.  Unfortunately many hardware items come with setup and
  1660.   maintenance tools based around those systems, so here goes.
  1661.  
  1662.  
  1663.      Speed
  1664.         Very low. The systems in question are not famed for speed so
  1665.         there is little point in using prime quality drives.
  1666.         Multitasking or multi-threading are not available so the command
  1667.         queueing facility found in SCSI drives will not be taken
  1668.         advantage of. If you have an old IDE drive it should be good
  1669.         enough. The exception is to some degree Win95 and more notably
  1670.         NT which have multi-threading support which should theoretically
  1671.         be able to take advantage of the more advanced features offered
  1672.         by SCSI devices.
  1673.  
  1674.  
  1675.      Size
  1676.         The company behind these operating systems is not famed for
  1677.         writing tight code so you have to be prepared to spend a few
  1678.         tens of MB depending on what version you install of the OS or
  1679.         Windows. With an old version of DOS or Windows you might fit it
  1680.         all in on 50 MB.
  1681.  
  1682.  
  1683.      Reliability
  1684.         Ha-ha. As the chain is no stronger than the weakest link you can
  1685.         use any old drive. Since the OS is more likely to scramble
  1686.         itself than the drive is likely to self destruct you will soon
  1687.         learn the importance of keeping backups here.
  1688.  
  1689.         Put another way: "Your mission, should you choose to accept it,
  1690.         is to keep this partition working. The warranty will self
  1691.         destruct in 10 seconds..."
  1692.  
  1693.         Recently I was asked to justify my claims here. First of all I
  1694.         am not calling DOS and Windows sorry excuses for operating
  1695.         systems. Secondly there are various legal issues to be taken
  1696.         into account. Saying there is a connection between the last two
  1697.         sentences are merely the ravings of the paranoid. Surely.
  1698.         Instead I shall offer the esteemed reader a few key words: DOS
  1699.         4.0, DOS 6.x and various drive compression tools that shall
  1700.         remain nameless.
  1701.  
  1702.  
  1703.  
  1704.  
  1705.   4.2.  Explanation of Terms
  1706.  
  1707.   Naturally the faster the better but often the happy installer of Linux
  1708.   has several disks of varying speed and reliability so even though this
  1709.   document describes performance as 'fast' and 'slow' it is just a rough
  1710.   guide since no finer granularity is feasible. Even so there are a few
  1711.   details that should be kept in mind:
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.   4.2.1.  Speed
  1718.  
  1719.   This is really a rather woolly mix of several terms: CPU load,
  1720.   transfer setup overhead, disk seek time and transfer rate. It is in
  1721.   the very nature of tuning that there is no fixed optimum, and in most
  1722.   cases price is the dictating factor. CPU load is only significant for
  1723.   IDE systems where the CPU does the transfer itself but is generally
  1724.   low for SCSI, see SCSI documentation for actual numbers. Disk seek
  1725.   time is also small, usually in the millisecond range. This however is
  1726.   not a problem if you use command queueing on SCSI where you then
  1727.   overlap commands keeping the bus busy all the time. News spools are a
  1728.   special case consisting of a huge number of normally small files so in
  1729.   this case seek time can become more significant.
  1730.  
  1731.   There are two main parameters that are of interest here:
  1732.  
  1733.  
  1734.      Seek
  1735.         is usually specified in the average time take for the read/write
  1736.         head to seek from one track to another. This parameter is
  1737.         important when dealing with a large number of small files such
  1738.         as found in spool files.  There is also the extra seek delay
  1739.         before the desired sector rotates into position under the head.
  1740.         This delay is dependent on the angular velocity of the drive
  1741.         which is why this parameter quite often is quoted for a drive.
  1742.         Common values are 4500, 5400 and 7200 RPM (rotations per
  1743.         minute). Higher RPM reduces the seek time but at a substantial
  1744.         cost.  Also drives working at 7200 RPM have been known to be
  1745.         noisy and to generate a lot of heat, a factor that should be
  1746.         kept in mind if you are building a large array or "disk farm".
  1747.         Very recently drives working at 10000 RPM has entered the market
  1748.         and here the cooling requirements are even stricter and minimum
  1749.         figures for air flow are given.
  1750.  
  1751.  
  1752.      Transfer
  1753.         is usually specified in megabytes per second.  This parameter is
  1754.         important when handling large files that have to be transferred.
  1755.         Library files, dictionaries and image files are examples of
  1756.         this. Drives featuring a high rotation speed also normally have
  1757.         fast transfers as transfer speed is proportional to angular
  1758.         velocity for the same sector density.
  1759.  
  1760.   It is therefore important to read the specifications for the drives
  1761.   very carefully, and note that the maximum transfer speed quite often
  1762.   is quoted for transfers out of the on board cache (burst speed) and
  1763.   not directly from the platter (sustained speed).  See also section on
  1764.   ``Power and Heating''.
  1765.  
  1766.  
  1767.  
  1768.   4.2.2.  Reliability
  1769.  
  1770.   Naturally no-one would want low reliability disks but one might be
  1771.   better off regarding old disks as unreliable. Also for RAID purposes
  1772.   (See the relevant information) it is suggested to use a mixed set of
  1773.   disks so that simultaneous disk crashes become less likely.
  1774.  
  1775.   So far I have had only one report of total file system failure but
  1776.   here unstable hardware seemed to be the cause of the problems.
  1777.  
  1778.   Disks are cheap these days yet people still underestimate the value of
  1779.   the contents of the drives. If you need higher reliability make sure
  1780.   you replace old drives and keep spares. It is not unusual that drives
  1781.   can work more or less continuous for years and years but what often
  1782.   kills a drive in the end is power cycling.
  1783.   4.2.3.  Files
  1784.  
  1785.   The average file size is important in order to decide the most
  1786.   suitable drive parameters. A large number of small files makes the
  1787.   average seek time important whereas for big files the transfer speed
  1788.   is more important.  The command queueing in SCSI devices is very handy
  1789.   for handling large numbers of small files, but for transfer EIDE is
  1790.   not too far behind SCSI and normally much cheaper than SCSI.
  1791.  
  1792.  
  1793.  
  1794.  
  1795.   5.  File Systems
  1796.  
  1797.   Over time the requirements for file systems have increased and the
  1798.   demands for large structures, large files, long file names and more
  1799.   has prompted ever more advanced file systems, the system that accesses
  1800.   and organises the data on mass storage.  Today there is a large number
  1801.   of file systems to choose from and this section will describe these in
  1802.   detail.
  1803.  
  1804.   The emphasis is on Linux but with more input I will be happy to add
  1805.   information for a wider audience.
  1806.  
  1807.  
  1808.  
  1809.   5.1.  General Purpose File Systems
  1810.  
  1811.   Most operating systems usually have a general purpose file system for
  1812.   every day use for most kinds of files, reflecting available features
  1813.   in the OS such as permission flags, protection and recovery.
  1814.  
  1815.  
  1816.   5.1.1.  minix
  1817.  
  1818.   This was the original fs for Linux, back in the days Linux was hosted
  1819.   on minix machines. It is simple but limited in features and hardly
  1820.   every used these days other than in some rescue disks as it is rather
  1821.   compact.
  1822.  
  1823.  
  1824.   5.1.2.  xiafs  and extfs
  1825.  
  1826.   These are also old and have fallen in disuse and are no longer
  1827.   recommended.
  1828.  
  1829.  
  1830.   5.1.3.  ext2fs
  1831.  
  1832.   This is the established standard for general purpose in the Linux
  1833.   world.  It is fast, efficient and mature and is under continuous
  1834.   development and features such as ACL and transparent compression are
  1835.   on the horizon.
  1836.  
  1837.   For more information check the ext2fs
  1838.   <http://web.mit.edu/tytso/www/linux/ext2.htm> home page.
  1839.  
  1840.  
  1841.  
  1842.   5.1.4.  ufs
  1843.  
  1844.   This is the fs used by BSD and variants thereof. It is mature but also
  1845.   developed for older types of disk drives where geometries were known.
  1846.   The fs uses a number of tricks to optimise performance but as disk
  1847.   geometries are translated in a number of ways the net effect is no
  1848.   longer so optimal.
  1849.   5.1.5.  efs
  1850.  
  1851.   The Extent File System (efs) is Silicon Graphics' early file system
  1852.   widely used on IRIX before version 6.0 after which xfs has taken over.
  1853.   While migration to xfs is encouraged efs is still supported and much
  1854.   used on CDs.
  1855.  
  1856.   There is a Linux driver available in early beta stage, available at
  1857.   Linux extent file system <http://aeschi.ch.eu.org/efs/> home page.
  1858.  
  1859.  
  1860.  
  1861.  
  1862.   5.1.6.  reiserfs
  1863.  
  1864.   As of July, 23th 1997 Hans Reiser reiser (at) RICOCHET.NET has put up
  1865.   the source to his tree based reiserfs
  1866.   <http://idiom.com/~beverly/reiserfs.html> on the web. While his
  1867.   filesystem has some very interesting features and is much faster than
  1868.   ext2fs, it is still very experimental and difficult to integrate with
  1869.   the standard kernel. Expect some interesting developments in the
  1870.   future - this is different from your "average log based file system
  1871.   for Linux" project, because Hans already has working code.
  1872.  
  1873.  
  1874.   5.1.7.  enh-fs
  1875.  
  1876.   Currently in alpha stage the Enhanced File System
  1877.   <http://www.coker.com.au/~russel/enh-fs.html> project aims to combine
  1878.   file system and volume management into a single layer.
  1879.  
  1880.  
  1881.  
  1882.  
  1883.   5.2.  Microsoft File Systems
  1884.  
  1885.   This company is responsible for a lot, including a number of
  1886.   filesystems that has at the very least caused confusions.
  1887.  
  1888.  
  1889.  
  1890.   5.2.1.  fat
  1891.  
  1892.   Actually there are 2 fats out there, fat12 and fat16 depending on the
  1893.   partition size used but fortunately the difference is so minor that
  1894.   the whole issue is transparent.
  1895.  
  1896.   On the plus side these are fast and simple and most OSes understands
  1897.   it and can both read and write this fs. And that is about it.
  1898.  
  1899.   The minus side is limited safety, severely limited permission flags
  1900.   and atrocious scalability. For instance with fat you cannot have
  1901.   partitions larger than 2 GB.
  1902.  
  1903.  
  1904.  
  1905.   5.2.2.  fat32
  1906.  
  1907.   After about 10 years Microsoft realised fat was about, well, 10 years
  1908.   behind the times and created this fs which scales reasonably well.
  1909.  
  1910.   Permission flags are still limited.  NT 4.0 cannot read this file
  1911.   system but Linux can.
  1912.  
  1913.  
  1914.  
  1915.   5.2.3.  vfat
  1916.  
  1917.   At the same time as Microsoft launched fat32 they also added support
  1918.   for long file names, known as vfat.
  1919.  
  1920.   Linux reads vfat and fat32 partitions by mounting with type vfat.
  1921.  
  1922.  
  1923.  
  1924.   5.2.4.  ntfs
  1925.  
  1926.   This is the native fs of Win-NT but as complete information is
  1927.   available there is limited support for other OSes.
  1928.  
  1929.  
  1930.  
  1931.   5.3.  Logging and Journaling File Systems
  1932.  
  1933.   These take a radically different approach to file updates by logging
  1934.   modifications for files in a log and later at some time checkpointing
  1935.   the logs.
  1936.  
  1937.   Reading is roughly as fast as traditional file systems that always
  1938.   update the files directly.  Writing is much faster as only updates are
  1939.   appended to a log.  All this is transparent to the user. It is in
  1940.   reliability and particularly in checking file system integrity that
  1941.   these file systems really shine.  Since the data before last
  1942.   checkpointing is known to be good only the log has to be checked, and
  1943.   this is much faster than for traditional file systems.
  1944.  
  1945.   Note that while logging filesystems keep track of changes made to both
  1946.   data and inodes, journaling filesystems keep track only of inode
  1947.   changes.
  1948.  
  1949.   Linux has quite a choice in such file systems but none are yet in
  1950.   production quality. Some are also on hold.
  1951.  
  1952.  
  1953.   ╖  Adam Richter from Yggdrasil posted some time ago that they have
  1954.      been working on a compressed log file based system but that this
  1955.      project is currently on hold. Nevertheless a non-working version is
  1956.      available on their FTP server. Check out the Yggdrasil ftp server
  1957.      <ftp://ftp.yggdrasil.com/private/adam> where special patched
  1958.      versions of the kernel can be found.
  1959.  
  1960.   ╖  Another project is the Linux log-structured Filesystem Project
  1961.      <http://collective.cpoint.net/lfs/> which sadly also is on hold.
  1962.      Nevertheless this page contains much information on the topic.
  1963.  
  1964.   ╖  Finally there is the dtfs -- A Log-Structured Filesystem For Linux
  1965.      <http://www.complang.tuwien.ac.at/czezatke/lfs.html> which seems to
  1966.      be going strong. Still in alpha but sufficiently complete to make
  1967.      programs run off this file system
  1968.  
  1969.  
  1970.   5.4.  Read-only File Systems
  1971.  
  1972.   Read-only media has not escaped the ever increasing complexities seen
  1973.   in more general file systems so again there is a large choice to chose
  1974.   from with corresponding opportunities for exciting mistakes.
  1975.  
  1976.   Most of these are used with the CD-ROM media but also the new DVD can
  1977.   be used and you can even use it through the loopback device on a hard
  1978.   disk file for verifying an image before burning a ROM.
  1979.  
  1980.  
  1981.   There is a read-only romfs for Linux but as that is not disk related
  1982.   nothing more will be said about it here.
  1983.  
  1984.  
  1985.   5.4.1.  High Sierra
  1986.  
  1987.   This was one of the earliest standards for CD-ROM formats, supposedly
  1988.   named after the hotel where the final agreement took place.
  1989.  
  1990.   High Sierra was so limited in features that new extensions simply had
  1991.   to appear and while there has been no end to new formats the original
  1992.   High Sierra remains the common precursor and is therefore still widely
  1993.   supported.
  1994.  
  1995.  
  1996.  
  1997.   5.4.2.  iso9660
  1998.  
  1999.   The International Standards Organisation made their extensions and
  2000.   formalised the standard into what we know as the iso9660 standard.
  2001.  
  2002.   The Linux iso9660 file system supports both High Sierra as well as
  2003.   Rock Ridge extensions.
  2004.  
  2005.  
  2006.  
  2007.   5.4.3.  Rock Ridge
  2008.  
  2009.   Not everyone accepts limits like short filenames and lack of
  2010.   permissions so very soon the Rock Ridge extensions appeared to rectify
  2011.   these shortcomings.
  2012.  
  2013.  
  2014.  
  2015.   5.4.4.  Joliet
  2016.  
  2017.   Microsoft, not be be outdone in the standards extension game, decided
  2018.   it should extend CD-ROM formats with some internationalisation
  2019.   features and called it Joliet.
  2020.  
  2021.   Linux supports this standards in kernels 2.0.34 or newer.  You need to
  2022.   enable NLS in order to use it.
  2023.  
  2024.  
  2025.  
  2026.   5.4.5.  Trivia
  2027.  
  2028.   Joliet is a city outside Chicago; best known for being the site of the
  2029.   prison where Jake was locked up in the movie "Blues Brothers." Rock
  2030.   Ridge (the UNIX extensions to ISO 9660) is named after the (fictional)
  2031.   town in the movie "Blazing Saddles."
  2032.  
  2033.  
  2034.  
  2035.   5.4.6.  UDF
  2036.  
  2037.   With the arrival of DVD with up to about 17 GB of storage capacity the
  2038.   world seemingly needed another format, this time ambitiously named
  2039.   Universal Disk Format (UDF).  This is intended to replace iso9660 and
  2040.   will be required for DVD.
  2041.  
  2042.   Currently this is not in the standard Linux kernel but a project is
  2043.   underway to make a UDF driver
  2044.   <http://trylinux.com/projects/udf/index/htm> for Linux. Patches and
  2045.   documentation are available.
  2046.  
  2047.   5.5.  Networking File Systems
  2048.  
  2049.   There is a large number of networking technologies available that lets
  2050.   you distribute disks throughout a local or even global networks.  This
  2051.   is somewhat peripheral to the topic of this HOWTO but as it can be
  2052.   used with local disks I will cover this briefly. It would be best if
  2053.   someone (else) took this into a separate HOWTO...
  2054.  
  2055.  
  2056.   5.5.1.  NFS
  2057.  
  2058.   This is one of the earliest systems that allows mounting a file space
  2059.   on one machine onto another. There are a number of problems with NFS
  2060.   ranging from performance to security but it has nevertheless become
  2061.   established.
  2062.  
  2063.  
  2064.   5.5.2.  AFS
  2065.  
  2066.   This is a system that allows efficient sharing of files across large
  2067.   networks. Starting out as an academic project it is now sold by
  2068.   Transarc <http://www.transarc.com> whose homepage gives you more
  2069.   details.
  2070.  
  2071.   Derek Atkins, of MIT, ported AFS to Linux and has also set up the
  2072.   Linux AFS mailing List ( linux-afs@mit.edu) for this which is open to
  2073.   the public.  Requests to join the list should go to linux-afs-
  2074.   request@mit.edu and finally bug reports should be directed to linux-
  2075.   afs-bugs@mit.edu.
  2076.  
  2077.   Important: as AFS uses encryption it is restricted software and cannot
  2078.   easily be exported from the US.
  2079.  
  2080.   IBM who owns Transarc, has announced the availability of the latest
  2081.   version of client as well as server for Linux.
  2082.  
  2083.   Arla is a free AFS implementation, check the Arla homepage
  2084.   <http://www.stacken.kth.se/projekt/arla> for more information as well
  2085.   as documentation.
  2086.  
  2087.  
  2088.  
  2089.   5.5.3.  Coda
  2090.  
  2091.   Work has started on a free replacement of AFS and is called Coda
  2092.   <http://coda.cs.cmu.edu/>.
  2093.  
  2094.  
  2095.  
  2096.   5.5.4.  nbd
  2097.  
  2098.   The Network Block Device <http://atrey.karlin.mff.cuni.cz/~pavel>
  2099.   (nbd) is available in Linux kernel 2.2 and later and offers reportedly
  2100.   excellent performance. The interesting thing here is that it can be
  2101.   combined with RAID (see later).
  2102.  
  2103.  
  2104.  
  2105.   5.5.5.  GFS
  2106.  
  2107.   The Global File System <http://gfs.lcse.umn.edu/> is a new file system
  2108.   designed for storage across a wide area network.  it is currently in
  2109.   the early stages and more information will come later.
  2110.  
  2111.  
  2112.  
  2113.   5.6.  Special File Systems
  2114.  
  2115.   In addition to the general file systems there is also a number of more
  2116.   specific ones, usually to provide higher performance or other
  2117.   features, usually with a tradeoff in other respects.
  2118.  
  2119.  
  2120.  
  2121.   5.6.1.  tmpfs  and swapfs
  2122.  
  2123.   For short term fast file storage SunOS offers tmpfs which is about the
  2124.   same as the swapfs on NeXT.  This overcomes the inherent slowness in
  2125.   ufs by caching file data and keeping control information in memory.
  2126.   This means that data on such a file system will be lost when rebooting
  2127.   and is therefore mainly suitable for /tmp area but not /var/tmp which
  2128.   is where temporary data that must survive a reboot, is placed.
  2129.  
  2130.   SunOS offers very limited tuning for tmpfs and the number of files is
  2131.   even limited by total physical memory of the machine.
  2132.  
  2133.   Linux does not have an equivalent to such file system and it is felt
  2134.   by many that ext2fs is fast enough to eliminate the need.
  2135.  
  2136.  
  2137.  
  2138.   5.6.2.  userfs
  2139.  
  2140.   The user file system (userfs) allows a number of extensions to
  2141.   traditional file system use such as FTP based file system, compression
  2142.   (arcfs) and fast prototyping and many other features. The docfs is
  2143.   based on this filesystem.  Check the userfs homepage
  2144.   <http://www.goop.org/~jeremy/userfs/> for more information.
  2145.  
  2146.  
  2147.  
  2148.   5.6.3.  devfs
  2149.  
  2150.   When disks are added, removed or just fail it is likely that disk
  2151.   device names of the remaining disks will change.  For instance if sdb
  2152.   fails then the old sdc becomes sdb, the old sdc becomes sdb and so on.
  2153.   Note that in this case hda, hdb etc will remain unchanged.  Likewise
  2154.   if a new drive is added the reverse may happen.
  2155.  
  2156.   There is no guarantee that SCSI ID 0 becomes sda and that adding disks
  2157.   in increasing ID order will just add a new device name without
  2158.   renaming previous entries, as some SCSI drivers assign from ID 0 and
  2159.   up while others reverse the scanning order.  Likewise adding a SCSI
  2160.   host adapter can also cause renaming.
  2161.  
  2162.   Generally device names are assigned in the order they are found.
  2163.  
  2164.   The source of the problem lies in the limited number of bits available
  2165.   for major and minor numbering in the device files used to describe the
  2166.   device itself. You an see these in the /dev directory, info on the
  2167.   numbering and allocation can be found in man MAKEDEV.  Currently there
  2168.   are 2 solutions to this problem in various stages of development:
  2169.  
  2170.      scsidev
  2171.         works by creating a database of drives and where they belong,
  2172.         check  man scsifs for more information
  2173.  
  2174.      devfs
  2175.         is a more long term project aimed at getting around the whole
  2176.         business of device numbering by making the /dev directory a
  2177.         kernel file system in the same way as /procfs is.  More
  2178.         information will appear as it becomes available.
  2179.   5.7.  File System Recommendations
  2180.  
  2181.   There is a jungle of choices but generally it is recommended to use
  2182.   the general file system that comes with your distribution.  If you use
  2183.   ufs and have some kind of tmpfs available you should first start off
  2184.   with the general file system to get an idea of the space requirements
  2185.   and if necessary buy more RAM to support the size of tmpfs you need.
  2186.   Otherwise you will end up with mysterious crashes and lost time.
  2187.  
  2188.   If you use dual boot and need to transfer data between the two OSes
  2189.   one of the simplest ways is to use an appropriately sized partition
  2190.   formatted with fat as most systems can reliably read and write this.
  2191.   Remember the limit of 2 GB for fat partitions.
  2192.  
  2193.   For more information of file system interconnectivity you can check
  2194.   out the file system <http://www.ceid.upatras.gr/~gef/fs/> page.
  2195.  
  2196.   To avoid total havoc with device renaming if a drive fails check out
  2197.   the scanning order of your system and try to keep your root system on
  2198.   hda or sda and removable media such as ZIP drives at the end of the
  2199.   scanning order.
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.   6.  Technologies
  2206.  
  2207.   In order to decide how to get the most of your devices you need to
  2208.   know what technologies are available and their implications. As always
  2209.   there can be some tradeoffs with respect to speed, reliability, power,
  2210.   flexibility, ease of use and complexity.
  2211.  
  2212.   Many of the techniques described below can be stacked in a number of
  2213.   ways to maximise performance and reliability, though at the cost of
  2214.   added complexity.
  2215.  
  2216.  
  2217.  
  2218.   6.1.  RAID
  2219.  
  2220.   This is a method of increasing reliability, speed or both by using
  2221.   multiple disks in parallel thereby decreasing access time and
  2222.   increasing transfer speed. A checksum or mirroring system can be used
  2223.   to increase reliability.  Large servers can take advantage of such a
  2224.   setup but it might be overkill for a single user system unless you
  2225.   already have a large number of disks available. See other documents
  2226.   and FAQs for more information.
  2227.  
  2228.   For Linux one can set up a RAID system using either software (the md
  2229.   module in the kernel), a Linux compatible controller card (PCI-to-
  2230.   SCSI) or a SCSI-to-SCSI controller. Check the documentation for what
  2231.   controllers can be used. A hardware solution is usually faster, and
  2232.   perhaps also safer, but comes at a significant cost.
  2233.  
  2234.  
  2235.  
  2236.   6.1.1.  SCSI-to-SCSI
  2237.  
  2238.   SCSI-to-SCSI controllers are usually implemented as complete cabinets
  2239.   with drives and a controller that connects to the computer with a
  2240.   second SCSI bus. This makes the entire cabinet of drives look like a
  2241.   single large, fast SCSI drive and requires no special RAID driver. The
  2242.   disadvantage is that the SCSI bus connecting the cabinet to the
  2243.   computer becomes a bottleneck.
  2244.  
  2245.   A significant disadvantage for people with large disk farms is that
  2246.   there is a limit to how many SCSI entries there can be in the /dev
  2247.   directory. In these cases using SCSI-to-SCSI will conserve entries.
  2248.  
  2249.   Usually they are configured via the front panel or with a terminal
  2250.   connected to their on-board serial interface.
  2251.  
  2252.  
  2253.   Some manufacturers of such systems are CMD <http://www.cmd.com> and
  2254.   Syred <http://www.syred.com> whose web pages describe several systems.
  2255.  
  2256.  
  2257.  
  2258.   6.1.2.  PCI-to-SCSI
  2259.  
  2260.   PCI-to-SCSI controllers are, as the name suggests, connected to the
  2261.   high speed PCI bus and is therefore not suffering from the same
  2262.   bottleneck as the SCSI-to-SCSI controllers. These controllers require
  2263.   special drivers but you also get the means of controlling the RAID
  2264.   configuration over the network which simplifies management.
  2265.  
  2266.   Currently only a few families of PCI-to-SCSI host adapters are
  2267.   supported under Linux.
  2268.  
  2269.  
  2270.  
  2271.      DPT
  2272.         The oldest and most mature is a range of controllers from DPT
  2273.         <http://www.dpt.com> including SmartCache I/III/IV and SmartRAID
  2274.         I/III/IV controller families.  These controllers are supported
  2275.         by the EATA-DMA driver in the standard kernel. This company also
  2276.         has an informative home page <http://www.dpt.com> which also
  2277.         describes various general aspects of RAID and SCSI in addition
  2278.         to the product related information.
  2279.  
  2280.         More information from  the author of the DPT controller drivers
  2281.         (EATA* drivers) can be found at his pages on SCSI
  2282.         <http://www.uni-mainz.de/~neuffer/scsi> and DPT <http://www.uni-
  2283.         mainz.de/~neuffer/scsi/dpt>.
  2284.  
  2285.         These are not the fastest but have a good track record of proven
  2286.         reliability.
  2287.  
  2288.         Note that the maintenance tools for DPT controllers currently
  2289.         run under DOS/Win only so you will need a small DOS/Win
  2290.         partition for some of the software. This also means you have to
  2291.         boot the system into Windows in order to maintain your RAID
  2292.         system.
  2293.  
  2294.  
  2295.  
  2296.      ICP-Vortex
  2297.         A very recent addition is a range of controllers from ICP-Vortex
  2298.         <http://www.icp-vortex.com> featuring up to 5 independent
  2299.         channels and very fast hardware based on the i960 chip. The
  2300.         linux driver was written by the company itself which shows they
  2301.         support Linux.
  2302.  
  2303.         As ICP-Vortex supplies the maintenance software for Linux it is
  2304.         not necessary with a reboot to other operating systems for the
  2305.         setup and maintenance of your RAID system. This saves you also
  2306.         extra downtime.
  2307.  
  2308.  
  2309.  
  2310.  
  2311.      Mylex DAC-960
  2312.         This is one of the latest entries which is out in early beta.
  2313.         More information as well as drivers are available at Dandelion
  2314.         Digital's Linux DAC960 Page
  2315.         <http://www.dandelion.com/Linux/DAC960.html>.
  2316.  
  2317.  
  2318.  
  2319.      Compaq Smart-2 PCI Disk Array Controllers
  2320.         Another very recent entry and currently in beta release is the
  2321.         Smart-2 <http://www.insync.net~frantze/cpqarray.html> driver.
  2322.  
  2323.  
  2324.  
  2325.  
  2326.   6.1.3.  Software RAID
  2327.  
  2328.   A number of operating systems offer software RAID using ordinary disks
  2329.   and controllers. Cost is low and performance for raw disk IO can be
  2330.   very high.  As this can be very CPU intensive it increases the load
  2331.   noticeably so if the machine is CPU bound in performance rather then
  2332.   IO bound you might be better off with a hardware PCI-to-RAID
  2333.   controller.
  2334.  
  2335.   Real cost, performance and especially reliability of software vs.
  2336.   hardware RAID is a very controversial topic. Reliability on Linux
  2337.   systems have been very good so far.
  2338.  
  2339.   The current software RAID project on Linux is the md system (multiple
  2340.   devices) which offers much more than RAID so it is described in more
  2341.   details later.
  2342.  
  2343.  
  2344.  
  2345.  
  2346.   6.1.4.  RAID Levels
  2347.  
  2348.   RAID comes in many levels and flavours which I will give a brief
  2349.   overview of this here. Much has been written about it and the
  2350.   interested reader is recommended to read more about this in the RAID
  2351.   FAQ.
  2352.  
  2353.  
  2354.   ╖  RAID 0 is not redundant at all but offers the best throughput of
  2355.      all levels here. Data is striped across a number of drives so read
  2356.      and write operations take place in parallel across all drives. On
  2357.      the other hand if a single drive fail then everything is lost. Did
  2358.      I mention backups?
  2359.  
  2360.   ╖  RAID 1 is the most primitive method of obtaining redundancy by
  2361.      duplicating data across all drives. Naturally this is massively
  2362.      wasteful but you get one substantial advantage which is fast
  2363.      access.  The drive that access the data first wins. Transfers are
  2364.      not any faster than for a single drive, even though you might get
  2365.      some faster read transfers by using one track reading per drive.
  2366.  
  2367.      Also if you have only 2 drives this is the only method of achieving
  2368.      redundancy.
  2369.  
  2370.   ╖  RAID 2 and 4 are not so common and are not covered here.
  2371.  
  2372.   ╖  RAID 3 uses a number of disks (at least 2) to store data in a
  2373.      striped RAID 0 fashion. It also uses an additional redundancy disk
  2374.      to store the XOR sum of the data from the data disks. Should the
  2375.      redundancy disk fail, the system can continue to operate as if
  2376.      nothing happened. Should any single data disk fail the system can
  2377.      compute the data on this disk from the information on the
  2378.      redundancy disk and all remaining disks. Any double fault will
  2379.      bring the whole RAID set off-line.
  2380.  
  2381.      RAID 3 makes sense only with at least 2 data disks (3 disks
  2382.      including the redundancy disk). Theoretically there is no limit for
  2383.      the number of disks in the set, but the probability of a fault
  2384.      increases with the number of disks in the RAID set. Usually the
  2385.      upper limit is 5 to 7 disks in a single RAID set.
  2386.  
  2387.      Since RAID 3 stores all redundancy information on a dedicated disk
  2388.      and since this information has to be updated whenever a write to
  2389.      any data disk occurs, the overall write speed of a RAID 3 set is
  2390.      limited by the write speed of the redundancy disk. This, too, is a
  2391.      limit for the number of disks in a RAID set. The overall read speed
  2392.      of a RAID 3 set with all data disks up and running is that of a
  2393.      RAID 0 set with that number of data disks. If the set has to
  2394.      reconstruct data stored on a failed disk from redundant
  2395.      information, the performance will be severely limited: All disks in
  2396.      the set have to be read and XOR-ed to compute the missing
  2397.      information.
  2398.  
  2399.   ╖  RAID 5 is just like RAID 3, but the redundancy information is
  2400.      spread on all disks of the RAID set. This improves write
  2401.      performance, because load is distributed more evenly between all
  2402.      available disks.
  2403.  
  2404.   There are also hybrids available based on RAID 0 or 1 and one other
  2405.   level. Many combinations are possible but I have only seen a few
  2406.   referred to. These are more complex than the above mentioned RAID
  2407.   levels.
  2408.  
  2409.   RAID 0/1 combines striping with duplication which gives very high
  2410.   transfers combined with fast seeks as well as redundancy. The
  2411.   disadvantage is high disk consumption as well as the above mentioned
  2412.   complexity.
  2413.  
  2414.   RAID 1/5 combines the speed and redundancy benefits of RAID5 with the
  2415.   fast seek of RAID1. Redundancy is improved compared to RAID 0/1 but
  2416.   disk consumption is still substantial. Implementing such a system
  2417.   would involve typically more than 6 drives, perhaps even several
  2418.   controllers or SCSI channels.
  2419.  
  2420.  
  2421.  
  2422.   6.2.  Volume Management
  2423.  
  2424.   Volume management is a way of overcoming the constraints of fixed
  2425.   sized partitions and disks while still having a control of where
  2426.   various parts of file space resides. With such a system you can add
  2427.   new disks to your system and add space from this drive to parts of the
  2428.   file space where needed, as well as migrating data out from a disk
  2429.   developing faults to other drives before catastrophic failure occurs.
  2430.  
  2431.   The system developed by Veritas <http://www.veritas.com> has become
  2432.   the defacto standard for logical volume management.
  2433.  
  2434.   Volume management is for the time being an area where Linux is
  2435.   lacking.
  2436.  
  2437.   One is the virtual partition system project VPS
  2438.   <http://www.uiuc.edu/ph/www/roth> that will reimplement many of the
  2439.   volume management functions found in IBM's AIX system. Unfortunately
  2440.   this project is currently on hold.
  2441.  
  2442.  
  2443.   Another project is the Logical Volume Manager
  2444.   <http://linux.msede.com/lvm/> project that is similar to a project by
  2445.   HP.
  2446.  
  2447.  
  2448.  
  2449.   6.3.  Linux md  Kernel Patch
  2450.  
  2451.   The Linux Multi Disk (md) provides a number of block level features in
  2452.   various stages of development.
  2453.  
  2454.   RAID 0 (striping) and concatenation are very solid and in production
  2455.   quality and also RAID 4 and 5 are quite mature.
  2456.  
  2457.   It is also possible to stack some levels, for instance mirroring (RAID
  2458.   1) two pairs of drives, each pair set up as striped disks (RAID 0),
  2459.   which offers the speed of RAID 0 combined with the reliability of RAID
  2460.   1.
  2461.  
  2462.   In addition to RAID this system offers (in alpha stage) block level
  2463.   volume management and soon also translucent file space.  Since this is
  2464.   done on the block level it can be used in combination with any file
  2465.   system, even for fat using Wine.
  2466.  
  2467.   Think very carefully what drives you combine so you can operate all
  2468.   drives in parallel, which gives you better performance and less wear.
  2469.   Read more about this in the documentation that comes with md.
  2470.  
  2471.   Unfortunately the documentation is rather old an in parts misleading
  2472.   and only refers to md version 0.35 which uses old style setup.  The
  2473.   new system is very different and will soon be released as version 1.0
  2474.   but is currently undocumented. If you wish to try it out you should
  2475.   follow the linux-raid mailing list.
  2476.  
  2477.   Documentation is improving and a Software RAID HOWTO
  2478.   <http://ostenfeld.dk/~jakob/Software-RAID.HOWTO/> is in progress.
  2479.  
  2480.  
  2481.   Hint: if you cannot get it to work properly you have forgotten to set
  2482.   the persistent-block flag. Your best documentation is currently the
  2483.   source code.
  2484.  
  2485.  
  2486.  
  2487.  
  2488.   6.4.  Compression
  2489.  
  2490.   Disk compression versus file compression is a hotly debated topic
  2491.   especially regarding the added danger of file corruption. Nevertheless
  2492.   there are several options available for the adventurous
  2493.   administrators. These take on many forms, from kernel modules and
  2494.   patches to extra libraries but note that most suffer various forms of
  2495.   limitations such as being read-only. As development takes place at
  2496.   neck breaking speed the specs have undoubtedly changed by the time you
  2497.   read this. As always: check the latest updates yourself. Here only a
  2498.   few references are given.
  2499.  
  2500.  
  2501.   ╖  DouBle features file compression with some limitations.
  2502.  
  2503.   ╖  Zlibc adds transparent on-the-fly decompression of files as they
  2504.      load.
  2505.  
  2506.   ╖  there are many modules available for reading compressed files or
  2507.      partitions that are native to various other operating systems
  2508.      though currently most of these are read-only.
  2509.   ╖  dmsdos <http://bf9nt.uni-
  2510.      duisburg.de/mitarbeiter/gockel/software/dmsdos/> (currently in
  2511.      version 0.9.2.0) offer many of the compression options available
  2512.      for DOS and Windows. It is not yet complete but work is ongoing and
  2513.      new features added regularly.
  2514.  
  2515.   ╖  e2compr is a package that extends ext2fs with compression
  2516.      capabilities. It is still under testing and will therefore mainly
  2517.      be of interest for kernel hackers but should soon gain stability
  2518.      for wider use.  Check the e2compr homepage
  2519.      <http://netspace.net.au/~reiter/e2compr.html> for more information.
  2520.      I have reports of speed and good stability which is why it is
  2521.      mentioned here.
  2522.  
  2523.  
  2524.  
  2525.   6.5.  ACL
  2526.  
  2527.   Access Control List (ACL) offers finer control over file access on a
  2528.   user by user basis, rather than the traditional owner, group and
  2529.   others, as seen in directory listings (drwxr-xr-x). This is currently
  2530.   not available in Linux but is expected in kernel 2.3 as hooks are
  2531.   already in place in ext2fs.
  2532.  
  2533.  
  2534.  
  2535.   6.6.  cachefs
  2536.  
  2537.   This uses part of a hard disk to cache slower media such as CD-ROM.
  2538.   It is available under SunOS but not yet for Linux.
  2539.  
  2540.  
  2541.  
  2542.   6.7.  Translucent or Inheriting File Systems
  2543.  
  2544.   This is a copy-on-write system where writes go to a different system
  2545.   than the original source while making it look like an ordinary file
  2546.   space. Thus the file space inherits the original data and the
  2547.   translucent write back buffer can be private to each user.
  2548.  
  2549.   There is a number of applications:
  2550.  
  2551.   ╖  updating a live file system on CD-ROM, making it flexible, fast
  2552.      while also conserving space,
  2553.  
  2554.   ╖  original skeleton files for each new user, saving space since the
  2555.      original data is kept in a single space and shared out,
  2556.  
  2557.   ╖  parallel project development prototyping where every user can
  2558.      seemingly modify the system globally while not affecting other
  2559.      users.
  2560.  
  2561.   SunOS offers this feature and this is under development for Linux.
  2562.   There was an old project called the Inheriting File Systems (ifs) but
  2563.   this project has stopped.  One current project is part of the md
  2564.   system and offers block level translucence so it can be applied to any
  2565.   file system.
  2566.  
  2567.   Sun has an informative page <http://www.sun.ca/white-papers/tfs.html>
  2568.   on translucent file system.
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.   6.8.  Physical Track Positioning
  2576.  
  2577.   This trick used to be very important when drives were slow and small,
  2578.   and some file systems used to take the varying characteristics into
  2579.   account when placing files. Although higher overall speed, on board
  2580.   drive and controller caches and intelligence has reduced the effect of
  2581.   this.
  2582.  
  2583.   Nevertheless there is still a little to be gained even today.  As we
  2584.   know, "world dominance" is soon within reach but to achieve this
  2585.   "fast" we need to employ all the tricks we can use .
  2586.  
  2587.   To understand the strategy we need to recall this near ancient piece
  2588.   of knowledge and the properties of the various track locations.  This
  2589.   is based on the fact that transfer speeds generally increase for
  2590.   tracks further away from the spindle, as well as the fact that it is
  2591.   faster to seek to or from the central tracks than to or from the inner
  2592.   or outer tracks.
  2593.  
  2594.   Most drives use disks running at constant angular velocity but use
  2595.   (fairly) constant data density across all tracks. This means that you
  2596.   will get much higher transfer rates on the outer tracks than on the
  2597.   inner tracks; a characteristics which fits the requirements for large
  2598.   libraries well.
  2599.  
  2600.   Newer disks use a logical geometry mapping which differs from the
  2601.   actual physical mapping which is transparently mapped by the drive
  2602.   itself.  This makes the estimation of the "middle" tracks a little
  2603.   harder.
  2604.  
  2605.   In most cases track 0 is at the outermost track and this is the
  2606.   general assumption most people use. Still, it should be kept in mind
  2607.   that there are no guarantees this is so.
  2608.  
  2609.  
  2610.  
  2611.      Inner
  2612.         tracks are usually slow in transfer, and lying at one end of the
  2613.         seeking position it is also slow to seek to.
  2614.  
  2615.         This is more suitable to the low end directories such as DOS,
  2616.         root and print spools.
  2617.  
  2618.  
  2619.      Middle
  2620.         tracks are on average faster with respect to transfers than
  2621.         inner tracks and being in the middle also on average faster to
  2622.         seek to.
  2623.  
  2624.         This characteristics is ideal for the most demanding parts such
  2625.         as swap, /tmp and /var/tmp.
  2626.  
  2627.  
  2628.      Outer
  2629.         tracks have on average even faster transfer characteristics but
  2630.         like the inner tracks are at the end of the seek so
  2631.         statistically it is equally slow to seek to as the inner tracks.
  2632.  
  2633.         Large files such as libraries would benefit from a place here.
  2634.  
  2635.  
  2636.   Hence seek time reduction can be achieved by positioning frequently
  2637.   accessed tracks in the middle so that the average seek distance and
  2638.   therefore the seek time is short. This can be done either by using
  2639.   fdisk or cfdisk to make a partition on the middle tracks or by first
  2640.   making a file (using dd) equal to half the size of the entire disk
  2641.   before creating the files that are frequently accessed, after which
  2642.   the dummy file can be deleted. Both cases assume starting from an
  2643.   empty disk.
  2644.  
  2645.   The latter trick is suitable for news spools where the empty directory
  2646.   structure can be placed in the middle before putting in the data
  2647.   files.  This also helps reducing fragmentation a little.
  2648.  
  2649.   This little trick can be used both on ordinary drives as well as RAID
  2650.   systems. In the latter case the calculation for centring the tracks
  2651.   will be different, if possible. Consult the latest RAID manual.
  2652.  
  2653.   The speed difference this makes depends on the drives, but a 50
  2654.   percent improvement is a typical value.
  2655.  
  2656.  
  2657.   6.8.1.  Disk Speed Values
  2658.  
  2659.   The same mechanical head disk assembly (HDA) is often available with a
  2660.   number of interfaces (IDE, SCSI etc) and the mechanical parameters are
  2661.   therefore often comparable. The mechanics is today often the limiting
  2662.   factor but development is improving things steadily. There are two
  2663.   main parameters, usually quoted in milliseconds (ms):
  2664.  
  2665.  
  2666.   ╖  Head movement - the speed at which the read-write head is able to
  2667.      move from one track to the next, called access time.  If you do the
  2668.      mathematics and doubly integrate the seek first across all possible
  2669.      starting tracks and then across all possible target tracks you will
  2670.      find that this is equivalent of a stroke across a third of all
  2671.      tracks.
  2672.  
  2673.   ╖  Rotational speed - which determines the time taken to get to the
  2674.      right sector, called latency.
  2675.  
  2676.   After voice coils replaced stepper motors for the head movement the
  2677.   improvements seem to have levelled off and more energy is now spent
  2678.   (literally) at improving rotational speed. This has the secondary
  2679.   benefit of also improving transfer rates.
  2680.  
  2681.   Some typical values:
  2682.  
  2683.  
  2684.  
  2685.                                 Drive type
  2686.  
  2687.  
  2688.        Access time (ms)        | Fast  Typical   Old
  2689.        ---------------------------------------------
  2690.        Tract-to-track             <1       2       8
  2691.        Average seek               10      15      30
  2692.        End-to-end                 10      30      70
  2693.  
  2694.  
  2695.  
  2696.  
  2697.   This shows that the very high end drives offer only marginally better
  2698.   access times then the average drives but that the old drives based on
  2699.   stepper motors are significantly worse.
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.   Rotational speed (RPM)  |  3600 | 4500 | 4800 | 5400 | 7200 | 10000
  2708.   -------------------------------------------------------------------
  2709.   Latency          (ms)   |    17 |   13 | 12.5 | 11.1 |  8.3 |   6.0
  2710.  
  2711.  
  2712.  
  2713.  
  2714.   As latency is the average time taken to reach a given sector, the
  2715.   formula is quite simply
  2716.  
  2717.  
  2718.        latency (ms) = 60000 / speed (RPM)
  2719.  
  2720.  
  2721.  
  2722.  
  2723.   Clearly this too is an example of diminishing returns for the efforts
  2724.   put into development. However, what really takes off here is the power
  2725.   consumption, heat and noise.
  2726.  
  2727.  
  2728.  
  2729.   6.9.  Stacking
  2730.  
  2731.   One of the advantages of a layered design of an operating system is
  2732.   that you have the flexibility to put the pieces together in a number
  2733.   of ways.  For instance you can cache a CD-ROM with cachefs that is a
  2734.   volume striped over 2 drives. This in turn can be set up translucently
  2735.   with a volume that is NFS mounted from another machine.  RAID can be
  2736.   stacked in several layers to offer very fast seek and transfer in such
  2737.   a way that it will work if even 3 drives fail.  The choices are many,
  2738.   limited only by imagination and, probably more importantly, money.
  2739.  
  2740.  
  2741.  
  2742.   6.10.  Recommendations
  2743.  
  2744.   There is a near infinite number of combinations available but my
  2745.   recommendation is to start off with a simple setup without any fancy
  2746.   add-ons. Get a feel for what is needed, where the maximum performance
  2747.   is required, if it is access time or transfer speed that is the bottle
  2748.   neck, and so on. Then phase in each component in turn. As you can
  2749.   stack quite freely you should be able to retrofit most components in
  2750.   as time goes by with relatively few difficulties.
  2751.  
  2752.   RAID is usually a good idea but make sure you have a thorough grasp of
  2753.   the technology and a solid back up system.
  2754.  
  2755.  
  2756.  
  2757.  
  2758.   7.  Other Operating Systems
  2759.  
  2760.   Many Linux users have several operating systems installed, often
  2761.   necessitated by hardware setup systems that run under other operating
  2762.   systems, typically DOS or some flavour of Windows. A small section on
  2763.   how best to deal with this is therefore included here.
  2764.  
  2765.  
  2766.   7.1.  DOS
  2767.  
  2768.   Leaving aside the debate on weather or not DOS qualifies as an
  2769.   operating system one can in general say that it has little
  2770.   sophistication with respect to disk operations. The more important
  2771.   result of this is that there can be severe difficulties in running
  2772.   various versions of DOS on large drives, and you are therefore
  2773.   strongly recommended in reading the Large Drives mini-HOWTO. One
  2774.   effect is that you are often better off placing DOS on low track
  2775.   numbers.
  2776.  
  2777.   Having been designed for small drives it has a rather unsophisticated
  2778.   file system (fat) which when used on large drives will allocate
  2779.   enormous block sizes. It is also prone to block fragmentation which
  2780.   will after a while cause excessive seeks and slow effective transfers.
  2781.  
  2782.   One solution to this is to use a defragmentation program regularly but
  2783.   it is strongly recommended to back up data and verify the disk before
  2784.   defragmenting. All versions of DOS have chkdsk that can do some disk
  2785.   checking, newer versions also have scandisk which is somewhat better.
  2786.   There are many defragmentation programs available, some versions have
  2787.   one called defrag. Norton Utilities have a large suite of disk tools
  2788.   and there are many others available too.
  2789.  
  2790.   As always there are snags, and this particular snake in our drive
  2791.   paradise is called hidden files. Some vendors started to use these for
  2792.   copy protection schemes and would not take kindly to being moved to a
  2793.   different place on the drive, even if it remained in the same place in
  2794.   the directory structure. The result of this was that newer
  2795.   defragmentation programs will not touch any hidden file, which in turn
  2796.   reduces the effect of defragmentation.
  2797.  
  2798.   Being a single tasking, single threading and single most other things
  2799.   operating system there is very little gains in using multiple drives
  2800.   unless you use a drive controller with built in RAID support of some
  2801.   kind.
  2802.  
  2803.   There are a few utilities called join and subst which can do some
  2804.   multiple drive configuration but there is very little gains for a lot
  2805.   of work. Some of these commands have been removed in newer versions.
  2806.  
  2807.   In the end there is very little you can do, but not all hope is lost.
  2808.   Many programs need fast, temporary storage, and the better behaved
  2809.   ones will look for environment variables called TMPDIR or TEMPDIR
  2810.   which you can set to point to another drive. This is often best done
  2811.   in autoexec.bat.
  2812.  
  2813.  
  2814.   ______________________________________________________________________
  2815.   SET TMPDIR=E:/TMP
  2816.   SET TEMPDIR=E:/TEMP
  2817.   ______________________________________________________________________
  2818.  
  2819.  
  2820.  
  2821.   Not only will this possibly gain you some speed but also it can reduce
  2822.   fragmentation.
  2823.  
  2824.   There have been reports about difficulties in removing multiple
  2825.   primary partitions using the fdisk program that comes with DOS. Should
  2826.   this happen you can instead use a Linux rescue disk with Linux fdisk
  2827.   to repair the system.
  2828.  
  2829.   Don't forget there are other alternatives to DOS, the most well known
  2830.   being DR-DOS <http://www.caldera/dos/> from Caldera
  2831.   <http://www.caldera/>.  This is a direct descendant from DR-DOS from
  2832.   Digital Research.  It offers many features not found in the more
  2833.   common DOS, such as multi tasking and long filenames.
  2834.  
  2835.   Another alternative which also is free is Free DOS
  2836.   <http://www.freedos.org/> which is a project under development. A
  2837.   number of free utilities are also available.
  2838.  
  2839.   7.2.  Windows
  2840.  
  2841.   Most of the above points are valid for Windows too, with the exception
  2842.   of Windows95 which apparently has better disk handling, which will get
  2843.   better performance out of SCSI drives.
  2844.  
  2845.   A useful thing is the introduction of long filenames, to read these
  2846.   from Linux you will need the vfat file system for mounting these
  2847.   partitions.
  2848.  
  2849.  
  2850.   Disk fragmentation is still a problem. Some of this can be avoided by
  2851.   doing a defragmentation immediately before and immediately after
  2852.   installing large programs or systems. I use this scheme at work and
  2853.   have found it to work quite well. Purging unused files and emptying
  2854.   the waste basket first can improve defragmentation further.
  2855.  
  2856.   Windows also use swap drives, redirecting this to another drive can
  2857.   give you some performance gains. There are several mini-HOWTOs telling
  2858.   you how best to share swap space between various operating systems.
  2859.  
  2860.  
  2861.  
  2862.  
  2863.   The trick of setting TEMPDIR can still be used but not all programs
  2864.   will honour this setting. Some do, though. To get a good overview of
  2865.   the settings in the control files you can run sysedit which will open
  2866.   a number of files for editing, one of which is the autoexec file where
  2867.   you can add the TEMPDIR settings.
  2868.  
  2869.   Much of the temporary files are located in the /windows/temp directory
  2870.   and changing this is more tricky. To achieve this you can use regedit
  2871.   which is rather powerful and quite capable of rendering your system in
  2872.   a state you will not enjoy, or more precisely, in a state much less
  2873.   enjoyable than windows in general.  Registry database error is a
  2874.   message that means seriously bad news.  Also you will see that many
  2875.   programs have their own private temporary directories scattered around
  2876.   the system.
  2877.  
  2878.   Setting the swap file to a separate partition is a better idea and
  2879.   much less risky. Keep in mind that this partition cannot be used for
  2880.   anything else, even if there should appear to be space left there.
  2881.  
  2882.   It is now possible to read ext2fs partitions from Windows, either by
  2883.   mounting the partition using FSDEXT2 <http://www.yipton.demon.co.uk/>
  2884.   or by using a file explorer like tool called Explore2fs
  2885.   <http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.html>.
  2886.  
  2887.  
  2888.  
  2889.   7.3.  OS/2
  2890.  
  2891.   The only special note here is that you can get a file system driver
  2892.   for OS/2 that can read an ext2fs partition.
  2893.  
  2894.  
  2895.   7.4.  NT
  2896.  
  2897.   This is a more serious system featuring most buzzwords known to
  2898.   marketing.  It is well worth noting that it features software striping
  2899.   and other more sophisticated setups. Check out the drive manager in
  2900.   the control panel.  I do not have easy access to NT, more details on
  2901.   this can take a bit of time.
  2902.  
  2903.   One important snag was recently reported by acahalan at cs.uml.edu :
  2904.   (reformatted from a Usenet News posting)
  2905.   NT DiskManager has a serious bug that can corrupt your disk when you
  2906.   have several (more than one?) extended partitions.  Microsoft provides
  2907.   an emergency fix program at their web site. See the knowledge base
  2908.   <http://www.microsoft.com/kb/> for more.  (This affects Linux users,
  2909.   because Linux users have extra partitions)
  2910.  
  2911.   You can now read ext2fs partitions from NT using Explore2fs
  2912.   <http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.html>.
  2913.  
  2914.  
  2915.  
  2916.   7.5.  Sun OS
  2917.  
  2918.   There is a little bit of confusion in this area between Sun OS vs.
  2919.   Solaris.  Strictly speaking Solaris is just Sun OS 5.x packaged with
  2920.   Openwindows and a few other things. If you run Solaris, just type
  2921.   uname -a to see your version. Parts of the reason for this confusion
  2922.   is that Sun Microsystems used to use an OS from the BSD family,
  2923.   albeight with a few bits and pieces from elsewhere as well as things
  2924.   made by themselves. This was the situation up to Sun OS 4.x.y when
  2925.   they did a "strategic roadmap decision" and decided to switch over to
  2926.   the official Unix, System V, Release 4 (aka SVR5), and Sun OS 5 was
  2927.   created.  This made a lot of people unhappy. Also this was bundled
  2928.   with other things and marketed under the name Solaris, which currently
  2929.   stands at release 7 which just recently replaced version 2.6 as the
  2930.   latest and greatest.  In spite of the large jump in version number
  2931.   this is actually a minor technical upgrade but a giant leap for
  2932.   marketing.
  2933.  
  2934.  
  2935.  
  2936.  
  2937.   7.5.1.  Sun OS 4
  2938.  
  2939.   This is quite familiar to most Linux users.  The last release is 4.1.4
  2940.   plus various patches.  Note however that the file system structure is
  2941.   quite different and does not conform to FSSTND so any planning must be
  2942.   based on the traditional structure. You can get some information by
  2943.   the man page on this: man hier. This is, like most man pages, rather
  2944.   brief but should give you a good start. If you are still confused by
  2945.   the structure it will at least be at a higher level.
  2946.  
  2947.  
  2948.   7.5.2.  Sun OS 5 (aka Solaris)
  2949.  
  2950.   This comes with a snazzy installation system that runs under
  2951.   Openwindows, it will help you in partitioning and formatting the
  2952.   drives before installing the system from CD-ROM. It will also fail if
  2953.   your drive setup is too far out, and as it takes a complete
  2954.   installation run from a full CD-ROM in a 1x only drive this failure
  2955.   will dawn on you after too long time. That is the experience we had
  2956.   where I used to work. Instead we installed everything onto one drive
  2957.   and then moved directories across.
  2958.  
  2959.   The default settings are sensible for most things, yet there remains a
  2960.   little oddity: swap drives. Even though the official manual recommends
  2961.   multiple swap drives (which are used in a similar fashion as on Linux)
  2962.   the default is to use only a single drive. It is recommended to change
  2963.   this as soon as possible.
  2964.  
  2965.   Sun OS 5 offers also a file system especially designed for temporary
  2966.   files, tmpfs. It offers significant speed improvements over ufs but
  2967.   does not survive rebooting.
  2968.  
  2969.  
  2970.  
  2971.   The only comment so far is: beware! Under Solaris 2.0 it seem that
  2972.   creating too big files in /tmp can cause a out of swap space kernel
  2973.   panic trap. As the evidence of what has happened is as lost as any
  2974.   data on a RAMdisk after powering down it can be hard to find out what
  2975.   has happened. What is worse, it seems that user space processes can
  2976.   cause this kernel panic and unless this problem is taken care of it is
  2977.   best not to use tmpfs in potentially hostile environments.
  2978.  
  2979.   Also see the notes on ``tmpfs''.
  2980.  
  2981.   Trivia: There is a movie also called Solaris, a science fiction movie
  2982.   that is very, very long, slow and incomprehensible. This was often
  2983.   pointed out at the time Solaris (the OS) appeared...
  2984.  
  2985.  
  2986.  
  2987.   7.5.3.  BeOS
  2988.  
  2989.   This operating system is one of the more recent one to arrive and it
  2990.   features a file system that has some database like features.
  2991.  
  2992.   There is a BFS file system driver being developed for Linux and is
  2993.   available in alpha stage. For more information check the Linux BFS
  2994.   page <http://hp.vector.co.jp/authors/VA008030/bfs> where patches also
  2995.   are available.
  2996.  
  2997.  
  2998.  
  2999.  
  3000.   8.  Clusters
  3001.  
  3002.   In this section I will briefly touch on the ways machines can be
  3003.   connected together but this is so big a topic it could be a separate
  3004.   HOWTO in its own right, hint, hint. Also, strictly speaking, this
  3005.   section lies outside the scope of this HOWTO, so if you feel like
  3006.   getting fame etc. you could contact me and take over this part and
  3007.   turn it into a new document.
  3008.  
  3009.   These days computers gets outdated at an incredible rate. There is
  3010.   however no reason why old hardware could not be put to good use with
  3011.   Linux. Using an old and otherwise outdated computer as a network
  3012.   server can be both useful in its own right as well as a valuable
  3013.   educational exercise. Such a local networked cluster of computers can
  3014.   take on many forms but to remain within the charter of this HOWTO I
  3015.   will limit myself to the disk strategies.  Nevertheless I would hope
  3016.   someone else could take on this topic and turn it into a document on
  3017.   its own.
  3018.  
  3019.   This is an exciting area of activity today, and many forms of
  3020.   clustering is available today, ranging from automatic workload
  3021.   balancing over local network to more exotic hardware such as Scalable
  3022.   Coherent Interface (SCI) which gives a tight integration of machines,
  3023.   effectively turning them into a single machine. Various kinds of
  3024.   clustering has been available for larger machines for some time and
  3025.   the VAXcluster is perhaps a well known example of this. Clustering is
  3026.   done usually in order to share resources such as disk drives, printers
  3027.   and terminals etc, but also processing resources equally transparently
  3028.   between the computational nodes.
  3029.  
  3030.   There is no universal definition of clustering, in here it is taken to
  3031.   mean a network of machines that combine their resources to serve
  3032.   users. Admittedly this is a rather loose definition but this will
  3033.   change later.
  3034.  
  3035.   These days also Linux offers some clustering features but for a
  3036.   starter I will just describe a simple local network. It is a good way
  3037.   of putting old and otherwise unusable hardware to good use, as long as
  3038.   they can run Linux or something similar.
  3039.  
  3040.   One of the best ways of using an old machine is as a network server in
  3041.   which case the effective speed is more likely to be limited by network
  3042.   bandwidth rather than pure computational performance. For home use you
  3043.   can move the following functionality off to an older machine used as a
  3044.   server:
  3045.  
  3046.   ╖  news
  3047.  
  3048.   ╖  mail
  3049.  
  3050.   ╖  web proxy
  3051.  
  3052.   ╖  printer server
  3053.  
  3054.   ╖  modem server (PPP, SLIP, FAX, Voice mail)
  3055.  
  3056.   You can also NFS mount drives from the server onto your workstation
  3057.   thereby reducing drive space requirements. Still read the FSSTND to
  3058.   see what directories should not be exported. The best candidates for
  3059.   exporting to all machines are /usr and /var/spool and possibly
  3060.   /usr/local but probably not /var/spool/lpd.
  3061.  
  3062.   Most of the time even slow disks will deliver sufficient performance.
  3063.   On the other hand, if you do processing directly on the disks on the
  3064.   server or have very fast networking, you might want to rethink your
  3065.   strategy and use faster drives. Searching features on a web server or
  3066.   news database searches are two examples of this.
  3067.  
  3068.   Such a network can be an excellent way of learning system
  3069.   administration and building up your own toaster network, as it often
  3070.   is called. You can get more information on this in other HOWTOs but
  3071.   there are two important things you should keep in mind:
  3072.  
  3073.   ╖  Do not pull IP numbers out of thin air. Configure your inside net
  3074.      using IP numbers reserved for private use, and use your network
  3075.      server as a router that handles this IP masquerading.
  3076.  
  3077.   ╖  Remember that if you additionally configure the router as a
  3078.      firewall you might not be able to get to your own data from the
  3079.      outside, depending on the firewall configuration.
  3080.  
  3081.   The nyx network provides an example of a cluster in the sense defined
  3082.   here.  It consists of the following machines:
  3083.  
  3084.      nyx
  3085.         is one of the two user login machines and also provides some of
  3086.         the networking services.
  3087.  
  3088.      nox
  3089.         (aka nyx10) is the main user login machine and is also the mail
  3090.         server.
  3091.  
  3092.      noc
  3093.         is a dedicated news server. The news spool is made accessible
  3094.         through NFS mounting to nyx and nox.
  3095.  
  3096.      arachne
  3097.         (aka www) is the web server. Web pages are written by NFS
  3098.         mounting onto nox.
  3099.  
  3100.   There are also some more advanced clustering projects going, notably
  3101.  
  3102.  
  3103.   ╖  The Beowulf Project
  3104.      <http://cesdis.gsfc.nasa.gov/linux/beowulf/beowulf.html>
  3105.  
  3106.   ╖  The Genoa Active Message Machine (GAMMA)
  3107.      <http://www.disi.unige.it/project/gamma/>
  3108.  
  3109.  
  3110.   High-tech clustering requires high-tech interconnect, and SCI is one
  3111.   of them.  To find out more you can either look up the home page of
  3112.   Dolphin Interconnect Solutions <http://www.dolphinics.no/> which is
  3113.   one of the main actors in this field, or you can have a look at scizzl
  3114.   <http://www.scizzl.com/>.
  3115.  
  3116.  
  3117.   Centralised mail servers using IMAP are becoming more and more popular
  3118.   as disks become large enough to keep all mail stored indefinitely and
  3119.   also cheap enough to make it a feasible option.  Unfortunately it has
  3120.   become clear that NFS mounting the mail archives from another machine
  3121.   can cause corruption of the IMAP database as the server software does
  3122.   not handle NFS timeouts too well, and NFS timeouts are a rather common
  3123.   occurrence.  Keep therefore the mail archive local to the IMAP server.
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.   9.  Mount Points
  3130.  
  3131.   In designing the disk layout it is important not to split off the
  3132.   directory tree structure at the wrong points, hence this section.  As
  3133.   it is highly dependent on the FSSTND it has been put aside in a
  3134.   separate section, and will most likely have to be totally rewritten
  3135.   when FHS is adopted in a Linux distribution.  In the meanwhile this
  3136.   will do.
  3137.  
  3138.   Remember that this is a list of where a separation can take place, not
  3139.   where it has to be. As always, good judgement is always required.
  3140.  
  3141.   Again only a rough indication can be given here. The values indicate
  3142.  
  3143.  
  3144.  
  3145.        0=don't separate here
  3146.        1=not recommended
  3147.         ...
  3148.        4=useful
  3149.        5=recommended
  3150.  
  3151.  
  3152.  
  3153.  
  3154.   In order to keep the list short, the uninteresting parts are removed.
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.   Directory   Suitability
  3170.   /
  3171.   |
  3172.   +-bin       0
  3173.   +-boot      0
  3174.   +-dev       0
  3175.   +-etc       0
  3176.   +-home      5
  3177.   +-lib       0
  3178.   +-mnt       0
  3179.   +-proc      0
  3180.   +-root      0
  3181.   +-sbin      0
  3182.   +-tmp       5
  3183.   +-usr       5
  3184.   | \
  3185.   | +-X11R6     3
  3186.   | +-bin       3
  3187.   | +-lib       4
  3188.   | +-local     4
  3189.   | | \
  3190.   | | +bin        2
  3191.   | | +lib        4
  3192.   | +-src       3
  3193.   |
  3194.   +-var       5
  3195.     \
  3196.     +-adm       0
  3197.     +-lib       2
  3198.     +-lock      1
  3199.     +-log       0
  3200.     +-preserve  1
  3201.     +-run       1
  3202.     +-spool     4
  3203.     | \
  3204.     | +-mail      3
  3205.     | +-mqueue    3
  3206.     | +-news      5
  3207.     | +-smail     3
  3208.     | +-uucp      3
  3209.     +-tmp       5
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.   There is of course plenty of adjustments possible, for instance a home
  3216.   user would not bother with splitting off the /var/spool hierarchy but
  3217.   a serious ISP should. The key here is usage.
  3218.  
  3219.   QUIZ! Why should /etc never be on a separate partition?  Answer:
  3220.   Mounting instructions during boot is found in the file /etc/fstab so
  3221.   if this is on a separate and unmounted partition it is like the key to
  3222.   a locked drawer is inside that drawer, a hopeless situation. (Yes,
  3223.   I'll do nearly anything to liven up this HOWTO.)
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.   10.  Considerations and Dimensioning
  3230.  
  3231.   The starting point in this will be to consider where you are and what
  3232.   you want to do. The typical home system starts out with existing
  3233.   hardware and the newly converted Linux user will want to get the most
  3234.   out of existing hardware. Someone setting up a new system for a
  3235.   specific purpose (such as an Internet provider) will instead have to
  3236.   consider what the goal is and buy accordingly. Being ambitious I will
  3237.   try to cover the entire range.
  3238.  
  3239.   Various purposes will also have different requirements regarding file
  3240.   system placement on the drives, a large multiuser machine would
  3241.   probably be best off with the /home directory on a separate disk, just
  3242.   to give an example.
  3243.  
  3244.   In general, for performance it is advantageous to split most things
  3245.   over as many disks as possible but there is a limited number of
  3246.   devices that can live on a SCSI bus and cost is naturally also a
  3247.   factor. Equally important, file system maintenance becomes more
  3248.   complicated as the number of partitions and physical drives increases.
  3249.  
  3250.  
  3251.   10.1.  Home Systems
  3252.  
  3253.   With the cheap hardware available today it is possible to have quite a
  3254.   big system at home that is still cheap, systems that rival major
  3255.   servers of yesteryear. While many started out with old, discarded
  3256.   disks to build a Linux server (which is how this HOWTO came into
  3257.   existence), many can now afford to buy 20 GB disks up front.
  3258.  
  3259.   Size remains important for some, and here are a few guidelines:
  3260.  
  3261.  
  3262.      Testing
  3263.         Linux is simple and you don't even need a hard disk to try it
  3264.         out, if you can get the boot floppies to work you are likely to
  3265.         get it to work on your hardware. If the standard kernel does not
  3266.         work for you, do not forget that often there can be special boot
  3267.         disk versions available for unusual hardware combinations that
  3268.         can solve your initial problems until you can compile your own
  3269.         kernel.
  3270.  
  3271.  
  3272.      Learning
  3273.         about operating system is something Linux excels in, there is
  3274.         plenty of documentation and the source is available. A single
  3275.         drive with 50 MB is enough to get you started with a shell, a
  3276.         few of the most frequently used commands and utilities.
  3277.  
  3278.  
  3279.      Hobby
  3280.         use or more serious learning requires more commands and
  3281.         utilities but a single drive is still all it takes, 500 MB
  3282.         should give you plenty of room, also for sources and
  3283.         documentation.
  3284.  
  3285.  
  3286.      Serious
  3287.         software development or just serious hobby work requires even
  3288.         more space. At this stage you have probably a mail and news feed
  3289.         that requires spool files and plenty of space. Separate drives
  3290.         for various tasks will begin to show a benefit. At this stage
  3291.         you have probably already gotten hold of a few drives too. Drive
  3292.         requirements gets harder to estimate but I would expect 2-4 GB
  3293.         to be plenty, even for a small server.
  3294.  
  3295.  
  3296.      Servers
  3297.         come in many flavours, ranging from mail servers to full sized
  3298.         ISP servers. A base of 2 GB for the main system should be
  3299.         sufficient, then add space and perhaps also drives for separate
  3300.         features you will offer. Cost is the main limiting factor here
  3301.         but be prepared to spend a bit if you wish to justify the "S" in
  3302.         ISP. Admittedly, not all do it.
  3303.  
  3304.         Basically a server is dimensioned like any machine for serious
  3305.         use with added space for the services offered, and tends to be
  3306.         IO bound rather than CPU bound.
  3307.  
  3308.         With cheap networking technology both for land lines as well as
  3309.         through radio nets, it is quite likely that very soon home users
  3310.         will have their own servers more or less permanently hooked onto
  3311.         the net.
  3312.  
  3313.  
  3314.  
  3315.   10.2.  Servers
  3316.  
  3317.   Big tasks require big drives and a separate section here. If possible
  3318.   keep as much as possible on separate drives. Some of the appendices
  3319.   detail the setup of a small departmental server for 10-100 users. Here
  3320.   I will present a few consideration for the higher end servers. In
  3321.   general you should not be afraid of using RAID, not only because it is
  3322.   fast and safe but also because it can make growth a little less
  3323.   painful. All the notes below come as additions to the points mentioned
  3324.   earlier.
  3325.  
  3326.   Popular servers rarely just happens, rather they grow over time and
  3327.   this demands both generous amounts of disk space as well as a good net
  3328.   connection.  In many of these cases it might be a good idea to reserve
  3329.   entire SCSI drives, in singles or as arrays, for each task. This way
  3330.   you can move the data should the computer fail. Note that transferring
  3331.   drives across computers is not simple and might not always work,
  3332.   especially in the case of IDE drives. Drive arrays require careful
  3333.   setup in order to reconstruct the data correctly, so you might want to
  3334.   keep a paper copy of your fstab file as well as a note of SCSI IDs.
  3335.  
  3336.  
  3337.   10.2.1.  Home Directories
  3338.  
  3339.   Estimate how many drives you will need, if this is more than 2 I would
  3340.   recommend RAID, strongly. If not you should separate users across your
  3341.   drives dedicated to users based on some kind of simple hashing
  3342.   algorithm.  For instance you could use the first 2 letters in the user
  3343.   name, so jbloggs is put on /u/j/b/jbloggs where /u/j is a symbolic
  3344.   link to a physical drive so you can get a balanced load on your
  3345.   drives.
  3346.  
  3347.  
  3348.   10.2.2.  Anonymous FTP
  3349.  
  3350.   This is an essential service if you are serious about service. Good
  3351.   servers are well maintained, documented, kept up to date, and
  3352.   immensely popular no matter where in the world they are located. The
  3353.   big server ftp.funet.fi <ftp://ftp.funet.fi> is an excellent example
  3354.   of this.
  3355.  
  3356.   In general this is not a question of CPU but of network bandwidth.
  3357.   Size is hard to estimate, mainly it is a question of ambition and
  3358.   service attitudes. I believe the big archive at ftp.cdrom.com
  3359.   <ftp://ftp.cdrom.com> is a *BSD machine with 50 GB disk. Also memory
  3360.   is important for a dedicated FTP server, about 256 MB RAM would be
  3361.   sufficient for a very big server, whereas smaller servers can get the
  3362.   job done well with 64 MB RAM.  Network connections would still be the
  3363.   most important factor.
  3364.  
  3365.  
  3366.  
  3367.   10.2.3.  WWW
  3368.  
  3369.   For many this is the main reason to get onto the Internet, in fact
  3370.   many now seem to equate the two. In addition to being network
  3371.   intensive there is also a fair bit of drive activity related to this,
  3372.   mainly regarding the caches. Keeping the cache on a separate, fast
  3373.   drive would be beneficial. Even better would be installing a caching
  3374.   proxy server. This way you can reduce the cache size for each user and
  3375.   speed up the service while at the same time cut down on the bandwidth
  3376.   requirements.
  3377.  
  3378.   With a caching proxy server you need a fast set of drives, RAID0 would
  3379.   be ideal as reliability is not important here. Higher capacity is
  3380.   better but about 2 GB should be sufficient for most. Remember to match
  3381.   the cache period to the capacity and demand. Too long periods would on
  3382.   the other hand be a disadvantage, if possible try to adjust based on
  3383.   the URL. For more information check up on the most used servers such
  3384.   as Harvest, Squid <http://www.nlanr.net/Squid> and the one from
  3385.   Netscape <http://www.netscape.com>.
  3386.  
  3387.  
  3388.   10.2.4.  Mail
  3389.  
  3390.   Handling mail is something most machines do to some extent. The big
  3391.   mail servers, however, come into a class of their own. This is a
  3392.   demanding task and a big server can be slow even when connected to
  3393.   fast drives and a good net feed. In the Linux world the big server at
  3394.   vger.rutgers.edu is a well known example. Unlike a news service which
  3395.   is distributed and which can partially reconstruct the spool using
  3396.   other machines as a feed, the mail servers are centralised. This makes
  3397.   safety much more important, so for a major server you should consider
  3398.   a RAID solution with emphasize on reliability. Size is hard to
  3399.   estimate, it all depends on how many lists you run as well as how many
  3400.   subscribers you have.
  3401.  
  3402.   Note that these days more and more switch over from using POP to pull
  3403.   mail to local machine from mail server and instead use IMAP to serve
  3404.   mail while keeping the mail archive centralised.  This means that mail
  3405.   is no longer spooled in its original sense but often builds up,
  3406.   requiring huge disk space. Also more and more (ab)use mail attachments
  3407.   to send all sorts of things across, even a small word processor
  3408.   document can easily end up over 1 MB. Size your disks generously and
  3409.   keep an eye on how much space is left.
  3410.  
  3411.  
  3412.  
  3413.   10.2.5.  News
  3414.  
  3415.   This is definitely a high volume task, and very dependent on what news
  3416.   groups you subscribe to. On Nyx there is a fairly complete feed and
  3417.   the spool files consume about 17 GB. The biggest groups are no doubt
  3418.   in the alt.binary.* hierarchy, so if you for some reason decide not to
  3419.   get these you can get a good service with perhaps 12 GB. Still others,
  3420.   that shall remain nameless, feel 2 GB is sufficient to claim ISP
  3421.   status.  In this case news expires so fast I feel the spelling IsP is
  3422.   barely justified. A full newsfeed means a traffic of a few GB every
  3423.   day and this is an ever growing number.
  3424.  
  3425.  
  3426.  
  3427.   10.2.6.  Others
  3428.  
  3429.   There are many services available on the net and even though many have
  3430.   been put somewhat in the shadows by the web. Nevertheless, services
  3431.   like archie, gopher and wais just to name a few, still exist and
  3432.   remain valuable tools on the net. If you are serious about starting a
  3433.   major server you should also consider these services. Determining the
  3434.   required volumes is hard, it all depends on popularity and demand.
  3435.   Providing good service inevitably has its costs, disk space is just
  3436.   one of them.
  3437.  
  3438.  
  3439.  
  3440.   10.2.7.  Server Recommendations
  3441.  
  3442.   Servers today require large numbers of large disks to function
  3443.   satisfactorily in commercial settings. As mean time between failure
  3444.   (MTBF) decreases rapidly as the number of components increase it is
  3445.   advisable to look into using RAID for protection and use a number of
  3446.   medium sized drives rather than one single huge disk. Also look into
  3447.   the High Availability (HA) project for more information.
  3448.  
  3449.  
  3450.  
  3451.  
  3452.   10.3.  Pitfalls
  3453.  
  3454.   The dangers of splitting up everything into separate partitions are
  3455.   briefly mentioned in the section about volume management. Still,
  3456.   several people have asked me to emphasize this point more strongly:
  3457.   when one partition fills up it cannot grow any further, no matter if
  3458.   there is plenty of space in other partitions.
  3459.  
  3460.   In particular look out for explosive growth in the news spool
  3461.   (/var/spool/news). For multi user machines with quotas keep an eye on
  3462.   /tmp and /var/tmp as some people try to hide their files there, just
  3463.   look out for filenames ending in gif or jpeg...
  3464.  
  3465.   In fact, for single physical drives this scheme offers very little
  3466.   gains at all, other than making file growth monitoring easier (using
  3467.   'df') and physical track positioning. Most importantly there is no
  3468.   scope for parallel disk access. A freely available volume management
  3469.   system would solve this but this is still some time in the future.
  3470.   However, when more specialised file systems become available even a
  3471.   single disk could benefit from being divided into several partitions.
  3472.  
  3473.  
  3474.  
  3475.  
  3476.   11.  Disk Layout
  3477.  
  3478.   With all this in mind we are now ready to embark on the layout. I have
  3479.   based this on my own method developed when I got hold of 3 old SCSI
  3480.   disks and boggled over the possibilities.
  3481.  
  3482.   The tables in the appendices are designed to simplify the mapping
  3483.   process. They have been designed to help you go through the process of
  3484.   optimizations as well as making an useful log in case of system
  3485.   repair. A few examples are also given.
  3486.  
  3487.  
  3488.  
  3489.   11.1.  Selection for Partitioning
  3490.  
  3491.   Determine your needs and set up a list of all the parts of the file
  3492.   system you want to be on separate partitions and sort them in
  3493.   descending order of speed requirement and how much space you want to
  3494.   give each partition.
  3495.  
  3496.   The table in ``Appendix A'' section is a useful tool to select what
  3497.   directories you should put on different partitions. It is sorted in a
  3498.   logical order with space for your own additions and notes about
  3499.   mounting points and additional systems. It is therefore NOT sorted in
  3500.   order of speed, instead the speed requirements are indicated by
  3501.   bullets ('o').
  3502.  
  3503.   If you plan to RAID make a note of the disks you want to use and what
  3504.   partitions you want to RAID. Remember various RAID solutions offers
  3505.   different speeds and degrees of reliability.
  3506.  
  3507.   (Just to make it simple I'll assume we have a set of identical SCSI
  3508.   disks and no RAID)
  3509.  
  3510.  
  3511.  
  3512.   11.2.  Mapping Partitions to Drives
  3513.  
  3514.   Then we want to place the partitions onto physical disks. The point of
  3515.   the following algorithm is to maximise parallelizing and bus capacity.
  3516.   In this example the drives are A, B and C and the partitions are
  3517.   987654321 where 9 is the partition with the highest speed requirement.
  3518.   Starting at one drive we 'meander' the partition line over and over
  3519.   the drives in this way:
  3520.  
  3521.  
  3522.  
  3523.                A : 9 4 3
  3524.                B : 8 5 2
  3525.                C : 7 6 1
  3526.  
  3527.  
  3528.  
  3529.  
  3530.   This makes the 'sum of speed requirements' the most equal across each
  3531.   drive.
  3532.  
  3533.   Use the table in ``Appendix B'' section to select what drives to use
  3534.   for each partition in order to optimize for paralellicity.
  3535.  
  3536.   Note the speed characteristics of your drives and note each directory
  3537.   under the appropriate column. Be prepared to shuffle directories,
  3538.   partitions and drives around a few times before you are satisfied.
  3539.  
  3540.  
  3541.   11.3.  Sorting Partitions on Drives
  3542.  
  3543.   After that it is recommended to select partition numbering for each
  3544.   drive.
  3545.  
  3546.   Use the table in ``Appendix C'' section to select partition numbers in
  3547.   order to optimize for track characteristics.  At the end of this you
  3548.   should have a table sorted in ascending partition number. Fill these
  3549.   numbers back into the tables in appendix A and B.
  3550.  
  3551.   You will find these tables useful when running the partitioning
  3552.   program (fdisk or cfdisk) and when doing the installation.
  3553.  
  3554.  
  3555.  
  3556.   11.4.  Optimizing
  3557.  
  3558.   After this there are usually a few partitions that have to be
  3559.   'shuffled' over the drives either to make them fit or if there are
  3560.   special considerations regarding speed, reliability, special file
  3561.   systems etc. Nevertheless this gives what this author believes is a
  3562.   good starting point for the complete setup of the drives and the
  3563.   partitions. In the end it is actual use that will determine the real
  3564.   needs after we have made so many assumptions. After commencing
  3565.   operations one should assume a time comes when a repartitioning will
  3566.   be beneficial.
  3567.  
  3568.   For instance if one of the 3 drives in the above mentioned example is
  3569.   very slow compared to the two others a better plan would be as
  3570.   follows:
  3571.  
  3572.  
  3573.  
  3574.                A : 9 6 5
  3575.                B : 8 7 4
  3576.                C : 3 2 1
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.   11.4.1.  Optimizing by Characteristics
  3584.  
  3585.   Often drives can be similar in apparent overall speed but some
  3586.   advantage can be gained by matching drives to the file size
  3587.   distribution and frequency of access. Thus binaries are suited to
  3588.   drives with fast access that offer command queueing, and libraries are
  3589.   better suited to drives with larger transfer speeds where IDE offers
  3590.   good performance for the money.
  3591.  
  3592.  
  3593.  
  3594.   11.4.2.  Optimizing by Drive Parallelising
  3595.  
  3596.   Avoid drive contention by looking at tasks: for instance if you are
  3597.   accessing /usr/local/bin chances are you will soon also need files
  3598.   from /usr/local/lib so placing these at separate drives allows less
  3599.   seeking and possible parallel operation and drive caching. It is quite
  3600.   possible that choosing what may appear less than ideal drive
  3601.   characteristics will still be advantageous if you can gain parallel
  3602.   operations. Identify common tasks, what partitions they use and try to
  3603.   keep these on separate physical drives.
  3604.  
  3605.   Just to illustrate my point I will give a few examples of task
  3606.   analysis here.
  3607.  
  3608.  
  3609.  
  3610.      Office software
  3611.         such as editing, word processing and spreadsheets are typical
  3612.         examples of low intensity software both in terms of CPU and disk
  3613.         intensity. However, should you have a single server for a huge
  3614.         number of users you should not forget that most such software
  3615.         have auto save facilities which cause extra traffic, usually on
  3616.         the home directories. Splitting users over several drives would
  3617.         reduce contention.
  3618.  
  3619.  
  3620.      News
  3621.         readers also feature auto save features on home directories so
  3622.         ISPs should consider separating home directories
  3623.  
  3624.         News spools are notorious for their deeply nested directories
  3625.         and their large number of very small files. Loss of a news spool
  3626.         partition is not a big problem for most people, too, so they are
  3627.         good candidates for a RAID 0 setup with many small disks to
  3628.         distribute the many seeks among multiple spindles. It is
  3629.         recommended in the manuals and FAQs for the INN news server to
  3630.         put news spool and .overview files on separate drives for larger
  3631.         installations.
  3632.  
  3633.         There is also a web page dedicated to INN optimising
  3634.         <http://www.spinne.com/usenet/inn-perf.html> well worth reading.
  3635.  
  3636.  
  3637.  
  3638.      Database
  3639.         applications can be demanding both in terms of drive usage and
  3640.         speed requirements. The details are naturally application
  3641.         specific, read the documentation carefully with disk
  3642.         requirements in mind. Also consider RAID both for performance
  3643.         and reliability.
  3644.  
  3645.  
  3646.      E-mail
  3647.         reading and sending involves home directories as well as in- and
  3648.         outgoing spool files. If possible keep home directories and
  3649.         spool files on separate drives. If you are a mail server or a
  3650.         mail hub consider putting in- and outgoing spool directories on
  3651.         separate drives.
  3652.  
  3653.         Losing mail is an extremely bad thing, if you are managing an
  3654.         ISP or major hub. Think about RAIDing your mail spool and
  3655.         consider frequent backups.
  3656.  
  3657.  
  3658.      Software development
  3659.         can require a large number of directories for binaries,
  3660.         libraries, include files as well as source and project files. If
  3661.         possible split as much as possible across separate drives. On
  3662.         small systems you can place /usr/src and project files on the
  3663.         same drive as the home directories.
  3664.  
  3665.  
  3666.      Web browsing
  3667.         is becoming more and more popular. Many browsers have a local
  3668.         cache which can expand to rather large volumes. As this is used
  3669.         when reloading pages or returning to the previous page, speed is
  3670.         quite important here. If however you are connected via a well
  3671.         configured proxy server you do not need more than typically a
  3672.         few megabytes per user for a session.  See also the sections on
  3673.         ``Home Directories'' and ``WWW''.
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.   11.5.  Compromises
  3680.  
  3681.   One way to avoid the aforementioned pitfalls is to only set off fixed
  3682.   partitions to directories with a fairly well known size such as swap,
  3683.   /tmp and /var/tmp and group together the remainders into the remaining
  3684.   partitions using symbolic links.
  3685.  
  3686.   Example: a slow disk (slowdisk), a fast disk (fastdisk) and an
  3687.   assortment of files. Having set up swap and tmp on fastdisk; and /home
  3688.   and root on slowdisk we have (the fictitious) directories /a/slow,
  3689.   /a/fast, /b/slow and /b/fast left to allocate on the partitions
  3690.   /mnt.slowdisk and /mnt.fastdisk which represents the remaining
  3691.   partitions of the two drives.
  3692.  
  3693.   Putting /a or /b directly on either drive gives the same properties to
  3694.   the subdirectories. We could make all 4 directories separate
  3695.   partitions but would lose some flexibility in managing the size of
  3696.   each directory. A better solution is to make these 4 directories
  3697.   symbolic links to appropriate directories on the respective drives.
  3698.  
  3699.   Thus we make
  3700.  
  3701.  
  3702.  
  3703.        /a/fast point to /mnt.fastdisk/a/fast   or   /mnt.fastdisk/a.fast
  3704.        /a/slow point to /mnt.slowdisk/a/slow   or   /mnt.slowdisk/a.slow
  3705.        /b/fast point to /mnt.fastdisk/b/fast   or   /mnt.fastdisk/b.fast
  3706.        /b/slow point to /mnt.slowdisk/b/slow   or   /mnt.slowdisk/b.slow
  3707.  
  3708.  
  3709.  
  3710.  
  3711.   and we get all fast directories on the fast drive without having to
  3712.   set up a partition for all 4 directories. The second (right hand)
  3713.   alternative gives us a flatter files system which in this case can
  3714.   make it simpler to keep an overview of the structure.
  3715.  
  3716.   The disadvantage is that it is a complicated scheme to set up and plan
  3717.   in the first place and that all mount points and partitions have to be
  3718.   defined before the system installation.
  3719.  
  3720.  
  3721.  
  3722.  
  3723.   12.  Implementation
  3724.  
  3725.   Having done the layout you should now have a detailled description on
  3726.   what goes where. Most likely this will be on paper but hopefully
  3727.   someone will make a more automated system that can deal with
  3728.   everything from the design, through partitioning to formatting and
  3729.   installation. This is the route one will have to take to realise the
  3730.   design.
  3731.  
  3732.   Modern distributions come with installation tools that will guide you
  3733.   through partitioning and formatting and also set up /etc/fstab for you
  3734.   automatically. For later modifications, however, you will need to
  3735.   understand the underlying mechanisms.
  3736.  
  3737.  
  3738.  
  3739.   12.1.  Drives and Partitions
  3740.  
  3741.   When you start DOS or the like you will find all partitions labeled C:
  3742.   and onwards, with no differentiation on IDE, SCSI, network or whatever
  3743.   type of media you have. In the world of Linux this is rather
  3744.   different. During booting you will see partitions described like this:
  3745.  
  3746.   ______________________________________________________________________
  3747.   Dec  6 23:45:18 demos kernel: Partition check:
  3748.   Dec  6 23:45:18 demos kernel:  sda: sda1
  3749.   Dec  6 23:45:18 demos kernel:  hda: hda1 hda2
  3750.   ______________________________________________________________________
  3751.  
  3752.  
  3753.  
  3754.   SCSI drives are labelled sda, sdb, sdc etc, and (E)IDE drives are
  3755.   labelled hda, hdb, hdc etc.  There are also standard names for all
  3756.   devices, full information can be found in /dev/MAKEDEV and
  3757.   /usr/src/linux/Documentation/devices.txt.
  3758.  
  3759.   Partitions are labelled numerically for each drive hda1, hda2 and so
  3760.   on.  On SCSI drives there can be 15 partitions per drive, on EIDE
  3761.   drives there can be 63 partitions per drive. Both limits exceed what
  3762.   is currently useful for most disks.
  3763.   These are then mounted according to the file /etc/fstab before they
  3764.   appear as a part of the file system.
  3765.  
  3766.  
  3767.  
  3768.   12.2.  Partitioning
  3769.  
  3770.   First you have to partition each drive into a number of separate
  3771.   partitions.  Under Linux there are two main methods, fdisk and the
  3772.   more screen oriented cfdisk. These are complex programs, read the
  3773.   manual very carefully.
  3774.  
  3775.  
  3776.   Partitions come in 3 flavours, primary, extended and logical.  You
  3777.   have to use primary partitions for booting, but there is a maximum of
  3778.   4 primary partitions. If you want more you have to define an extended
  3779.   partition within which you define your logical partitions.
  3780.  
  3781.   Each partition has an identifier number which tells the operating
  3782.   system what it is, for Linux the types swap(82) and ext2fs(83) are the
  3783.   ones you will need to know.
  3784.  
  3785.   There is a readme file that comes with fdisk that gives more in-depth
  3786.   information on partitioning.
  3787.  
  3788.   Someone has just made a Partitioning HOWTO which contains excellent,
  3789.   in depth information on the nitty-gritty of partitioning. Rather than
  3790.   repeating it here and bloating this document further, I will instead
  3791.   refer you to it instead.
  3792.  
  3793.   Redhat has written a screen oriented utility called Disk Druid which
  3794.   is supposed to be a user friendly alternative to fdisk and cfdisk and
  3795.   also automates a few other things. Unfortunately this product is not
  3796.   quite mature so if you use it and cannot get it to work you are well
  3797.   advised to try fdisk or cfdisk.
  3798.  
  3799.   The Ranish Partition Manager
  3800.   <http://www.users.intercom.com/~ranish/part/> is another free
  3801.   alternative, while Partition Magic <http://www.powerquest.com> is a
  3802.   popular commercial alternative which also offers some support for
  3803.   resizing ext2fs partitions.
  3804.  
  3805.   Note that Windows will complain if it finds more than one primary
  3806.   partition on a drive.  Also it appears to assign drive letters to
  3807.   primary partitions as it finds disks before starting over from the
  3808.   first disk to assign subsequent drive names to logical partitions.
  3809.  
  3810.   If you want DOS/Windows on your system you should make that partition
  3811.   first, a primary one to boot to, made with the DOS fdisk program.
  3812.   Then if you want NT you put that one in.  Finally, for Linux, you
  3813.   create those partitions with the Linux fdisk program or equivalents.
  3814.   Linux is flexible enough to boot from both primary as well as logical
  3815.   partitions.
  3816.  
  3817.  
  3818.  
  3819.   12.3.  Repartitioning
  3820.  
  3821.   Sometimes it is necessary to change the sizes of existing partitions
  3822.   while keeping the contents intact. One way is of course to back up
  3823.   everything, recreate new partitions and then restore the old contents,
  3824.   and while this gives your back up system a good test it is also rather
  3825.   time consuming.
  3826.  
  3827.   Partition resizing is a simpler alternative where a file system is
  3828.   first shrunk to desired volume and then the partition table is updated
  3829.   to reflect the new end of partition position. This process is
  3830.   therefore very file system sensitive.
  3831.  
  3832.   Repartitioning requires there to be free space at the end of the file
  3833.   space so to ensure you are able to shrink the size you should first
  3834.   defragment your drive and empty any wastebaskets.
  3835.  
  3836.   Using fips <http://www.igd.fgh.de/~aschaefe/fips/> you can resize a
  3837.   fat partition, and the latest version 1.6 of fips or fips 2.0 are also
  3838.   able to resize fat32 partition.  Note that these programs actually run
  3839.   under DOS.
  3840.  
  3841.   Resizing other file systems are much more complicated but one popular
  3842.   commercial system Partition Magic <http://www.powerquest.com> is able
  3843.   to resize more file system types, including ext2fs using the resize2fs
  3844.   program.
  3845.  
  3846.  
  3847.   In order to get the most out of fips you should first delete
  3848.   unnecessary files, empty wastebaskets etc.  before defragmenting your
  3849.   drive.  This way you can allocate more space to other partitions.  Id
  3850.   the program complains there are still files at the end of your drive
  3851.   it is probably hidden files generated by Microsoft Mirror or Norton
  3852.   Image.  These are probably called image.idx and image.dat and contain
  3853.   backups of some system files.
  3854.  
  3855.   There are reports that in some Windows defragmentation programs you
  3856.   should make sure the box "allow Windows to move files around" is not
  3857.   checked, otherwise you will end up with some files in the last
  3858.   cylinder of the partition which will prevent FIPS from reclaiming
  3859.   space.
  3860.  
  3861.   If you still have unmovable files at the end of your DOS partition you
  3862.   should get the DOS program "showfat" version 3.0 or higher.  This
  3863.   shows you what files are where so you can deal with them directly.
  3864.  
  3865.   Repartitioning is as dangerous process as any other partitioning so
  3866.   you are advised to have a fresh backup handy.
  3867.  
  3868.  
  3869.  
  3870.   12.4.  Microsoft Partition Bug
  3871.  
  3872.   In Microsoft products all the way up to Win 98 there is a tricky bug
  3873.   that can cause you a bit of trouble: if you have several primary fat
  3874.   partitions and the last extended partition is not a fat partition the
  3875.   Microsoft system will try to mount the last partition as if it were a
  3876.   FAT partition in place of the last primary FAT partition.
  3877.  
  3878.   There is more information <http://www.v-com.com/95Notes.html>
  3879.   available on the net on this.
  3880.  
  3881.   To avoid this you can place a small logical fat partition at the very
  3882.   end of your disk.
  3883.  
  3884.   Since some hardware comes with setup software that is available under
  3885.   DOS only this could come in handy anyway. Notable examples are RAID
  3886.   controllers from DPT and a number of networking cards.
  3887.  
  3888.  
  3889.   12.5.  Multiple Devices ( md )
  3890.  
  3891.   Being in a state of flux you should make sure to read the latest
  3892.   documentation on this kernel feature. It is not yet stable, beware.
  3893.  
  3894.  
  3895.   Briefly explained it works by adding partitions together into new
  3896.   devices md0, md1 etc. using mdadd before you activate them using
  3897.   mdrun. This process can be automated using the file /etc/mdtab.
  3898.  
  3899.   The latest md system uses a /etc/raidtab and a different syntax. Make
  3900.   sure your RAID-tools package matches the md version as the internal
  3901.   protocol has changed.
  3902.  
  3903.   Then you then treat these like any other partition on a drive. Proceed
  3904.   with formatting etc. as described below using these new devices.
  3905.  
  3906.   There is now also a HOWTO in development for RAID using md you should
  3907.   read.
  3908.  
  3909.  
  3910.  
  3911.   12.6.  Formatting
  3912.  
  3913.   Next comes partition formatting, putting down the data structures that
  3914.   will describe the files and where they are located. If this is the
  3915.   first time it is recommended you use formatting with verify. Strictly
  3916.   speaking it should not be necessary but this exercises the I/O hard
  3917.   enough that it can uncover potential problems, such as incorrect
  3918.   termination, before you store your precious data. Look up the command
  3919.   mkfs for more details.
  3920.  
  3921.   Linux can support a great number of file systems, rather than
  3922.   repeating the details you can read the man page for fs which describes
  3923.   them in some details. Note that your kernel has to have the drivers
  3924.   compiled in or made as modules in order to be able to use these
  3925.   features. When the time comes for kernel compiling you should read
  3926.   carefully through the file system feature list. If you use make
  3927.   menuconfig you can get online help for each file system type.
  3928.  
  3929.   Note that some rescue disk systems require minix, msdos and ext2fs to
  3930.   be compiled into the kernel.
  3931.  
  3932.   Also swap partitions have to be prepared, and for this you use mkswap.
  3933.  
  3934.  
  3935.  
  3936.   12.7.  Mounting
  3937.  
  3938.   Data on a partition is not available to the file system until it is
  3939.   mounted on a mount point. This can be done manually using mount or
  3940.   automatically during booting by adding appropriate lines to
  3941.   /etc/fstab. Read the manual for mount and pay close attention to the
  3942.   tabulation.
  3943.  
  3944.  
  3945.  
  3946.   12.8.  fstab
  3947.  
  3948.   During the booting process the system mounts all partitions as
  3949.   described in the fstab file which can look something like this:
  3950.  
  3951.  
  3952.  
  3953.  
  3954.        # <file system>   <mount point>   <type>  <options>   <dump>  <pass>
  3955.        /dev/hda2          /               ext2    defaults    0       1
  3956.        None               none            swap    sw          0       0
  3957.        proc               /proc           proc    defaults    0       0
  3958.        /dev/hda1          /dosc           vfat    defaults    0       1
  3959.  
  3960.  
  3961.   This file is somewhat sensitive to the formatting used so it is best
  3962.   and also most convenient to edit it using one of the editing tools
  3963.   made for this purpose.
  3964.  
  3965.   Briefly, the fields are partition name, where to mount the partition,
  3966.   type of file system, when to mount, when to dump for backup and when
  3967.   to do fsck.
  3968.  
  3969.   Linux offers the possibility of parallel file checking (fsck) but to
  3970.   be efficient it is important not to fsck more than one partition on a
  3971.   drive at a time.
  3972.  
  3973.   For more information refer to the man page for mount and fstab.
  3974.  
  3975.  
  3976.  
  3977.   12.9.  Recommendations
  3978.  
  3979.   Having constructed and implemented your clever scheme you are well
  3980.   advised to make a complete record of it all, on paper.  After all
  3981.   having all the necessary information on disk is no use if the machine
  3982.   is down.
  3983.  
  3984.   Partition tables can be damaged or lost, in which case it is
  3985.   excruciatingly important that you enter the exact same numbers into
  3986.   fdisk so you can rescue your system.  You can use the program printpar
  3987.   to make a clear record of the tables. Also write down the SCSI numbers
  3988.   or IDE names for each disk so you can put the system together again in
  3989.   the right order.
  3990.  
  3991.  
  3992.  
  3993.  
  3994.   13.  Maintenance
  3995.  
  3996.   It is the duty of the system manager to keep an eye on the drives and
  3997.   partitions. Should any of the partitions overflow, the system is
  3998.   likely to stop working properly, no matter how much space is available
  3999.   on other partitions, until space is reclaimed.
  4000.  
  4001.   Partitions and disks are easily monitored using df and should be done
  4002.   frequently, perhaps using a cron job or some other general system
  4003.   management tool.
  4004.  
  4005.   Do not forget the swap partitions, these are best monitored using one
  4006.   of the memory statistics programs such as free, procinfo or top.
  4007.  
  4008.   Drive usage monitoring is more difficult but it is important for the
  4009.   sake of performance to avoid contention - placing too much demand on a
  4010.   single drive if others are available and idle.
  4011.  
  4012.   It is important when installing software packages to have a clear idea
  4013.   where the various files go. As previously mentioned GCC keeps binaries
  4014.   in a library directory and there are also other programs that for
  4015.   historical reasons are hard to figure out, X11 for instance has an
  4016.   unusually complex structure.
  4017.  
  4018.   When your system is about to fill up it is about time to check and
  4019.   prune old logging messages as well as hunt down core files. Proper use
  4020.   of ulimit in global shell settings can help saving you from having
  4021.   core files littered around the system.
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.   13.1.  Backup
  4028.  
  4029.   The observant reader might have noticed a few hints about the
  4030.   usefulness of making backups. Horror stories are legio about accidents
  4031.   and what happened to the person responsible when the backup turned out
  4032.   to be non-functional or even non existent. You might find it simpler
  4033.   to invest in proper backups than a second, secret identity.
  4034.  
  4035.   There are many options and also a mini-HOWTO ( Backup-With-MSDOS )
  4036.   detailling what you need to know. In addition to the DOS specifics it
  4037.   also contains general information and further leads.
  4038.  
  4039.   In addition to making these backups you should also make sure you can
  4040.   restore the data. Not all systems verify that the data written is
  4041.   correct and many administrators have started restoring the system
  4042.   after an accident happy in the belief that everything is working, only
  4043.   to discover to their horror that the backups were useless. Be careful.
  4044.  
  4045.  
  4046.  
  4047.   13.2.  Defragmentation
  4048.  
  4049.   This is very dependent on the file system design, some suffer fast and
  4050.   nearly debilitating fragmentation. Fortunately for us, ext2fs does not
  4051.   belong to this group and therefore there has been very little talk
  4052.   about defragmentation tools. It does in fact exist but is hardly ever
  4053.   needed.
  4054.  
  4055.   If for some reason you feel this is necessary, the quick and easy
  4056.   solution is to do a backup and a restore. If only a small area is
  4057.   affected, for instance the home directories, you could tar it over to
  4058.   a temporary area on another partition, verify the archive, delete the
  4059.   original and then untar it back again.
  4060.  
  4061.  
  4062.  
  4063.   13.3.  Deletions
  4064.  
  4065.   Quite often disk space shortages can be remedied simply by deleting
  4066.   unnecessary files that accumulate around the system. Quite often
  4067.   programs that terminate abnormally cause all kinds of mess lying
  4068.   around the oddest places. Normally a core dump results after such an
  4069.   incident and unless you are going to debug it you can simply delete
  4070.   it. These can be found everywhere so you are advised to do a global
  4071.   search for them now and then.
  4072.  
  4073.   Unexpected termination can also cause all sorts of temporary files
  4074.   remaining in places like /tmp or /var/tmp, files that are
  4075.   automatically removed when the program ends normally. Rebooting cleans
  4076.   up some of these areas but not necessary all and if you have a long
  4077.   uptime you could end up with a lot of old junk. If space is short you
  4078.   have to delete with care, make sure the file is not in active use
  4079.   first. Utilities like file can often tell you what kind of file you
  4080.   are looking at.
  4081.  
  4082.   Many things are logged when the system is running, mostly to files in
  4083.   the /var/log area. In particular the file /var/log/messages tends to
  4084.   grow until deleted. It is a good idea to keep a small archive of old
  4085.   log files around for comparison should the system start to behave
  4086.   oddly.
  4087.  
  4088.   If the mail or news system is not working properly you could have
  4089.   excessive growth in their spool areas, /var/spool/mail and
  4090.   /var/spool/news respectively. Beware of the overview files as these
  4091.   have a leading dot which makes them invisible to ls -l, it is always
  4092.   better to use ls -Al which will reveal them.
  4093.   User space overflow is a particularly tricky topic. Wars have been
  4094.   waged between system administrators and users. Tact, diplomacy and a
  4095.   generous budget for new drives is what is needed. Make use of the
  4096.   message-of-the-day feature, information displayed during login from
  4097.   the /etc/motd file to tell users when space is short.  Setting the
  4098.   default shell settings to prevent core files being dumped can save you
  4099.   a lot of work too.
  4100.  
  4101.   Certain kinds of people try to hide files around the system, usually
  4102.   trying to take advantage of the fact that files with a leading dot in
  4103.   the name are invisible to the ls command.  One common example are
  4104.   files that look like ... that normally either are not seen, or, when
  4105.   using ls -al disappear in the noise of normal files like . or .. that
  4106.   are in every directory.  There is however a countermeasure to this,
  4107.   use ls -Al that suppresses . or .. but shows all other dot-files.
  4108.  
  4109.  
  4110.  
  4111.   13.4.  Upgrades
  4112.  
  4113.   No matter how large your drives, time will come when you will find you
  4114.   need more. As technology progresses you can get ever more for your
  4115.   money. At the time of writing this, it appears that 6.4 GB drives
  4116.   gives you the most bang for your bucks.
  4117.  
  4118.   Note that with IDE drives you might have to remove an old drive, as
  4119.   the maximum number supported on your mother board is normally only 2
  4120.   or some times 4. With SCSI you can have up to 7 for narrow (8-bit)
  4121.   SCSI or up to 15 for wide (15 bit) SCSI, per channel. Some host
  4122.   adapters can support more than a single channel and in any case you
  4123.   can have more than one host adapter per system. My personal
  4124.   recommendation is that you will most likely be better off with SCSI in
  4125.   the long run.
  4126.  
  4127.   The question comes, where should you put this new drive? In many cases
  4128.   the reason for expansion is that you want a larger spool area, and in
  4129.   that case the fast, simple solution is to mount the drive somewhere
  4130.   under /var/spool. On the other hand newer drives are likely to be
  4131.   faster than older ones so in the long run you might find it worth your
  4132.   time to do a full reorganizing, possibly using your old design sheets.
  4133.  
  4134.   If the upgrade is forced by running out of space in partitions used
  4135.   for things like /usr or /var the upgrade is a little more involved.
  4136.   You might consider the option of a full re-installation from your
  4137.   favourite (and hopefully upgraded) distribution. In this case you will
  4138.   have to be careful not to overwrite your essential setups. Usually
  4139.   these things are in the /etc directory. Proceed with care, fresh
  4140.   backups and working rescue disks. The other possibility is to simply
  4141.   copy the old directory over to the new directory which is mounted on a
  4142.   temporary mount point, edit your /etc/fstab file, reboot with your new
  4143.   partition in place and check that it works.  Should it fail you can
  4144.   reboot with your rescue disk, re-edit /etc/fstab and try again.
  4145.  
  4146.   Until volume management becomes available to Linux this is both
  4147.   complicated and dangerous. Do not get too surprised if you discover
  4148.   you need to restore your system from a backup.
  4149.  
  4150.   The Tips-HOWTO gives the following example on how to move an entire
  4151.   directory structure across:
  4152.  
  4153.   ______________________________________________________________________
  4154.   (cd /source/directory; tar cf - . ) | (cd /dest/directory; tar xvfp -)
  4155.   ______________________________________________________________________
  4156.  
  4157.  
  4158.  
  4159.   While this approach to moving directory trees is portable among many
  4160.   Unix systems, it is inconvenient to remember. Also, it fails for
  4161.   deeply nested directory trees when pathnames become to long to handle
  4162.   for tar (GNU tar has special provisions to deal with long pathnames).
  4163.  
  4164.   If you have access to GNU cp (which is always the case on Linux
  4165.   systems), you could as well use
  4166.  
  4167.  
  4168.   ______________________________________________________________________
  4169.   cp -av /source/directory /dest/directory
  4170.   ______________________________________________________________________
  4171.  
  4172.  
  4173.  
  4174.   GNU cp knows specifically about symbolic links, FIFOs and device files
  4175.   and will copy them correctly.
  4176.  
  4177.   Remember that it might not be a good idea to try to transfer /dev or
  4178.   /proc.
  4179.  
  4180.  
  4181.  
  4182.  
  4183.   13.5.  Recovery
  4184.  
  4185.   System crashes come in many and entertaining flavours, and partition
  4186.   table corruption always guarantees plenty of excitement.  A recent and
  4187.   undoubtedly useful tool for those of us who are happy with the normal
  4188.   level of excitement, is gpart <http://www.stud.uni-
  4189.   hannover.de/user/76201/gpart> which means "Guess PC-Type hard disk
  4190.   partitions". Useful.
  4191.  
  4192.  
  4193.  
  4194.  
  4195.   14.  Advanced Issues
  4196.  
  4197.   Linux and related systems offer plenty of possibilities for fast,
  4198.   efficient and devastating destruction. This document is no exception.
  4199.   With power comes dangers and the following sections describe a few
  4200.   more esoteric issues that should not be attempted before reading and
  4201.   understanding the documentation, the issues and the dangers. You
  4202.   should also make a backup. Also remember to try to restore the system
  4203.   from scratch from your backup at least once.  Otherwise you might not
  4204.   be the first to be found with a perfect backup of your system and no
  4205.   tools available to reinstall it (or, even more embarrassing, some
  4206.   critical files missing on tape).
  4207.  
  4208.   The techniques described here are rarely necessary but can be used for
  4209.   very specific setups. Think very clearly through what you wish to
  4210.   accomplish before playing around with this.
  4211.  
  4212.  
  4213.   14.1.  Hard Disk Tuning
  4214.  
  4215.   The hard drive parameters can be tuned using the hdparms utility. Here
  4216.   the most interesting parameter is probably the read-ahead parameter
  4217.   which determines how much prefetch should be done in sequential
  4218.   reading.
  4219.  
  4220.   If you want to try this out it makes most sense to tune for the
  4221.   characteristic file size on your drive but remember that this tuning
  4222.   is for the entire drive which makes it a bit more difficult. Probably
  4223.   this is only of use on large servers using dedicated news drives etc.
  4224.  
  4225.   For safety the default hdparm settings are rather conservative. The
  4226.   disadvantage is that this mean you can get lost interrupts if you have
  4227.   a high frequency of IRQs as you would when using the serial port and
  4228.   an IDE disk as IRQs from the latter would mask other IRQs. This would
  4229.   be noticeable as less then ideal performance when downloading data
  4230.   from the net to disk. Setting hdparm -u1 device would prevent this
  4231.   masking and either improve your performance or, depending on hardware,
  4232.   corrupt the data on your disk. Experiment with caution and fresh
  4233.   backups.
  4234.  
  4235.  
  4236.   14.2.  File System Tuning
  4237.  
  4238.   Most file systems come with a tuning utility and for ext2fs there is
  4239.   the tune2fs utility. Several parameters can be modified but perhaps
  4240.   the most useful parameter here is what size should be reserved and who
  4241.   should be able to take advantage of this which could help you getting
  4242.   more useful space out of your drives, possibly at the cost of less
  4243.   room for repairing a system should it crash.
  4244.  
  4245.  
  4246.   14.3.  Spindle Synchronizing
  4247.  
  4248.   This should not in itself be dangerous, other than the peculiar fact
  4249.   that the exact details of the connections remain unclear for many
  4250.   drives. The theory is simple: keeping a fixed phase difference between
  4251.   the different drives in a RAID setup makes for less waiting for the
  4252.   right track to come into position for the read/write head. In practice
  4253.   it now seems that with large read-ahead buffers in the drives the
  4254.   effect is negligible.
  4255.  
  4256.   Spindle synchronisation should not be used on RAID0 or RAID 0/1 as you
  4257.   would then lose the benefit of having the read heads over different
  4258.   areas of the mirrored sectors.
  4259.  
  4260.  
  4261.  
  4262.   15.  Further Information
  4263.  
  4264.   There is wealth of information one should go through when setting up a
  4265.   major system, for instance for a news or general Internet service
  4266.   provider.  The FAQs in the following groups are useful:
  4267.  
  4268.  
  4269.   15.1.  News groups
  4270.  
  4271.   Some of the most interesting news groups are:
  4272.  
  4273.   ╖  Storage <news:comp.arch.storage>.
  4274.  
  4275.   ╖  PC storage <news:comp.sys.ibm.pc.hardware.storage>.
  4276.  
  4277.   ╖  AFS <news:alt.filesystems.afs>.
  4278.  
  4279.   ╖  SCSI <news:comp.periphs.scsi>.
  4280.  
  4281.   ╖  Linux setup <news:comp.os.linux.setup>.
  4282.  
  4283.   Most newsgroups have their own FAQ that are designed to answer most of
  4284.   your questions, as the name Frequently Asked Questions indicate. Fresh
  4285.   versions should be posted regularly to the relevant newsgroups. If you
  4286.   cannot find it in your news spool you could go directly to the FAQ
  4287.   main archive FTP site <ftp://rtfm.mit.edu>. The WWW versions can be
  4288.   browsed at FAQ main archive WWW site <http://www.cis.ohio-
  4289.   state.edu/hypertext/faq/usenet/FAQ-List.html>.
  4290.  
  4291.   Some FAQs have their own home site, of particular interest here are
  4292.  
  4293.   ╖  SCSI FAQ <http://www.paranoia.com/~filipg/HTML/LINK/F_SCSI.html>
  4294.      and
  4295.  
  4296.   ╖  comp.arch.storage FAQ
  4297.      <http://alumni.caltech.edu/~rdv/comp_arch_storage/FAQ-1.html>.
  4298.  
  4299.  
  4300.  
  4301.   15.2.  Mailing Lists
  4302.  
  4303.   These are low noise channels mainly for developers. Think twice before
  4304.   asking questions there as noise delays the development.  Some relevant
  4305.   lists are linux-raid, linux-scsi and linux-ext2fs.  Many of the most
  4306.   useful mailing lists run on the vger.rutgers.edu server but this is
  4307.   notoriously overloaded, so try to find a mirror. There are some lists
  4308.   mirrored at The Redhat Home Page <http://www.redhat.com>.  Many lists
  4309.   are also accessible at linuxhq <http://www.linuxhq.com/lnxlists>, and
  4310.   the rest of the web site is a gold mine of useful information.
  4311.  
  4312.   If you want to find out more about the lists available you can send a
  4313.   message with the line lists to the list server at vger.rutgers.edu (
  4314.   majordomo@vger.rutgers.edu).  If you need help on how to use the mail
  4315.   server just send the line help to the same address.  Due to the
  4316.   popularity of this server it is likely it takes a bit to time before
  4317.   you get a reply or even get messages after you send a subscribe
  4318.   command.
  4319.  
  4320.   There is also a number of other majordomo list servers that can be of
  4321.   interest such as the EATA driver list ( linux-eata@mail.uni-mainz.de)
  4322.   and the Intelligent IO list linux-i2o@dpt.com.
  4323.  
  4324.   Mailing lists are in a state of flux but you can find links to a
  4325.   number of interesting lists from the Linux Documentation Homepage
  4326.   <http://metalab.unc.edu/LDP/>.
  4327.  
  4328.  
  4329.  
  4330.   15.3.  HOWTO
  4331.  
  4332.   These are intended as the primary starting points to get the
  4333.   background information as well as show you how to solve a specific
  4334.   problem.  Some relevant HOWTOs are Bootdisk, Installation,  SCSI and
  4335.   UMSDOS.  The main site for these is the LDP archive
  4336.   <http://metalab.unc.edu/LDP/> at Metalab (formerly known as Sunsite).
  4337.  
  4338.   There is a a new HOWTO out that deals with setting up a DPT RAID
  4339.   system, check out the DPT RAID HOWTO homepage
  4340.   <http://www.ram.org/computing/linux/dpt_raid.html>.
  4341.  
  4342.  
  4343.  
  4344.  
  4345.   15.4.  Mini-HOWTO
  4346.  
  4347.   These are the smaller free text relatives to the HOWTOs.  Some
  4348.   relevant mini-HOWTOs are Backup-With-MSDOS, Diskless, LILO, Large
  4349.   Disk, Linux+DOS+Win95+OS2, Linux+OS2+DOS, Linux+Win95, NFS-Root,
  4350.   Win95+Win+Linux, ZIP Drive .  You can find these at the same place as
  4351.   the HOWTOs, usually in a sub directory called mini. Note that these
  4352.   are scheduled to be converted into SGML and become proper HOWTOs in
  4353.   the near future.
  4354.  
  4355.   The old Linux Large IDE mini-HOWTO is no longer valid, instead read
  4356.   /usr/src/linux/drivers/block/README.ide or
  4357.   /usr/src/linux/Documentation/ide.txt.
  4358.  
  4359.  
  4360.   15.5.  Local Resources
  4361.  
  4362.   In most distributions of Linux there is a document directory
  4363.   installed, have a look in the /usr/doc directory.  where most packages
  4364.   store their main documentation and README files etc.  Also you will
  4365.   here find the HOWTO archive ( /usr/doc/HOWTO) of ready formatted
  4366.   HOWTOs and also the mini-HOWTO archive ( /usr/doc/HOWTO/mini
  4367.   <file:///usr/doc/HOWTO/mini>) of plain text documents.
  4368.  
  4369.   Many of the configuration files mentioned earlier can be found in the
  4370.   /etc directory. In particular you will want to work with the
  4371.   /etc/fstab file that sets up the mounting of partitions and possibly
  4372.   also /etc/mdtab file that is used for the md system to set up RAID.
  4373.  
  4374.   The kernel source in /usr/src/linux <file:///usr/src/linux> is, of
  4375.   course, the ultimate documentation. In other words, use the source,
  4376.   Luke.  It should also be pointed out that the kernel comes not only
  4377.   with source code which is even commented (well, partially at least)
  4378.   but also an informative documentation directory
  4379.   <file:///usr/src/linux/Documentation>.  If you are about to ask any
  4380.   questions about the kernel you should read this first, it will save
  4381.   you and many others a lot of time and possibly embarrassment.
  4382.  
  4383.   Also have a look in your system log file ( /var/log/messages) to see
  4384.   what is going on and in particular how the booting went if too much
  4385.   scrolled off your screen. Using tail -f /var/log/messages in a
  4386.   separate window or screen will give you a continuous update of what is
  4387.   going on in your system.
  4388.  
  4389.   You can also take advantage of the /proc file system that is a window
  4390.   into the inner workings of your system.  Use cat rather than more to
  4391.   view the files as they are reported as being zero length.
  4392.  
  4393.  
  4394.  
  4395.  
  4396.   15.6.  Web Pages
  4397.  
  4398.   There is a huge number of informative web pages out there and by their
  4399.   very nature they change quickly so don't be too surprised if these
  4400.   links become quickly outdated.
  4401.  
  4402.   A good starting point is of course the Metalab LDP archive
  4403.   <http://metalab.unc.edu/LDP/> that is a information central for
  4404.   documentation, project pages and much, much more.
  4405.  
  4406.  
  4407.  
  4408.   ╖  Mike Neuffer, the author of the DPT caching RAID controller
  4409.      drivers, has some interesting pages on SCSI <http://www.uni-
  4410.      mainz.de/~neuffer/scsi> and DPT <http://www.uni-
  4411.      mainz.de/~neuffer/scsi/dpt>.
  4412.  
  4413.   ╖  Software RAID development information can be found at Linux Kernel
  4414.      site <http://www.kernel.org/> along with patches and utilities.
  4415.  
  4416.   ╖  Disk related information on benchmarking, RAID, reliability and
  4417.      much, much more can be found at Linas Vepstas <http://linas.org>
  4418.      project page.
  4419.  
  4420.   ╖  There is also information available on how to RAID the root
  4421.      partition <ftp://ftp.bizsystems.com/pub/raid/Root-RAID-HOWTO.html>
  4422.      and what software packages are needed to achieve this.
  4423.   ╖  In depth documentation on ext2fs
  4424.      <http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html> is also
  4425.      available.
  4426.  
  4427.  
  4428.  
  4429.   ╖  People who looking for information on VFAT, FAT32 and Joliet could
  4430.      have a look at the development page
  4431.      <http://bmrc.berkeley.edu/people/chaffee/index.html>.  These
  4432.      drivers are now in the 2.1.x kernel development series as well as
  4433.      in 2.0.34 and later.
  4434.  
  4435.  
  4436.   ╖  For more information on booting and also some BSD information have
  4437.      a look at booting information
  4438.      <http://www.paranoia.com/~vax/boot.html> page.
  4439.  
  4440.   For diagrams and information on all sorts of disk drives, controllers
  4441.   etc. both for current and discontinued lines The Ref
  4442.   <http://theref.c3d.rl.af.mil> is the site you need. There is a lot of
  4443.   useful information here, a real treasure trove.  You can also download
  4444.   the database using FTP <ftp://theref.c3d.rl.af.mil/public>.
  4445.  
  4446.   Please let me know if you have any other leads that can be of
  4447.   interest.
  4448.  
  4449.  
  4450.  
  4451.  
  4452.   15.7.  Search Engines
  4453.  
  4454.   Remember you can also use the web search engines and that some, like
  4455.  
  4456.   ╖  Altavista <http://www.altavista.digital.com>
  4457.  
  4458.   ╖  Excite <http://www.excite.com>
  4459.  
  4460.   ╖  Hotbot <http://www.hotbot.com>
  4461.  
  4462.      can also search usenet news.
  4463.  
  4464.   Also remember that Dejanews <http://www.dejanews.com> is a dedicated
  4465.   news searcher that keeps a news spool from early 1995 and onwards.
  4466.  
  4467.  
  4468.   If you have to ask for help you are most likely to get help in the
  4469.   Linux Setup <news:comp.os.linux.setup> news group.  Due to large
  4470.   workload and a slow network connection I am not able to follow that
  4471.   newsgroup so if you want to contact me you have to do so by e-mail.
  4472.  
  4473.  
  4474.  
  4475.   16.  Getting Help
  4476.  
  4477.  
  4478.   In the end you might find yourself unable to solve your problems and
  4479.   need help from someone else. The most efficient way is either to ask
  4480.   someone local or in your nearest Linux user group, search the web for
  4481.   the nearest one.
  4482.  
  4483.   Another possibility is to ask on Usenet News in one of the many, many
  4484.   newsgroups available. The problem is that these have such a high
  4485.   volume and noise (called low signal-to-noise ratio) that your question
  4486.   can easily fall through unanswered.
  4487.  
  4488.  
  4489.   No matter where you ask it is important to ask well or you will not be
  4490.   taken seriously. Saying just my disk does not work is not going to
  4491.   help you and instead the noise level is increased even further and if
  4492.   you are lucky someone will ask you to clarify.
  4493.  
  4494.   Instead describe your problems in some detail that will enable people
  4495.   to help you. The problem could lie somewhere you did not expect.
  4496.   Therefore you are advised to list up the following information on your
  4497.   system:
  4498.  
  4499.  
  4500.      Hardware
  4501.  
  4502.      ╖  Processor
  4503.  
  4504.      ╖  DMA
  4505.  
  4506.      ╖  IRQ
  4507.  
  4508.      ╖  Chip set (LX, BX etc)
  4509.  
  4510.      ╖  Bus (ISA, VESA, PCI etc)
  4511.  
  4512.      ╖  Expansion cards used (Disk controllers, video, IO etc)
  4513.  
  4514.  
  4515.      Software
  4516.  
  4517.      ╖  BIOS (On motherboard and possibly SCSI host adapters)
  4518.  
  4519.      ╖  LILO, if used
  4520.  
  4521.      ╖  Linux kernel version as well as possible modifications and
  4522.         patches
  4523.  
  4524.      ╖  Kernel parameters, if any
  4525.  
  4526.      ╖  Software that shows the error (with version number or date)
  4527.  
  4528.  
  4529.      Peripherals
  4530.  
  4531.      ╖  Type of disk drives with manufacturer name, version and type
  4532.  
  4533.      ╖  Other relevant peripherals connected to the same busses
  4534.  
  4535.  
  4536.   As an example of how interrelated these problems are: an old chip set
  4537.   caused problems with a certain combination of video controller and
  4538.   SCSI host adapter.
  4539.  
  4540.   Remember that booting text is logged to /var/log/messages which can
  4541.   answer most of the questions above. Obviously if the drives fail you
  4542.   might not be able to get  the log saved to disk but you can at least
  4543.   scroll back up the screen using the SHIFT and PAGE UP keys. It may
  4544.   also be useful to include part of this in your request for help but do
  4545.   not go overboard, keep it brief as a complete log file dumped to
  4546.   Usenet News is more than a little annoying.
  4547.  
  4548.  
  4549.  
  4550.   17.  Concluding Remarks
  4551.  
  4552.   Disk tuning and partition decisions are difficult to make, and there
  4553.   are no hard rules here. Nevertheless it is a good idea to work more on
  4554.   this as the payoffs can be considerable. Maximizing usage on one drive
  4555.   only while the others are idle is unlikely to be optimal, watch the
  4556.   drive light, they are not there just for decoration. For a properly
  4557.   set up system the lights should look like Christmas in a disco. Linux
  4558.   offers software RAID but also support for some hardware base SCSI RAID
  4559.   controllers. Check what is available. As your system and experiences
  4560.   evolve you are likely to repartition and you might look on this
  4561.   document again. Additions are always welcome.
  4562.  
  4563.   Finally I'd like to sum up my recommendations:
  4564.  
  4565.   ╖  Disk is cheap but the data they contain could be much more
  4566.      valuable, use and test your backup system.
  4567.  
  4568.   ╖  Work is also expensive, make sure you get large enough disks as
  4569.      refitting new or repartitioning old disks takes time.
  4570.  
  4571.   ╖  Think reliability, replace old disks before they fail.
  4572.  
  4573.   ╖  Keep a paper copy of your setup, having it all on disk when the
  4574.      machine is down will not help you much.
  4575.  
  4576.   ╖  Start out with a simple design with a minimum of fancy technology
  4577.      and rather fit it in later. In general adding is easier than
  4578.      replacing, be it disks, technology or other features.
  4579.  
  4580.  
  4581.  
  4582.   17.1.  Coming Soon
  4583.  
  4584.   There are a few more important things that are about to appear here.
  4585.   In particular I will add more example tables as I am about to set up
  4586.   two fairly large and general systems, one at work and one at home.
  4587.   These should give some general feeling on how a system can be set up
  4588.   for either of these two purposes. Examples of smooth running existing
  4589.   systems are also welcome.
  4590.  
  4591.   There is also a fair bit of work left to do on the various kinds of
  4592.   file systems and utilities.
  4593.  
  4594.   There will be a big addition on drive technologies coming soon as well
  4595.   as a more in depth description on using fdisk, cfdisk and sfdisk.  The
  4596.   file systems will be beefed up as more features become available as
  4597.   well as more on RAID and what directories can benefit from what RAID
  4598.   level.
  4599.  
  4600.  
  4601.   There is some minor overlapping with the Linux Filesystem Structure
  4602.   Standard and FHS that I hope to integrate better soon, which will
  4603.   probably mean a big reworking of all the tables at the end of this
  4604.   document.
  4605.  
  4606.   As more people start reading this I should get some more comments and
  4607.   feedback. I am also thinking of making a program that can automate a
  4608.   fair bit of this decision making process and although it is unlikely
  4609.   to be optimum it should provide a simpler, more complete starting
  4610.   point.
  4611.  
  4612.  
  4613.   17.2.  Request for Information
  4614.  
  4615.   It has taken a fair bit of time to write this document and although
  4616.   most pieces are beginning to come together there are still some
  4617.   information needed before we are out of the beta stage.
  4618.  
  4619.  
  4620.  
  4621.   ╖  More information on swap sizing policies is needed as well as
  4622.      information on the largest swap size possible under the various
  4623.      kernel versions.
  4624.  
  4625.   ╖  How common is drive or file system corruption? So far I have only
  4626.      heard of problems caused by flaky hardware.
  4627.  
  4628.   ╖  References to speed and drives is needed.
  4629.  
  4630.   ╖  Are any other Linux compatible RAID controllers available?
  4631.  
  4632.   ╖  What relevant monitoring, management and maintenance tools are
  4633.      available?
  4634.  
  4635.   ╖  General references to information sources are needed, perhaps this
  4636.      should be a separate document?
  4637.  
  4638.   ╖  Usage of /tmp and /var/tmp has been hard to determine, in fact what
  4639.      programs use which directory is not well defined and more
  4640.      information here is required. Still, it seems at least clear that
  4641.      these should reside on different physical drives in order to
  4642.      increase paralellicity.
  4643.  
  4644.  
  4645.   17.3.  Suggested Project Work
  4646.  
  4647.   Now and then people post on comp.os.linux.*, looking for good project
  4648.   ideas. Here I will list a few that comes to mind that are relevant to
  4649.   this document. Plans about big projects such as new file systems
  4650.   should still be posted in order to either find co-workers or see if
  4651.   someone is already working on it.
  4652.  
  4653.  
  4654.  
  4655.      Planning tools
  4656.         that can automate the design process outlines earlier would
  4657.         probably make a medium sized project, perhaps as an exercise in
  4658.         constraint based programming.
  4659.  
  4660.  
  4661.      Partitioning tools
  4662.         that take the output of the previously mentioned program and
  4663.         format drives in parallel and apply the appropriate symbolic
  4664.         links to the directory structure. It would probably be best if
  4665.         this were integrated in existing system installation software.
  4666.         The drive partitioning setup used in Solaris is an example of
  4667.         what it can look like.
  4668.  
  4669.  
  4670.      Surveillance tools
  4671.         that keep an eye on the partition sizes and warn before a
  4672.         partition overflows.
  4673.  
  4674.  
  4675.      Migration tools
  4676.         that safely lets you move old structures to new (for instance
  4677.         RAID) systems. This could probably be done as a shell script
  4678.         controlling a back up program and would be rather simple. Still,
  4679.         be sure it is safe and that the changes can be undone.
  4680.  
  4681.  
  4682.  
  4683.   18.  Questions and Answers
  4684.  
  4685.   This is just a collection of what I believe are the most common
  4686.   questions people might have. Give me more feedback and I will turn
  4687.   this section into a proper FAQ.
  4688.  
  4689.  
  4690.   ╖  Q:How many physical disk drives (spindles) does a Linux system
  4691.      need?
  4692.  
  4693.      A: Linux can run just fine on one drive (spindle).  Having enough
  4694.      RAM (around 32 MB, and up to 64 MB) to support swapping is a better
  4695.      price/performance choice than getting a second disk.  (E)IDE disk
  4696.      is usually cheaper (but a little slower) than SCSI.
  4697.  
  4698.  
  4699.   ╖  Q: I have a single drive, will this HOWTO help me?
  4700.  
  4701.      A: Yes, although only to a minor degree. Still, section ``Physical
  4702.      Track Positioning'' will offer you some gains.
  4703.  
  4704.  
  4705.   ╖  Q: Are there any disadvantages in this scheme?
  4706.  
  4707.      A: There is only a minor snag: if even a single partition overflows
  4708.      the system might stop working properly. The severity depends of
  4709.      course on what partition is affected. Still this is not hard to
  4710.      monitor, the command df gives you a good overview of the situation.
  4711.      Also check the swap partition(s) using free to make sure you are
  4712.      not about to run out of virtual memory.
  4713.  
  4714.  
  4715.   ╖  Q: OK, so should I split the system into as many partitions as
  4716.      possible for a single drive?
  4717.  
  4718.      A: No, there are several disadvantages to that. First of all
  4719.      maintenance becomes needlessly complex and you gain very little in
  4720.      this. In fact if your partitions are too big you will seek across
  4721.      larger areas than needed.  This is a balance and dependent on the
  4722.      number of physical drives you have.
  4723.  
  4724.  
  4725.   ╖  Q: Does that mean more drives allows more partitions?
  4726.  
  4727.      A: To some degree, yes. Still, some directories should not be split
  4728.      off from root, check out the file system standards for more
  4729.      details.
  4730.  
  4731.  
  4732.   ╖  Q: What if I have many drives I want to use?
  4733.  
  4734.      A: If you have more than 3-4 drives you should consider using RAID
  4735.      of some form. Still, it is a good idea to keep your root partition
  4736.      on a simple partition without RAID, see section ``RAID'' for more
  4737.      details.
  4738.  
  4739.  
  4740.   ╖  Q: I have installed the latest Windows95 but cannot access this
  4741.      partition from within the Linux system, what is wrong?
  4742.  
  4743.      A: Most likely you are using FAT32 in your windows partition. It
  4744.      seems that Microsoft decided we needed yet another format, and this
  4745.      was introduced in their latest version of Windows95, called OSR2.
  4746.      The advantage is that this format is better suited to large drives.
  4747.  
  4748.      You might also be interested to hear that Microsoft NT 4.0 does not
  4749.      support it yet either.
  4750.  
  4751.  
  4752.  
  4753.   ╖  Q: I cannot get the disk size and partition sizes to match,
  4754.      something is missing. What has happened?
  4755.  
  4756.      A:It is possible you have mounted a partition onto a mount point
  4757.      that was not an empty directory. Mount points are directories and
  4758.      if it is not empty the mounting will mask the contents. If you do
  4759.      the sums you will see the amount of disk space used in this
  4760.      directory is missing from the observed total.
  4761.  
  4762.      To solve this you can boot from a rescue disk and see what is
  4763.      hiding behind your mount points and remove or transfer the contents
  4764.      by mounting the offending partition on a temporary mounting point.
  4765.      You might find it useful to have "spare" emergency mounting points
  4766.      ready made.
  4767.  
  4768.  
  4769.   ╖  Q: It doesn't look like my swap partition is in use, how come?
  4770.  
  4771.      A: It is possible that it has not been necessary to swap out,
  4772.      especially if you have plenty of RAM. Check your log files to see
  4773.      if you ran out of memory at one point or another, in that case your
  4774.      swap space should have been put to use. If not it is possible that
  4775.      either the swap partition was not assigned the right number, that
  4776.      you did not prepare it with mkswap or that you have not done swapon
  4777.      or added it to your fstab.
  4778.  
  4779.  
  4780.  
  4781.   ╖  Q: What is this nyx that is mentioned several times here?
  4782.  
  4783.      A: It is a large free Unix system with currently about 10000 users.
  4784.      I use it for my web pages for this HOWTO as well as a source of
  4785.      ideas for a setup of large Unix systems. It has been running for
  4786.      many years and has a quite stable setup. For more information you
  4787.      can view the Nyx homepage <http://www.nyx.net> which also gives you
  4788.      information on how to get your own free account.
  4789.  
  4790.  
  4791.  
  4792.  
  4793.   19.  Bits and Pieces
  4794.  
  4795.   This is basically a section where I stuff all the bits I have not yet
  4796.   decided where should go, yet that I feel is worth knowing about. It is
  4797.   a kind of transient area.
  4798.  
  4799.  
  4800.  
  4801.  
  4802.   19.1.  Swap Partition: to Use or Not to Use
  4803.  
  4804.   In many cases you do not need a swap partition, for instance if you
  4805.   have plenty of RAM, say, more than 64 MB, and you are the sole user of
  4806.   the machine. In this case you can experiment running without a swap
  4807.   partition and check the system logs to see if you ran out of virtual
  4808.   memory at any point.
  4809.  
  4810.   Removing swap partitions have two advantages:
  4811.  
  4812.   ╖  you save disk space (rather obvious really)
  4813.  
  4814.   ╖  you save seek time as swap partitions otherwise would lie in the
  4815.      middle of your disk space.
  4816.  
  4817.   In the end, having a swap partition is like having a heated toilet:
  4818.   you do not use it very often, but you sure appreciate it when you
  4819.   require it.
  4820.  
  4821.  
  4822.   19.2.  Mount Point and /mnt
  4823.  
  4824.   In an earlier version of this document I proposed to put all
  4825.   permanently mounted partitions under /mnt. That, however, is not such
  4826.   a good idea as this itself can be used as a mount point, which leads
  4827.   to all mounted partitions becoming unavailable. Instead I will propose
  4828.   mounting straight from root using a meaningful name like
  4829.   /mnt.descriptive-name.
  4830.  
  4831.   Lately I have become aware that some Linux distributions use mount
  4832.   points at subdirectories under /mnt, such as /mnt/floppy and
  4833.   /mnt/cdrom, which just shows how confused the whole issue is.
  4834.   Hopefully FHS should clarify this.
  4835.  
  4836.  
  4837.  
  4838.   19.3.  Power and Heating
  4839.  
  4840.   Not many years ago a machine with the equivalent power of a modern PC
  4841.   required 3-phase power and cooling, usually by air conditioning the
  4842.   machine room, some times also by water cooling. Technology has
  4843.   progressed very quickly giving not only high speed but also low power
  4844.   components. Still, there is a definite limit to the technology,
  4845.   something one should keep in mind as the system is expanded with yet
  4846.   another disk drive or PCI card. When the power supply is running at
  4847.   full rated power, keep in mind that all this energy is going
  4848.   somewhere, mostly into heat. Unless this is dissipated using fans you
  4849.   will get a serious heating inside the cabinet followed by a reduced
  4850.   reliability and also life time of the electronics.  Manufacturers
  4851.   state minimum cooling requirements for their drives, usually in terms
  4852.   of cubic feet per minute (CFM). You are well advised to take this
  4853.   serious.
  4854.  
  4855.   Keep air flow passages open, clean out dust and check the temperature
  4856.   of your system running. If it is too hot to touch it is probably
  4857.   running too hot.
  4858.  
  4859.   If possible use sequential spin up for the drives. It is during spin
  4860.   up, when the drive platters accelerate up to normal speed, that a
  4861.   drive consumes maximum power and if all drives start up simultaneously
  4862.   you could go beyond the rated power maximum of your power supply.
  4863.  
  4864.  
  4865.   19.4.  Dejanews
  4866.  
  4867.   This is an Internet system that no doubt most of you are familiar
  4868.   with.  It searches and serves Usenet News articles from 1995 and to
  4869.   the latest postings and also offers a web based reading and posting
  4870.   interface.  There is a lot more, check out Dejanews
  4871.   <http://www.dejanews.com> for more information.
  4872.  
  4873.   What perhaps is less known, is that they use about 120 Linux SMP
  4874.   computers many of which use the md module to manage between 4 and 24
  4875.   Gig of disk space (over 1200 Gig altogether) for this service.  The
  4876.   system is continuously growing but at the time of writing they use
  4877.   mostly dual Pentium Pro 200MHz and Pentium II 300 MHz systems with 256
  4878.   MB RAM or more.
  4879.  
  4880.   A production database machine normally has 1 disk for the operating
  4881.   system and between 4 and 6 disks managed by the md module where the
  4882.   articles are archived.  The drives are connected to BusLogic Model
  4883.   BT-946C and BT-958 PCI SCSI adapters, usually one to a machine.
  4884.  
  4885.   For the production systems (which are up 365 days a year) the downtime
  4886.   attributable to disk errors is less than 0.25 % (that is a quarter of
  4887.   1%, not 25%).
  4888.  
  4889.   Just in case: this is not an advertisement, it is stated as an example
  4890.   of how much is required for what is a major Internet service.
  4891.  
  4892.  
  4893.  
  4894.  
  4895.  
  4896.  
  4897.   20.  Appendix A: Partitioning Layout Table: Mounting and Linking
  4898.  
  4899.   The following table is designed to make layout a simpler paper and
  4900.   pencil exercise. It is probably best to print it out (using NON
  4901.   PROPORTIONAL fonts) and adjust the numbers until you are happy with
  4902.   them.
  4903.  
  4904.   Mount point is what directory you wish to mount a partition on or the
  4905.   actual device. This is also a good place to note how you plan to use
  4906.   symbolic links.
  4907.  
  4908.   The size given corresponds to a fairly big Debian 1.2.6 installation.
  4909.   Other examples are coming later.
  4910.  
  4911.   Mainly you use this table to select what structure and drives you will
  4912.   use, the partition numbers and letters will come from the next two
  4913.   tables.
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.   Directory       Mount point     speed   seek    transfer        size    SIZE
  4952.  
  4953.  
  4954.   swap            __________      ooooo   ooooo   ooooo           32      ____
  4955.  
  4956.   /               __________      o       o       o               20      ____
  4957.  
  4958.   /tmp            __________      oooo    oooo    oooo                    ____
  4959.  
  4960.   /var            __________      oo      oo      oo              25      ____
  4961.   /var/tmp        __________      oooo    oooo    oooo                    ____
  4962.   /var/spool      __________                                              ____
  4963.   /var/spool/mail __________      o       o       o                       ____
  4964.   /var/spool/news __________      ooo     ooo     oo                      ____
  4965.   /var/spool/____ __________      ____    ____    ____                    ____
  4966.  
  4967.   /home           __________      oo      oo      oo                      ____
  4968.  
  4969.   /usr            __________                                      500     ____
  4970.   /usr/bin        __________      o       oo      o               250     ____
  4971.   /usr/lib        __________      oo      oo      ooo             200     ____
  4972.   /usr/local      __________                                              ____
  4973.   /usr/local/bin  __________      o       oo      o                       ____
  4974.   /usr/local/lib  __________      oo      oo      ooo                     ____
  4975.   /usr/local/____ __________                                              ____
  4976.   /usr/src        __________      o       oo      o               50      ____
  4977.  
  4978.   DOS             __________      o       o       o                       ____
  4979.   Win             __________      oo      oo      oo                      ____
  4980.   NT              __________      ooo     ooo     ooo                     ____
  4981.  
  4982.   /mnt._________  __________      ____    ____    ____                    ____
  4983.   /mnt._________  __________      ____    ____    ____                    ____
  4984.   /mnt._________  __________      ____    ____    ____                    ____
  4985.   /_____________  __________      ____    ____    ____                    ____
  4986.   /_____________  __________      ____    ____    ____                    ____
  4987.   /_____________  __________      ____    ____    ____                    ____
  4988.  
  4989.  
  4990.  
  4991.   Total capacity:
  4992.  
  4993.  
  4994.  
  4995.  
  4996.  
  4997.  
  4998.   21.  Appendix B: Partitioning Layout Table: Numbering and Sizing
  4999.  
  5000.   This table follows the same logical structure as the table above where
  5001.   you decided what disk to use. Here you select the physical tracking,
  5002.   keeping in mind the effect of track positioning mentioned earlier in
  5003.   ``Physical Track Positioning''.
  5004.  
  5005.   The final partition number will come out of the table after this.
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.     Drive           sda     sdb     sdc     hda     hdb     hdc     ___
  5018.  
  5019.   SCSI ID         |  __   |  __   |  __   |
  5020.  
  5021.   Directory
  5022.   swap            |       |       |       |       |       |       |
  5023.  
  5024.   /               |       |       |       |       |       |       |
  5025.  
  5026.   /tmp            |       |       |       |       |       |       |
  5027.  
  5028.   /var            :       :       :       :       :       :       :
  5029.   /var/tmp        |       |       |       |       |       |       |
  5030.   /var/spool      :       :       :       :       :       :       :
  5031.   /var/spool/mail |       |       |       |       |       |       |
  5032.   /var/spool/news :       :       :       :       :       :       :
  5033.   /var/spool/____ |       |       |       |       |       |       |
  5034.  
  5035.   /home           |       |       |       |       |       |       |
  5036.  
  5037.   /usr            |       |       |       |       |       |       |
  5038.   /usr/bin        :       :       :       :       :       :       :
  5039.   /usr/lib        |       |       |       |       |       |       |
  5040.   /usr/local      :       :       :       :       :       :       :
  5041.   /usr/local/bin  |       |       |       |       |       |       |
  5042.   /usr/local/lib  :       :       :       :       :       :       :
  5043.   /usr/local/____ |       |       |       |       |       |       |
  5044.   /usr/src        :       :       :       :
  5045.  
  5046.   DOS             |       |       |       |       |       |       |
  5047.   Win             :       :       :       :       :       :       :
  5048.   NT              |       |       |       |       |       |       |
  5049.  
  5050.   /mnt.___/_____  |       |       |       |       |       |       |
  5051.   /mnt.___/_____  :       :       :       :       :       :       :
  5052.   /mnt.___/_____  |       |       |       |       |       |       |
  5053.   /_____________  :       :       :       :       :       :       :
  5054.   /_____________  |       |       |       |       |       |       |
  5055.   /_____________  :       :       :       :       :       :       :
  5056.  
  5057.  
  5058.   Total capacity:
  5059.  
  5060.  
  5061.  
  5062.  
  5063.  
  5064.  
  5065.   22.  Appendix C: Partitioning Layout Table: Partition Placement
  5066.  
  5067.   This is just to sort the partition numbers in ascending order ready to
  5068.   input to fdisk or cfdisk. Here you take physical track positioning
  5069.   into account when finalizing your design. Unless you get specific
  5070.   information otherwise, you can assume track 0 is the outermost track.
  5071.  
  5072.   These numbers and letters are then used to update the previous tables,
  5073.   all of which you will find very useful in later maintenance.
  5074.  
  5075.   In case of disk crash you might find it handy to know what SCSI id
  5076.   belongs to which drive, consider keeping a paper copy of this.
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.           Drive :   sda     sdb     sdc     hda     hdb     hdc     ___
  5084.  
  5085.   Total capacity: |  ___  |  ___  |  ___  |  ___  |  ___  |  ___  |  ___
  5086.   SCSI ID         |  __   |  __   |  __   |
  5087.  
  5088.   Partition
  5089.  
  5090.   1               |       |       |       |       |       |       |
  5091.   2               :       :       :       :       :       :       :
  5092.   3               |       |       |       |       |       |       |
  5093.   4               :       :       :       :       :       :       :
  5094.   5               |       |       |       |       |       |       |
  5095.   6               :       :       :       :       :       :       :
  5096.   7               |       |       |       |       |       |       |
  5097.   8               :       :       :       :       :       :       :
  5098.   9               |       |       |       |       |       |       |
  5099.   10              :       :       :       :       :       :       :
  5100.   11              |       |       |       |       |       |       |
  5101.   12              :       :       :       :       :       :       :
  5102.   13              |       |       |       |       |       |       |
  5103.   14              :       :       :       :       :       :       :
  5104.   15              |       |       |       |       |       |       |
  5105.   16              :       :       :       :       :       :       :
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.   23.  Appendix D: Example: Multipurpose Server
  5113.  
  5114.   The following table is from the setup of a medium sized multipurpose
  5115.   server where I work. Aside from being a general Linux machine it will
  5116.   also be a network related server (DNS, mail, FTP, news, printers etc.)
  5117.   X server for various CAD programs, CD ROM burner and many other
  5118.   things.  The files reside on 3 SCSI drives with a capacity of 600,
  5119.   1000 and 1300 MB.
  5120.  
  5121.   Some further speed could possibly be gained by splitting /usr/local
  5122.   from the rest of the /usr system but we deemed the further added
  5123.   complexity would not be worth it. With another couple of drives this
  5124.   could be more worthwhile. In this setup drive sda is old and slow and
  5125.   could just a well be replaced by an IDE drive. The other two drives
  5126.   are both rather fast. Basically we split most of the load between
  5127.   these two. To reduce dangers of imbalance in partition sizing we have
  5128.   decided to keep /usr/bin and /usr/local/bin in one drive and /usr/lib
  5129.   and /usr/local/lib on another separate drive which also affords us
  5130.   some drive parallelizing.
  5131.  
  5132.   Even more could be gained by using RAID but we felt that as a server
  5133.   we needed more reliability than was then afforded by the md patch and
  5134.   a dedicated RAID controller was out of our reach.
  5135.  
  5136.  
  5137.   24.  Appendix E: Example: Mounting and Linking
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.   Directory       Mount point     speed   seek    transfer        size    SIZE
  5150.  
  5151.  
  5152.   swap            sdb2, sdc2      ooooo   ooooo   ooooo           32      2x64
  5153.  
  5154.   /               sda2            o       o       o               20       100
  5155.  
  5156.   /tmp            sdb3            oooo    oooo    oooo                     300
  5157.  
  5158.   /var            __________      oo      oo      oo                      ____
  5159.   /var/tmp        sdc3            oooo    oooo    oooo                     300
  5160.   /var/spool      sdb1                                                     436
  5161.   /var/spool/mail __________      o       o       o                       ____
  5162.   /var/spool/news __________      ooo     ooo     oo                      ____
  5163.   /var/spool/____ __________      ____    ____    ____                    ____
  5164.  
  5165.   /home           sda3            oo      oo      oo                       400
  5166.  
  5167.   /usr            sdb4                                            230      200
  5168.   /usr/bin        __________      o       oo      o               30      ____
  5169.   /usr/lib        -> libdisk      oo      oo      ooo             70      ____
  5170.   /usr/local      __________                                              ____
  5171.   /usr/local/bin  __________      o       oo      o                       ____
  5172.   /usr/local/lib  -> libdisk      oo      oo      ooo                     ____
  5173.   /usr/local/____ __________                                              ____
  5174.   /usr/src        ->/home/usr.src o       oo      o               10      ____
  5175.  
  5176.   DOS             sda1            o       o       o                        100
  5177.   Win             __________      oo      oo      oo                      ____
  5178.   NT              __________      ooo     ooo     ooo                     ____
  5179.  
  5180.   /mnt.libdisk    sdc4            oo      oo      ooo                      226
  5181.   /mnt.cd         sdc1            o       o       oo                       710
  5182.  
  5183.  
  5184.   Total capacity: 2900 MB
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.   25.  Appendix F: Example: Numbering and Sizing
  5192.  
  5193.   Here we do the adjustment of sizes and positioning.
  5194.  
  5195.  
  5196.  
  5197.  
  5198.  
  5199.  
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.   Directory         sda     sdb     sdc
  5216.  
  5217.  
  5218.   swap            |       |   64  |   64  |
  5219.  
  5220.   /               |  100  |       |       |
  5221.  
  5222.   /tmp            |       |  300  |       |
  5223.  
  5224.   /var            :       :       :       :
  5225.   /var/tmp        |       |       |  300  |
  5226.   /var/spool      :       :  436  :       :
  5227.   /var/spool/mail |       |       |       |
  5228.   /var/spool/news :       :       :       :
  5229.   /var/spool/____ |       |       |       |
  5230.  
  5231.   /home           |  400  |       |       |
  5232.  
  5233.   /usr            |       |  200  |       |
  5234.   /usr/bin        :       :       :       :
  5235.   /usr/lib        |       |       |       |
  5236.   /usr/local      :       :       :       :
  5237.   /usr/local/bin  |       |       |       |
  5238.   /usr/local/lib  :       :       :       :
  5239.   /usr/local/____ |       |       |       |
  5240.   /usr/src        :       :       :       :
  5241.  
  5242.   DOS             |  100  |       |       |
  5243.   Win             :       :       :       :
  5244.   NT              |       |       |       |
  5245.  
  5246.   /mnt.libdisk    |       |       |  226  |
  5247.   /mnt.cd         :       :       :  710  :
  5248.   /mnt.___/_____  |       |       |       |
  5249.  
  5250.  
  5251.   Total capacity: |  600  | 1000  | 1300  |
  5252.  
  5253.  
  5254.  
  5255.  
  5256.  
  5257.  
  5258.   26.  Appendix G: Example: Partition Placement
  5259.  
  5260.   This is just to sort the partition numbers in ascending order ready to
  5261.   input to fdisk or cfdisk. Remember to optimize for physical track
  5262.   positioning (not done here).
  5263.  
  5264.  
  5265.  
  5266.                Drive :   sda     sdb     sdc
  5267.  
  5268.        Total capacity: |   600 |  1000 |  1300 |
  5269.  
  5270.        Partition
  5271.  
  5272.        1               |   100 |   436 |   710 |
  5273.        2               :   100 :    64 :    64 :
  5274.        3               |   400 |   300 |   300 |
  5275.        4               :       :   200 :   226 :
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.   27.  Appendix H: Example II
  5282.  
  5283.  
  5284.   The following is an example of a server setup in an academic setting,
  5285.   and is contributed by nakano (at) apm.seikei.ac.jp. I have only done
  5286.   minor editing to this section.
  5287.  
  5288.   /var/spool/delegate is a directory for storing logs and cache files of
  5289.   an WWW proxy server program, "delegated". Since I don't notice it
  5290.   widely, there are 1000--1500 requests/day currently, and average disk
  5291.   usage is 15--30% with expiration of caches each day.
  5292.  
  5293.   /mnt.archive is used for data files which are big and not frequently
  5294.   referenced such a s experimental data (especially graphic ones),
  5295.   various source archives, and Win95 backups (growing very fast...).
  5296.  
  5297.   /mnt.root is backup root file system containing rescue utilities. A
  5298.   boot floppy is also prepared to boot with this partition.
  5299.  
  5300.  
  5301.  
  5302.  
  5303.  
  5304.  
  5305.  
  5306.  
  5307.  
  5308.  
  5309.  
  5310.  
  5311.  
  5312.  
  5313.  
  5314.  
  5315.  
  5316.  
  5317.  
  5318.  
  5319.  
  5320.  
  5321.  
  5322.  
  5323.  
  5324.  
  5325.  
  5326.  
  5327.  
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.  
  5341.  
  5342.  
  5343.  
  5344.  
  5345.  
  5346.  
  5347.   =================================================
  5348.   Directory               sda      sdb     hda
  5349.  
  5350.   swap                    |    64 |    64 |       |
  5351.   /                       |       |       |    20 |
  5352.   /tmp                    |       |       |   180 |
  5353.  
  5354.   /var                    :   300 :       :       :
  5355.   /var/tmp                |       |   300 |       |
  5356.   /var/spool/delegate     |   300 |       |       |
  5357.  
  5358.   /home                   |       |       |   850 |
  5359.   /usr                    |   360 |       |       |
  5360.   /usr/lib                -> /mnt.lib/usr.lib
  5361.   /usr/local/lib          -> /mnt.lib/usr.local.lib
  5362.  
  5363.   /mnt.lib                |       |   350 |       |
  5364.   /mnt.archive            :       :  1300 :       :
  5365.   /mnt.root               |       |    20 |       |
  5366.  
  5367.   Total capacity:            1024    2034    1050
  5368.  
  5369.  
  5370.   =================================================
  5371.           Drive :           sda     sdb     hda
  5372.   Total capacity:         |  1024 |  2034 |  1050 |
  5373.  
  5374.   Partition
  5375.   1                       |   300 |    20 |    20 |
  5376.   2                       :    64 :  1300 :   180 :
  5377.   3                       |   300 |    64 |   850 |
  5378.   4                       :   360 :   ext :       :
  5379.   5                       |       |   300 |       |
  5380.   6                       :       :   350 :       :
  5381.  
  5382.  
  5383.   Filesystem         1024-blocks  Used Available Capacity Mounted on
  5384.   /dev/hda1              19485   10534     7945     57%   /
  5385.   /dev/hda2             178598      13   169362      0%   /tmp
  5386.   /dev/hda3             826640  440814   343138     56%   /home
  5387.   /dev/sda1             306088   33580   256700     12%   /var
  5388.   /dev/sda3             297925   47730   234807     17%   /var/spool/delegate
  5389.   /dev/sda4             363272  170872   173640     50%   /usr
  5390.   /dev/sdb5             297598       2   282228      0%   /var/tmp
  5391.   /dev/sdb2            1339248  302564   967520     24%   /mnt.archive
  5392.   /dev/sdb6             323716   78792   228208     26%   /mnt.lib
  5393.  
  5394.  
  5395.  
  5396.  
  5397.   Apparently /tmp and /var/tmp is too big. These directories shall be
  5398.   packed together into one partition when disk space shortage comes.
  5399.  
  5400.   /mnt.lib is also seemed to be, but I plan to install newer TeX and
  5401.   ghostscript archives, so /usr/local/lib may grow about 100 MB or so
  5402.   (since we must use Japanese fonts!).
  5403.  
  5404.   Whole system is backed up by Seagate Tapestore 8000 (Travan TR-4,
  5405.   4G/8G).
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.   28.  Appendix I: Example III: SPARC Solaris
  5414.  
  5415.  
  5416.   The following section is the basic design used at work for a number of
  5417.   Sun SPARC servers running Solaris 2.5.1 in an industrial development
  5418.   environment. It serves a number of database and cad applications in
  5419.   addition to the normal services such as mail.
  5420.  
  5421.   Simplicity is emphasized here so /usr/lib has not been split off from
  5422.   /usr.
  5423.  
  5424.   This is the basic layout, planned for about 100 users.
  5425.  
  5426.  
  5427.  
  5428.           Drive:        SCSI 0                      SCSI 1
  5429.  
  5430.           Partition     Size (MB)   Mount point    Size (MB)   Mount point
  5431.  
  5432.             0           160         swap           160         swap
  5433.             1           100         /tmp           100         /var/tmp
  5434.             2           400         /usr
  5435.             3           100         /
  5436.             4            50         /var
  5437.             5
  5438.             6           remainder   /local0        remainder   /local1
  5439.  
  5440.  
  5441.  
  5442.  
  5443.   Due to specific requirements at this place it is at times necessary to
  5444.   have large partitions available on a short notice. Therefore drive 0
  5445.   is given as many tasks as feasible, leaving a large /local1 partition.
  5446.  
  5447.   This setup has been in use for some time now and found satisfactorily.
  5448.  
  5449.   For a more general and balanced system it would be better to swap /tmp
  5450.   and /var/tmp and then move /var to drive 1.
  5451.  
  5452.  
  5453.   29.  Appendix J: Example IV: Server with 4 Drives
  5454.  
  5455.   This gives an example of using all techniques described earlier, short
  5456.   of RAID. It is admittedly rather complicated but offers in return high
  5457.   performance from modest hardware. Dimensioning are skipped but
  5458.   reasonable figures can be found in previous examples.
  5459.  
  5460.  
  5461.  
  5462.        Partition       sda             sdb             sdc             sdd
  5463.                        ----            ----            ----            ----
  5464.                1       root            overview        lib             news
  5465.                2       swap            swap            swap            swap
  5466.                3       home            /usr            /var/tmp        /tmp
  5467.                4                       spare root      mail            /var
  5468.  
  5469.  
  5470.  
  5471.  
  5472.   Setup is optimised with respect to track positioning but also for
  5473.   minimising drive seeks.
  5474.  
  5475.   If you want DOS or Windows too you will have to use sda1 for this and
  5476.   move the other partitions after that. It will be advantageous to use
  5477.   the swap partitions on sdb2, sdc2 and sdd2 for Windows swap, TEMPDIR
  5478.   and Windows temporary directory under these sessions. A number of
  5479.   other HOWTOs describe how you can make several operating systems
  5480.   coexist on your machine.
  5481.  
  5482.  
  5483.   For completeness a 4 drive example using several types of RAID is also
  5484.   given which is even more complex than the example above.
  5485.  
  5486.  
  5487.  
  5488.        Partition       sda             sdb             sdc             sdd
  5489.                        ----            ----            ----            ----
  5490.                1       boot            overview        news            news
  5491.                2       overview        swap            swap            swap
  5492.                3       swap            lib             lib             lib
  5493.                4       lib             overview        /tmp            /tmp
  5494.                5       /var/tmp        /var/tmp        mail            /usr
  5495.                6       /home           /usr            /usr            mail
  5496.                7       /usr            /home           /var
  5497.                8       / (root)        spare root
  5498.  
  5499.  
  5500.  
  5501.  
  5502.   Here all duplicates are parts of a RAID 0 set with two exceptions,
  5503.   swap which is interleaved and home and mail which are implemented as
  5504.   RAID 1 for safety.
  5505.  
  5506.   Note that boot and root are separated: only the boot file with the
  5507.   kernel has to reside within the 1023 cylinder limit. The rest of the
  5508.   root files can be anywhere and here they are placed on the slowest
  5509.   outermost partition. For simplicity and safety the root partition is
  5510.   not on a RAID system.
  5511.  
  5512.   With such a complicated comes an equally complicated fstab file.  The
  5513.   large number of partitions makes it important to do the fsck passes in
  5514.   the right order, otherwise the process can take perhaps ten times as
  5515.   long time to complete as the optimal solution.
  5516.  
  5517.  
  5518.  
  5519.  
  5520.        /dev/sda8       /               ?       ?               1 1 (a)
  5521.        /dev/sdb8       /               ?       noauto          1 2 (b)
  5522.        /dev/sda1       boot            ?       ?               1 2 (a)
  5523.        /dev/sdc7       /var            ?       ?               1 2 (c)
  5524.        /dev/md1        news            ?       ?               1 3 (c+d)
  5525.        /dev/md2        /var/tmp        ?       ?               1 3 (a+b)
  5526.        /dev/md3        mail            ?       ?               1 4 (c+d)
  5527.        /dev/md4        /home           ?       ?               1 4 (a+b)
  5528.        /dev/md5        /tmp            ?       ?               1 5 (c+d)
  5529.        /dev/md6        /usr            ?       ?               1 6 (a+b+c+d)
  5530.        /dev/md7        /lib            ?       ?               1 7 (a+b+c+d)
  5531.  
  5532.  
  5533.  
  5534.  
  5535.   The letters in the brackets indicate what drives will be active for
  5536.   each fsck entry and pass. These letters are not present in a real
  5537.   fstab file.  All in all there are 7 passes.
  5538.  
  5539.  
  5540.  
  5541.   30.  Appendix K: Example V: Dual Drive System
  5542.  
  5543.   A dual drive system offers less opportunity for clever schemes but the
  5544.   following should provide a simple starting point.
  5545.        Partition       sda             sdb
  5546.                        ----            ----
  5547.                1       boot            lib
  5548.                2       swap            news
  5549.                3       /tmp            swap
  5550.                4       /usr            /var/tmp
  5551.                5       /var            /home
  5552.                6       / (root)
  5553.  
  5554.  
  5555.  
  5556.  
  5557.  
  5558.   If you use a dual OS system you have to keep in mind that many other
  5559.   systems must boot from the first partition on the first drive. A
  5560.   simple DOS / Linux system could look like this:
  5561.  
  5562.  
  5563.  
  5564.        Partition       sda             sdb
  5565.                        ----            ----
  5566.                1       DOS             lib
  5567.                2       boot            news
  5568.                3       swap            swap
  5569.                4       /tmp            /var/tmp
  5570.                5       /usr            /home
  5571.                6       /var            DOSTEMP
  5572.                7       / (root)
  5573.  
  5574.  
  5575.  
  5576.  
  5577.  
  5578.   Also remember that DOS and Windows prefer there to be just a single
  5579.   primary partition which has to be the first one where it boots from.
  5580.   As Linux can happily exist in logical partitions this is not a big
  5581.   problem.
  5582.  
  5583.  
  5584.  
  5585.   31.  Appendix L: Example VI: Single Drive System
  5586.  
  5587.   Although this falls somewhat outside the scope of this HOWTO it cannot
  5588.   be denied that recently some rather large drives have become very
  5589.   affordable. Drives with 10 - 20 GB are becoming common and the
  5590.   question often is how best to partition such monsters. Interestingly
  5591.   enough very few seem to have any problems in filling up such drives
  5592.   and the future looks generally quite rosy for manufacturers planning
  5593.   on even bigger drives.
  5594.  
  5595.   Opportunities for optimisations are of course even smaller than for 2
  5596.   drive systems but some tricks can still be used to optimise track
  5597.   positions while minimising head movements.
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.   Partition       hda             Size estimate (MB)
  5612.                   ----            ------------------
  5613.            1      DOS             500
  5614.            2      boot            20
  5615.            3      Winswap         200
  5616.            4      data            The bulk of the drive
  5617.            5      lib             50 - 500
  5618.            6      news            300+
  5619.            7      swap            128     (Maximum size for 32-bit CPU)
  5620.            8      tmp             300+    (/tmp and /var/tmp)
  5621.            9      /usr            50 - 500
  5622.           10      /home           300+
  5623.           11      /var            50 - 300
  5624.           12      mail            300+
  5625.           13      dosdata         10      ( Windows bug workaround!)
  5626.  
  5627.  
  5628.  
  5629.  
  5630.   Remember that the dosdata partition is a DOS filesystem that must be
  5631.   the very last partition on the drive, otherwise Windows gets confused.
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.  
  5640.  
  5641.  
  5642.  
  5643.  
  5644.  
  5645.  
  5646.  
  5647.  
  5648.  
  5649.  
  5650.  
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664.  
  5665.  
  5666.  
  5667.  
  5668.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.