What is the difference between FAT and Inode?

Fat uses tables in central locations while inodes are spread throughout the file system.

To further highlight what the actual difference is to have a look at how each system represents files as a whole and how their base structures work. A single entry in a FAT or inode-based system might be somewhat comparable but the overall structure that supports the system is not.

Since it's been decades there are also variations of those systems that might be slightly different. Newer technologies also might influence those variants as e.g. HDDs and SSDs support different access patterns.

A FAT-based system by design should have an entry for every single cluster in your filesystem. By parsing it you should be able to tell what every cluster in your system contains. Its data structure is a single, solid list that might be kept in multiple locations to have some backup. All the major information is kept in that list. Especially what clusters belong to a file are in that table. Without that information, it's hard to figure out what blocks belong to a file or what directories exist.

See Design of the FAT file system - Technical overview and The FAT File System TechNET article.

An inode-based system on the other hand usually follows a different pattern. One of the major differences is that an inode might point to a list of pointers (very similar to an inode) that points to the actual blocks. So rather than having an index of every single cluster on the disk you only have an index of the (max) number of files. Another major difference is how directories are being handled.

Talking about an inode system requires a bit of a broader view and looking at the Kernel.org article you will find that the location of the inode table is not fixed within a block group and there can be multiple block groups per FS. Each block group features its own inode table. In that way, though you have a contiguous filesystem you might have multiple inode tables that allow you to reference files.

See:

  • David A. Rusling - EXT2 Directories
  • David A. Rusling - The EXT2 Inode
  • inode pointer structure
  • SO: Where are inodes stored at?
  • SE Unix: What is a Superblock, Inode, Dentry and a File?
  • SE Unix: Where are i-node tables stored?
  • Kernel.org ext4 Data Structures and Algorithms » 2. High Level Design
  • Kernel.org ext4 Data Structures and Algorithms » 3. Global Structures
  • Kernel.org ext4 Data Structures and Algorithms » 4. Dynamic Structures
  • PC-Freak.net: What is inode and how to find out which directory is eating up all your filesystem inodes on Linux, Increase inode count on a ext3 ext4 and ufs filesystems
  • Location of inodes (ext)?