One of the great things about the Open Source software movement is that it almost invariably gives computer users choices about which software to use for a particular task. For Linux, these choices often extend even to fundamental components of the operating system kernel itself. In my opinion, one of the most exciting aspects of Linux is the wide range of local and networked file storage options one has to choose from. However, sometimes the number choices can seem overwhelming, and it's can be difficult to find information that can help sort out the different possible solutions that are available. In Linux Filesystems, author William von Hagen attempts to provide information about and comparisons between the many different file storage options available on Linux systems.
The introduction and first three chapters lay the groundwork for the book. General filesystem concepts are explained, interoperability issues are discussed, and an overview of journaling filesystems is presented. While the information isn't of the depth that one would expect from a text book on file system design, there's enough information presented here to satisfy the majority of the book's audience. The author uses a very conversational, sometimes even glib, style. Occasionally, he strays off-topic, but over all von Hagen makes points clearly and succinctly.
Next, von Hagen discusses the specific journaling filesystems available for Linux. A chapter each is devoted to ext3fs, IBM's JFS, ReiserFS, and SGI's XFS. In each chapter, the filesystem's history and structure is explained, often by comparing it to filesystems that have previously been discussed. After the overview, information is given on how to obtain the filesystem sources and utilities, including patching the Linux kernel, order to activate this filesystem. A copy of the relevant software is also available on the CD included with this book. Finally, the author provides an overview of how to perform most of the standard maintenance activities associated with that filesystem. This information is good, but I would like to have seen a bibliography that points to other reference material about each of these filesystems. A lot has been written about each of them, and an aggregation of these references would have been very useful.
The next several chapters cover some non-Open Source filesystem solutions, Logical Volume Management (LVM), and performance comparisons of the filesystems that had previously been discussed. The performance comparisons were more generic than I would have preferred, and some of the information I was especially interested in wasn't provided, but enough data are presented for someone to get a feel for how the filesystem will actually behave under many real-world loads. The LVM discussion is pretty thorough, although I would have preferred a little more depth about the Linux software RAID capabilities.
The last chapters primarily cover distributed filesystem solutions, including NFS, OpenAFS, Samba, Netatalk, and the NetWare FileSystem. Some of the NFS information, far and away the protocol among these with which I'm most familiar, is a little fast and loose for my taste, but there's nothing strikingly wrong here. These chapters provide enough information for someone to get their system up and running and diagnose the most common problems one might encounter, and that's about all there's room for in an overview book like this one. There's also some information on backing up the filesystems covered in the book. Again, there isn't a lot of discussion about some of the tougher issues involved in large-scale system backups. However, a good overview is presented, including a good introduction to the Amanda backup system.
I purchased this book because I needed some quick information about different Linux filesystems. While a hard core filesystem speed freak like myself would enjoy an even more thorough discussion of many of the issues covered in this book, Linux Filesystems does contain all the information I would expect it to. Further, this information is well organized and clearly presented. I think this is a very good overview of the options available for the Linux operating system, and I would recommend this book to anyone looking for up to an intermediate level survey of the topic.
If the reader is interested in learning more about both the local filesystem and network file protocol options available for Linux, I believe this book will be worthwhile. It provides a solid overview as well as information on installing, configuring, and maintaining each filesystem it covers. The writing style is conversational and usually easy to understand. I recommend it to those interested in the topic.
Click here to return to the index of reviews.