linux硬链接和软链接以及inode

来源:互联网 发布:以网络为话题的作文600 编辑:程序博客网 时间:2024/06/05 04:44

1、inode


a、inode是index node,中文为索引节点。


b、inode包含以下内容:
    * 文件的字节数  * 文件拥有者的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 fileDevice: 801h/2049d      Inode: 264605      Links: 1Access: (0664/-rw-rw-r--)  Uid: ( 1000/     lsn)   Gid: ( 1000/     lsn)Access: 2016-03-11 17:57:11.909803000 +0800Modify: 2016-03-11 17:57:11.909803000 +0800Change: 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.file264605 test.file


e、inode大小

inode会占用磁盘空间,在分区中,操作系统会将磁盘空间分为两个区域,一个是数据区,一个存放inode区。当inode区占满的时候是无法创建新文件的。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。

通过df -i可查看inode区的使用情况。

VirtualBox:~$ df -iFilesystem     Inodes  IUsed  IFree IUse% Mounted on/dev/sda1      475136 155369 319767   33% /udev            92754    447  92307    1% /devtmpfs           95090    360  94730    1% /runnone            95090      3  95087    1% /run/locknone            95090      1  95089    1% /run/shmVirtualBox:~$ 


通过sudo dumpe2fs -h /dev/sda1 | grep "Inode size"查看inode节点的大小
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 -ltotal 0-rw-rw-r-- 1 qqq qqq 0 Mar 11 17:57 test.fileVirtualBox:~/test$ ls -i264605 test.fileVirtualBox:~/test$ ln test.file test.hlVirtualBox:~/test$ ls -ltotal 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.hlVirtualBox:~/test$ ls -i264605 test.file  264605 test.hlVirtualBox:~/test$

如上,执行前后的ionde信息表的文件数,创建硬链接后,数目增加。另外可以查看两个文件的inode号是一样的。

硬链接的一些特点:

文件有相同的 inode 及 data block;只能对已存在的文件进行创建;不能交叉文件系统进行硬链接的创建;不能对目录进行创建,只可对文件创建;删除一个硬链接文件并不影响其他有相同 inode 号的文件。


3、软链接

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。

如果删除了源文件,打开软链接就会报错,"No such file or directory"

使用 "ln -s 源文件或目录 目标文件或目录"创建软链接

软链接的一些特点:

软链接有自己的文件属性及权限等;可对不存在的文件或目录创建软链接;软链接可交叉文件系统;软链接可对文件或目录创建;创建软链接时,链接计数 i_nlink 不会增加;删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。


0 0
原创粉丝点击