Linux File System

Key Concepts

  • Hierarchical Structure: Linux organizes everything into a single, tree-like structure starting with the root directory (/). All files and directories are branches on this tree.

  • File Types: Linux doesn't rely on file extensions as heavily as some other operating systems. It supports several file types:

    • Ordinary files: Contain data (text, binaries, images, etc.)

    • Directories: Contain files and other directories.

    • Links: Pointers to other files

    • Device Files: Represent hardware devices.

    • Sockets: Provide inter-process communication channels.

    • Named pipes: Used for one-directional communication between processes.

Standard Directories

The Filesystem Hierarchy Standard (FHS) defines a common structure for most Linux distributions. Here are key directories:

  • / (Root):The top-level directory containing everything.

  • /bin: Essential user commands (ls, cat, etc.).

  • /sbin: System administration commands.

  • /boot: Bootloader files.

  • /etc: System-wide configuration files.

  • /home: Users' home directories.

  • /lib: Shared libraries for programs

  • /tmp: Temporary files

  • /usr: Secondary hierarchy (user programs, libraries, etc).

  • /var: Variable data like log files.

Inodes and File Permissions

  • Inodes: Each file and directory has an inode – a data structure storing file metadata:

    • Permissions (read, write, execute)

    • Owner and group

    • File size, timestamps

    • Pointers to the file's data blocks

  • Permissions: Linux uses a fine-grained permission system for access control:

    • User (u): The file's owner

    • Group (g): A group the file belongs to

    • Others (o): Everyone else

    • Read (r), Write (w), Execute (x): Permissions for each category

Mounting and Unmounting

  • Mounting: Attaching additional filesystems (e.g., hard drives, USB sticks) to the main filesystem hierarchy, making them accessible from a "mount point" (directory).

  • Unmounting: Detaching a filesystem.

Common File System Tools

  • Navigation: cd (change directory), ls (list), pwd (working directory).

  • Manipulation: cp (copy), mv (move/rename), rm (delete), mkdir (create directory), touch (create a file)

  • Searching: find (flexible search), grep (search within files)

  • Permissions: chmod (change permissions), chown (change owner)

File Systems Types

Linux supports various file systems designed for different use cases:

  • ext4: The standard for many Linux distros. Reliable and efficient.

  • Btrfs: Modern file system with copy-on-write, snapshots, etc.

  • XFS: High-performance, optimized for large files.

  • JFS: Designed for journaling to improve reliability.

  • ZFS: Advanced features like pooling, snapshots, and compression.

Last updated