1、inode
a、inode是index node,中文为索引节点。
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置</span>
c、通过stat命令查看文件的inode信息
VirtualBox:~$ stat test.file
File: `test.file'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 264605 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ lsn) Gid: ( 1000/ lsn)
Access: 2016-03-11 17:57:11.909803000 +0800
Modify: 2016-03-11 17:57:11.909803000 +0800
Change: 2016-03-11 17:57:11.909803000 +0800
Birth: -
VirtualBox:~$
</span>
d、inode作用
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
通过ls -i读取inode号
VirtualBox:~$ ls -i test.file
264605 test.file
inode会占用磁盘空间,在分区中,操作系统会将磁盘空间分为两个区域,一个是数据区,一个存放inode区。当inode区占满的时候是无法创建新文件的。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。
通过df -i可查看inode区的使用情况。
VirtualBox:~$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 475136 155369 319767 33% /
udev 92754 447 92307 1% /dev
tmpfs 95090 360 94730 1% /run
none 95090 3 95087 1% /run/lock
none 95090 1 95089 1% /run/shm
VirtualBox:~$
VirtualBox:~$ sudo dumpe2fs -h /dev/sda1 | grep "Inode size"
dumpe2fs 1.42 (29-Nov-2011)
Inode size: 256
2、硬链接
Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
使用“ln 源文件 目标文件” 创建硬链接
VirtualBox:~/test$ ls -l
total 0
-rw-rw-r-- 1 qqq qqq 0 Mar 11 17:57 test.file
VirtualBox:~/test$ ls -i
264605 test.file
VirtualBox:~/test$ ln test.file test.hl
VirtualBox:~/test$ ls -l
total 0
-rw-rw-r-- 2 qqq qqq 0 Mar 11 17:57 test.file
-rw-rw-r-- 2 qqq qqq 0 Mar 11 17:57 test.hl
VirtualBox:~/test$ ls -i
264605 test.file 264605 test.hl
VirtualBox:~/test$
如上,执行前后的ionde信息表的文件数,创建硬链接后,数目增加。另外可以查看两个文件的inode号是一样的。
硬链接的一些特点:
文件有相同的 inode 及 data block;
只能对已存在的文件进行创建;
不能交叉文件系统进行硬链接的创建;
不能对目录进行创建,只可对文件创建;
删除一个硬链接文件并不影响其他有相同 inode 号的文件。
3、软链接
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。
如果删除了源文件,打开软链接就会报错,"No such file or directory"
使用 "ln -s 源文件或目录 目标文件或目录"创建软链接
软链接的一些特点:
软链接有自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
创建软链接时,链接计数 i_nlink 不会增加;
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。