Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72174
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 134
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-27 22:31
个人简介

梦想是要有的,万一实现了呢!

文章分类

全部博文(22)

文章存档

2015年(22)

分类: 服务器与存储

2015-05-03 17:52:43

关于目录连接数量的思考


[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 号寻找正确的文件数据块。

阅读(1542) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~