[1] File-system object attributes may include metadata (times of last change,[2] access, modification), as well as owner and permission data.
In 2002, the question was brought to Unix pioneer Dennis Ritchie, who replied:[4] In truth, I don't know either.
A 1978 paper by Ritchie and Ken Thompson bolsters the notion of "index" being the etymological origin of inodes.
When the file is accessed, its i-number is used as an index into a system table (the i-list) stored in a known part of the device on which the directory resides.
Additionally, Maurice J. Bach wrote that the word inode "is a contraction of the term index node and is commonly used in literature on the UNIX system".
[8] Some Unix-style file systems such as JFS, XFS, ZFS, OpenZFS, ReiserFS, btrfs, and APFS omit a fixed-size inode table, but must store equivalent data in order to provide equivalent capabilities.
File names and directory implications: The operating system kernel's in-memory representation of this data is called struct inode in Linux.
The POSIX standard mandates file-system behavior that is strongly influenced by traditional UNIX file systems.
An inode without links represents a file with no remaining directory entries or paths leading to it in the filesystem.
Such files are removed from the filesystem, freeing the occupied disk space for reuse.
As a result, functions like getcwd() and getwd() which retrieve the current working directory of the process, cannot directly access the filename.
The most notable exception to this prohibition is found in Mac OS X (versions 10.5 and higher) which allows hard links of directories to be created on HFS+ file systems by the superuser.
This unique characteristic permits the file to be moved or renamed even during read or write operations, thereby ensuring continuous access without disruptions.
Subsequently, future access requests for that library will retrieve the newly installed version.
[16] This prevents other processes from reading or writing to the file (inode)[17] during the update operation, thereby avoiding data inconsistency or corruption.
One significant advantage of this mechanism is that it eliminates the need for a system reboot to replace libraries currently in use.
Consequently, systems can update or upgrade software libraries seamlessly without interrupting running processes or operations.