linux硬链接和软链接以及inode

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 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


e、inode大小

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:~$ 


通过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 -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,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值