关于目录连接数量的思考
[root@Gypsy_110 tmp]# df -HT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 5.2G 363M 4.6G 8% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 ext4 102M 30M 67M 31% /boot
/dev/mapper/vg1-lv1 ext4 3.1G 72M 2.9G 3% /home
/dev/sda5 ext4 2.5G 71M 2.3G 4% /tmp
/dev/mapper/vg1-lv2 ext4 5.2G 895M 4.0G 19% /usr
/dev/sda7 ext4 3.1G 406M 2.6G 14% /var
[root@Gypsy_110 tmp]# ls -ld /tmp
drwxrwxrwt. 5 root root 4096 5月 3 18:31 /tmp
[root@Gypsy_110 tmp]# mkdir inode_dir
[root@Gypsy_110 tmp]# ls -ld /tmp
drwxrwxrwt. 6 root root 4096 5月 3 18:35 /tmp
连接数 由5到6
[root@Gypsy_110 tmp]# ls -ld inode_dir/
drwxr-xr-x 2 root root 4096 5月 3 18:35 inode_dir/
新建的目录的连接数量是 2
这个2应该是 inode_dir/ 和 inode_dir/.
二者的inode号一样
[root@Gypsy_110 tmp]# ls -lid inode_dir/ inode_dir/. inode_dir/..
24 drwxr-xr-x 2 root root 4096 5月 3 18:35 inode_dir/
24 drwxr-xr-x 2 root root 4096 5月 3 18:35 inode_dir/.
2 drwxrwxrwt. 6 root root 4096 5月 3 18:35 inode_dir/..
[root@Gypsy_110 tmp]# ls -lid /tmp /tmp/inode_dir/..
2 drwxrwxrwt. 6 root root 4096 5月 3 18:35 /tmp
2 drwxrwxrwt. 6 root root 4096 5月 3 18:35 /tmp/inode_dir/..
二者的inode号一样
而对于根目录来说:
[root@Gypsy_110 tmp]# ls -lid /tmp/ /tmp/. /tmp/..
2 drwxrwxrwt. 6 root root 4096 5月 3 18:35 /tmp/
2 drwxrwxrwt. 6 root root 4096 5月 3 18:35 /tmp/.
2 dr-xr-xr-x. 22 root root 4096 5月 3 18:31 /tmp/..
由于挂载点都是 /tmp ,因此 /tmp/ /tmp/. /tmp/.. 均在同一个文件系统内;
而这三个文件的inode号都是2 (通常一个文件系统的最顶层inode号码会由2开始),
因此这三个文件名都指向同一个inode。所以这三个文件的内容也就完全一摸一样。
也就是说,根目录的上层就是他自己!
这个例子中,根目录是 /tmp/ , 他的上层是 /tmp/..
可是规定说 硬连接 不可以连接目录、不能夸文件系统(可以看做是分区吗?)
但为什么还会有 inode_dir/ inode_dir/. inode_dir/.. 这种情况出现呢?
希望读者不吝赐教!
以下是在网上找到的资料,学习学习。
http://blog.csdn.net/yangcs2009/article/details/39639749
链接计数
而当谈到链接数的时候,这里我还要提出一些概念和几个规律性的结论:
每个i节点中都存有一个链接计数,其值是指向该i节点的目录项数。
只有当链接技术减少到0时,才可删除该文件(也就是释放该文件占有的数据块)
能够增加链接数的链接为硬链接。
软链接也叫符号链接,它的inode的文件类型是S_IFLNK。它只是存储了另一个文件的路径和名称而已。
任何一个叶目录(不包含任何其他目录的目录)的链接计数总是2,数值2来自于命名该目录的目录项以及在该目录中的.项。
父目录中的每一个子目录都会使该父目录的链接计数增1。
精彩引文
最后给出csdn网上qxp网友的一段关于软链接和硬链接的评论,很不错:
我们知道unix文件大致可以分为这样三部分:目录(文件名),inode 和数据区。
对于复制来说,不仅仅创建了新的目录项(文件名),新的inode,还复制了该文件的所有数据;
而硬连结则仅仅创建了新的目录项,并且在目录项中相应的inode编号被连结到相应的文件的inode编号,同时,该文件的inode引用计数加1;
这样,你删除原来的文件时候,文件数据并不会被删除,因为inode结点引用计数>0,所以,通过硬连结还能继续访问。
换句话说,硬连接使得该文件存在另外一个别名,也就是另外一个入口。
顺便说一下软连结,就是符号连结,其实就相当于是windows下的快捷方式。
创建了一个新的目录项,一个新的inode,只不过数据区里放的是被引用的文件路径和名称。
在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。
阅读(1631) | 评论(0) | 转发(0) |