Directory Inode Number Not Unique


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Directory Inode Number Not Unique
# 1  
Old 05-22-2005
Directory Inode Number Not Unique

Hi, I know that inode for each file is unique, but is it the for the directory? So far I found different directories has the same inode nubmer when you do ls -i, could some one explain why? Thanks a lot.
# 2  
Old 05-22-2005
A directory is essentially a file, one that is written in a very specific manner. And for all files, the only data structure that will give out complete information about the file is the inode. So, for all files there is only one inode, unless the file is a link. In that case, you have two or more files referring to the same inode.

Of course, the inode number is unique only on the filesystem where the file exists. Files across different filesystems can have the same inode number.

The directories that you saw were probably across different filesystems.
# 3  
Old 05-22-2005
Links to directories happen a lot. Example:
Code:
$ mkdir tmp
$ cd tmp
$ mkdir a b c
$ ls -li .
total 0
278623 drwxr-xr-x   2 user        users           96 May 22 07:39 a
278624 drwxr-xr-x   2 user        users           96 May 22 07:39 b
278625 drwxr-xr-x   2 user        users           96 May 22 07:39 c
$ ls -lid .
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 .

I just made this directory seconds ago, but it has 5 links. Why?
Code:
$ ls -lid ../tmp . a/.. b/.. c/..
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 .
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 ../tmp
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 a/..
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 b/..
278622 drwxr-xr-x   5 user        users           96 May 22 07:39 c/..
$

However . and .. should be the only hard links to directories. The ln command will not hardlink directories. But the link() system call will if it is invoked by root. Doing this can ruin the tree structure of a filesystem.
# 4  
Old 05-22-2005
Solaris 10 SPARCS same ino number for file system

Thank you all for replying. I understand the link to directories has the same inode number, and yes,if it is a different file system, it may have the same inode number also. But here is what I found out from Solaris 10 (SPARCS) file system . Below you would find that /usr, /usr/bin, /var/sadm all of them have the same inode nubmer 4, and they are under the same file system and no links between them...Could someone help to explain why the inode number is not unique? Thanks a lot.

Code:
rose-{5} ls -i /
     22728 TT_DB/              316 kernel/             115 sbin/
         9 bin@                112 lib/                120 tmp/
     11104 cdrom/                3 lost+found/           4 usr/
      2455 core                113 mnt/              22049 usr2/
        10 dev/              11097 net/                  5 var/
      1118 devices/              8 opt/              22035 vol/
        11 etc/                519 platform/         22058 www/
         6 export/             114 proc/
     11098 home/             22036 root/
rose-{6} ls -i /usr/
     28497 4lib/             24146 j2se/               116 preserve@
      5047 5bin@              3876 java@              7511 proc/
     17802 SUNWale/           8613 jdk/                117 pub@
      3668 X@                   25 kernel/             118 sadm/
     20168 adm@                 40 kvm/                125 sbin/
     79500 apache/              41 lib/               3203 sfw/
    102302 appserver/       197202 local/              161 share/
    129684 aset/                 3 lost+found/       11395 snadm/
         4 bin/                106 mail@               201 spool@
        21 ccs/               5464 man@                202 src@
        23 demo/               107 net/                203 tmp@
      3763 dict@               112 news@             28362 ucb/
      7541 dt/              141483 oasys/           157748 ucbinclude/
        24 games/              113 old/              28411 ucblib/
     84764 gnome/              114 openwin/         141489 vmsys/
      5640 include/           6032 perl5/              204 xpg4/
     73687 iplanet/            115 platform/         73440 xpg6/
rose-{7} ls -i /var/
       119 adm/               1018 krb5/               135 preserve/
     13281 apache/             126 ld/                 136 run/
     14974 appserver/         1443 ldap/                 4 sadm/
       123 audit/              130 log/                137 saf/
      4570 crash/                3 lost+found/       11664 samba/
       124 cron/              7644 lp/                4529 sma_snmp/
      7430 dmi/                131 mail/              7434 snmp/
     28095 ds5/                133 news/               139 spool/
      5682 dt/                1315 nfs/               4578 statmon/
       329 fm/                1444 nis/                144 tmp/
     11323 gnome/             7790 ntp/              15615 uucp/
     13716 imq/                134 opt/               1445 yp/
       125 inet/             17832 patchsvr/
rose-{8}


Last edited by zazzybob; 05-22-2005 at 11:06 AM.. Reason: Added code tags for readability
# 5  
Old 05-22-2005
I doubt that on any well-configured *nix box /usr and /var are going to be on the same filesystem. They will both be mounted under the root filesystem (here is where the various definitions of "filesystem" become blurred between physical filesystems, mounted filesystems, the root filesystem, etc)

Please post the output of df -k and cat /etc/vfstab for starters...

Cheers
ZB
# 6  
Old 05-22-2005
how to get directory path and name, file path and name from inode

/, /usr/, /var are different physical filesystems. Is it why inode number can be the same across them?...

The reason I am asking all these questions is that I want to find out if there is a way, through inode number (inode.st_ino), I can fnd out file directory path, and file name, or directory path and directory name? Any system functions that I can call to find out? Thank s a lot.

Code:
rose-qwang{1} df -k
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t0d0s0     943718  703028  184067    80%    /
/devices                   0       0       0     0%    /devices
/dev/dsk/c0t0d0s6    5040814 3163874 1826532    64%    /usr
proc                       0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
fd                         0       0       0     0%    /dev/fd
/dev/dsk/c0t0d0s1    1984564  322282 1602746    17%    /var
swap                 3339016      88 3338928     1%    /var/run
swap                 3339936    1008 3338928     1%    /tmp
/dev/dsk/c0t0d0s5    4737456 3429900 1260182    74%    /opt
/dev/dsk/c0t1d0s0    35009161 8089514 26569556    24%    /usr2
/dev/dsk/c0t0d0s7    20160418 4535470 15423344    23%    /export/home
rose-qwang{2} cat /etc/vfstab
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/dsk/c0t0d0s3       -       -       swap    -       no      -
/dev/dsk/c0t0d0s0       /dev/rdsk/c0t0d0s0      /       ufs     1       no -
/dev/dsk/c0t0d0s6       /dev/rdsk/c0t0d0s6      /usr    ufs     1       no -
/dev/dsk/c0t0d0s1       /dev/rdsk/c0t0d0s1      /var    ufs     1       no -
/dev/dsk/c0t0d0s7       /dev/rdsk/c0t0d0s7      /export/home    ufs     2 yes     -
/dev/dsk/c0t0d0s5       /dev/rdsk/c0t0d0s5      /opt    ufs     2       yes -
/devices        -       /devices        devfs   -       no      -
swap    -       /tmp    tmpfs   -       yes     -
/dev/dsk/c0t1d0s0       /dev/rdsk/c0t1d0s0      /usr2   ufs     3       yes -


Last edited by zazzybob; 05-22-2005 at 11:54 AM.. Reason: code tags again ;-)
# 7  
Old 05-22-2005
Quote:
Originally Posted by nj302
/, /usr/, /var are different physical filesystems. Is it why inode number can be the same across them?...
Yes. bin has inode number 4 on the /usr filesystem. On /var, sadm has inode number 4 on the /var filesystem. /usr can therefore have inode number 4 on the / filesystem.

Cheers
ZB
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Print number of lines for files in directory, also print number of unique lines

I have a directory of files, I can show the number of lines in each file and order them from lowest to highest with: wc -l *|sort 15263 Image.txt 16401 reference.txt 40459 richtexteditor.txt How can I also print the number of unique lines in each file? 15263 1401 Image.txt 16401... (15 Replies)
Discussion started by: spacegoose
15 Replies

2. Linux

Inode number changes for a file in Redhat Linux

Hi, I have created a file a.txt in Redhat Linux. Inode number for a file changes every time i update the file using vi editor , gedit etc. Is there any setting that can be made , such that inode number never changes as that is supposed to be the expected behavior? Or if we cannot... (13 Replies)
Discussion started by: srirammanohar
13 Replies

3. Solaris

Retreive deleted file name if you having inode number

Some one please help me to find deleted file name, if I am having inode number in Solaris without using any 3rd party tool. Thanks :) (3 Replies)
Discussion started by: aksijain
3 Replies

4. Red Hat

Inode number changes for a file in Redhat Linux

Hi, I have created a file abc.log in Redhat Linux. Inode number for a file get changes every time i update the file using vi editor. Is there any setting that can be made , such that inode number never gets changed? Or if we cannot restrict from inode number getting changed , is... (9 Replies)
Discussion started by: raghu.amilineni
9 Replies

5. UNIX for Dummies Questions & Answers

Inode: is it both unique and 'permanent'?

I try to understand the meaning of an inode. I wonder whether an inode is unique (I'm pretty sure it is) and whether it remains the same inode regardless of whatever happens to the file, dir or whatever? I read somewhere that an inode stores info about the file, size... so changing the... (4 Replies)
Discussion started by: dakke
4 Replies

6. Shell Programming and Scripting

Modifying a file without changing inode number

Hi all, I am struggling to change the content of a file without changing the inode number. The exact issue is as below. I have a file name test.bak which has 100 lines of text. I am trying to to delete the first 90 lines of the text in the file. I know that using sed/awk/head/tail I can... (3 Replies)
Discussion started by: sathishkmrv
3 Replies

7. AIX

How to get the filename of which has been deleted if I know the inode number?

How to get the filename of which has been deleted if I know the inode number. i can use the command "istat" to get the inode number of the file. # istat /proc//fd/x If this file has been deleted,but the process of this file has not been closed and handle has not been released ,so this... (3 Replies)
Discussion started by: JoyOnLine
3 Replies

8. UNIX for Dummies Questions & Answers

Number of Inode on a disk

How we can know number of inode present in my Disk including free and occupied. Is there any tool or program to know how much free inode are there in inode free list . (2 Replies)
Discussion started by: mr_deb
2 Replies

9. UNIX for Advanced & Expert Users

how to find out pathname from inode number

Hi all when I execute pmap command on one of my daemon process, I am able to see the following output. Address Kbytes RSS Anon Locked Mode Mapped File 00010000 40 40 - - r-x-- irs026bmd 00028000 56 56 16 - rwx-- irs026bmd 00036000... (3 Replies)
Discussion started by: axes
3 Replies

10. Filesystems, Disks and Memory

Inode number

as kernel keeps track of user activities on a file by its INODE number and I node table . what is the structure of Inode table. and where does this Inode table mapped into?user space or kernel space? is the Inode Number is fixed for a file till its deletion? thanks (1 Reply)
Discussion started by: compbug
1 Replies
Login or Register to Ask a Question