What’s your favourite sysadmin related book?
I own many sysadmin books but my favourite has to be Linux System Programming by Robert Love. It’s not always been my favourite of course, there will always be a special place in my heart for Unix Power Tools, if only for getting me past that initial “Write us a Unix shell script”, “no problem, what’s Unix?” moment in my first job, but that’s been pushed into second place by Robert Love’s book.
It’s not because I have any great expertise in C, or any great desire to write low level system code – I’m a mediocre programmer at best. It’s because it is the best book I know for those who want to actually understand how Linux works.
There are many books on administrating Linux boxes, most of them start with a “how to install” chapter. It’s been a long time since I needed one of those. Many of them continue with a tour of some of the GUI-based admin applications that exist. I don’t install X-windows on servers. Then they continue with an introduction to the command line and a tour of some useful commands. I know all the grep options I’ve ever required, and I can use a manual page as well as any other 15 year veteran CLI [command line interface] user. Basically these books have no appeal to me anymore, and I’m no longer their target market.
But once you move beyond the introductory books you hit a problem. The only other type of books that exist for the sysadmin are the application specific ones covering Bind or Tomcat or Apache or one of the many other applications we admin. These are of course fantastically useful if you want to admin Bind or Tomcat or Apache, but they’re pretty much useless if you don’t. If you want to get all business speak about it they address a vertical market, not a horizontal one.
What makes Linux Systems Programming so useful to me is the sheer amount of background information he has put into it. Each chapter contains big chunks of general information related to the topic of the chapter before he wanders off into the C functions that address it. So, for example, the chapter on “Advanced File I/O” contains descriptions of the various IO schedulers available and how and why you might want to use them. The “Advanced Process Management” section contains a good introduction to real-time, and “File and Directory Management” talks about extended attributes (heavily used by SELinux and Gluster) the way ext3 and xfs implement them and the restrictions they impose.
What this book gives me, and what no other book I’ve been able to find does (with the possible exception of Unix Power Tools) is the background information I need to make me a better Linux admin: not an Apache admin, or a puppet admin, but a Linux admin.
It’s not without its flaws of course, it’s at heart a book about C programming, and its value to a sysadmin is serendipitous rather than intentional – so many things you’d like to know aren’t covered (extended attributes are explained but not how to manipulate them from the command line for example), and there are large sections that are of little interest to the non-programmer. But when it’s good, it’s by far the best book out there.
It seems very strange to me that to get this kind of detailed knowledge I have to buy programming books, but when you think about it, there really aren’t any advanced sysadmin books on the market. Contrast this with the programming book market, taking Perl as our example. You can start with Learning Perl, move on to Intermediate Perl, study Advanced Perl, and somewhere along the way read Programming Perl and a dozen other books about different aspects of the language, and if you want to take it even further you can read many books about code style, algorithms or even the lofty heights of The Art of Computer Programming.
But where are the intermediate or advanced level sysadmin books? Where are the books that talk about performance tuning the OS, laying out RAID, the pros and cons of different file systems for your workload, (or even just figuring out what your “workload” actually means), the what, when and why (and why not) of configuring HugePages and the thousand and one other topics that deal with the fundamental ways Linux operates that we deal with every day as part of our jobs, but about which we never gain the deep understanding that perhaps we should.
This sort of information is out there: if you hunt around on the web you can find dozens of blog posts and howtos (many contradictory and outdated of course, this is the web after all!) on any of these subjects, but if you’re looking for a single cohesive description of the OS we make our livings at, sorry, you’re out of luck. This is a shame because the more you understand your job the better you’re going to be, and the easier you’re going find fixing the next weird and unusual problem (in fact the less likely you are to have a weird and unusual problem because you’ve anticipated it and fixed it before it had a chance to set off the pager).
Maybe it’s just me but these sorts of details are just plain fun, both as an end in themselves and as a way of showing off just how awesome you are to your comrades. We all know that sysadmins are the true elite of the computer world, so the better a sysadmin you can be, the more you truly understand Linux, then obviously the better the person you are!
So go and have a look at Robert’s book, it may make you a better sysadmin and a better person. I hope so because it’s the only choice you have.
Chris studied astrophysics at university but drifted into Unix when he finally accepted he was never going to get a job as a spaceman. After a brief stint working with Digital Unix he installed Red Hat 5.0 from a magazine cover disk and has never looked back. In the 15 years since then he’s alternated between sysadmin and consultant roles and is is currently a consultant with Red Hat.