Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Apr 2002 15:20:03 -0700 (PDT)
From:      Salvo Bartolotta <bartequi@neomedia.it>
To:        freebsd-doc@FreeBSD.org
Subject:   Re: docs/30008: This document should be translated, commented and added
Message-ID:  <200204222220.g3MMK3T64930@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR docs/30008; it has been noted by GNATS.

From: Salvo Bartolotta <bartequi@neomedia.it>
To: freebsd-gnats-submit@FreeBSD.org, 3d@FreeBSD.org
Cc:  
Subject: Re: docs/30008: This document should be translated, commented and added
Date: Mon, 22 Apr 2002 21:04:11 +0200 (CEST)

 This message is in MIME format.
 
 ---MOQ1019502250527e5a8eeb16cdbdce7846a30fa5d69c
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 8bit
 
 Dear FreeBSD doc'ers,
 
 I've translated about one half of the article -- infinite shame on me[*] -- 
 and I'm working on the second half.  Meanwhile I submit this first draft for 
 your review/comments/flames/whatsoever.
 
 [*] See time(6).
 
 ---MOQ1019502250527e5a8eeb16cdbdce7846a30fa5d69c
 Content-Type: text/html; name="index.html"; charset=ISO-8859-1
 Content-Transfer-Encoding: 8bit
 Content-Disposition: inline; filename="index.html"
 
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
     <meta name="generator" content="HTML Tidy, see www.w3.org">
     <title>Softupdates and Journaling Filesystems</title>
     <meta name="GENERATOR" content=
     "Modular DocBook HTML Stylesheet Version 1.71 ">
     <link rel="NEXT" title="Write Caching and Reboot"
     href="x30.html">
   </head>
 
   <body class="ARTICLE" bgcolor="#FFFFFF" text="#000000" link=
   "#0000FF" vlink="#840084" alink="#0000FF">
     <div class="ARTICLE">
       <div class="TITLEPAGE">
         <h1 class="TITLE"><a name="AEN2">Softupdates and Journaling 
 	  Filesystems
         </a></h1>
 
         <div class="AUTHORGROUP">
           <a name="AEN4"></a>
 
           <h3 class="AUTHOR"><a name="AEN5">Thomas Pornin</a></h3>
 
           <div class="AFFILIATION">
             <div class="ADDRESS">
               <p class="ADDRESS">thomas.pornin@ens.fr</p>
             </div>
           </div>
         </div>
 
         <div>
           <div class="ABSTRACT">
             <a name="AEN12"></a>
 
             <p>5 mai 2000</p>
           </div>
         </div>
 
         <div>
           <div class="ABSTRACT">
             <a name="AEN14"></a>
 
             
               <p>This is an introductory paper on the principles of
 		softupdates and filesystem journaling.  It deals 
 		mostly with Linux and the free BSD systems, but it can
 		apply to other operating systems. This is not a reference
 		text.  I wrote it after I had gained insight into the
 		problem; if I made any mistakes anywhere, send me an 
 		e-mail message, and I'll make corrections.  Contact me
 		for release permission.  The original is available (in 
 		html) here:
                     <a href="http://www.di.ens.fr/~pornin/jfs.html"
                     target=
                     "_top">http://www.di.ens.fr/~pornin/jfs.html</a>;
             </p>
           </div>
         </div>
         <hr>
       </div>
 
       <div class="SECT1">
         <h1 class="SECT1"><a name="AEN17">1. Introduction</a></h1>
 
         <p>Accidents will happen. Kernel bugs, hardware failures, 
 	 power failures, students fooling around: there are a good number of
 	 causes, which cannot all be made negligible.   When you manage
 	 a filesystem, you feel like reconciling the following (fairly 
 	 conflicting) goals:</p>
 
         <ol type="1">
           <li>
             <p>it should be fast</p>
           </li>
 
           <li>
             <p>in case of crash, you should lose the least possible 
 	     data</p>
           </li>
 
           <li>
             <p>in case of crash, it should recover as quickly as possible</p>
           </li>
 
           <li>
             <p>in case of crash, it should recover automatically, 
 	     without human intervention (certain sysadmins sleep at 
 	     night)</p>
           </li>
         </ol>
 
         <p>Let's lay our cards on the table: ext2 only fulfils 1.
 	Run in synchronous mode, it does 2 and 4, but not at all 1.
         The traditional ufs/ffs (BSD, Solaris...)
         fulfils 2 and 4, and does not behave very well towards 1 in 
 	certain cases (but this entails a far less serious limitation
 	than ext2 running in synchronous mode).  Ffs with softupdates 
 	does 1, 2 and 4, that is, it remains safe while running almost 
 	as fast as ext2.  Point 3 is potentially attainable but it is
         still theoretical.  Ext3, or more generally journaling
 	filesystems, fulfils 1-4 naturally, but the cost
         in performance (by comparison with 1) is a little
         higher than that of using softupdates -- yet it remains acceptable.
         Note that ext3 is still being developed, the journaling 
 	of data (cf. below) entailing the division by two of certain 
 	performances.</p>
       </div>
     </div>
 
     <div class="NAVFOOTER">
       <hr align="LEFT" width="100%">
 
       <table summary="Footer navigation table" width="100%" border=
       "0" cellpadding="0" cellspacing="0">
         <tr>
           <td width="33%" align="left" valign="top">&nbsp;</td>
 
           <td width="34%" align="center" valign="top">&nbsp;</td>
 
           <td width="33%" align="right" valign="top"><a href=
           "x30.html" accesskey="N">Next</a></td>
         </tr>
 
         <tr>
           <td width="33%" align="left" valign="top">&nbsp;</td>
 
           <td width="34%" align="center" valign="top">&nbsp;</td>
 
           <td width="33%" align="right" valign="top">Write Caching 
           and Reboot</td>
         </tr>
       </table>
     </div>
   </body>
 </html>
 
 
 ---MOQ1019502250527e5a8eeb16cdbdce7846a30fa5d69c
 Content-Type: text/html; name="x30.html"; charset=ISO-8859-1
 Content-Transfer-Encoding: 8bit
 Content-Disposition: inline; filename="x30.html"
 
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
     <meta name="generator" content="HTML Tidy, see www.w3.org">
     <title>Write Caching and Reboot</title>
     <meta name="GENERATOR" content=
     "Modular DocBook HTML Stylesheet Version 1.71 ">
     <link rel="HOME" title=
     "Softupdates and Journaling Filesystems" href=
     "index.html">
     <link rel="PREVIOUS" title=
     "Softupdates and Journaling Filesystems" href=
     "index.html">
     <link rel="NEXT" title=
     "Advanced Fault Tolerance Methods" href=
     "x47.html">
   </head>
 
   <body class="SECT1" bgcolor="#FFFFFF" text="#000000" link=
   "#0000FF" vlink="#840084" alink="#0000FF">
     <div class="NAVHEADER">
       <table summary="Header navigation table" width="100%" border=
       "0" cellpadding="0" cellspacing="0">
         <tr>
           <th colspan="3" align="center">Softupdates and Journaling Filesystems
           </th>
         </tr>
 
         <tr>
           <td width="10%" align="left" valign="bottom"><a href=
           "index.html" accesskey=
           "P">Previous</a></td>
 
           <td width="80%" align="center" valign="bottom">
           </td>
 
           <td width="10%" align="right" valign="bottom"><a href=
           "x47.html" accesskey="N">Next</a></td>
         </tr>
       </table>
       <hr align="LEFT" width="100%">
     </div>
 
     <div class="SECT1">
       <h1 class="SECT1"><a name="AEN30">2. Write Caching and Reboot</a></h1>
 
       <p>When discussing filesystem operation, it is convenient to 
 	consider two items: data and metadata. By "data" we mean the
 	content of files.  By "metadata" we mean the content of 
 	directories, block allocation structures, and all other matters
 	connected with administration.  Losing metadata is very painful,
 	because it compromises the structure itself of a filesystem, 
 	therefore the loss of data may be significant (failure at point
 	2) and recovery is not necessarily automatic, requiring human
 	intervention (failure at point 4) (failure at point 3 as well, 
 	since human intervention takes time).</p>
 
       <p>For performance reasons, reads and writes should be cached in 
 	memory, that is:</p>
 
       <ul>
         <li>
           <p>every piece of data being read crosses an unused area of
 	   memory; in this fashion, if the data needs to be read again
 	   and it is still in memory, a disk access is avoided</p>
         </li>
 
         <li>
           <p>every piece of data being written crosses an unused 
 	   area of memory first, which allows the system to group
 	   writes together on adjacent areas; which, in practice, speeds
 	   up things significantly.</p>
         </li>
       </ul>
 
       <p>What concerns us here is write caching.  One of 
 	its side effects is that, in case of sudden crash,
 	the last writes (scheduled but not yet performed) are lost,
 	since memory contents are not preserved across reboots.
 	We may thus lose data (annoying, but not too annoying)
 	and metadata (which can be really painful).</p>
 
       <p>Various ways of countering this effect have been developed
 	on different systems.  Two traditional methods first:</p>
 
       <ul>
         <li>
           <p>&Agrave; l'ext2: that's "Linus Torvalds'" way.
 	   
           The problem is not dealt with.  Data are written in large
 	  blocks on disk in order to achieve maximum speed.
           The rest is immaterial, it is performance (and the benchmarks 
 	  published in "Wired" or "PC Expert") that matters.
           That actually attains high performances and the code 
 	  dealing with it is small, easy to debug.        
 
           When a crash occurs, the question is not "will fsck work?"
           but "Where have I put my backups?" (Linus himself dixit:
 	  "Nobody sensible would think of fsck as an alternative to 
 	  backups"). That is very acceptable for workstation use,
           in which case users are sitting in front of their machines
 	  when they are switched on, and they are accustomed to 
 	  reinstalling every now and then anyway.  Those who 
           seek safety may wish to consider synchronous mode,
           i.e. without write caching.  It has considerable reboot 
 	  tolerance (yet it needs fsck all the same), but each write 
 	  operation laaaaabo(u)rs to complete.</p>
         </li>
 
         <li>
           <p>&Agrave; l'ufs (ffs is the acronym of the last version 
           of the Unix FileSystem, the first 'f' standing for 'fast',
           according to the method of the much-missed &Eacute;mile 
 	  Cou&eacute;): the system distinguishes data writes from 
 	  metadata writes; the latter are synchronous (without write
 	  caching).  This makes it possible to write a (single) file
 	  as quickly as does ext2, but creating or removing many 
 	  small files labours.  This is what is standard under Solaris;
 	  it is clearly seen when decompressing a source archive
 	  containing a large number of files.  This method is called
           "metadata synchronous update".</p>
         </li>
       </ul>
 
       <p>With the two traditional methods, in case of crash, it is
 	necessary to make sure that everything in the filesystem works,
 	therefore fsck at boot time; and this fsck has to cover the entire
 	filesystem, which takes time on a disk of many GBs.</p>
     </div>
 
     <div class="NAVFOOTER">
       <hr align="LEFT" width="100%">
 
       <table summary="Footer navigation table" width="100%" border=
       "0" cellpadding="0" cellspacing="0">
         <tr>
           <td width="33%" align="left" valign="top"><a href=
           "index.html" accesskey=
           "P">Previous</a></td>
 
           <td width="34%" align="center" valign="top"><a href=
           "index.html" accesskey="H">Summary</a></td>
 
           <td width="33%" align="right" valign="top"><a href=
           "x47.html" accesskey="N">Next</a></td>
         </tr>
 
         <tr>
           <td width="33%" align="left" valign="top">Softupdates and
           Journaling Filesystems</td>
 
           <td width="34%" align="center" valign="top">&nbsp;</td>
 
           <td width="33%" align="right" valign="top">
           Advanced Fault Tolerant Methods</td>
         </tr>
       </table>
     </div>
   </body>
 </html>
 
 
 ---MOQ1019502250527e5a8eeb16cdbdce7846a30fa5d69c--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204222220.g3MMK3T64930>