Understanding UNIX / Linux File System

by on November 7, 2005 · 48 comments· LAST UPDATED May 7, 2012

in , ,

A conceptual understanding of file system, especially data structure and related terms will help you become a successful system administrator. I have seen many new Linux system administrator without any clue about file system. The conceptual knowledge can be applied to restore file system in an emergency situation.

What is a File?

File are collection of data items stored on disk. Or, it's device which can store the information, data, music (mp3 files), picture, movie, sound, book etc. In fact what ever you store in computer it must be inform of file. Files are always associated with devices like hard disk ,floppy disk etc. File is the last object in your file system tree. See Linux/UNIX - rules for naming file and directory names.

What is a directory?

Directory is group of files. Directory is divided into two types:

  • Root directory - Strictly speaking, there is only one root directory in your system, which is denoted by / (forward slash). It is root of your entire file system and can not be renamed or deleted.
  • Sub directory - Directory under root (/) directory is subdirectory which can be created, renamed by the user.

Directories are used to organize your data files, programs more efficiently.

Linux supports numerous file system types

  • Ext2: This is like UNIX file system. It has the concepts of blocks, inodes and directories.
  • Ext3: It is ext2 filesystem enhanced with journalling capabilities. Journalling allows fast file system recovery. Supports POSIX ACL (Access Control Lists).
  • Isofs (iso9660): Used by CDROM file system.
  • Sysfs: It is a ram-based filesystem initially based on ramfs. It is use to exporting kernel objects so that end user can use it easily.
  • Procfs: The proc file system acts as an interface to internal data structures in the kernel. It can be used to obtain information about the system and to change certain kernel parameters at runtime using sysctl command. For example you can find out cpuinfo with following command:

# cat /proc/cpuinfo

  • Or you can enable or disable routing/forwarding of IP packets between interfaces with following command:

# cat /proc/sys/net/ipv4/ip_forward
# echo "1" > /proc/sys/net/ipv4/ip_forward
# echo "0" > /proc/sys/net/ipv4/ip_forward

  • NFS: Network file system allows many users or systems to share the same files by using a client/server methodology. NFS allows sharing all of the above file system.
  • Linux also supports Microsoft NTFS, vfat, and many other file systems. See Linux kernel source tree Documentation/filesystem directory for list of all supported filesystem.

You can find out what type of file systems currently mounted with mount command:
$ mount
OR
$ cat /proc/mounts

What is a UNIX/Linux File system?

A UNIX file system is a collection of files and directories stored. Each file system is stored in a separate whole disk partition. The following are a few of the file system:

  • / - Special file system that incorporates the files under several directories including /dev, /sbin, /tmp etc
  • /usr - Stores application programs
  • /var - Stores log files, mails and other data
  • /tmp - Stores temporary files

See The importance of Linux partitions for more information.

But what is in a File system?

Again file system divided into two categories:

  • User data - stores actual data contained in files
  • Metadata - stores file system structural information such as superblock, inodes, directories

Next time I will write more about Metadata objects - superblock, inodes, directories with actual linux commands so that you can understand and master the concepts :)

Continue reading rest of the Understanding Linux file system series:

  • Part II - Understanding Linux superblock
  • Part III - An example of Surviving a Linux Filesystem Failures
  • Part IV - Understanding filesystem Inodes
  • Part V - Understanding filesystem directories
  • Part VI - Understanding UNIX/Linux symbolic (soft) and hard links
  • Part VII - Why isn't it possible to create hard links across file system boundaries?
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 48 comments… read them below or add one }

1 Ashish January 18, 2006 at 12:38 pm

Hello Sir,

I would like to post my comments regarding file and directories definitation.

File:

It contains the metadata which includes inodes, date and stamp, rights and ownership filesize and type. It also has the link to the datablock which stores data on it.

Directories:

Directories are also files which contains filename to inode associations in its datablock so people says there are only files in Unix.

Thanks!
Ashish

Reply

2 nixcraft January 18, 2006 at 8:14 pm

Nice ashish! I appreciate your post :)

Reply

3 Anonymous January 30, 2006 at 11:37 pm

two typos

Procfs: The proc
___^____________
cat /proc/mounts
_______________^

Reply

4 Anonymous January 30, 2006 at 11:40 pm

You didn’t mention Reiserfs which I think is a little short sighted. Many users prefer it to ext3, XFS, and JFS journaling filesystems. Once reiserfs v4 is merged we’ll see some cool features being made available to all other filesystems as well.

Reply

5 nixcraft January 31, 2006 at 1:00 am

Anonymous, thanks. I really appreciate your help for spotting out typos and your post.

Reply

6 nixcraft January 31, 2006 at 1:07 am

Yes, I just missed reiserfs v3 was quite stable v4 will take some to stable under 2.6 kernel.. I will update the post for reiserfs. Thanks for suggestion.

Reply

7 Anonymous January 31, 2006 at 8:49 am

Quote “It contains the metadata which includes inodes, date and stamp, rights and ownership filesize and type. It also has the link to the datablock which stores data on it.”

I think this definition is wrong, a file by definition is a stream of data -the meta data is exactly that, its data about data.

The inode may be part of the operating systems fileing system, but it is NOT part of the file. For example if I copy a file from my linux system onto my windows system i lose the date/time/inode/mode/group – but I still have my “file”

Jon

Reply

8 Ashish May 15, 2006 at 11:17 pm

Hey Jon,

This brings another querry in my mind.
Where file is storing the information about date, stamp, permissions, ownership and filesize?

BTW, I really do not have much information about windows file system. Is it same like Unix file system? Is it having inodes and other stuff?

Thanks!
Ashish Pathak

Reply

9 Thomas Scott January 29, 2007 at 3:41 am

“A conceptual understanding of file system, especially data structure and related terms will help you become a successful system administrator”
———————-
But his job is easily taken away
by future s/w that manages all objects
files and folders , w/o a cmd line .
Automating objects , reduces the
kernel size , runs much faster .
————————

Pocket boxes are $5 cpu , & 64MB .
And Intel lost its grip ( 20 countries
make ARM !). No more WinTel .

Ppl will hack h/w and s/w into
a pocket box that will run fast
enuf to do everything .
OpSys that has NO cmd line , true G.U.I.
uses images ONLY , has no text keyboard.
But since OpSys is non-text , one
can create apps in hours ! Most of
the proceedures will be in kernel ,
all you need is to chain these proc’s
in the proper order to create your app .

Yes , i know Linux is your paycheck ,
sorry …..

Reply

10 riyaz ahmed January 16, 2012 at 3:57 pm

dear sir,
please send me a good material about red hat linux to i become a good
and skilled system administration in linux.above my e.mail address

Reply

11 Arnab June 11, 2007 at 8:01 am

Hey friends can any one answer this following questioon plz.. it’s urgent.. I need ur help.

” Now a days memories are large and cheap.Therefore,when a file is opened it is simpler and faster to fetch a new copy of the i-node into the i-node table, rather than searching the entire table to see if it is already there” True or False?? – Justify

Reply

12 abhi November 14, 2007 at 3:11 pm

@Thomas Scott,

Thomas, a question : How does your hypothetical keyboard-less OS stores your resume to begin with? or any data? Just curious.

And what if someone wants to create something new? How do these “most procedures” cope with that then? Sheesh!

If you don’t understand computers, or are plain simple drunk, why bother commenting at all? Why not just sleep off the effect of the wonderful liquor you have imbibed?

Reply

13 Anonymous January 17, 2012 at 5:27 am

I honestly do not think that this is the place that someone such as abhi, should be making disparaging remarks about someone who has a query about an issue he is facing. He approached this forum of ‘professionals’ to seek advice, and this unscrupulous individual abhi decides to attack his intelligence. For all you know “MR. ABHI”, Mr. Scott could be fairly new to this industry in a new environment about something he understands enough to get the job, but is having difficulty in overcoming an issue. Not everyone is blessed with the omniscience of computer workings. I am pretty sure that if you took your CCNA exam, and failed it the first time, you went and asked for help. Even then, IF you enrolled in school, and learned it from someone else, THEY had the patience to answer your questions when you didn’t know. Give the guy a break. As for you MR. Scott, if these people don’t help you, don’t get discouraged. Keep looking, you’ll find the answer from someone who will be patient enough to give it to you.

Reply

14 JohnSmith March 19, 2012 at 5:51 am

^ Here we have an excellent example of “white knighting.”

Comprehension, do you know it? You didn’t even read T.Scott’s intelligible gibberish, did you? Yeah, thought not.

Reply

15 koulis December 11, 2007 at 4:13 pm

hi,
i very appreciate this tutorial but
part-ii ( http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/11/understanding-unixlinux-filesystem.php ) forwords to a 404 error.
pls fix toc ontinue reading :D

Reply

16 koulis December 11, 2007 at 4:28 pm

ok i googled a bit and found the correct url ( http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-superblock.html )

pls fix it for others and sorry for posting a comment instead of mail.

Reply

17 nixCraft December 11, 2007 at 4:53 pm

koulis,

I’ve updated php regex and it should now redirect to correct url.

Reply

18 srees December 13, 2007 at 2:50 pm

will linux support RAW file system?
my USB drive was changed by Trojan horse to Raw.
how can i recover it?

Reply

19 ami January 2, 2008 at 8:21 am

Is there a way to add custom properties (attirbutes) to iNode structure?

Reply

20 savi February 26, 2008 at 5:43 am

diagrms would have helped the user to understand the things easily.

Reply

21 AMITKUMAR May 15, 2008 at 6:51 am

hi, all

i’ve to design ext3 linux file system, so please any body can suggest me, that from where i can get the proper knowledge of ‘ext3 linux file system’ architecture/ structure

Reply

22 franklin August 4, 2008 at 5:52 am

Can Someone clear my doubt in ext3 file system
what is meaning of journalising in ext3 and describe?

Reply

23 franklin August 4, 2008 at 6:06 am

nixcrft excellent and delicious site,thanks Vivek sir.

Reply

24 nixCraft August 4, 2008 at 8:41 am

Franklin,

Under ext3 there is a journal where file system logs the changes before committing them to disk / main file system. ext3 less likely to become corrupted in the event of power failure or system crash. See this tutorial for more info.

Reply

25 nari December 24, 2008 at 9:01 am

Q). Files (Types of files, attributes, device files, usage, how to control hw with files, cdrom, hdd, tapedrive)

Reply

26 veera February 2, 2009 at 10:02 am

hi,
I wants to find dump(crash dump) file system name and FS type and how many blocks it has? for all unix plat forms linix ,aix,hp-ux and solaris.
please any body suggest the commands for getting above values.
Thanks,
Veera.

Reply

27 HungryCoder February 16, 2009 at 7:09 pm

nice article. it helped me a lot. thank u so much.

Reply

28 amin April 15, 2009 at 6:37 am

unix or linux are support FAT / NTFS

Reply

29 AMOL August 5, 2009 at 7:15 pm

HI NIX CAN U NAME SITE TO DONL LINUX SUUGEST ME BEST VERSION
I AM USING
CORE 2 DUO
THANKS & REGARDS,
941.

Reply

30 Rahul Tripathi October 28, 2009 at 9:50 pm

Hi All,

I have a problem.One of my collegue has mistakenly deleted / file system on one of production server[Linux based] which is not coming up.

We have restored /etc of the same server on some other server in the network. But we are not able to logon to main server.

Please suggest an alternative so as how to restore my server within 1 hour time.

Thanks,
Rahul

Reply

31 Sani Abdul February 21, 2010 at 11:52 pm

I appreciate your services

Reply

32 Saeed Ahmad November 13, 2010 at 11:59 am

Dear AMOL

You use the Suse / Fedora or the RHEL

Regards

Reply

33 akhil February 27, 2011 at 2:59 pm

sir
i want to detailes of internal file structure in linex

Reply

34 budhi prakash chhipa March 30, 2011 at 9:14 am

Good!
Thank U;

Reply

35 rekha June 5, 2011 at 4:05 pm

plz tell me more abt unix file system performance

Reply

36 shailesh July 18, 2011 at 7:00 am

Dear Sir.
Kindly provide solution for how to working file system

Reply

37 anup mukherjee July 22, 2011 at 5:51 am

Thanks a ton….nice helpful article…………..

Reply

38 irshad khan July 26, 2011 at 10:22 am

hey hi friends,,,, i just want to know that is this uses in real life means any one can use this file system (normal operator) otherwise networking specialists required to remember this only…….. reply

Reply

39 piet October 19, 2011 at 9:32 pm

typo: “lsofs” should be “lofs”.

Reply

40 manisha rai January 18, 2012 at 9:52 am

Which files is a part of Linux System??
(a)Autoexec.bat (b)config.sys
(c)both A & b (d)None

Reply

41 Bill Gates June 17, 2014 at 11:38 am

We don’t give answers to your exams!!!
Study for your own exams!

Reply

42 prasad February 4, 2012 at 7:36 am

i found your site from googled… can i know what is the command to view version of linux OS

Reply

43 satyendra kumar February 9, 2012 at 9:58 am

Dear sir,

I want to know that which type of file system in use in linux..

Please reply

Reply

44 ali February 29, 2012 at 9:04 am

i did n’t understand.plz tell me more.

Reply

45 Ramkumar March 14, 2012 at 10:41 am

i really get good information from this site…may know what the main difference from windows files system with linux

Reply

46 yp_1981 July 26, 2012 at 11:01 am

I am searching for the file system which is compatible to Linux kernel 3.4.1. During booting kernel thought NFS I am getting error VFS: Cannot open root device “nfs” or unknown-block(2,0). Is this because i am using filesystem for rootfs which are for kenernal 2.6.32?

Reply

47 Tomb1n February 3, 2013 at 7:26 pm

guys, don’t even bother with Linux, it’s what fags use that have no money. Go with Macs, at least they throw in a free double sided dildo.

Reply

48 DEEPAK November 27, 2013 at 11:07 am

Which is the fastest and best filesystem ?

Reply

Leave a Comment

Tagged as: , , , , , , ,

Previous post:

Next post: