01 Welcome to the UNIX Filesystem course

Preliminaries

  • This course is aimed at users who are reasonably confident with the shell. You won't need to be a demon shell scripter, but if you're not up to shuffling files around, running programs, managing your PATH, understanding what a process is, and so on, you're likely to end up out of your depth quite soon.

    If that last sentence describes you, relax! This course will be archived on the Linuxchix website as each lesson appears. You can come back to it at any time, so don't feel like you're missing the boat. Take learning at your own pace, or you'll end up feeling rushed and not enjoying it as much as you ought to.

  • You will also need a UNIX system on which you have root (system administrator) access. Some of the exercises and demonstrations in this course are dangerous. Messing with filesystems can do anything from minor inconveniences such as having to reboot, right through to full-scale catastrophes such as losing data and making the machine unusable. If at all possible, do the exercises in this course on a separate machine to which you feel no strong attachment. At very least have backups of your stuff - it's good pratice anyway.

    To put this in perspective, though, I have been messing with this stuff for a good few years now, and I have never shot myself in the foot more dramatically than "whoops, that was silly, reboot time!" When used correctly, even the most dangerous stuff won't bite you.

    Fate, it seems, is not without a sense of irony. Within five minutes of writing that paragraph, I discovered that I had wiped the data on the wrong disk of an important machine, using one of the very techniques I will be teaching here. Lesson to be learned here? Make backups!

    Each exercise which could cause any damage will be marked as such, and the danger points will be stated. Unless told otherwise, assume that this stuff is safe.

  • Although the basic concepts involved are applicable to any UNIX derivative, some commands will differ between the different flavours. I'll be running this course on the assumption that everyone here is using the Linux kernel,and giving instructions for its use. This is not to say that users of other UNIXes are unwelcome - almost all the course will work for you without adaptation. However, there may be a few things, particularly as we stray into more advanced areas, where they start to differ.

    When I talk about "UNIX", by the way, I mean all UNIX-like operating systems. When I talk about "Linux", I'm talking about the behaviour of the Linux kernel and the particular set of programs that usually keep it company.

  • If at any time, or for any reason, you're having problems, ask! I'm not the world's best explainer, and sometimes things just need clarification. It's why textbooks never made schools obsolete, and it's what this mailing list is for.

Course Content

This course will teach you about the UNIX filesystem. That's the name given to the way that the UNIX operating system organises its files and directories, and makes them available to programs. You will learn about how this filesystem is mapped onto physical devices (hard disks, CD-ROM drives), "fake" devices (heard of "/proc", even used it a bit perhaps, but don't know how it works?), and even other machines over the network.

You will also learn how to automate mapping and unmapping sections of the filesystem to various devices (this is called "mounting" and "unmounting"), change which bits of the filesystem are visible to which processes, and more.

I will also digress into specific implementations of the filesystem - confusingly also called "filesystems" - and explain what this "journalling" thing is about, what RAID is and how it works, and how to boot from a RAM disk.

At the end of the course, I will be holding an "Any Questions?" session, in which you can ask me to elaborate on anything I've talked about, or remind me of something I forgot to cover. I will, of course, also be answering questions throughout the course.

Continuity

I'm fairly anxious that this course should not stagnate, with me going all "can't be bothered" or getting horribly busy and leaving participants in the lurch. As a result, I will try to keep a few lessons ahead of what's actually posted to the list, so I can carry on posting those at regular intervals even if I suddenly don't have time to write anything sizable. If this happens, I will post warnings that I'm eating into my buffer, and say how many lessons are complete and waiting to go. If this runs low, people should start pestering me...

Let's go!

Now I've outlined what we're going to do, we will start on the lessons themselves. Lesson 1 will be posted a few days after this introduction hits the courses list. It covers the idea behind the UNIX filesystem, how it differs from other systems (principally DOS/Windows), and why it's such a good thing. It will also cover the conceptual side of mounting filesystems.