\section{Available Filesystems}

\begin{frame}
   {Available Filesystems}

   \begin{itemize}

      \item
      \textbf{Linux} works with more filesystem varieties than
      any other operating system.
      \item
      This democratic flexibility has been a large factor in
      its success.

      \item

      Most filesystems have full read/write access, while a
      few have read only access.

      \item Commonly used filesystems include
      \textbf{ext4, xfs, btrfs, squashfs, nfs} and \textbf{vfat}

      \item A list of currently supported filesystems can be
      seen at \filelink{/proc/filesystems}

   \end{itemize}

\end{frame}

\cprotect\note{


}
\begin{frame}
   {Filesystem Varieties}

   \textbf{Linux} supports many filesystem varieties, most with full
   read and write access, including:

   \begin{itemize}
      \item \textbf{ext4}: \textbf{Linux} native filesystem (and earlier
      \textbf{ext2} and \textbf{ext3}
      \item \textbf{XFS}: A high-performance filesystem
      originally created by \textbf{SGI}
      \item \textbf{JFS}: A high-performance filesystem
      originally created by \textbf{IBM}
      \item \textbf{Windows}-natives: \textbf{FAT12, FAT16, FAT32, VFAT, NTFS}
      \item Pseudo-filesystems resident only in memory, including
      \textbf{proc, sysfs, devfs, debugfs}
      \item Network filesystems such as \textbf{NFS},
      \textbf{coda}, \textbf{afs}
      \item etc.
   \end{itemize}


\end{frame}

\cprotect\note{


   You can see a list of the filesystem types currently registered
   and understood by the currently running \textbf{Linux}
   kernel by doing:

   \begin{cmd}
$ cat /proc/filesystems
   \end{cmd}
   \begin{response}
  iso9660
  squashfs
  ext3
  ext2
  ext4
  fuseblk
  nodev   sysfs
  nodev   proc
  nodev   tmpfs
  nodev   debugfs
  nodev   sockfs
  nodev   hugetlbfs
  nodev   fuse
  nodev   nfsd
  ....
   \end{response}

   (The ones with \texttt{nodev} are \textbf{special
      filesystems} which do not reside on storage.) Additional
   filesystems may have their code loaded as a module only when the
   system tries to access a partition that uses them.

}
\section{Journalling Filesystems}
\begin{frame}
   {Journalling Filesystems}

   \begin{itemize}
      \item Recover gracefully from crashes or abnormal shutdown
      \item Do recovery and repair extremely quickly
      \item Work with \textbf{atomic transactions} which must be
      fully completed or are revoked.
      \item Work with \textbf{journal log files}
      \item Include many advanced features
      \item Currently available: \textbf{ext4},
      \textbf{ext3}, \textbf{xfs}, \textbf{jfs},
      \textbf{reiserfs}, and \textbf{btrfs}
   \end{itemize}

\end{frame}

\cprotect\note{

   \textbf{Journalling} filesystems recover from system crashes
   or ungraceful shutdowns with little or no corruption, and
   they do so very rapidly. While this comes at the price of
   having some more operations to do, additional enhancements
   can more than offset the price.

   In a journalling filesystem operations are grouped into
   \textbf{transactions}. A transaction must be completed
   without error, \textbf{atomically}; otherwise the filesystem
   is not changed. A log file is maintained of
   transactions. When an error occurs usually only the last
   transaction needs to be examined.

   The following journalling filesystems are freely available
   under \textbf{Linux}:

   \begin{itemize}
      \item

      \textbf{ext3} was an extension of the earlier
      non-journalling \textbf{ext2} filesystem.

      \item

      \textbf{ext4} is a vastly enhanced outgrowth of
      \textbf{ext3} Features include extents, 48-bit block
      numbers, and up to 16 TB size.  Most \textbf{Linux}
      distributions have used \textbf{ext4} as the default
      filesystem for quite a few years.

      \item

      \textbf{reiserfs} was the first journalling
      implementation used in \textbf{Linux}, but lost its
      leadership and further development was abandoned.

      \item

      \textbf{JFS} was originally a product of \textbf{IBM} and
      was ported from \textbf{IBM}'s \textbf{AIX} operating
      system.

      \item

      \textbf{XFS} was originally a product of \textbf{SGI} and
      was ported from \textbf{SGI}'s \textbf{IRIX} operating
      systems.  \textbf{RHEL 7} adopted \textbf{XFS} as its
      default filesystem.

      \item \textbf{btrfs} is the newest of the journalling
      filesystems and is still under rapid development. It
      is the default for \textbf{SUSE} and
      \textbf{openSUSE} systems.
   \end{itemize}

}
