- Chapter 3 Linux Filesystem
- The Linux Filesystem
- Filesystem Organization
- Keeping Your Disks Healthy
- Summary
Filesystem Organization
Linux is organized in an hierarchical manner. It considers every file, directory, device, and link as a file that is placed on this structure. The most common organization for the directory structure is shown in Figure 3.2.
Figure 3.2 This figure shows a graphical representation of the organization of the Linux filesystem. This is independent of the actual partitions.
Each of the directories on the Linux filesystem conventionally contains certain types of files. Table 3.5 shows some of the more common directories and their contents.
Table 3.5 Linux Directories and Their Contents
Directory |
Contents |
/ |
The beginning or root of the directory tree |
/bin |
Command binaries |
/dev |
Peripheral device files |
/etc |
Configuration files for the system |
/home |
Users' home directories |
/lib |
Shared libraries |
/mnt |
Temporary partitions used for mounting |
/proc |
Virtual filesystem containing information about kernels and processes |
/tmp |
Application temporary files |
/usr |
Several subdirectories containing user commands, documentation, and other system information that does not change |
/var |
Log files and other files that change while the system is running |
Inodes
The Linux operating system stores a lot of information about each file, including the following:
Pointers to the file's physical location on the disk
The file's name
The file's owner and group IDs
Rules governing access to the file
The file's size
The date and time the file was last accessed
The date and time the file was last modified
The date and time the inode was last modified
The number of links to the file
A data structure called an inode is used to store the above information pertaining to each file with the exception of the file's name. The file's name is stored in its directory with an associated inode.
Each and every file has an inode associated with it. Even though every file can have more than one name through the use of links, each file has only one inode. (See Chapter 6, "Maintaining the Filesystem," for information on links.) Use ls -l to determine the number of the inode for any file. For example, issuing the command ls -l MyFile returns the following:
4144 MyFile
This means that the information about the file MyFile has an inode number of 4144. If an inode becomes corrupted, the file will no longer be accessible. Another way to see the inode number for a file is to use the stat command. Its syntax is
stat filename
Its output should look similar to the following:
File: "mywhich" Size: 101 Filetype: Regular File Mode: (0775/-rwxrwxr-x) Uid: ( 503/ hadden) Gid: ( 500/ hadden) Device: 3,0 Inode: 147474 Links: 1 Access: Tue Oct 19 16:16:58 1999(00019.19:52:38) Modify: Fri May 28 09:02:41 1999(00164.03:06:55) Change: Fri Sep 3 17:20:37 1999(00065.18:48:59)
The stat command reads the inode structure associated with the specified filename.
Key Concept
Each file has an associated inode that contains the file's physical location and all its attributes except for its filename. Use either the ls -l or stat command to determine a file's inode.
File Types
Linux supports several file types and uses the first character in the permission block to name the file type. Linux does not differentiate between files and directories in the inode table. The operating system knows whether the file is a regular file or a directory by the file type character. The most common file type characters used by Linux are listed in Table 3.6.
Table 3.6 The First Character of the Permission Block Identifies the File Type
Character |
Type of File |
- |
Ordinary file |
b |
Block device |
c |
Character device |
d |
Directory |
l |
Link |
Most files on the Linux system are ordinary files, including text files and applications. Any file a user creates is an ordinary file.
To Linux, directories are just empty files. They are organized in an hierarchical manner to provide holding places for other file types.
Block and character mode devices are composed of the instructions necessary for Linux to communicate with peripherals. These files are usually located in /dev.
Links are identified in the file type character as an l. See Chapter 6 for more information on links.